LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 4192|回复: 4

[求助]大量频繁写miniSD卡引起的FAT文件系统破坏

[复制链接]
发表于 2009-4-22 13:32:23 | 显示全部楼层 |阅读模式
这是工作中遇到的问题,我们的监控摄像头需要保存录像到SD卡上,为了方便用户在windows下查看文件,我们选择了FAT格式。
但是当由于嵌入式自身的内存太小,我们保存录像导致过于频繁的文件写动作,经常会把文件系统写坏了。错误提示信息:

  1. FAT: Filesystem panic (dev sd0p1)
  2.     fat_get_cluster: invalid cluster chain (i_pos 0)
复制代码


  1. FAT: Filesystem panic (dev sd0p1)
  2.     fat_get_cluster: invalid cluster chain (i_pos 485731)
  3.     File system has been set read-only
复制代码


  1. FAT: Filesystem panic (dev sd0p1)
  2.     fat_free_clusters: deleting FAT entry beyond EOF
  3.     File system has been set read-only
复制代码


附注:
内核版本2.6.14
SD卡是8G或者16G的大小
发表于 2009-4-22 15:00:32 | 显示全部楼层
据我所知这个问题是FAT固有的,基本无解。
我们放出去的终端,每年大约有1%的故障率,而其中有80%的故障都是FAT文件系统损坏。(ext3终端要略好一点,但是ext3不能使用版本太低的内核。例如2.6.11版本以前的内核就确定存在ext3问题)

如果坚持使用FAT,那么解决这个问题的办法只能从 FAT 文件系统和你的闪存管理入手。如果你用 SD 卡的话,闪存管理是内置到 SD 芯片了,你甚至都动不了这里面的手脚。而如果是贴片的闪存,是可以自己写闪存管理程序的。

当然,监控终端用的都是最可靠的存储设备(例如专门的监控硬盘),flash介质都是用于非敏感数据的终端的,怎么能够把SD卡这种不可靠的设备用于监控终端呢?

我能给出的最好建议就是:频繁的读写闪存应使用ubifs, jffs 等专门为闪存介质定制的文件系统,而不要使用ext, fat 这种为硬盘定制的文件系统。——如果你只是需要为用户提供数据。可以使用变通的办法。
回复 支持 反对

使用道具 举报

发表于 2009-5-7 15:11:58 | 显示全部楼层
ext3格式。
fat能信任吗?
找变通啦!
CIFS等方式。
查看你内核版本以后升级有所改善没。

存储怎么能用SD卡呢?
起码是CF卡阿!
回复 支持 反对

使用道具 举报

发表于 2009-5-18 18:10:24 | 显示全部楼层
SD卡内部电路好像已经自动写平衡了吧?基本无解···
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-6-1 18:09:36 | 显示全部楼层
很抱歉现在才看到各位的回复,
我们已经决定采用U盘代替SD卡了,所用的格式依然是FAT,多次长时间的测试没有发现问题。
对于大家的意见,我们现在大概不会采纳,但是谢谢你们为我开阔了思路。
我们希望能方便用户在windows下查看文件,所以没有选择ext3这种稳定的格式,也没有采用jffs,而且jffs的确太低效了。而我们没有采用CF卡或者是监控专用硬盘则完全是为了节省成本,因为公司小,而且产品尚不成熟。
再次感谢各位!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表