UFS 是 Solaris OS 中缺省的基于磁盘的文件系统。管理基于磁盘的文件系统时,大多数情况下管理的是 UFS 文件系统。UFS 可提供以下功能。
有关 UFS 文件系统结构的详细信息,请参见第 23 章,UFS 文件系统(参考)。
对文件系统进行布局时,需要考虑可能相冲突的需求。 以下是一些建议:
请尽可能在不同的 I/O 系统和磁盘驱动器之间均匀地分布工作负荷。请将 /export/home 文件系统和交换空间均匀地分布在磁盘之间。
请将项目的各部分或组的各成员放在同一文件系统中。
请在每个磁盘上使用尽可能少的文件系统。在系统(或引导)磁盘上,应该具有三个文件系统:根 (/)、/usr 和交换空间。在其他磁盘上,请创建一个或最多两个文件系统,其中一个文件系统最好是附加的交换空间。与许多过度拥挤的小文件系统相比,空间较大的少量文件系统产生的文件段较少。由于 ufsdump 命令可以处理多个卷,因此采用较高容量的磁带机可以更轻松地备份较大的文件系统。
如果某些用户一直创建非常小的文件,请考虑创建包含更多 inode 的单独文件系统。但是,大多数站点都无需在同一文件系统中保存相似类型的用户文件。
有关缺省文件系统参数以及创建新 UFS 文件系统的过程的信息,请参见第 18 章,创建 UFS、TMPFS 和 LOFS 文件系统(任务)。
UFS 日志记录会将组成一个完整 UFS 操作的多个元数据更改打包成一个事务。事务集记录在盘上日志中,然后会应用于实际文件系统的元数据。
重新引导时,系统会废弃未完成的事务,但是会对已完成的操作应用事务。文件系统将保持一致,因为仅应用了已完成的事务。即使在系统崩溃时,也仍会保持此一致性。系统崩溃可能会中断系统调用,并导致 UFS 文件系统出现不一致。
UFS 日志记录功能有两个好处:
如果文件系统已经通过事务日志达到一致,则在系统崩溃或异常关机后可能不必运行 fsck 命令。有关异常关机的更多信息,请参见fsck 命令检查和尝试修复的内容。
从 Solaris 9 12/02 发行版开始,UFS 日志记录的性能已经提高甚至超过了无日志记录功能的文件系统的性能级别。这一改进之所以能够实现是由于启用日志记录功能的文件系统可以将对相同数据的多重更新转换为单一更新。因此,减少了磁盘操作所需的开销。
UFS 事务日志具有以下特征:
从文件系统上的空闲块分配而来
对于每 1 GB 的文件系统,其大小约为 1 MB,最大为 64 MB
填满时会不断刷新
取消挂载文件系统或使用任何 lockfs 命令之后也会刷新。
所有 UFS 文件系统均缺省启用 UFS 日志记录。
如果需要禁用 UFS 日志记录,请在 /etc/vfstab 文件中或手动挂载文件系统时,向文件系统的项添加 nologging 选项。
如果需要启用 UFS 日志记录,请在 /etc/vfstab 文件中或手动挂载文件系统时,在 mount 命令中指定 -o logging 选项。可以在包括根 (/) 文件系统的任何 UFS 文件系统上启用日志记录。另外,fsdb 命令还包含支持 UFS 日志记录的新调试命令。
在一些操作系统中,启用了日志记录的文件系统称为日记记录文件系统。
可以使用 fssnap 命令创建文件系统的只读快照。快照是旨在用于备份操作的文件系统临时映像。
有关更多信息,请参见第 26 章,使用 UFS 快照(任务)。
直接 I/O 旨在用于改进批量 I/O 操作。批量 I/O 操作使用大的缓冲区来传输大文件(大于 256 KB)。
使用 UFS 直接 I/O 可能会使执行各自内部缓冲的应用程序(如数据库引擎)受益。从 Solaris 8 1/01 发行版开始,UFS 直接 I/O 已经增强,允许在访问原始设备时发生的同一种类 I/O 并行。现在,可以从文件系统命名和灵活性中受益,并且仅会降低很少性能。请咨询数据库供应商,以了解它是否可以在其产品配置选项中启用 UFS 直接 I/O。
通过在 mount 命令中使用 forcedirectio 选项,也可以在文件系统上启用直接 I/O。仅当文件系统传输大量连续数据时,启用直接 I/O 才会提高性能。
使用此选项挂载文件系统时,将直接在用户的地址空间和磁盘之间传输数据。如果未对文件系统启用强制直接 I/O,则在用户的地址空间和磁盘之间传输的数据会首先在内核地址空间中进行缓冲。
缺省行为是不对 UFS 文件系统启用强制直接 I/O。 有关更多信息,请参见 mount_ufs(1M)。