72 yaffs文件系统挂载慢 sync不起作用
1 引言
最近在开放过程中遇到了一个问题:Linux在启动挂载根文件系统时很慢很慢!而且每次开机都是这样,一下子让人难以理解。
因为,理论上当机器第一次启动,会扫描完整的rootfs的flash区域,从而建立索引,但我这个每次都扫描rootfs的flash区域,从而使得挂载yaffs文件系统时耗费了大量时间。
本blog,特对此次问题及解决方案作记录。
2 实验
项目中使用的是yaffs2文件系统,nandflash。
在增删、更新文件系统数据内容的时候,都有调用sync命令,同步数据回写到磁盘中,并更新yaffs文件系统的checkpoint信息,但由于我更改完数据之后,马上将根文件系统变回只读,之后再执行sync命令,由此并没有更新yaffs文件系统的checkpoint信息,导致每次重启都要扫描一遍flash。
下面展示的是我错误的操作流程。
#我的错误流程
mount -o remount,rw /
cp /tmp/xxx /bin/
mount -o remount,ro /
sync
sync
正确的操作流程应该如下:
#正确流程
mount -o remount,rw /
cp /tmp/xxx /bin/
sync
sync
mount -o remount,ro /
以上问题的实际原因是:
文件系统在可写状态下,执行sync才能更新checkpoint信息!!否则sync不起作用。
over!