FreeBSD 磁盘组织
FreeBSD 用于查找文件的最小单位为文件名。文件名区分大小写。FreeBSD 不使用文件的扩展名来确定文件类型(程序、文档等类型)。
文件存储在目录中。目录可以包含零个或多个文件或目录。在 FreeBSD 系统中使用 / 分隔文件和目录。如,如果目录 foo 包含目录 bar,而目录 bar 包含文件 readme.txt,则该文件的路径是 foo/bar/readme.txt,该路径也叫做完整名称。
在本文中将介绍文件系统和磁盘分区。
文件系统
在 FreeBSD 系统中目录和文件存储在文件系统中。每个文件系统在最顶层只包含一个目录,该目录称为文件系统的根目录。根目录可以包含其他目录。FreeBSD 必须包含一个且只能是一个根文件系统 /,其他的文件系统挂载在根文件系统下的子目录中。在有多个磁盘时,这种结构使的 FreeBSD 系统像在一个磁盘中。
假设有三个文件系统,称为 A、B 和 C。每个文件系统都有一个根目录,根目录中包含两个目录,称为 A1、A2(同理为,B1、B2 和 C1、C2)。
- 如果将
A称为根文件系统。那么B和C就不能是根文件系统,B或C可以挂载到A的子目录中。 - 如果
B挂载到A1目录中,那么A1就是B文件系统的根目录。 C也可以挂载到B的子目录中,如果B挂载到B1目录中,那么B1就是C文件系统的根目录。
多个文件系统的优点:
-
可配置不同的挂载选项:根文件系统可以挂载为只读,其他文件系统可以挂载读写。
-
优化文件布局:FreeBSD 会根据文件系统的使用方式自动优化文件在文件系统上的布局。
-
提高鲁棒性:如果断电,FreeBSD 的文件系统是鲁棒的。但是在关键时刻断电仍可能损坏文件系统的结构。将数据拆分到多个文件系统中,系统能够启动的可能性更高,也可以根据需要恢复数据。
注意:FreeBSD 具有 growfs 命令,可以动态在分区内增加文件系统的大小。如果要增加分区的大小,使用 gpart 扩展分区。
磁盘分区
文件系统包含在分区中。在安装 FreeBSD 系统是,已经介绍了对磁盘进行分区。
主要的分区方案有两种:较新的分区方案是 GPT;较旧的分区方案是 MBR。
GPT 分区方案的特点:
- GPT 可以将磁盘划分为具有大小、偏移和类型的分区。它支持大量分区和分区类型,在可以使用的情况下一定要使用该方案。
- GPT 分区使用
磁盘名 + 后缀命名,其中第一个分区的后缀是p1,第二个分区的后缀是p2,依此类推。
MBR 分区方案的特点:
- MBR 支持少量分区。MBR 分区在 FreeBSD 中称为切片。切片可以在不同的操作系统中使用。
- 切片使用
设备名 + 后缀命名,后缀为s + 切片编号,编号从 1 开始。如第一个 SCSI 驱动器上的第一个切片名为da0s1,da0为第一个 SCSI 驱动器设备名。 - 一个磁盘上只能有四个物理切片,但在适当类型的物理切片内可以再分逻辑切片,也称为扩展切片。这些扩展切片从 5 开始编号,第一个 SATA 磁盘上的第一个扩展切片的名为
ada0s5。
每个 GPT 或 BSD 分区只能包含一个文件系统,因此,可以使用挂载点或者分区名称来表述文件系统。
FreeBSD 还可以将一个分区定义为交换分区,也称交换空间,作为虚拟内存使用。当 FreeBSD 内存不足时,将一些当前未使用的数据移动到交换空间,并在需要时将其移回到内存中。这种机制成为内存分页。
一些 BSD 分区具有特殊的约定:
| 分区 | 约定 |
|---|---|
| a | 通常包含根文件系统 |
| b | 通常包含交换空间 |
| c | 通常与主切片(enclosing slice,等同于 Winidows 中的主分区)具有相同的大小;那些需要在整个切片上运行的程序,可以在 c 分区上运行;通常不会在该分区上创建文件系统。 |
| d | 现在无特殊意义,与普通分区一样 |
如果切片和“危险专用”物理驱动器中包含了 BSD 分区,这些分区使用从 a 到 h 的字母表示。把对应字母附加到原设备名称的后面,即为 BSD 分区的名称。
分区示例:
da0a是第一个 da 驱动器上的 a 分区,该驱动器是“危险专用”的。危险专用的 FreeBSD 的专用 分区,是指没有 MBR 分区表的分区。ada1s3e是第二个 SATA 磁盘驱动器的第三个切片中的第五个分区。
系统上的每个磁盘也会被标识。磁盘名称由 磁盘类型代码 + 编号 组成,磁盘编号从 0 开始。磁盘的类型代码可以查看下面的“磁盘设备名称表”。
当引用切片中的分区时,需要使用 磁盘名 + s + 切片编号 + 分区字母。当引用 GPT 分区时,需要使用 磁盘名 + p + 分区编号。
安装 FreeBSD 时,如果使用 MBR,则需要配置磁盘切片,并在切片内创建分区。如果使用 GPT,需要为每个文件系统配置分区。无论哪种情况,在一个分区中要么创建一个文件系统,要么创建一个交换空间,还要决定把文件系统的挂载到哪个目录中。
表 3:磁盘设备名称
| 驱动器类型 | 驱动器设备名 |
|---|---|
| SATA 和 IDE 硬盘驱动器 | ada |
| SCSI 硬盘驱动器和 USB 存储设备 | da |
| NVMe 存储 | nvd 或 nda |
| SATA 和 IDE CD-ROM 驱动器 | cd |
| SCSI CD-ROM 驱动器 | cd |
| 软盘驱动器 | fd |
| SCSI 磁带驱动器 | sa |
| RAID 驱动器 | 不同的品牌使用不同的名称。 如 Adaptec、AdvancedRAID 的为 aacd;AMI MegaRAID 的为 amrd |