我注意到XFS在系统启动时未实现fsck,在日志文件系统中吹捧的原因之一是确保不干净的关机后文件系统处于一致的状态。在下一次安装(例如,重新启动后)时,将重播日志。
不正常关机后是否仍需要fsck,为什么?
我注意到XFS在系统启动时未实现fsck,在日志文件系统中吹捧的原因之一是确保不干净的关机后文件系统处于一致的状态。在下一次安装(例如,重新启动后)时,将重播日志。
不正常关机后是否仍需要fsck,为什么?
Answers:
我在“新闻文件系统”的一般上下文中回答这个问题。
我认为,如果你做了一些“不洁关机”(由拉电源线或某事),你迟早会得到一个文件系统的状态,将要求fsck
,或者fsck的道德等价物,xfs_repair
。ext4
我的笔记本电脑上的fileystsm在大多数情况下只会在每次重新启动(包括干净的关闭)时重播日志,但偶尔也会执行一次完整操作fsck
。
但是,问问自己“重播日记”能完成什么工作。重放日志仅可确保其余文件系统的磁盘块与日志条目所需的顺序匹配。重播日记等于很小的fsck
或等于完整的一部分fsck
。
我认为这是一种语言上的技巧:重放日志确实是传统方法的一部分fsck
,并且确实xfs_repair
是同一种程序e2fs.fsck
(或任何其他文件系统的fsck
)相同的程序。刚刚相信XFS的人或他们的经验使他们没有xfs_repair
在每次启动时都运行,而只是重播日志。
fsck
操作不是“花哨的”。据我了解,我将ext3
LVM
分区转换为,ext4
并开始出现“ ext4_mb_generate_buddy”错误,这是由于代码中的错误引起的,该错误ext4
导致转换后的“ LVM”分区上的位图在磁盘上和内存中的副本不匹配。据我所知fsck
,没有发生腐败。解决方案是关闭该UNINIT_BG
选项或移动数据并将分区重新初始化为ext4
; 我选了后者。但是我仍然认为,等待数分钟fsck
不值得丢失数据!
帮助确保在不正常关机后文件系统处于一致状态
首先要注意的是,XFS,reiser和ext的大多数配置仅实现元数据日志记录,这都是为了避免fsck。日志在启动时并不总是重播-如果日志不完整,则可能会被丢弃。
有一些系统支持完整的数据日记功能-但实际上,在实际情况下,这些系统仅提供元数据日记功能的保证水平很小。
因此,“不一致状态”以及fsck解决的问题是元数据和文件本身之间的不匹配。为避免这种情况,操作系统将提议的元数据更改写到日志中,然后将实际数据写到磁盘,然后将复制在日志中的元数据更改应用到磁盘。唯一的问题是磁盘控制器将缓冲并可能重新排序请求。为避免这种情况,大多数日志文件系统都设置了障碍:它们将每个操作分开,并等待磁盘确认其已完成该操作。但是许多现代磁盘实际上在提交数据之前就承认写入已完成。因此,事情可能变得混乱。
不正常关机后还需要fsck吗,为什么
大多数文件系统都会维护一个装载次数-一旦达到该次数,在下一次尝试装载磁盘时将触发完整的fsck。原因是即使没有显式写入磁盘数据,即使软件中没有错误,磁盘数据也可能被破坏。上面psusi的评论是错误的。
hdparm -W
),则磁盘在介质上之前不会完成写请求。您为什么认为该选项存在?发出多个请求时,屏障会阻止重新排序。没有障碍,fs只会在前一个请求完成之前才发出更多请求,从而保持排序没有障碍...只要未启用磁盘写缓存。屏障的目的是允许您启用写缓存,而不会在崩溃时损坏fs。
sync
。让我再试一遍。无障碍写入磁盘的过程是写入日志sync
,从而刷新所有写入缓存,然后写入实际数据。这样可以确保在崩溃后始终可以使用日志来恢复fs,但是同步会降低速度,有一半会破坏写入缓存的目的。因此,屏障被添加为更好的替代品sync
,并且有了适当的磁盘支持,它们可以安全地收回同步带走的大部分性能。
无需仅仅因为关机不干净而就对日记文件系统进行fsck操作。
忍受元数据日记的运行时性能损失的全部原因是,如果未彻底卸载文件系统,则可以通过在下一次安装时自动重播元数据日志来确保再次使文件系统保持100%一致。
fsck的唯一作用是确保元数据的一致性,因此仅由于未正确卸载文件系统而运行fsck是多余的。
但是,日记文件系统可能会由于其他原因而损坏-硬件故障,驱动程序错误,管理员错误等-因此,fsck工具无疑是必需的。完全没有理由仅因关机不干净而调用它们。