首页 > 教程 > FreeBSD 教程 > FreeBSD 基础 > FreeBSD 磁盘组织

FreeBSD 磁盘组织

FreeBSD 用于查找文件的最小单位为文件名。文件名区分大小写。FreeBSD 不使用文件的扩展名来确定文件类型(程序、文档等类型)。

文件存储在目录中。目录可以包含零个或多个文件或目录。在 FreeBSD 系统中使用 / 分隔文件和目录。如,如果目录 foo 包含目录 bar,而目录 bar 包含文件 readme.txt,则该文件的路径是 foo/bar/readme.txt,该路径也叫做完整名称。

在本文中将介绍文件系统和磁盘分区。

文件系统

在 FreeBSD 系统中目录和文件存储在文件系统中。每个文件系统在最顶层只包含一个目录,该目录称为文件系统的根目录。根目录可以包含其他目录。FreeBSD 必须包含一个且只能是一个根文件系统 /,其他的文件系统挂载在根文件系统下的子目录中。在有多个磁盘时,这种结构使的 FreeBSD 系统像在一个磁盘中。

假设有三个文件系统,称为 ABC。每个文件系统都有一个根目录,根目录中包含两个目录,称为 A1A2(同理为,B1B2C1C2)。

  • 如果将 A 称为根文件系统。那么 BC 就不能是根文件系统,BC 可以挂载到 A 的子目录中。
  • 如果 B 挂载到 A1 目录中,那么 A1 就是 B 文件系统的根目录。
  • C 也可以挂载到 B 的子目录中,如果 B 挂载到 B1 目录中,那么 B1 就是 C 文件系统的根目录。

多个文件系统的优点:

  1. 可配置不同的挂载选项:根文件系统可以挂载为只读,其他文件系统可以挂载读写。

  2. 优化文件布局:FreeBSD 会根据文件系统的使用方式自动优化文件在文件系统上的布局。

  3. 提高鲁棒性:如果断电,FreeBSD 的文件系统是鲁棒的。但是在关键时刻断电仍可能损坏文件系统的结构。将数据拆分到多个文件系统中,系统能够启动的可能性更高,也可以根据需要恢复数据。

注意:FreeBSD 具有 growfs 命令,可以动态在分区内增加文件系统的大小。如果要增加分区的大小,使用 gpart 扩展分区。

磁盘分区

文件系统包含在分区中。在安装 FreeBSD 系统是,已经介绍了对磁盘进行分区。

主要的分区方案有两种:较新的分区方案是 GPT;较旧的分区方案是 MBR。

GPT 分区方案的特点:

  • GPT 可以将磁盘划分为具有大小、偏移和类型的分区。它支持大量分区和分区类型,在可以使用的情况下一定要使用该方案。
  • GPT 分区使用 磁盘名 + 后缀 命名,其中第一个分区的后缀是 p1,第二个分区的后缀是 p2,依此类推。

MBR 分区方案的特点:

  • MBR 支持少量分区。MBR 分区在 FreeBSD 中称为切片。切片可以在不同的操作系统中使用。
  • 切片使用 设备名 + 后缀 命名,后缀为 s + 切片编号,编号从 1 开始。如第一个 SCSI 驱动器上的第一个切片名为 da0s1da0 为第一个 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