当心: Ext4 可能造成数据丢失
<script type="text/javascript"><!-- google_ad_client = "pub-9432205671574187"; //LT, 300x250 google_ad_slot = "9869120281"; google_ad_width = 300; google_ad_height = 250; //--></script> <script src="http://pagead2.googlesyndication.com/pagead/show_ads.js" type="text/javascript"> </script> <script src="http://pagead2.googlesyndication.com/pagead/expansion_embed.js"></script> <script src="http://googleads.g.doubleclick.net/pagead/test_domain.js"></script> <script>window.google_render_ad();</script>
正在使用 Ext4 文件系统的同学可得当心了。据某些用户反映,它可能会造成你的数据丢失。国外一位 Kubuntu Jaunty 的用户称,使用 Ext4 文件系统使他丢失了大量的数据,相关描述可参见位于 launchpad 上的 bug 报告。
无独有偶,国内的 albert748 也遇到了类似的问题。他描述道,X 无缘无故死掉,断电重启后,发现 Firefox 的配置丢了很多。与上面那位国外用户一样,albert748 也使用 2.6.28 内核和 Ext4 文件系统。
今天,H-Online 刊登了一篇文章 Ext4 data loss; explanations and workarounds,其中对此进行了解释,并包含 Ext4 开发者 Ted Ts'o 提供的解决方案,有兴趣的同学可去看看。
我还是比较冷静的,呵呵,还没升到ext4
我把ext3盘挂载为ext4,也试过丢失文件
依旧ext2 + reiserfs
吓我阿,我前段时间为了这个文件系统重装了,还丢失了很多数据
我还是比较冲动的,呵呵,已经升到ext4
已经升级到ext4 没发现此问题 继续等更新
貌似原因归咎于应用程序开发人员在编写覆盖文件的操作时,没有遵循POSIX标准,而是把ext3的行为当标准了。 兼容ext3方式的新补丁需要2.6.30内核才会有,还是不升ext4算了。
我在zfs上也碰到过相似的情况,猜测是在带日志的文件系统上非正常关机,导致系统自己回滚到一个较早的时间了。 不知道这个猜得对不对,谁懂Journaling给讲讲。
@Tigerf: Ts'o 的那篇文章讲得比较清楚了,一般我们覆盖文件分如下几步: 1. 写数据到 foo.tmp 2. 关闭 foo.tmp 3. 重命名 foo.tmp 到 foo。 ext3 保证在第3步时 foo.tmp 已经写到磁盘; ext4 不保证这个, 他认为按照 posix 标准,你应当在 2-3 步中间增加一次 fsync。当然在 2.6.30 中会增加一个选项保证 rename, close 前数据已经被写入磁盘。