docs/186377: new handbook section - growing disks
Allan Jude
freebsd at allanjude.com
Sun Feb 2 15:30:02 UTC 2014
>Number: 186377
>Category: docs
>Synopsis: new handbook section - growing disks
>Confidential: no
>Severity: non-critical
>Priority: low
>Responsible: freebsd-doc
>State: open
>Quarter:
>Keywords:
>Date-Required:
>Class: change-request
>Submitter-Id: current-users
>Arrival-Date: Sun Feb 02 15:30:01 UTC 2014
>Closed-Date:
>Last-Modified:
>Originator: Allan Jude
>Release: 9.2-RELEASE
>Organization:
ScaleEngine Inc.
>Environment:
FreeBSD Trooper.HML3.ScaleEngine.net 9.2-RELEASE FreeBSD 9.2-RELEASE #0 r255898: Thu Sep 26 22:50:31 UTC 2013 root at bake.isc.freebsd.org:/usr/obj/usr/src/sys/GENERIC amd64
>Description:
A new section in the freebsd handbook to cover resizing/growing a disk
Applies to:
raspberry pi and other embedded images
file system images written to USB sticks
virtual machines and VPSs where a smaller image is used, or where the disk size is increased after-the-fact
>How-To-Repeat:
>Fix:
Patch attached with submission follows:
Index: disks/chapter.xml
===================================================================
--- disks/chapter.xml (revision 43726)
+++ disks/chapter.xml (working copy)
@@ -252,6 +252,143 @@
<screen>&prompt.root; <userinput>mount /newdisk</userinput></screen>
</sect1>
+ <sect1 xml:id="disks-growing">
+ <info>
+ <title>Resizing and Growing Disks</title>
+
+ <authorgroup>
+ <author>
+ <personname>
+ <firstname>Allan</firstname>
+ <surname>Jude</surname>
+ </personname>
+ <contrib>Originally contributed by </contrib>
+ </author>
+ </authorgroup>
+ </info>
+
+ <indexterm>
+ <primary>disks</primary>
+ <secondary>resizing</secondary>
+ </indexterm>
+
+ <para>This section describes how to resize (grow) an existing disk
+ in &os;. This procedure is most common with virtual machines,
+ but can also apply to images written to USB devices or other
+ cases where the partitions written to a disk do not match the
+ actual size of the disk.</para>
+
+ <para>Determine the device name of the disk that needs to be
+ resized by inspecting <filename>/var/run/dmesg.boot</filename>.
+ In this example, there is only one <acronym>SATA</acronym> disk
+ in the system, so the drive will appear as
+ <filename>ada0</filename>.</para>
+
+ <indexterm><primary>partitions</primary></indexterm>
+ <indexterm>
+ <primary><command>gpart</command></primary>
+ </indexterm>
+
+ <para>List the partitions on the disk to determine what needs to
+ be done to resize the desired partition:</para>
+
+ <screen>&prompt.root; <command>gpart show <replaceable>ada0</replaceable></command>
+=> 34 83886013 ada0 GPT (48G) [CORRUPT]
+ 34 128 1 freebsd-boot (64k)
+ 162 79691648 2 freebsd-ufs (38G)
+ 79691810 4194236 3 freebsd-swap (2G)
+ 83886046 1 - free - (512B)</screen>
+
+ <note>
+ <para>If the disk was formatted with the <link
+ xlink:href="http://en.wikipedia.org/wiki/GUID_Partition_Table">
+ <acronym>GPT</acronym></link> partitioning scheme, it may show
+ as corrupted because <acronym>GPT</acronym> stores a backup
+ of the partition table at the end of the drive, which has now
+ moved.</para>
+
+ <screen>&prompt.root; <command>gpart recover <replaceable>ada0</replaceable></command>
+ada0 recovered</screen>
+ </note>
+
+ <para>Now the additional space on the disk is available:</para>
+
+ <screen>&prompt.root; <command>gpart show <replaceable>ada0</replaceable></command>
+=> 34 102399933 ada0 GPT (48G)
+ 34 128 1 freebsd-boot (64k)
+ 162 79691648 2 freebsd-ufs (38G)
+ 79691810 4194236 3 freebsd-swap (2G)
+ 83886046 18513921 - free - (8.8G)</screen>
+
+ <para>It is only possible to resize a partition into contiguous
+ free space, however the last partition on the disk is the swap
+ partition, rather than the partition to be resized. Since swap
+ does not contain any non-volatile data, it can safely be deleted
+ and recreated after.</para>
+
+ <screen>&prompt.root; <command>swapoff <replaceable>/dev/ada0p3</replaceable></command>
+&prompt.root; <command>gpart delete -i <replaceable>3</replaceable> <replaceable>ada0</replaceable></command>
+ada0p3 deleted
+&prompt.root; <command>gpart show <replaceable>ada0</replaceable></command>
+=> 34 102399933 ada0 GPT (48G)
+ 34 128 1 freebsd-boot (64k)
+ 162 79691648 2 freebsd-ufs (38G)
+ 79691810 22708157 - free - (10G)</screen>
+
+ <para>Next resize the partition, leaving room to recreate a swap
+ partition of the desired size.</para>
+
+ <note>
+ <para>There is risk involved with modifying a live file system,
+ it is best to perform the following steps while running off of
+ a live CD or USB device. However it can be done on a live
+ system with the following work around:
+
+ <screen>&prompt.root; <command>sysctl kern.geom.debugflags=16</command></screen>
+ </para>
+ </note>
+
+ <screen>&prompt.root; <command>gpart resize -i <replaceable>2</replaceable> -s <replaceable>47G</replaceable> <replaceable>ada0</replaceable></command>
+ada0p2 resized
+&prompt.root; <command>gpart show <replaceable>ada0</replaceable></command>
+=> 34 102399933 ada0 GPT (48G)
+ 34 128 1 freebsd-boot (64k)
+ 162 98566144 2 freebsd-ufs (47G)
+ 98566306 3833661 - free - (1.8G)</screen>
+
+ <para>Next, recreate the swap partition:</para>
+
+ <screen>&prompt.root; <command>gpart add -t freebsd-swap <replaceable>ada0</replaceable></command>
+ada0p3 added
+&prompt.root; <command>gpart show <replaceable>ada0</replaceable></command>
+=> 34 102399933 ada0 GPT (48G)
+ 34 128 1 freebsd-boot (64k)
+ 162 98566144 2 freebsd-ufs (47G)
+ 98566306 3833661 3 freebsd-swap (1.8G)
+&prompt.root; <command>swapon <replaceable>/dev/ada0p3</replaceable></command></screen>
+
+ <para>Finally, grow the UFS file system on the resized
+ partition:</para>
+
+ <note>
+ <para>growing a live UFS file system is only possible in &os;
+ 10.0-RELEASE and later, for earlier versions, the file system
+ must not be mounted.</para>
+ </note>
+
+ <screen>&prompt.root; <command>growfs <replaceable>/dev/ada0p2</replaceable></command>
+Device is mounted read-write; resizing will result in temporary write suspension for /.
+It's strongly recommended to make a backup before growing the file system.
+OK to grow filesystem on /dev/ada0p2, mounted on /, from 38GB to 47GB? [Yes/No] <userinput>Yes</userinput>
+super-block backups (for fsck -b #) at:
+ 80781312, 82063552, 83345792, 84628032, 85910272, 87192512, 88474752,
+ 89756992, 91039232, 92321472, 93603712, 94885952, 96168192, 97450432</screen>
+
+ <para>The partition has now been resized to make use of all
+ available space on the disk.</para>
+
+ </sect1>
+
<sect1 xml:id="usb-disks">
<info>
<title>USB Storage Devices</title>
>Release-Note:
>Audit-Trail:
>Unformatted:
More information about the freebsd-doc
mailing list