3.6. 磁盘组织

FreeBSD 查找文件的最小单位是文件名。 而文件名区分大小写,这就意味着 readme.txtREADME.TXT 是两个不相同的文件。 FreeBSD 不凭文件扩展名 (.txt) 去识别这个文件是 程序、 文档, 或是其他格式的数据。

各种文件存放在目录里。 一个目录可以为空, 也可以含有多个的文件。一个目录同样可以包含其他的目录, 允许您在一个目录里建立多个不同层次的目录。 这将帮助您轻松地组织您的数据。

文件和目录的引用方式是,在文件或目录名后面加上一个前斜线,/,再加上其他必要的目录名。例如,文件夹foo中有个名为bar的文件夹,bar中有个文件名为readme.txt,那么文件的全名或路径就是foo/bar/readme.txt。请注意, 这与 Windows® 不同, Windows® 使用 \将文件和目录名分开。FreeBSD 不会在路径中使用驱动器字母或其他驱动器名称。例如, 在 FreeBSD 上不会输入 c:\foo\bar\readme.txt

目录和文件存储在文件系统中。每个文件系统在最顶层正好包含一个目录,称为该文件系统的根目录。此根目录可以包含其他目录。系统中只有一个根文件系统/。所有其他文件系统都挂载在根文件系统下。无论 FreeBSD 系统上有多少个磁盘,每个目录都是同一磁盘的一部分。

假设您有三个文件系统, 名为 ABC。 每个文件系统有一个根目录, 而各自含有两个其他的目录, 名为 A1, A2 ( B1, B2C1, C2)。

看看 A 这个根文件系统。 假如您用 ls 命令来查看这个目录您会见到两个子目录: A1A2。 这个目录树是这个样子:

一个文件系统必须挂到另一个文件系统的某一目录, 所以现在假设把 B 文件系统挂到 A1目录, 那 B 根目录因此代替 了 A1,而显示出 B 目录(的内容):

无论B1B2 目录在那里而延伸出来的路径必须为 /A1/B1/A1/B2。 而在 /A1 里原有的文件会临时隐藏。 想这些文件再出现把 B 从 A 挂接释放

B 挂接在 A2 那图表的样子就是这样子:

这个路径分别是 /A2/B1/A2/B2

文件系统能把顶部挂接在另一个文件系统上。 继续这个例子, 把 C 文件系统挂接在 B 文件系统里的 B1 目录, 排列如下:

或者把 C 文件系统挂接在 A 文件系统里的A1目录:

完全有可能有一个大型根文件系统,并且不需要创建任何其他系统。这种方法有一些缺点,还有一个优点。

多个文件系统的益处
单一文件系统的益处

文件系统是和分区一一对应的。 这里的分区和常用的术语分区 (例如, MS-DOS® 分区) 的意思并不一样, 这是由于 FreeBSD 的 UNIX® 传统造成的。 每一个分区使用一个从 ah 的字母来表示。 每个分区只能包含一个文件系统, 这意味着文件系统通常可以由它们在文件系统目录结构中的挂接点, 或对应的分区字母来表示。

FreeBSD 的 交换分区 也需要使用磁盘空间。 交换分区是给 FreeBSD 作 虚拟内存 使用的, 这样能令您的计算机有更多的内存可使用, 当FreeBSD在运行而内存不够的时候, 它会把其他一些可转移的数据转移到交换分区, 空出内存的位置以供使用。

某些 partitions 的用途是确定的。

分区约定
a通常指定为根文件系统。
b通常指定为交换分区。
c通常它和所在的 slice 大小相同。 c 分区上工作时必定会影响到事整个 slice (举个例子,坏块扫描器)。 您通常不愿意在这个partition建立文件系统。
d分区 d 曾经有特殊的含义, 不过这种意义在现时的系统上已不再适用, 因此 d 可以和任何其它普通的分区一样使用了。

FreeBSD 中的磁盘分为多个切片,在Windows®中称为分区,这些分区编号从 1 到 4。然后,这些分区被划分为分区,这些分区包含文件系统,并使用字母进行标记。

Slice 编号在设备名后面, 并有一个 s 前缀, 从 1 开始。 因此 da0s1 是第一个 SCSI 驱动器的第一个 slice。 每个磁盘上只能有四个物理的 slices, 但您可以在物理 slice 中使用适当的类型来创建逻辑 slice。 这些扩展 slice 编号从 5 开始, 因此 ad0s5 是第一个 IDE 磁盘中的第一个 扩展 slice。 文件系统所使用的设备应该占满 slice。

Slices, 专用指定 物理驱动器, 和其他驱动器都包含 partitions, 那几个的 partitions 都是用字母从 ah 来标定的, 而这些字母都在驱动器名字之后,所以 da0a 是指首个da设备的 a partition, 而那个就是 专项指定ad1s3e 是指IDE磁盘上第三个slice的第五个partition。

最终,每个磁盘都被系统识别。 一个磁盘名字是用磁盘类型代码和编号来标识的, 它不像slices,磁盘的编号是由 0 开始的。 对应代码请看这里所列出的表 3.3 “磁盘设备名字”

当在 FreeBSD 中指定 partition 名字时, 必须同时包含这个分区的 slice 和磁盘的名字; 类似地, 在指定 slice 时, 也应该给出包含该 slice 的磁盘名字。 可这样列出: 磁盘名称,s,slice 编号,和partition标定字母。 例子请看 例 3.12 “示例磁盘、Slice 和分区名称”

例 3.13 “磁盘的概念模型” 这里显示了一个磁盘的布局,有更清楚的帮助。

在安装FreeBSD时,您首先要配置好磁盘slices, 然后在FreeBSD使用的slice上建立partitions。 并在每个partition上建立一个文件系统(或交换分区), 和指定文件系统的挂接位置。

表 3.3. 磁盘设备名字
驱动器类型驱动器设备名称
SATAIDE 硬盘adaad
SCSI 硬盘和 USB 硬盘da
SATAIDE CD-ROM 驱动器cdacd
SCSI CD-ROM 驱动器cd
软盘fd
各种非标准CD-ROM驱动器mcd用于 Mitsumi CD-ROMscd,用于索尼CD-ROM设备
SCSI 磁带驱动器sa
IDE 磁带驱动器ast
RAID 设备示例包含aacd代表Adaptec® AdvancedRAID,mlxdmlyd代表Mylex®,amrd代表AMI MegaRAID®,idad代表Compaq SmartRAID,twed代表3ware® RAID.

例 3.12. 示例磁盘、Slice 和分区名称
名称含义
ada0s1a第一个 SATA 硬盘(ada1)上的第一个 slice(s1)上的第一个分区(a)。
da1s2e第一个 SCSI 硬盘(da1)上的第一个 slice(s2)上的第五个分区(e)。

例 3.13. 磁盘的概念模型

这张图显示的是 FreeBSD 的第一个 SATA 磁盘的视图。假设该磁盘的大小为 250 GB, 并包含一个 80 GB 的分区和一个 170 GB 的分区 (MS-DOS® 分区)。第一个分区包含一个 Windows® NTFS 文件系统C:, FreeBSD 安装在第二个分区上。这个例子中的 FreeBSD 安装有四个数据分区和一个 swap 分区。

这四个分区各自控制一个文件系统。a 分区用于根文件系统,d 分区用于 /var/ 目录层,e 分区用于 /tmp/ 目录层,f 分区用于 /usr/ 目录层。分区字符c用于代表整个 slice,故不用于普通分区。


本文档和其它文档可从这里下载: ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.

如果对于FreeBSD有问题,请先阅读 文档,如不能解决再联系 <questions@FreeBSD.org>.

关于本文档的问题请发信联系 <doc@FreeBSD.org>.