我遇到了一个相当典型但又奇怪的问题:服务器断电后硬盘坏了。我能感觉到崩溃后启动时 fsck 所做的大量工作,然后我的 subversion 存储库丢失了几个月的工作 - 这一切听起来很奇怪。服务器在该硬盘上运行 ext4,因此它应该是安全的 - 但事实并非如此。我开始怀疑硬盘有问题,但也许还有其他原因?
相关fstab
行是
/dev/mapper/vg_data-LV_data /data ext4 默认值 1 2
系统是Fedora 11 x86_64。
答案1
不管任何文件系统如何声称能够抵御非正常关机,我都绝不会让生产服务器计算机在没有电源保护的情况下运行。在我看来,有太多潜在的缓存层和太多的抽象,操作系统无法绝对确定数据是否真的被提交(即使磁盘子系统声称数据确实被提交)。
我不清楚 Fedora 11 附带已修复的 ext4 延迟分配错误或者不是。看起来是的,但是 FAQ 的措辞不是 100% 清楚(而且我现在没有时间查看 Fedora 11 的内核 SRPM)。
背景:内核 2.6.30 更改了 ext4 的默认行为,使其不使用延迟分配。在 2.6.30 之前,这种延迟分配行为默认有效,如果在提交磁盘操作之前断电,可能会导致数据丢失。(参考http://en.wikipedia.org/wiki/Fedora_(操作系统)和http://en.wikipedia.org/wiki/Ext4#Delayed_allocation_and_potential_data_loss以及背景http://thunk.org/tytso/blog/2009/03/12/delayed-allocation-and-the-zero-length-file-problem/)。
确保您正在运行 Fedora 11 的最新内核,并且如果可能的话,请停止允许文件系统被强行关闭。
答案2
根据您的 LVM 设置的复杂程度,问题可能是 LVM 忽略了 I/O 屏障。简单线性设备上的障碍应该从 2.6.30 开始工作(您似乎已经拥有了),但是更复杂的东西应该从 2.6.33 开始工作。