rgnet-wiki/pages/ExpandFreeBSDDisk.md
2020-07-04 15:12:11 -07:00

167 lines
No EOL
5.4 KiB
Markdown

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