系统管理指南:设备和文件系统

为什么可能出现 UFS 文件系统的不一致性问题

在每个工作日中,可能会创建、修改和删除数百个文件。每次修改文件时,操作系统都会执行一系列文件系统更新。如果这些更新被可靠地写入磁盘,便会产生一致的文件系统。

用户程序执行更改文件系统的操作(例如写入操作)时,会先将要写入的数据复制到内核中的核心缓冲区。通常,以异步方式处理磁盘更新。尽管在写入系统调用返回很长时间之后才会写入数据,但是允许用户进程继续执行。这样,在任何给定时间,由于文件系统驻留在磁盘上,因此它将滞后于核心信息所表示的文件系统状态。

当缓冲区需要用于其他用途时,或者内核自动运行 fsflush 守护进程(时间间隔为 30 秒)时,将更新磁盘信息以反映核心信息。 如果在未写出核心信息的情况下停止系统,则磁盘上的文件系统可能会处于不一致状态。

文件系统可能由于以下几种原因出现不一致性问题。最常见的原因是操作错误和硬件故障。

异常关机可能会导致此类问题,例如未正确关闭系统,或者未采用正确的方式使已挂载的文件系统脱机。为防止异常关机,在关闭系统、从驱动器中物理移除磁盘组或使磁盘脱机之前,必须将文件系统的当前状态写入磁盘(即“进行同步”)。

不一致性问题也可能是由硬件缺陷或者磁盘或控制器固件的问题导致的。在磁盘驱动器上,块随时都可能会损坏。此外,磁盘控制器可能无法正常工作。