18.3. 新增磁碟

Originally contributed by David O'Brien.

假設我們想新增 SCSI 磁碟到一臺原先只有一顆磁碟的機器上, 首先將電腦關機,依製造商的指示將磁碟裝上去, 詳細的操作方式請參考製造商的說明文件。

安裝好磁碟後,用 root 登入系統, 看一下 /var/run/dmesg.boot 以確認系統是否抓到新磁碟。 繼續剛才的範例,新增的磁碟會是 da1, 假設我們想將它掛載到 /1 這個位置 (如果您新增的是 IDE 磁碟的話,請用 ad1)。

FreeBSD 為了在 IBM-PC 相容電腦上執行, 必須配合 PC BIOS partition,因此和傳統的 BSD partition 有很大的不同。 在 PC 裡磁碟最多可以有四筆 BIOS partition 資訊(亦即最多可分割成四個 partition)。如果這個磁碟打算全部讓 FreeBSD 使用,可選擇 dedicated 模式, 不然的話 FreeBSD 必須置身於其中一個 PC BIOS partition 中。 在 FreeBSD 裡,PC BIOS partition 稱為 slice, 這是為了不要和傳統的 BSD partition 搞混了。 [16] 不論是完全由 FreeBSD 使用的磁碟,還是安裝了其它作業系統的磁碟, 您都可以使用 slice。這樣的好處是,其它非 FreeBSD 作業系統的 fdisk 工具可以順利操作。

如果使用 slice,這個新增的磁碟會是 /dev/da1s1e。可以這樣來解讀它:SCSI 磁碟、 unit number 1(第二個 SCSI 磁碟)、slice 1(第一個 PC BIOS partition)、 及 e BSD partition。在 dedicated 模式的話, 新磁碟則是 /dev/da1e

因為 bsdlabel(8) 是用 32-bit 整數來儲存 sector(磁區) 數, 因此限制一個磁碟最大只能有 2^32-1 個 sector,亦即 2TB 的空間。 而 fdisk(8) 的格式容許起始 sector 編號不超過 2^32-1, 長度也不超過 2^32-1,因此 partition 最大空間是 2TB,而磁碟最大是 4TB。 sunlabel(8) 則限制 partition 最大是 2TB,磁碟最多可有 8 個 partition,因此最大是 16TB。 如果要使用更大的磁碟,請使用 gpt(8)

18.3.1. 使用 sysinstall(8)

  1. 操作 Sysinstall

    透過 sysinstall 的選單介面, 可以輕易為磁碟分割 BIOS partition(slice) 和 BSD patition。 必須以 root 身份使用 sysinstall, 要嘛用 root 登入,要嘛用 su 切換到 root。 執行 sysinstall 後,選 Configure,在 FreeBSD Configuration Menu 裡移到 Fdisk 選項。

  2. fdisk Partition 編輯器

    fdisk 裡,按下 A 表示整個磁碟都給 FreeBSD 使用。 接著會提示您『是否要相容其它的作業系統』,回答 YES。 按 W 會將這些改變立即寫入磁碟,再按 q 可以離開 FDISK 編輯器。 接下來會問您要將 Master Boot Record 安裝於何處,由於現在是新增磁碟,表示作業系統已經裝在別的磁碟上了, 所以可以選 None 就行了。

  3. Disk Label Editor(磁碟 Label 編輯器)

    接著請關閉 sysinstall,再重開一次。 照著上一節的指示,不過這次改選 Label 進入 Disk Label Editor,在此您可以編輯傳統的 BSD partition。 一個磁碟(或著一個 slice) 最多可切分成 8 個 BSD partition,依序用 a-h 來表示。 有些字母有特別的意義,a partition 表示這是 root partition(根分割區,/), 因此只有安裝系統的磁碟(例如用來開機的磁碟) 有 a partition。 b partition 表示這是 swap partitions(交換分割區),每個磁碟上都可以有 swap。 c partition 用來表示整個磁碟(如果使用 dedicated mode 的話)或整個 slice。 其它的字母則用來表示普通的 BSD partition 。

    sysinstall 的 Label editor(磁碟 Label 編輯器) 偏好用 e 來表示非 root、也非 swap 的分割區 [17] 在 Label editor 裡,按 C 可以新增一個檔案系統(BSD label),它會問您這是一個 FS(file system ,檔案系統) 或是 swap(交換分割區),選擇 FS 接著輸入要掛載的位置(例如 /mnt)。 如果系統安裝完後才新增磁碟,sysinstall 不會幫您把這筆掛載資料加入 /etc/fstab, 所以掛載的位置不太重要。

    當您準備好將新的 label 寫入磁碟、建立檔案系統,按 W 即可。如果出現在什麼錯誤, sysinstall 可能無法幫您掛載這個新分割區。 結束 Label Editor、結束 sysinstall 就行了。

  4. 完成

    最後要做的是編輯 /etc/fstab, 加入您新增的分割區資訊。

18.3.2. 使用命令列工具

18.3.2.1. 使用 Slices(BIOS partitions)

這種模式能讓您的磁碟分割區與其它作業系統的 fdisk 工具和平共處,因此我們建議您使用 slice 模式。 如果您一定要使用 dedicated 模式, 您得有個好理由! [18]

# dd if=/dev/zero of=/dev/da1 bs=1k count=1
# fdisk -BI da1 # 初始您的磁碟。
# bsdlabel -B -w -r da1s1 auto # 建立 bsdlabel。
# bsdlabel -e da1s1 # 編輯 bsdlabel 以新增 label。
# mkdir -p /1
# newfs /dev/da1s1e # 如果您新增了多個 label,對每個 label 重覆這個步驟。
# mount /dev/da1s1e /1 # 掛載這些新 label。
# vi /etc/fstab # 在 /etc/fstab 加入適當的資訊。

如果您新增的是 IDE 磁碟,將 da 改成 ad 即可 [19]

18.3.2.2. Dedicated

如果您不打算將新磁碟用於其它的作業系統, 您可以使用 dedicated 模式。注意: Microsoft 的作業系統認不得這個模式,不過也不會去破壞它; 然而 IBM 的 OS/2® 就沒那麼好心了,它會去調整所有它不認得的分割區 [20]

# dd if=/dev/zero of=/dev/da1 bs=1k count=1
# bsdlabel -Brw da1 auto
# bsdlabel -e da1				# 建立 `e' partition。
# newfs -d0 /dev/da1e
# mkdir -p /1
# vi /etc/fstab				# 新增一筆 /dev/da1e 的資訊。
# mount /1

另一種方法:

# dd if=/dev/zero of=/dev/da1 count=2
# bsdlabel /dev/da1 | bsdlabel -BrR da1 /dev/stdin
# newfs /dev/da1e
# mkdir -p /1
# vi /etc/fstab					# 新增一筆 /dev/da1e 的資訊。
# mount /1


[16] 譯註:基於相同的理由, 現在 BSD partition 常稱為 BSD label,或簡稱 label。

[17] 譯註:老實說我看不懂這句指的是什麼?原文是 sysinstall Label editor favors the e partition for non-root, non-swap partitions.

[18] 譯註:如果您自始至終都不打算將這個磁碟用於 FreeBSD 之外的作業系統,那可以算是個好理由。不過就算如此, 用 slice 模式也沒什麼壞處就是了:-)。

[19] 譯註:da 是 direct access (disk) 的縮寫; ad 是 ata disk 的縮寫。

[20] 譯註:我對這句的意思沒什麼信心,原文是 IBM's OS/2® however, will appropriate any partition it finds which it does not understand.

All FreeBSD documents are available for download at http://ftp.FreeBSD.org/pub/FreeBSD/doc/

Questions that are not answered by the documentation may be sent to <freebsd-questions@FreeBSD.org>.
Send questions about this document to <freebsd-doc@FreeBSD.org>.