安裝 PC-BSD 9.2(based on FreeBSD)目的本來只是想做一些測試而已
所以一開始只建立 8GB 的 vdi,但是安裝好之後用 ports 裝個 firefox
卻搞笑了,磁碟可用空間變 0,連安裝都無法進行
只好重新建了一個 10GB 的 vdi 安裝.....
印象中 freebsd 好象有個 growfs 可用,於是開始爬網加不斷測試
最後成功將 10GB 擴充到 12GB,以下是操作過程..
---
(在 bsd 桌面開 terminal 先查看一下,確認容量,然後直接 poweroff)
% zfs list tank
NAME USED AVAIL REFER MOUNTPOINT
tank 6.81G 2.48G 31K legacy
% poweroff
PC-BSD 9.2 在安裝時預設就使用 zfs 作為系統的 fs
建議先在 host 將 這個 vdi clonehd 另一個備份檔
萬一擴充失敗就不用重灌,直接再 clone 一個繼續努力

$ VBoxManage clonehd PC-BSD9.2.x64-01.vdi PC-BSD9.2.x64-02.vdi
0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100%
Clone hard disk created in format 'VDI'. UUID: f8481317-8466-4d07-ad90-0d6f303367b1
(查看 vdi 資訊)
$ VBoxManage showhdinfo PC-BSD9.2.x64-01.vdi
UUID: 391cbbc3-637b-42c0-90d9-0e724241d74d
Parent UUID: base
State: created
Type: normal (base)
Location: /VDIs/BSD/PC-BSD9.2.x64-01.vdi
Storage format: VDI
Format variant: dynamic default
Capacity: 10240 MBytes
Size on disk: 10047 MBytes
In use by VMs: PC-BSD9.2.x64 (UUID: 82dd5803-3730-4af2-8cb1-6583d0c888a8)
Child UUIDs: b464c94c-31bd-44a8-8c8f-66086d4f15c1
(將 vdi resize 到 12GB)
$ VBoxManage modifyhd PC-BSD9.2.x64-01.vdi --resize 12288
0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100%
$ VBoxManage showhdinfo PC-BSD9.2.x64-01.vdi
UUID: 391cbbc3-637b-42c0-90d9-0e724241d74d
Parent UUID: base
State: created
Type: normal (base)
Location: /VDIs/BSD/PC-BSD9.2.x64-01.vdi
Storage format: VDI
Format variant: dynamic default
Capacity: 12288 MBytes
Size on disk: 10047 MBytes
In use by VMs: PC-BSD9.2.x64 (UUID: 82dd5803-3730-4af2-8cb1-6583d0c888a8)
Child UUIDs: b464c94c-31bd-44a8-8c8f-66086d4f15c1
重新啟動 VM,看到 PC-BSD 開機畫面時按住 left-SHIFT 然後進入單人模式
(啟動 sshd)
# ifconfig em0 inet 192.168.1.15 netmask 255.255.255.0
# route add default 192.168.1.1
# /etc/rc.d/sshd onestart
也可以直接在 vm 裡操作,不一定要啟動 bsd 的 sshd,
只是在 vm 裡沒法抓畫面資料或是貼上指令 XD
(重新掛載 / 為 rw mode)
# df
Filesystem 1K-blocks Used Avail Capacity Mounted on
tank/ROOT/default 9340979 6736917 2604062 72% /
devfs 1 1 0 100% /dev
# mount -o remount,rw tank/ROOT/default /
如果沒有要改什麼檔案的話就不需要 remount
(查看硬碟狀態)
# gpart show
=> 63 25165761 ada0 MBR (12G)
63 63 - free - (31k)
126 20971377 1 freebsd [active] (10G)
20971503 4194321 - free - (2.0G)
=> 0 20971377 ada0s1 BSD (10G)
0 19902464 1 freebsd-zfs (9.5G)
19902464 1048576 2 freebsd-swap (512M)
20951040 20337 - free - (10M)
上面顯示 ada0 已經有 12GB了,這是剛才在 host 下 modifyhd resize 的結果
而且也有看到增加的 2GB(free) 的部分,現在要先把這 2GB 加到 freebsd [active] 這裡
# gpart recover ada0
ada0 recovering is not needed
# gpart resize -i 1 ada0
gpart: Device busy
# sysctl kern.geom.debugflags=16
# gpart resize -i 1 ada0
ada0s1 resized
-i 參數的 1 就是 ada0 表中 freebsd 前面的數字(index)
resize 沒有指定 -s size 表示要擴充全部空間
擴充成功後,下面的表可以看到 freebsd [active] 還有 ada0s1 都顯示 12GB
# gpart show
=> 63 25165761 ada0 MBR (12G)
63 63 - free - (31k)
126 25165665 1 freebsd [active] (12G)
25165791 33 - free - (16k)
=> 0 20971377 ada0s1 BSD (12G)
0 19902464 1 freebsd-zfs (9.5G)
19902464 1048576 2 freebsd-swap (512M)
20951040 20337 - free - (10M)
這邊要注意,ada0s1 雖然顯示 12GB, 但是 Block sizes 卻還是原來的大小
free 也不是預想中的 2GB,這裡我也試了給 ada0s1 resize,不過完全無效
事實上,我在這裡卡了大多數時間,網路上查看到的資料也都無解
也試用過 growfs,但是 growfs 目前並末支援 zfs
# gpart resize -i 1 ada0s1
ada0s1a resized
[root@] ~# gpart show ada0s1
=> 0 20971377 ada0s1 BSD (12G)
0 19902464 1 freebsd-zfs (9.5G)
19902464 1048576 2 freebsd-swap (512M)
20951040 20337 - free - (10M)
# growfs ada0s1
growfs: superblock not recognized
(man growfs)
growfs -- expand an existing UFS file system
最後實在不知道該怎麼辦,想說就 reboot 看看好了...
# reboot
$ ssh xxxx@192.168.1.15
FreeBSD 9.2-RELEASE-p11 (GENERIC) #0 r+7962ca0: Mon Dec 2 16:13:10 UTC 2013
Welcome to PC-BSD!
For information on the web, visit us at www.pcbsd.org
Could not chdir to home directory /usr/home/xxx: No such file or directory
% sudo -i
[root@] ~# gpart show
=> 63 25165761 ada0 MBR (12G)
63 63 - free - (31k)
126 25165665 1 freebsd [active] (12G)
25165791 33 - free - (16k)
=> 0 25165665 ada0s1 BSD (12G)
0 19902464 1 freebsd-zfs (9.5G)
19902464 1048576 2 freebsd-swap (512M)
20951040 4214625 - free - (2.0G)
reboot 後(一樣進入單人模式)意外發現 ada0s1 都自動抓到增加的空間
那就可以繼續進行下去
[root@] ~# gpart recover ada0s1
ada0s1 recovering is not needed
[root@] ~# gpart resize -i 1 ada0s1
gpart: Device busy
[root@] ~# sysctl kern.geom.debugflags=16
kern.geom.debugflags: 0 -> 16
[root@] ~# gpart resize -i 1 ada0s1
ada0s1a resized
[root@] ~# gpart show ada0s1
=> 0 25165665 ada0s1 BSD (12G)
0 19902464 1 freebsd-zfs (9.5G)
19902464 1048576 2 freebsd-swap (512M)
20951040 4214625 - free - (2.0G)
這裡因為還有一個 swap(index = 2),新增的空間無法直接給 zfs(index = 1)
試了一下是可以配置給 swap,也就是說新增加的空間確定可以使用
[root@] ~# gpart resize -i 2 ada0s1
ada0s1b resized
[root@] ~# gpart show ada0s1
=> 0 25165665 ada0s1 BSD (12G)
0 19902464 1 freebsd-zfs (9.5G)
19902464 5263201 2 freebsd-swap (2.5G)
因此只好先刪掉 swap,等配置好 zfs 容量後再建立一個 swap
[root@] ~# gpart delete -i 2 ada0s1
[root@] ~# gpart resize -i 1 -s 24117089 ada0s1
ada0s1a resized
[root@] ~# gpart show ada0s1
=> 0 25165665 ada0s1 BSD (12G)
0 24117089 1 freebsd-zfs (11G)
24117089 1048576 - free - (512M)
[root@] ~# gpart add -t freebsd-swap -i 2 ada0s1
ada0s1b added
[root@] ~# gpart show ada0s1
=> 0 25165665 ada0s1 BSD (12G)
0 24117089 1 freebsd-zfs (11G)
24117089 1048576 2 freebsd-swap (512M)
這樣就完工了,最後看一下 zpool 的情形如何
[root@] ~# zpool online -e tank ada0s1a
[root@] ~# df -h
Filesystem Size Used Avail Capacity Mounted on
tank/ROOT/default 10G 6.4G 4.5G 59% /
devfs 1.0k 1.0k 0B 100% /dev
tank 容量確實擴充到 4.5GB
# reboot
進入 gnome 後開 terminal
% df -h
Filesystem Size Used Avail Capacity Mounted on
tank/ROOT/default 10G 6.6G 4.3G 61% /
devfs 1.0k 1.0k 0B 100% /dev
procfs 4.0k 4.0k 0B 100% /proc
linprocfs 4.0k 4.0k 0B 100% /compat/linux/proc
tank/tmp 4.3G 81k 4.3G 0% /tmp
tank/usr/home 4.3G 32k 4.3G 0% /usr/home
tank/usr/home/xxx 4.3G 26M 4.3G 1% /usr/home/xxx
tank/usr/jails 4.3G 31k 4.3G 0% /usr/jails
tank/usr/obj 4.3G 31k 4.3G 0% /usr/obj
tank/usr/pbi 4.3G 64k 4.3G 0% /usr/pbi
tank/usr/ports 4.5G 206M 4.3G 5% /usr/ports
tank/usr/ports/distfiles 4.4G 154M 4.3G 3% /usr/ports/distfiles
tank/usr/src 4.3G 31k 4.3G 0% /usr/src
tank/var/audit 4.3G 33k 4.3G 0% /var/audit
tank/var/log 4.3G 102k 4.3G 0% /var/log
tank/var/tmp 4.3G 32k 4.3G 0% /var/tmp
% zfs list tank
NAME USED AVAIL REFER MOUNTPOINT
tank 7.06G 4.20G 31K legacy
以上~~ 收工睡覺 ^_^
ps: 弄了大半天,不知道有沒有簡單一點的方法
