mount顺序导致读写不一致问题

背景介绍

最近工作中遇到了一个奇怪的现象:

kernel启动时,会读取/data/config 文件中的配置,根据配置进行一些初始化。默认config文件的内容为1。
在我通过后台修改文件内容,将其改为0.并重启设备。在次查看文件内容,文件内容为0.但是kernel读取到的内容为1。
即使将该文件删除,重启之后,该文件也不存在。但kernel依旧能够读取到内容1,并没有报错。

分析

对于这奇怪的现象,第一反应很懵。通过查阅资料和请教同事,了解到这个和mount的顺序有关。

请参考下图mount顺序导致读写不一致问题_第1张图片
有图可知/data目录是被/dev/ubi2_0挂载了。因此我们修改data/modem_cfg文件的内容,实际上修改的是/dev/ubi2_0磁盘中的modem_cfg。实际上rootfs文件系统中的data/modem_cfg内容并没有修改。

因此这个现象的执行流程应该是这样的:

  1. 加载rootfs文件系统
  2. kernel读取文件内容,初始化
  3. 挂载/dev/ubi2_0到/data

验证流程:
1. umount -v /data //将data挂载点卸载
2. . 再去修改/data/modem文件内容。//此时修改的就是rootfs文件系统中的/data/modem_cfg文件了
3. 重启,验证。//kernel获取的内容就是正确的了

你可能感兴趣的:(linux,进军linux内核-算法,linux,linux,mount)