磁碟的容量可以增加且不需要更動任何已存在的資料。這時常會用在虛擬機器,當虛擬磁碟太小且需要增加時。有時磁碟映像檔會被寫入到 USB 隨身碟,但卻沒有使用全部的容量。此節我們將說明如合重設大小或 擴增 磁碟內容來使用增加的容量。
要取得要重設大小的磁碟的代號可以查看 /var/run/dmesg.boot
。在本例中,在系統上只有一個 SATA 磁碟,該磁碟會以 ada0
表示。
列出在磁碟上的分割區來查看目前的設定:
#
gpart show ada0
=> 34 83886013 ada0 GPT (48G) [CORRUPT]
34 128 1 freebsd-boot (64k)
162 79691648 2 freebsd-ufs (38G)
79691810 4194236 3 freebsd-swap (2G)
83886046 1 - free - (512B)
若磁碟已使用 GPT 分割表格式做格式化,可能會顯示為 “已損壞 (corrupted)” 因為 GPT 備份分割區已不存在於磁碟結尾。 使用 gpart
來修正備份分割區:
#
gpart recover ada0
ada0 recovered
現在在磁碟上的額外空間已經可以被新的分割區使用,或者可以拿來擴充既有的分割區:
#
gpart show ada0
=> 34 102399933 ada0 GPT (48G)
34 128 1 freebsd-boot (64k)
162 79691648 2 freebsd-ufs (38G)
79691810 4194236 3 freebsd-swap (2G)
83886046 18513921 - free - (8.8G)
分割區只能在連續的未使用空間上重設大小。在這個例子中,磁碟上最後的分割區為交換 (Swap) 分割區,而第二個分割區才是需要重設大小的分割區。由於交換分割區中只會有暫存的資料,所以此時可以安全的卸載、刪除,然後在重設第二個分割區大小之後再重建最後一個分割區。
停用交換分割區:
#
swapoff /dev/ada0p3
刪除 ada0
磁碟上的第三個分割區,可使用 -i
參數來指定分割區。
#
gpart delete -i 3
ada0
ada0p3 deleted
#
gpart show ada0
=> 34 102399933 ada0 GPT (48G)
34 128 1 freebsd-boot (64k)
162 79691648 2 freebsd-ufs (38G)
79691810 22708157 - free - (10G)
在掛載的檔案系統上修改分割區表可能會造成資料遺失。最好的方式是在未掛載檔案系統的情況下 (使用 Live CD-ROM 或 USB 裝置) 執行以下步驟。雖然如此,若仍要這樣做的話,在關閉 GEOM 安全性功能之後可以在掛載的檔案系統上修改分割區表:
#
sysctl kern.geom.debugflags=16
重設分割區大小並保留要用來重建交換分割區的空間,要重設大小的分割區可以用 -i
來指定,而要重設的大小可用 -s
來指定,若要對齊分割區可以使用 -a
。這個動作只會修改分割區大小,分割區中的檔案系統需在另一個步驟擴增。
#
gpart resize -i 2
-s 47G
-a 4k ada0
ada0p2 resized
#
gpart show ada0
=> 34 102399933 ada0 GPT (48G)
34 128 1 freebsd-boot (64k)
162 98566144 2 freebsd-ufs (47G)
98566306 3833661 - free - (1.8G)
重建交換分割區並且啟動,若不使用 -s
指定大小則會使用所有剩餘的空間:
#
gpart add -t freebsd-swap -a 4k ada0
ada0p3 added
#
gpart show ada0
=> 34 102399933 ada0 GPT (48G)
34 128 1 freebsd-boot (64k)
162 98566144 2 freebsd-ufs (47G)
98566306 3833661 3 freebsd-swap (1.8G)
#
swapon /dev/ada0p3
擴增 UFS 檔案系統來使用重設分割區大小之後的新容量:
#
growfs /dev/ada0p2
Device is mounted read-write; resizing will result in temporary write suspension for /.
It's strongly recommended to make a backup before growing the file system.
OK to grow file system on /dev/ada0p2, mounted on /, from 38GB to 47GB? [Yes/No] Yes
super-block backups (for fsck -b #) at:
80781312, 82063552, 83345792, 84628032, 85910272, 87192512, 88474752,
89756992, 91039232, 92321472, 93603712, 94885952, 96168192, 97450432
若檔案系統使用 ZFS,重設大小需執行 online
子指令並使用 -e
來觸發動作:
#
zpool online -e
zroot
/dev/ada0p2
現在分割區與檔案系統已透過重設大小來使用新增加的磁碟空間。
本文及其他文件,可由此下載: ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/。
若有 FreeBSD 方面疑問,請先閱讀
FreeBSD 相關文件,如不能解決的話,再洽詢
<questions@FreeBSD.org>。
關於本文件的問題,請洽詢
<doc@FreeBSD.org>。