17.3 新增硬碟

Originally contributed by David O'Brien.

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

安裝好硬碟後,用 root 登入系統, 看一下 /var/run/dmesg.boot 以確認系統是否抓到新硬碟。 繼續剛才的範例,新增的硬碟會是 da1, 假設我們想將它掛載到 /1 這個位置 (如果您新增的是 IDE 硬碟的話,4.0 之前的系統是 wd1,4.X 及之後的系統則是 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 搞混了 [1] 不論是完全由 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)(在 FreeBSD 4.X 稱為 disklabel(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)

17.3.1 使用 sysinstall(8)

  1. 操作 Sysinstall

    透過 sysinstall (/stand/sysinstall in FreeBSD versions older than 5.2) 的選單介面,您可以輕易為硬碟分割 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(交換分割區),每個硬碟上都可以有交換分割區。 c partition 用來表示整個硬碟(如果使用 dedicated mode 的話) 或整個 slice。其它的字母則用來表示普通的 BSD partition。

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

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

  4. 完成

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

17.3.2 使用命令列工具

17.3.2.1 使用 Slices(BIOS partitions)

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

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

如果您新增的是 IDE 硬碟,將 da 改成 da 即可 [4]。 而如果是 4.X 之前的系統,用 wd

17.3.2.2 Dedicated

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

# dd if=/dev/zero of=/dev/da1 bs=1k count=1
# disklabel -Brw da1 auto
# disklabel -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
# disklabel /dev/da1 | disklabel -BrR da1 /dev/stdin
# newfs /dev/da1e
# mkdir -p /1
# vi /etc/fstab                   # 新增一筆 /dev/da1e 的資訊。
# mount /1

Note: 從 FreeBSD 5.1-RELEASE 開始,bsdlabel(8) 取代原本的 disklabel(8) 程式,某些指令參數已經廢棄不用。 上面範例裡,如果用的是 bsdlabel(8)-r 參數應該拿掉。更多的資訊請參考 bsdlabel(8) manual page。

Notes

[1]

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

[2]

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

[3]

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

[4]

譯註:da 是 direct access,ad 則是 ata disk。

[5]

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

This, and other documents, can be downloaded from ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.

For questions about FreeBSD, read the documentation before contacting <questions@FreeBSD.org>.
For questions about this documentation, e-mail <doc@FreeBSD.org>.