# 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 ```