2.6. 配置磁碟空間

接下來的選單用來決定配置磁碟空間的方式,選單中可用的選項會依安裝的 FreeBSD 版本而有所不同。

圖形 2.11. FreeBSD 9.x 的磁碟分割選項
FreeBSD 9.x 的磁碟分割選項

圖形 2.12. FreeBSD 10.x 或更新版本的磁碟分割選項
FreeBSD 10.x 或更新版本的磁碟分割選項

引導式 (Guided) 磁碟分割會自動設定磁碟的分割區 (Partition),手動 (Manual) 磁碟分割可讓進階的使用者使用選單項目建立自訂的分割區,而 Shell 會開啟 Shell 提示讓進階的使用者可以使用指示列工具如 gpart(8), fdisk(8) 以及 bsdlabel(8) 來建立自訂的分割區。ZFS 磁碟分割只在 FreeBSD 10 及之後的版本可以使用,可建立選擇性加密的 root-on-ZFS 系統並支援 開機環境 (Boot environment)

本節會介紹在配置磁碟分割時需要考量那些事情,並且會示範各種磁碟分割的方式。

2.6.1. 規劃分割區配置

配置檔案系統時要記得硬碟的資料傳輸的速度外軌較內軌快,因此較小且大量存取的檔案系統應要較接近磁碟的外軌,而較大的分割區如 /usr 應放置在磁碟較內部,建議建立分割區的順序如下:/, swap, /var 然後 /usr

機器預期的用途會反映到 /var 分割區的大小,這個分割區用來保存郵件 (Mailbox)、日誌檔 (Log file) 及印表機緩衝 (Spool)。依使用者數及保存的期間,郵件及日誌檔可能成長到無法預期的大小,一般來說大部份的使用很少會在 /var 需要超過 1 GB 的可用磁碟空間。

注意:

有時在 /var/tmp 會需要較多的空間,當新軟體安裝,套件工具會從套件中取出暫存的複本置於 /var/tmp。若在 /var/tmp 沒有足夠的空間,要安裝大型軟體套件,例如 Firefox, Apache OpenOfficeLibreOffice 會很困難。

/usr 分割區保存了許多支持系統運作的檔案,包含 FreeBSD Port 套件集以及系統原始碼,這個分割區建議至少要有 2 GB 的空間。

在規劃分割區大小時,請牢記空間需求,當因某個分割區空間不足時要改使用其他分割區時會很麻煩。

根據經驗,交換分割區應為是實體記憶體 (RAM) 的兩倍。使用最低需求的 RAM 來運作的系統會需要更多的交換空間來取得更好的表現。配置太小的交換交間可能導致 VM 分頁掃描碼效率不佳,且往後增加更多記憶體時可能會產生問題。

在有數個 SCSI 磁碟或數個 IDE 磁碟在不同控制器的大型系統建議在每個磁碟機上都設定交換空間,最多可至四個磁碟機。每個交換分割區的大小應接近相同。核心雖可以處以任意大小的交換空間,但內部資料結構擴充到 4 倍的最大交換分割區大小時,讓交換分割區擁有相同的大小可以讓核心可以最佳的方式串連各個磁碟的交換空間。規劃較大交換空間是可以的,即使沒有使用到多少交換空間,這也會讓要從失控的程式恢復運作更容易,而不需強制重新啟動系統。

正確的做磁碟分割,可以區隔頻繁寫入所產生的資料碎片與經常讀取的分割區,將寫入頻繁的分割區放在磁碟的邊緣可以增加 I/O 效率。雖然較大的分割區可能也需要增加 I/O 效率,但將這些分割區往磁碟邊緣移動所增加的效率並不會比將 /var 移到磁碟邊緣所增加的效率來的顯著。

2.6.2. 引導式磁碟分割

當選擇這個方法,選單上會顯示可用的磁碟,若電腦有安裝多個磁碟,則需選擇其中一個來安裝 FreeBSD。

圖形 2.13. 自多個磁碟選擇
自多個磁碟選擇

選擇磁碟之後,接下來選單會提示是否要安裝到整個磁碟或是使用剩餘的空間建立新的分割區。若選擇 [ Entire Disk ],會自動建立通用的分割區配置來填滿整個磁碟。選擇 [ Partition ] 則會使用磁碟上未使用的空間來建立分割區配置。

圖形 2.14. 選擇完整磁碟或分割區
選擇完整磁碟或分割區

分割區配置建立完成之後,再檢查一次確定是否符合安裝的需求。選擇 [ Revert ] 會重設分割區回復為原來的設定值,選擇 [ Auto ] 會重新建立自動配置的 FreeBSD 分割區。分割區也可以手動建立、修改或刪除。當確認磁碟分割正確之後,選擇 [ Finish ] 繼續安裝。

圖形 2.15. 確認已建立的分割區
確認已建立的分割區

2.6.3. 手動磁碟分割

選擇這個方法會開啟分割區編輯程式:

圖形 2.16. 手動建立分割區
手動建立分割區

選擇要安裝的磁碟機 (在這個例子為 ada0) 然後選擇 [ Create ] 會以選單顯示可用的分割表格式 (Partition scheme):

圖形 2.17. 手動建立分割區
手動建立分割區

amd64 電腦最適合的選擇通常是 GPT,無法相容 GPT 的舊電腦則應使用 MBR。而其他分割表格式一般會用在那些較罕見或較舊的電腦上。

表格 2.1. 磁碟分割表格式
縮寫說明
APMApple Partition Map,用於 PowerPC®。
BSDMBRBSD 標籤,因非 BSD 的磁碟工具可能無法辨識該標籤,有時被稱做 危險專用模式 (Dangerously dedicated mode)
GPTGUID 分割區表 (http://en.wikipedia.org/wiki/GUID_Partition_Table)。
MBR主開機記錄 (http://en.wikipedia.org/wiki/Master_boot_record)。
PC98使用 MBR 改編,用於 NEC PC-98 電腦 (http://en.wikipedia.org/wiki/Pc9801)。
VTOC8Volume Table Of Contents,用於 Sun SPARC64 及 UltraSPARC 電腦。

選擇完分割區表格式並建立之後,再選擇 [ Create ] 一次來建立分割區。

圖形 2.18. 手動建立分割區
手動建立分割區

標準的 FreeBSD GPT 安裝會使用至少三種分割區:

  • freebsd-boot - 儲存 FreeBSD 開機程式 (Boot code)。

  • freebsd-ufs - FreeBSD 的 UFS 檔案系統。

  • freebsd-swap - FreeBSD 交換空間。

另一個值得注意的分割區類型是 freebsd-zfs,這個分割區用來放置 FreeBSD ZFS 檔案系統 (章 19, Z 檔案系統 (ZFS))。請參考 gpart(8) 取得可用的 GPT 分割區類型說明。

檔案系統分割區可建立多個,且有部份人會偏好使用傳統的配置方式將 /, /var, /tmp 以及 /usr 分開存放在不同的分割區。請參考 範例 2.1, “建立傳統分割的檔案系統分割區” 的範例。

大小 (Size) 欄位可以使用常用的縮寫來輸入:K 代表 KB, M 代表 MB, G 代表 GB。

提示:

適當的對齊磁碟扇區 (Sector) 會提供最佳的效能,而且讓分割區大小為 4 KB 的偶數倍數可協助確保對齊在磁碟機上的 512-byte 或 4K-byte 扇區。一般來說,使用分割區大小為 1M 或 1G 的偶數倍數是最簡單的方式確保每個分割區以 4K 的偶數倍數做為開始。唯一一個例外是:freebsd-boot 分割區因目前開機程式 (Boot code) 的限制,不可大於 512K。

若分割區內含檔案系統便會需要一個掛載點 (Mountpoint),若只要建立一個 UFS 分割區,那麼掛載點應設為 /

標籤 (Label) 是分割區的名稱,磁碟機名稱或編號可能因為磁碟機連接到不同的控制器或連結埠而有所不同,但分割區標籤並不會改變。因此在檔案如 /etc/fstab 中參照時,使用標籤來替代磁碟機名稱與分割區編號會讓系統對硬體變更有更多的容錯空間。GPT 標籤會於磁碟連結之後出現在 /dev/gpt/。其他分割表格式的標籤格有不同功能,且標籤會在 /dev/ 中有各自的目錄。

提示:

每個分割區請使用獨一無二的標籤來避免相同名稱的衝突,標籤可以加入與電腦名稱、用途、地點有關的文字。例如,使用 labrootrootfslab 來做為電腦名稱為 labUFS 根目錄分割區。

範例 2.1. 建立傳統分割的檔案系統分割區

傳統的分割區配置會將 /, /var, /tmp 以及 /usr 分別使用不同的檔案系統與分割區。先建立 GPT 分割表格式,然後依照下表所示建立分割區。下表是針對 20G 目標磁碟的分割區大小,若在目標磁碟有更多可用的空間,則可增加交換空間 (Swap) 或 /var 會比較有用。以下所示的標籤皆以 ex 為字首,代表 example,讀者應照前面的說明使用其他獨一無二的標籤。

預設 FreeBSD 的 gptboot 會預期第一個 UFS 分割區為 / 分割區。

分割區類型大小掛載點標籤
freebsd-boot512K  
freebsd-ufs2G/exrootfs
freebsd-swap4G exswap
freebsd-ufs2G/varexvarfs
freebsd-ufs1G/tmpextmpfs
freebsd-ufs接受預設值 (依磁碟提示)/usrexusrfs

自訂的分割區建立完後,選擇 [ Finish ] 繼續安裝。

2.6.4. Root-on-ZFS 自動磁碟分割

在 FreeBSD 10.0-RELEASE 之後支援了自動建立 root-on-ZFS 的安裝程序。這種磁碟分割模式只能使用整個磁碟,並會清除整個磁碟內的內容。安裝程式會自動建立對齊 4k 邊界的分割區然後強制 ZFS 使用 4k 扇區 (Sector)。即使在 512 位元扇區的磁碟使用也很安全,並增加了確保在 512 位元的磁碟上建立儲存池 (Pool) 也可在未來加入 4k 扇區磁碟的好處,無論是作為額外的存儲空間或作為故障磁碟的替代品。安裝程式也可選擇性採用 GELI 磁碟加密,如 節 17.12.2, “使用 geli 做磁碟加密” 所介紹,若開啟磁碟加密,會建立一個內含 /boot 目錄的 2 GB 未加密的開機儲存池,這個儲存池中會儲存核心及其他開機必要的檔案。然後剩餘的空用會給 ZFS 儲存池使用。

主要 ZFS 設定選單提供了數個設定選項來控制儲存池的建立。

圖形 2.19. ZFS 磁碟分割選單
ZFS 磁碟分割選單

選擇 T 來設定儲存池類型 (Pool Type) 以及要組成儲存池的磁碟。自動 ZFS 安裝程式目前僅支援建立單一頂層 vdev,除了在串連 (Stripe) 模式。要建立更複雜的儲存池,需使用 節 2.6.5, “Shell 模式磁碟分割” 的操作來建立儲存池。安裝程式支援建立各種儲存池類型,包含串連 Stripe (不建議,沒有備援功能)、鏡像 Mirror (效能較佳,但可用空間較少) 以及 RAID-Z 1, 2, 與 3 (分別有能力承受同時 1, 2 與 3 個磁碟的損壞)。在選擇儲存池類型時會在螢幕的下方提示所需的磁碟數量,以及在使用 RAID-Z 時,每種配置最佳的磁碟數。

圖形 2.20. ZFS 儲存池類型
ZFS 儲存池類型

選擇儲存池 (Pool Type) 之後,會顯示可用的磁碟清單,然後會提示使用者選擇一個或多個磁碟來建立儲存池。接著會檢驗設定來確定選擇的磁碟足夠,若不足,選擇更改選項 (<Change Selection>) 來返回磁碟清單或取消 (<Cancel>) 來更改儲存池類型。

圖形 2.21. 磁碟選擇
磁碟選擇

圖形 2.22. 無效的選擇
無效的選擇

若有一個或多磁碟未出現在清單上,或在安裝程式啟動後才連接的磁碟,可選擇重新掃描裝置 (- Rescan Devices) 來更新可用磁碟的清單。要避免清除掉錯的磁碟,可用磁碟資訊 (- Disk Info) 來檢查每個磁碟,包含磁碟中的分割表以及各種其他資訊如裝置型號與序號 (若有的話)。

圖形 2.23. 分析磁碟
分析磁碟

ZFS 設定選單也允許使用者輸入儲存池名稱、關閉強制 4k 扇區對齊、開啟或關閉加密、切換 GPT (建議) 與 MBR 分割表類型以及選擇交換空間容量。設定所有選項為想要的值之後,請選擇選單上方的安裝 (>>> Install) 選項。

若開啟了 GELI 磁碟加密,安裝程式會提示輸入兩次用來加密磁碟的密碼。

圖形 2.24. 磁碟加密密碼
磁碟加密密碼

安裝程式接著會提供最後一次修改的機會可取消先前所選擇摧毀用來建立 ZFS 儲存池的磁碟機。

圖形 2.25. 最後修改
最後修改

然後安裝程序會正常繼續。

2.6.5. Shell 模式磁碟分割

當要做進階的安裝時,bsdinstall 的磁碟分割選單可能無法提供需要的彈性。進階的使用者可以在磁碟分割選單選擇 Shell 選項來手動分割磁碟機、建立檔案系統、填寫 /tmp/bsdinstall_etc/fstab 以及掛載檔案系統到 /mnt 下。這些動作完成之後,輸入 exit 可返回 bsdinstall 繼續安裝程序。

本文及其他文件,可由此下載: ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/

若有 FreeBSD 方面疑問,請先閱讀 FreeBSD 相關文件,如不能解決的話,再洽詢 <questions@FreeBSD.org>。

關於本文件的問題,請洽詢 <doc@FreeBSD.org>。