星期六, 7月 23, 2011

FreeBSD在fstab使用標籤 Label 名稱 mount 磁碟

因為敝公司的Mail Server是從FreeBSD 4.x一路升級至今,昨天我在聽HITCON 2011時居然主機故障,因為一直被call,聽完連忙趕回公司,非常地不爽。

Update:
更新到FreeBSD 9.0之後,新的安裝程式設定Label是用GPT分割(GUID Partition Table)的Label,所以設定好後,會出現 /dev/gpt/root 之類的Label,同樣可以用 glabel status查看。若已改用GPT分割,無法使用 /dev/ufs 或傳統BSD Label的方式, 只能用 GPTLlabel。

舊方法,適用於MBR分割
Linux很早就能用Label名稱mount磁碟,FreeBSD當然也可以,Labeling Disk Devices 有詳細的說明:
限制是必須要使用UFS2,除非磁碟非常滿,不然是不會影響現有的檔案內容,要注意已經mount的磁碟不能用tunefs。
# tunefs -L home /dev/ad0s1c
但問題來了,若是swap它不算是ufs難道就不能用了嗎?其實FreeBSD有兩種Label,UFS的Label與純Label:
#glabel create home /dev/ad0s1c
#glabel create swap /dev/ad0s1b
要看現有的分割區Label可以用:
#glabel status
Name Status Components
ufs/var N/A ad6s1
ufs/varmail N/A ad8s1
ufs/root N/A ad4s1a
label/swap N/A ad4s1b
ufs/usr N/A ad4s1e
ufs/usrlocal N/A ad4s1f
ufs/home N/A ad4s1g
其實直接用 ls -l /dev/ufs 與 ls -l /dev/label 也可以看到所有的Label。
接下來就可以編輯/etc/fstab
/dev/ufs/home /home ufs rw 2 2
新方法,適用於GPT分割
在安裝時設定:
先選擇GPT分割

在設定Size時記得加上Label

另一種方式,手動分割硬碟:
gpart create -s gpt ada0
gpart add -t freebsd-boot -l boot -s 128K ada0 #這是設定開機分割區,
gpart bootcode -b /boot/pmbr -p /boot/boot -i 1 ada0 #接下來是安裝boot code到分割區內
gpart add -t freebsd-ufs -l root -b 1M -s 4G ada0 #這是設定根目錄
gpart add -t freebsd-swap -l swap -s 1024M ada0 #設定swap分割區
手動新增硬碟時,也可以依此方法
gpart add -t freebsd-ufs -l var -b 1M -s 128G ada1 #加一個分割,可以
newfs -U /dev/gpt/var
這樣就可以在 /etc/fstab 加上
/dev/gpt/var /var ufs rw 2 2
若遇到要更名或加上label怎麼辦呢?用
gpart modify -i 1 -l root ada0
其中 -i 是index,-l後是Label名,若鎖住不能改,可以用boot cd/usb開機後再更名。

註:FreeBSD的硬碟隨著ide、sata、SCSI等不同,可能會叫ad0、da0、ada0等不同,所以建議用Label掛載。

參考資料: Disk Setup On FreeBSD
Allocating Disk Space
gpart man page

沒有留言: