FreeBSDの公式VHDの空き容量を増やす(パーティションの手動割り当て)
Hyper-V上で利用するのに公式からVHDをダウンロードしたところ、可変容量設定になっているのに初期サイズ以上に拡張してくれずfilesystem full
などと表示され碌にソフトがインストールできない。
isoからインストールし直す事も考えたが面倒なので、何とかしてみる事にした。
利用したのはFreeBSD 12.3 amd64
Hyper-Vマネージャで容量可変(VHD, 4GB)から容量固定(VHDX, 16GB)へディスクイメージを変換するが、そのままでは増やした部分が認識されないのでパーティションを手動で割り当てる。
念のためSingle user
モードで起動し、現状を確認する。
# gpart show
=> 3 10488235 da0 GPT (16G) [CORRUPT]
3 126 1 freebsd-boot (63K)
129 1600 2 efi (800K)
1729 2097152 3 freebsd-swap (1.0G)
2098881 8388608 4 freebsd-ufs (4.0G)
10487489 749 - free - (375K)
空きスペースが正しく認識されず[CURRUPT]
となっているのでrecover
する。
# gpart recover da0
da0 recovered
# gpart show
=> 3 33554421 da0 GPT (16G)
3 126 1 freebsd-boot (63K)
129 1600 2 efi (800K)
1729 2097152 3 freebsd-swap (1.0G)
2098881 8388608 4 freebsd-ufs (4.0G)
10487489 23066935 - free - (11G)
正しく認識されたのでパーティションを拡張する。幸いデータ用のパーティションが最後にあるので、このままresize
する。
# gpart resize -i 4 da0
da0p4 resized
# gpart show
=> 3 33554421 da0 GPT (16G)
3 126 1 freebsd-boot (63K)
129 1600 2 efi (800K)
1729 2097152 3 freebsd-swap (1.0G)
2098881 31390015 4 freebsd-ufs (15G)
33488896 65528 - free - (32M)
増えた。ちなみに[CURRUPT]
を解決せずに拡張しようとすると以下のエラーが出る。
# gpart resize -i 4 da0
gpart: autofill: No space left on device
最後にこれを適用する。
# growfs /dev/da0p4
It's strongly recommended to make a backup before growing the file system.
OK to grow filesystem on /dev/da0p4 from 4.0GB to 15GB? [yes/no] yes
growfs: /dev/da0p4: Operation not permitted
oh...
# growfs /dev/gpt/rootfs
It's strongly recommended to make a backup before growing the file system.
OK to grow filesystem on /dev/gpt/rootfs, monted on /, from 4.0GB to 15GB? [yes/no] yes
super-block backups (for fsck_ffs -b #) at:
8975872, 10258112, 11540352, 12822592, 14104832, 15387072, 16669312, 17951552, 19233792, 20516032, 21798272, 23080512, 24362752, 25644992, 26927232, 28209474, 29491712, 30773952
念のためdf
コマンドなどで容量を確認し、問題が無ければreboot
。通常通りMulti user
モードで本来の作業を行う。