wiki:ExpandFreeBSDDisk

Expanding a !FreeBSD FileSystem on a VM

If a VM is getting a bit tight for disk space, you can expand the size of a drive. This example is the more difficult one of expanding the primary drive. The example uses the instance name work0psg.com, which should be replaced by your own, of course.

Tell Ganeti to Grow the Disk

First you need to make the Ganeti disk allocation larger.

gnt-instance grow-disk work0.psg.com 0 100G

grows the priimary drive by 100G.

This allocates more disk in Ganeti and creates a larger partition. But it does not tell !FreeBSD that the disk is bigger.

Also, like many gnt-instance modify commands, it will not take effect until the next Ganeti start, not reboot within the VM, but a real Ganeti instance reboot or shutdown/start.

It is Best to do this in Single User

Boot into single user

Enter full pathname of shell or RETURN for /bin/sh: 

Set-Up

Confirm the disk is allocated as expected. Note that the new allocation will not show yet.

:/# gpart show vtbd0
=>       34  209715133  vtbd0  GPT  (200G) [CORRUPT]
         34        128      1  freebsd-boot  (64K)
        162  201326464      2  freebsd-ufs  (96G)
  201326626    8388540      3  freebsd-swap  (4.0G)
  209715166          1         - free -  (512B)

Everything says to turn swap off, but I think it is normall off in single user

:/# swapoff /dev/vtbd0p3
swapoff: /dev/vtbd0p3: Invalid argument

Get !FreeBSD to See the New Space

Tell gpart to find the new space

:/# gpart recover vtbd0
vtbd0 recovered

Now we can see the new space

:/# gpart show vtbd0
=>       34  419430333  vtbd0  GPT  (200G)
         34        128      1  freebsd-boot  (64K)
        162  201326464      2  freebsd-ufs  (96G)
  201326626    8388540      3  freebsd-swap  (4.0G)
  209715166  209715201         - free -  (100G)

Get Swap Out of the Way and Expand the Partition

Get the swap partition out of the way

:/# gpart delete -i 3 vtbd0
vtbd0p3 deleted

:/# gpart show vtbd0
=>       34  419430333  vtbd0  GPT  (200G)
         34        128      1  freebsd-boot  (64K)
        162  201326464      2  freebsd-ufs  (96G)
  201326626  218103741         - free -  (104G)

Grow the data partition, being sure to leave room for the swap partition

:/# gpart resize -i 2 -a 4k -s 196G vtbd0
vtbd0p2 resized

See that it grew.

:/# gpart show vtbd0
=>       34  419430333  vtbd0  GPT  (200G)
         34        128      1  freebsd-boot  (64K)
        162  411041790      2  freebsd-ufs  (196G)
  411041952    8388415         - free -  (4.0G)

Make a Swap Partition

Recreate a swap partiton

:/# gpart add -t freebsd-swap -a 4k vtbd0
vtbd0p3 added

See that it is as expected

:/# gpart show vtbd0
=>       34  419430333  vtbd0  GPT  (200G)
         34        128      1  freebsd-boot  (64K)
        162  411041790      2  freebsd-ufs  (196G)
  411041952    8388408      3  freebsd-swap  (4.0G)
  419430360          7         - free -  (3.5K)

Turn swap on, but probably not needed in single user

:/# swapon /dev/vtbd0p3

Tell !FreeBSD to Expand the FileSystem to Fill Partition

The last move is to tell !FreeBSD to detect the larger space and grow the file system to fill it

:/# growfs /dev/vtbd0p2
It's strongly recommended to make a backup before growing the file system.
OK to grow filesystem on /dev/vtbd0p2, mounted on /, from 96GB to 196GB? [Yes/No] Yes
super-block backups (for fsck_ffs -b #) at:
 201352064, 202634560, 203917056, 205199552, 206482048, 207764544, 209047040,
 210329536, 211612032, 212894528, 214177024, 215459520, 216742016, 218024512,
 219307008, 220589504, 221872000, 223154496, 224436992, 225719488, 227001984,
 228284480, 229566976, 230849472, 232131968, 233414464, 234696960, 235979456,
 237261952, 238544448, 239826944, 241109440, 242391936, 243674432, 244956928,
 246239424, 247521920, 248804416, 250086912, 251369408, 252651904, 253934400,
 255216896, 256499392, 257781888, 259064384, 260346880, 261629376, 262911872,
 264194368, 265476864, 266759360, 268041856, 269324352, 270606848, 271889344,
 273171840, 274454336, 275736832, 277019328, 278301824, 279584320, 280866816,
 282149312, 283431808, 284714304, 285996800, 287279296, 288561792, 289844288,
 291126784, 292409280, 293691776, 294974272, 296256768, 297539264, 298821760,
 300104256, 301386752, 302669248, 303951744, 305234240, 306516736, 307799232,
 309081728, 310364224, 311646720, 312929216, 314211712, 315494208, 316776704,
 318059200, 319341696, 320624192, 321906688, 323189184, 324471680, 325754176,
 327036672, 328319168, 329601664, 330884160, 332166656, 333449152, 334731648,
 336014144, 337296640, 338579136, 339861632, 341144128, 342426624, 343709120,
 344991616, 346274112, 347556608, 348839104, 350121600, 351404096, 352686592,
 353969088, 355251584, 356534080, 357816576, 359099072, 360381568, 361664064,
 362946560, 364229056, 365511552, 366794048, 368076544, 369359040, 370641536,
 371924032, 373206528, 374489024, 375771520, 377054016, 378336512, 379619008,
 380901504, 382184000, 383466496, 384748992, 386031488, 387313984, 388596480,
 389878976, 391161472, 392443968, 393726464, 395008960, 396291456, 397573952,
 398856448, 400138944, 401421440, 402703936, 403986432, 405268928, 406551424,
 407833920, 409116416, 410398912

And Bob's your uncle!

:/# df -h
Filesystem      Size    Used   Avail Capacity  Mounted on
/dev/vtbd0p2    190G     86G     89G    49%    /
devfs           1.0K    1.0K      0B   100%    /dev
Last modified 4 years ago Last modified on Feb 9, 2016, 12:33:38 AM