3.6. 磁碟組織

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

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

檔案或目錄的對應是藉由給定的檔案或目錄名稱,然後加上正斜線符號 (/);之後再視需要加上其他的目錄名稱。 如果您有一個目錄 foo ,裡面有一個目錄叫作 bar,這個目錄中又包含了一個叫 readme.txt 的檔案,那麼這個檔案的全名,或者說檔案的路徑就是 foo/bar/readme.txt。Note that this is different from Windows® which uses \ to separate file and directory names. FreeBSD does not use drive letters, or other drive names in the path. For example, one would not type c:\foo\bar\readme.txt on FreeBSD.

目錄及檔案儲存在檔案系統之中。 每個檔案系統都有唯一一個最上層的目錄,叫做根目錄 (root directory)。 然後在這個根目錄下面才能有其他的目錄。One file system is designated the root file system or /. Every other file system is mounted under the root file system. No matter how many disks are on the FreeBSD system, every directory appears to be part of the same disk.

假設您有三個檔案系統,分別叫作 A, BC。 每個檔案系統都包含兩個目錄,叫做 A1, A2 (依此類推得 B1, B2C1, C2)。

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

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

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

如果 B 掛載在 A2 之上,則會變成:

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

檔案系統可以掛在其他檔案系統的目錄之上。 延續之前的例子,C 檔案系統可以掛在檔案系統 BB1 目錄之上,如圖所示:

或者 C 直接掛載於 AA1 目錄之上:

您完全可以使用單一的一個大的根檔案系統 (root file system) 而不建立其他的檔案系統。 這樣有好處也有有壞處。

使用多個檔案系統的好處
使用單一檔案系統的好處

檔案系統包含在分割區裡面。 因為 FreeBSD 承襲 UNIX® 架構,這邊講的分割區和一般提到的分割區 (例如 MS-DOS® 分割區) 不同。 每一個分割區由一個代號(字母)表示,從 ah。 每個分割區只能包含一個檔案系統。 因此除了說常見到用檔案系統同的掛載點來表示檔案系統外, 也可以用包含他的分割區代號來表示。

FreeBSD 也會拿磁碟空間來當 swap space。 Swap space 給 FreeBSD 當作虛擬記憶體用。 這讓您的電腦好像擁有比實際更多的記憶體。 當 FreeBSD 的記憶體用完的時候,它會把一些目前沒用到的資料移到 swap space,然後在用到的時候移回去 (同時移出部份沒用到的)。

某些分割區有慣例的使用方式如下:

分割區慣例
a通常包含根檔案系統 (root file system)
b通常是 swap space
c通常和整個 slice 的大小一樣,給一些會用到整個 slice 的工具程式 (例如硬碟壞軌檢查工具) 來使用。 一般來說您應該不會把檔案系統建立在這個分割區。
d分割區 d 曾經有代表特殊意義,但是已經不再使用。 所以現在 d 就和其他一般的分割區相同了。

每個包含有檔案系統的分割區是存在所謂的 slice 裡面。 FreeBSD 的 slice 就是指平常我們在 Windows® 稱為分割區 (partition) 的東西一樣有自己的檔案系統,用單字標示,編號從 1 號到 4 號。

slice 號碼跟在裝置名稱後面,先接一個字母 s,然後從 1 號開始編下去。 因此 da0s1 就是指第一個 SCSI 硬碟的第一個 slice。 一個磁碟上只能有四個實體的 slice,但是在實體的 slice 中您可以塞進適當類型的邏輯 slice。 這些延伸的 slice 編號從 5 開始,所以 ada0s5 是第一個 SATA 硬碟上的第一個延伸 slice。 檔案系統在裝置 (device) 裡就是在一個 slice 之中。

Slices、dangerously dedicated 模式的實體磁碟機,以及其他包含分割區(partition) 的磁碟都是以字母 ah 的編號來表示。 編號是接在裝置名稱的後面的,因此 da0a is the a 是磁碟機 da 上的第一個 dangerously dedicated 模式之分割區。 而 ada1s3e 則是第二顆 SATA 硬碟上第三個 slice 的第五個分割區。

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

當要參照一個分割區的時候,需包含磁碟機名稱 s 加上 slice 編號,最後再輸入分割區字母代號。 範例可以參考 範例 3.12, “磁碟、Slice 及分割區命名範例”

範例 3.13, “磁碟的概念模型” 示範了一個基本的磁碟配置,相信對您有些幫助。

要安裝 FreeBSD,您必須先建置磁碟的 slice,接著於 slice 中建立要給 FreeBSD 用的分割區。 最後在這些分割區中建立檔案系統 (或 swap space) 並決定要將這些檔案系統掛載於哪裡。

表格 3.3. 磁碟裝置名稱
磁碟機類型磁碟機裝置稱
SATAIDE 硬碟adaad
SCSI 硬碟與 USB 儲存裝置da
SATAIDE CD-ROM 光碟機cdacd
SCSI CD-ROM 光碟機cd
軟碟機fd
各種非標準 CD-ROM 光碟機mcd 代表 Mitsumi CD-ROM 以及 scd 代表 Sony CD-ROM 光碟機
SCSI 磁帶機sa
IDE 磁帶機ast
RAID 磁碟機範例包含 aacd 代表 Adaptec® AdvancedRAID,mlxdmlyd 代表 Mylex®,amrd 代表 AMI MegaRAID®,idad 代表 Compaq Smart RAID,twed 代表 3ware® RAID.

範例 3.12. 磁碟、Slice 及分割區命名範例
名稱意義
ada0s1a第一個 SATA 硬碟 (ada0) 上第一個 slice (s1)的第一個分割區(a) 。
da1s2e第二個 SCSI 硬碟 (da1) 上第二個 slice (s2) 的第五個分割區 (e) 。

範例 3.13. 磁碟的概念模型

此圖顯示 FreeBSD 中接到系統的第一個 SATA 磁碟機內部配置圖。 假設這個磁碟的容量是 250 GB,並且包含了一個 80 GB 的 slice 及一個 170 GB 的 slice (MS-DOS® 的分割區)。 第一個 slice 是 Windows® NTFS 檔案系統的 C: 磁碟機,第二個則安裝了 FreeBSD。 本範例的 FreeBSD 有三個分割區以及一個 swap 分割區。

這四個分割區每個都是一個檔案系統。 a 分割是根 (root) 檔案系統;分割 d/var/;分割 e/tmp/,而 f 分割是 /usr/ 目錄結構。Partition letter c refers to the entire slice, and so is not used for ordinary partitions.


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

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

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