2.5. 磁碟空間配置

您的第一個工作就是要分配給 FreeBSD 用的磁碟空間以便 Sysinstall 先做好一些準備。為了完成這個工作,您必須先對 FreeBSD 如何找到磁碟資訊 做一個了解。

2.5.1. BIOS 磁碟機編號

在您安裝及設定 FreeBSD 之前,有一個很重要的一點必須注意,尤其當您有 許多顆硬碟的時候。

在 PC 架構,當您跑像 MS-DOS 或 Windows 這種跟 BIOS 相關的作業系統 的時候,BIOS 有能力改變正常的磁碟機順序,然後這些作業系統會跟著 BIOS 做改變。 這讓使用者不一定非要由所謂的 "primary master" 硬碟開機。許多人發 現最簡單而便宜備份系統的方式就是再去買一顆一模一樣的硬碟,然後定期將資料從第 一顆硬碟複製到第二顆硬碟(使用 GhostXCOPY。所以,當第一顆硬碟死了(病毒、壞軌),他們 可以調整 BIOS 中的開機順序而直接用第二顆硬碟開機。這跟將機殼拆開,把第二顆硬 碟跟第一顆硬碟對調(要調 jumper)有同樣的效果,差別就是不用拆殼;因此,對有這 方面需求的人而言,直接在 BIOS 中設定非常方便。

比較昂貴,配有 SCSI 控制卡的系統通常可以延伸 BIOS 的功能來讓 SCSI 裝置(可達七個)達到類似改變順序的功能。

習慣於使用這種方式的使用者很可能會感到驚訝,因為在 FreeBSD 中並非如 此。FreeBSD 不會參考 BIOS,而且也不知道所謂的 "BIOS 邏輯磁碟機對應" 是怎麼回事。這會讓人感覺很疑惑,明明就是一樣的硬碟而且資料也完全從另一顆複製 過來的,結果卻沒辦法像以前那樣用。

當使用或安裝 FreeBSD 之前,請將 BIOS 中的硬碟開機順序調回正常的順序, 並且以後不要再變更。如果您仍然需要交換硬碟,那請用硬體的方式,打開機殼,調 jumper 及排線。

2.5.2. 磁碟組織

FreeBSD 用來尋找檔案的最小單位就是檔案的名稱了。檔名有分大小寫,即 readme.txtREADME.TXT 是不一樣的 兩的檔。FreeBSD 並不使用檔案的副檔名(.txt)來判別這個檔 案是程式檔、文件檔或是其他類型的檔案。

檔案存在目錄裡面。一個目錄中可能沒有任何檔案,也可能有好幾百個檔案。 目錄之中也可以包含其他的目錄;您可以建立階層式的目錄以便資料的管理。

檔案或目錄的對應是藉由給定的檔案或目錄名稱,然後加上斜線符號「/」; 之後再視需要加上其他的目錄名稱。例如,您有一個 foo 目錄, 裡面有一個子目錄叫 bar,bar 目錄中有一個叫做 readme.txt 的檔。那麼,相對於這個檔的全名或「路徑」就是 foo/bar/readme.txt

目錄以及檔案儲存在檔案系統中。每個檔案系統都有唯一一個最上層的目錄, 叫做「根目錄(root directory)」。然後在這個根目錄下面才能有其他的目錄。

到目前為止,這根您所使用的其他作業系統都差不多。有一些差別就是,比 如 DOS,使用 \ 來區別檔案跟目錄的名稱;在 MacOS 下用的是 : 符號。

FreeBSD 的路徑中不使用磁碟代號或是其他的磁碟名稱。因此,您不可以使 用 c:/foo/bar/readme.txt

每個檔案系統都有一個根目錄,根目錄由 / 表示。所有 其他的檔案系統就「掛(mounted)」在根目錄下面。不論您有 多少顆硬碟,所有的目錄都顯示成在同一個磁碟上。

假設您有三個檔案系統,叫做 AB 以及 C。每個檔案系統都包含兩個目錄,叫做 A1A2(B 跟 C 類推)。

A 為主要的檔案系統;如果您用 ls 指令查看此目錄的內容,您會看到兩個子目錄: A1 以及 A2,如下所示:

 /
 |
 +--- A1
 |
 `--- A2

一個檔案系統必須以目錄形式掛在另一個檔案系統上。因此,假設您將 B 掛在 A1 下,則 B 的根目錄就變成了 A1,而在 B 之下的任何 目錄路徑也會相對改變。

 /
 | 
 +--- A1
 |     |
 |     +--- B1
 |     |
 |     `--- B2
 |
 `--- A2

B1B2 目錄中的任何檔案 必須經由路徑 /A1/B1/A1/B2 才能 達到。所有原來在 /A1 中的檔案會暫時被隱藏起來,等 B「移除(unmounted)」 後才會再顯 現出來。

如果 B 掛在 A2 上,圖示如下:

 /
 |
 +--- A1
 |
 `--- A2
       |
       +--- B1
       |
       `--- B2

上面的路徑分別為 /A2/B1 以及 /A2/B2

檔案系統可以掛在其他檔案系統的目錄最上層,延續之前的例子, C 檔案系統可以掛在 B 下面的最上層目錄 B1 下,如下所示。

 /
 |
 +--- A1
 |
 `--- A2
       |
       +--- B1
       |     |
       |     +--- C1
       |     |
       |     `--- C2
       |
       `--- B2

或,C 可以直接掛在 AA1 目錄下。

 /
 |
 +--- A1
 |     |
 |     +--- C1
 |     |
 |     `--- C2
 |
 `--- A2
       |
       +--- B1
       |
       `--- B2

如果您熟悉 DOS,這跟 join 指令很類似(雖然不盡相 同)。

通常,您並不需要擔心這個。通常您只要在安裝 FreeBSD 的時候建立檔案系 統並決定要將它們掛在哪裡;之後除非您有安裝新的硬碟,否則是不必改變它們的。

您完全可以使用單一一個大的主檔案系統(root filesystem),而不建立其 他的。這裡有許多缺點跟一個優點。

使用多個檔案系統的好處

使用單一檔案系統的好處

檔案系統包含在分割區裡面,但是因為 FreeBSD 承襲 UNIX 架構,所以,這 邊講的分割區的意義跟之前的章節中提到的不大一樣。每個分割區由英文字母的 ah 來區別。而一個分割區只能包含一個 檔案系統;因此,檔案系統通常以他們實際掛在根目錄下的節點名稱或是相對應的英文字 母來區別。

FreeBSD 也有所謂的磁碟交換空間(swap space。 交換空間提供作為 FreeBSD 的 虛擬記憶體;這讓您的電腦好 像擁有比實際更多的記憶體。當 FreeBSD 記憶體用完了,它會將現在記憶體中不常用到 的資料移到交換空間去,當需要用到的時候再移回到記憶體中(把其它的不常用到的先 移出)。

底下是一些分割區常見的慣例用法。

分割區慣例
a通常為根檔案系統(root filesystem)
b通常是交換空間
c通常跟切割的硬碟大小一樣,用來給一些會檢查整個切割的工具(如磁碟 壞軌掃描工具)來使用。通常我們不會把檔案系統建立在這個分割區。
dd 分割區以前是有特殊意義的,雖然現在已經不再 使用了。因為有些工具在此分割區執行起來會有問題,所以 Sysinstall 正常不會去建立 d分割區。

每個有包含檔案系統的分割區儲存在所謂的「切割片段(slice)」 中。Slice 在 FreeBSD 早期也稱為 partition,同樣,也是因為 FreeBSD 是 Unix 系 統。切割片段有編號碼,從 1 到 4。

切割片段的編號是根據裝置名稱,以 s 開頭,編號從 1 開始。因此,"da0s1" 是第一顆 SCSI 硬碟上 的第一個切割片段。一個磁碟上最多只能有四個實體切割片段,但是,在實體片段中可 以有適當類型的邏輯切割片段。這種延伸的片段編號從 5 開始,所以, "ad0s5" 是一個磁碟的第一個延伸切割片段。

切割區,用來表示實體磁碟機或是其他含有分割區的磁碟機,編號從字母 ah。這些字母編號附加在裝置名稱之後, 所以,"da0a" 表示第一個 da 磁碟機上面的 a 分割區。"ad1s3e" 表示位於第二個 IDE 磁碟機, 第三個切割區上面的第五個分割。

最後,我們就可以把系統上的每個磁碟都區分出來了。一個磁碟的名稱會有 一個代碼來表示這個磁碟的類型,接著是一個數字,表示這是哪一個磁碟。這邊跟切割 區每個磁碟編號從 0 開始不一樣。常見的代碼可以參考 Table 2-2

當要參照一個分割區的時候,FreeBSD 需要您一併輸入包含這個分割區的切 割跟磁碟機名稱;當要參照一個切割區的時候,也必須輸入包含這個切割區的磁碟名稱。 怎麼做呢?首先先列出磁碟名稱,然後 s 加上切割區編號,最後 再輸入分割區字母代號。範例可以參考 Example 2-3

Example 2-4 展示一個基本的磁碟分布 模式,相信對您有些幫助。

要安裝 FreeBSD,您必須先建置磁碟切割區,然後再在切割區中建立要給 FreeBSD 用的分割區。最後在這些分割區中建立檔案系統(或磁碟交換空間)並決定 要將這些檔案系統掛(mount)在哪裡(譯註:指定 mount 點)。

Table 2-2. 磁碟機代碼

代碼意義
adATAPI (IDE) 磁碟機
daSCSI 直接存取磁碟機
acdATAPI (IDE) 光碟機
cdSCSI 光碟機
fd軟碟機

Example 2-3. 磁碟、切割區、分割區命名範例

名稱意義
ad0s1a位於第一個 IDE 磁碟機(ad0)上,第一個切割區( s1)中的第一個分割(a)。
da1s2e位於第二個 SCSI 磁碟機(da1)上,第二個切割區( s2)中的第五個分割(e

Example 2-4. 基本磁碟機分布模式

此圖顯示 FreeBSD 中接到系統的第一個 IDE 磁碟機內部配置圖。假設這個磁碟 的容量是 4GB,並且包含了兩個 2GB 的切割區(DOS 的分割區)。第一個切割區是 DOS 的 C: 槽,第二個則安裝了 FreeBSD。這個例子中的 所安裝的 FreeBSD 有三個分割區以及一個磁碟交換分割(swap)。

這三個分割區每個都是一個檔案系統。a 分割是根(root) 檔案系統;分割 e/var;而 f 分割是 /usr 目錄結構。

2.5.3. 使用 FDisk 建立切割區

Note: 在這時候您所做的變更都不會真正寫到硬碟中。如果您發現做錯了,可以利用選 單離開 Sysinstall 然侯重新做一次。如果您弄亂了而 且不知道怎麼離開,您可以直接將電腦電源關掉再重來。

當您在 Sysinstall 主畫面選擇使用標準安裝 後,您會看到下面的訊息:

                                     Message
     In the next menu, you will need to set up a DOS-style ("fdisk")
     partitioning scheme for your hard disk. If you simply wish to devote
     all disk space to FreeBSD (overwriting anything else that might be on
     the disk(s) selected) then use the (A)ll command to select the default
     partitioning scheme followed by a (Q)uit. If you wish to allocate only
     free space to FreeBSD, move to a partition marked "unused" and use the
     (C)reate command. 
                                    [  OK  ] 
    
                          [ Press enter to continue ]

如螢幕指示,按下 Enter 鍵,然後您就會看到一個列表 列出所有在搜尋裝置的時候找到的磁碟機。Figure 2-16 範例顯示的是有找到兩個 IDE 磁碟機的情形,這兩個磁碟機分別為 ad0ad2

Figure 2-16. 選擇要 FDisk 的磁碟機

您可能正在奇怪,為什麼 ad1 沒有列出來? 為什麼遺失了呢?

試想,如果您有兩顆 IDE 硬碟,一個是 primary master,一個是 secondary master,這樣會發生什麼事呢?如果 FreeBSD 依照找到的順序來為他們命名,如 ad0 以及 ad1,那麼就不會有 什麼問題。

但是,現在問題來了。如果您現在想在 primary slave 加裝第三顆硬碟, 那麼這顆硬碟的名稱就會是 ad1,之前的 ad1 就會變成 ad2。這會造成 什麼問題呢?因為裝置的名稱(如 ad1s1a)是用來尋找檔 案系統的,因此您可能會發現,突然,您有些檔案系統從此無法正確地顯示出來,必須 修改 FreeBSD 組態(譯註:/etc/fstab)才可以正確顯示。

為了解決這個問題,在設定核心的時候可以叫 FreeBSD 直接用 IDE 裝置所 在的位置來命名,而不是根據找到的順序。使用這種方式的話,在 secondary master 的 IDE 裝置就 always 永遠是ad2, 即使您的系統中沒有 ad0ad1 也不受影響。

此為 FreeBSD 核心的預設值,這也是為什麼上面的畫面只有顯示 ad0 以及 ad2 的原因。畫面上 這台機器的兩顆硬碟是裝在 primary 及 seconday 的 master 上面;並沒有任何一個硬 碟裝在 slave 匯流排上。

您應該選擇您想安裝 FreeBSD 的硬碟,然後按下 。之後 FDisk 就會開始,您會看到類似 Figure 2-17的畫面。

FDisk 的顯示畫面分為三個區域。

第一區是畫面的最上面兩行,顯示的是目前所選擇磁碟的資訊,包含它的 FreeBSD 名稱、磁碟分布以及磁碟的總容量。

第二區顯示的是目前選擇的磁碟上有哪些切割區,每個切割區的開頭及結束 位置、所佔容量、FreeBSD 名稱、它們的描述以及子類別(subtype)。此範例顯示有 兩個未使用的切割區、一個大的 FAT 切割區(很可能是 DOS 或 Windows 的 C:)、以及一個延伸切割區(在 DOS 或 Windows 裡面還 可以包含邏輯分割)。

第三個區域顯示 FDisk 中可用的指令。

Figure 2-17. 典型尚未編輯前的 Fdisk 分割表

接下來要做的事跟您要怎麼切割您的硬碟有關。

如果您要讓 FreeBSD 使用整顆硬碟(稍後您確認要 Sysinstall 繼續安裝後會刪除所有這顆硬碟上的資料), 那麼您可以按 AUse Entire Disk)。 目前已有的切割都會被移除,取而代之的是一個小的,標示為 unused 的切割,以及一個大的 FreeBSD 切割區。之後,請用方向鍵將游標移到這個 FreeBSD 切割,然後按 S 以將此切割區設為開機啟動。您會看到類似 Figure 2-18 的畫面。注意在 Flags 欄位的 A 記號表示這個切割區是啟動狀態, 並且會由此切割區開機。

如果要刪除已有的切割以空出空間給 FreeBSD,您可以移到要刪除的切割區 後按 D。然後就可以按 C,會出現對話框請您輸 入要產生的切割區大小。輸入適合的大小然後按 Enter

如果您已經建立好給 FreeBSD 用的空間(使用像 Partition Magic 類似的工具),那麼您可以按下 C 鍵來建立一個新的切割區。同樣的,會有對話方框詢問您要建立的 切割大小。

Figure 2-18. Fdisk 分割使用整顆硬碟

完成後,請按 Q。您的變更會存在 Sysinstall 中,但是還不會真正寫入您的硬碟。

2.5.4. 安裝開機管理員

在這步驟您可以選擇要不要安裝開機管理員。一般而言,如果碰到下列的情 形,您應該選擇要安裝開機管理員:

選擇好後請按 Enter

Figure 2-19. Sysinstall 開機管理員畫面

按下 F1 鍵所顯示的線上說明中有討論一些作業系統共存 可能發生的問題。

2.5.5. 在其它磁碟上建立切割區

如果您的系統上有一顆以上的硬碟,在選擇完開機管理員後會再回到選擇磁碟 的畫面。如果您要將 FreeBSD 安裝在多顆硬碟上,那麼您可以在這邊選擇其它的硬碟, 然後重複使用 FDisk 來建立切割區。

Figure 2-20. 離開選擇磁碟畫面

Tab 鍵可以在您最後選擇的磁碟、 以及 間切換。

Tab 鍵將游標移到 然後按 Enter 鍵繼續安裝過程。

2.5.6. 使用 Disklabel 製作分割區

您現在必須在剛剛建立好的切割區中規劃一些分割區。請記住,每個分割區 代號是從 ah,並且分割區 bc 以及 d 為慣例使用的特殊分割,不應隨意變動。

某些應用程式可以利用一些特殊的分割區而達到較好的效能,尤其是分割區 散佈在不同磁碟的時候。但是,現在您是第一次安裝 FreeBSD,所以不需要去煩惱如何 分割您的硬碟。最重要的是,裝好 FreeBSD 然後學習如何使用它。當您對 FreeBSD 有 相當程度的熟悉後,您可以隨時重新安裝 FreeBSD,然後改變您分割的方式。

下面的範例中有四個分割--一個是磁碟交換空間,另外三個是檔案系 統。

Table 2-3. 第一顆硬碟的分割區配置

分割區檔案系統大小描述
a/100MB此為根檔案系統(root filesystem)。任何其它的檔案系統都會掛在根 目錄(譯註:用根目錄比較親切)下面。100MB 對於根目錄來說是合理的大小,因為 您往後並不會在這裡存放許多資料;在安裝 FreeBSD 後會用掉約 40MB 的根目錄空 間。剩下的空間是用來存放暫存檔用的,同時,您也應該預留一些空間,因為以後的 FreeBSD 版本可能會需要較多的根目錄空間。
bN/ARAM 的 2-3 倍

此區為系統磁碟交換空間(swap space)。選擇正確的交換空間 大小可是一門學問唷。一般來說,交換空間的大小應該是您系統上實體記憶體 (RAM)大小的 2 到 3 倍。交換空間的至少要 64MB,因此,如果您的電腦上的 RAM 比 32MB 小,請將交換空間大小設為 64MB。

如果您有一個以上的硬碟,您可以在每個硬碟上都配置交換空間。FreeBSD 會利用 每顆硬碟上的交換空間,swap 速度會比較快。如果是這種情形,先算出您總共需 要的交換空間大小(如 128MB),然後除以您擁有的硬碟數目(如 2 顆),算出 的結果就是每顆硬碟上要配置的交換空間大小。在這個例子中,每顆硬碟的交換空 間為 64MB。

e/var50MB/var 目錄會存放不同長度的檔案、紀錄檔以及 其他管理用途的檔案。大部分這些檔案都是 FreeBSD 每天在跑的時候會讀取或是寫 入的。機這些檔案放在另外的檔案系統(譯註:即 /var)可以避免影響到其它目錄 下面類似的檔案存取機制。
f/usr剩下的硬碟空間您所有其它的檔案通常都會存在 /usr 目錄以及 其子目錄下面。

如果您要將 FreeBSD 安裝在一顆以上的硬碟,那麼您必須在您配置的其它切 割區上再建立分割區。最簡單的方式就是在每顆硬碟上建立兩個分割,一個是交換空間, 一個是檔案系統。

Table 2-4. 接下來的硬碟分割區配置

分割區檔案系統大小描述
bN/A見描述之前提過,交換空間是可以跨硬碟的。但是,即使 a 分割區沒有使用,慣例上還是會把交換空間放在 b 分割區。
e/diskn剩下的硬碟空間剩下的空間是一個大的分割區,最簡單的做法是將之規劃為 a 分割,而不是 e 分割。然而,慣例上 a 分割是保留給根目錄(/)用的。您不 一定要遵守這個慣例,但是 Sysinstall 會,所以照著 它做會使您的安裝較為清爽乾淨。您可以將這些檔案系統掛在任何地方,本範例建議 將它們掛在 /diskn 目錄, n 依據每顆硬碟而有所不同。但是,您喜歡的話也可以 將它們掛在別的地方。

分割區的配置完成後,您就可以用 Sysinstall 來建立它們了。您會看到下面的訊息:

                                     Message
     Now, you need to create BSD partitions inside of the fdisk
     partition(s) just created. If you have a reasonable amount of disk
     space (200MB or more) and don't have any special requirements, simply
     use the (A)uto command to allocate space automatically. If you have
     more specific needs or just don't care for the layout chosen by
     (A)uto, press F1 for more information on manual layout.  
    
                                    [  OK  ] 

按下 Enter 鍵開始 FreeBSD 分割表編輯器,稱做 Disklabel

Figure 2-21 顯示您第一次執行 Disklabel 的畫面。畫面分為三個區域。

前幾行顯示的是您正在編輯的硬碟以及您正在建立的分割位於哪個切割上。 (在這裡,Disklabel 使用的是 分割名稱 而不是切割名稱)。此畫面也會顯示切割區還有多少空 間可以使用;亦即,有多餘的空間,但是尚未指派分割區。

畫面的中間區域顯示已建立的分割區,每個分割區的檔案系統名稱、所佔的大 小以及一些關於建立這些檔案系統的參數選項。

下方的第三區顯示在 Disklabel 中可用的按 鍵。

Figure 2-21. Sysinstall Disklabel 編輯器

Disklabel 可以自動配置分割區以及給它們預 設的大小。您可以按 A 鍵使用此功能。您會看到類似 Figure 2-22 的畫面。根據您硬碟的大小,自動分配所配置的 大小不一定適合。但是沒關係,您並不一定要使用預設的大小。

Note: 從 FreeBSD 4.5 開始,自動配置會給 /tmp 目錄一個 獨立分割,而不是附屬在 / 之下。這樣可以避免將一些暫存的 檔案放到根目錄中(譯註:可能會用完根目錄空間)。

Figure 2-22. Sysinstall Disklabel 編輯器-使用自動配置

如果要刪除自動配置的分割,然後想自行建立,您可以使用方向鍵移到第一 個分割區,然後按 D 鍵刪除它。重複此動作直到刪除所有自動配置 的分割區。

要建立第一個分割區(a,配置點為 /),先確定畫面上方的磁碟資訊有被選取(反藍),然後按下 C 鍵。接著會出現一個對話方塊問您要配置的分割大小(如 Figure 2-23)。您可以輸入要使用的 block 數量或是 (譯註:通常會)輸入想使用的大小,然後後面加上 M 表示 MB, 、G 表示 GB 或是 C 表示 cylinders(磁柱)。

Figure 2-23. 根目錄使用空間

顯示在對話框中的數量預設使用整個切割區的大小,您可以用 Backspace 鍵刪除這些數字然後照上述的方式輸入您想要的大小, 如 64MB(Figure 2-24),然後按 。

Figure 2-24. 編輯根目錄大小

輸入完大小後接著會問您要建立的分割是檔案系統還是交換空間,如 Figure 2-25 所示。第一個分割是檔案系統,所以確認選 擇 FS 後按 Enter 鍵。

Figure 2-25. 選擇根目錄類型

最後,因為您要建立的是一個檔案系統,所以必須告訴 Disklabel 這個檔案系統要掛在哪裡,如 Figure 2-26。根目錄的配置點是 /, 所以請輸入 / 然後按 Enter

Figure 2-26. 選擇根目錄配置點

剛剛製作好的分割區會顯現在畫面上。您應該重複上述的動作以建立其它的 分割區。當建立交換空間的時候,系統不會問您要將它掛在哪裡,因為交換空間是不用 掛在系統上的。當您在建立最後一個分割(/usr)的時候,您 可以直接使用預設的大小,即所有此切割區剩餘的空間。

您最後的 FreeBSD DiskLabel 編輯器畫面會類似 Figure 2-27,實際數字依您的選擇而有所不同。按下 Q 鍵完成分割區的建立。

Figure 2-27. Sysinstall Disklabel 編輯器