overlay文件系统实现挂载-嵌入式双系统

系统分区格式

查看我们系统的分区格式

# cat /proc/partitions
major minor  #blocks  name


   1        0      16384 ram0
   1        1      16384 ram1
   1        2      16384 ram2
   1        3      16384 ram3
   1        4      16384 ram4
   1        5      16384 ram5
   1        6      16384 ram6
   1        7      16384 ram7
   1        8      16384 ram8
   1        9      16384 ram9
   1       10      16384 ram10
   1       11      16384 ram11
   1       12      16384 ram12
   1       13      16384 ram13
   1       14      16384 ram14
   1       15      16384 ram15
179        0    7806976 mmcblk0
179        1      14336 mmcblk0p1
179        2     143360 mmcblk0p2
179        3     143360 mmcblk0p3
179        4     524288 mmcblk0p4

其中mmcblk0p1-4对应上图的分区

下面我们要了解文件系统与上面分区的关系,系统有一个mmcblk0p4分区为f2fs文件系统格式,是可写的分区,而squashfs是只读的分区。

1.首先,引导程序启动内核完成之后,由内核加载rootfs A或者rootfs B只读分区部分来完成系统的初步启动

2.rootFS A或者B采用的linux内核支持的squashfs文件系统(一种只读文件系统),加载完毕后将其挂在到/rom目录(同时也挂载为/根目录)

3.系统将用f2fs文件系统格式化p3 Application分区并且将这部分挂在到/overlay目录

4.系统再将/overlay透明挂载为/根目录

5.最后将一部分内存挂载为/tmp目录

6.挂载命令:

mkdir /tmp/overlay
chmod 755 /tmp/overlay
mount -o noatime -t f2fs /dev/mmcblk0p4 /tmp/overlay
mount -o noatime,move /tmp/overlay /overlay
mkdir /overlay/upper
mkdir /overlay/work
chmod 0755 /overlay/upper
chmod 0755 /overlay/work
mount -o noatime,lowerdir=/,upperdir=/overlay/upper,workdir=/overlay/work -t overlay "overlay:/overlay" /mnt
pivot_root  /mnt  /mnt/rom
mount -o noatime,move /rom/dev /dev
mount -o noatime,move /rom/tmp /tmp
mount -o noatime,move /rom/sys /sys
mount -o noatime,move /rom/overlay /overlay
mount -o noatime,move /rom/proc /proc

7.挂载情况

# df -h
Filesystem                Size      Used Available Use% Mounted on
/dev/root                26.4M     26.4M         0 100% /rom
tmpfs                   512.0K         0    512.0K   0% /dev
tmpfs                   115.9M         0    115.9M   0% /tmp
/dev/mmcblk0p4          510.0M    114.1M    395.9M  22% /overlay
overlay:/overlay        510.0M    114.1M    395.9M  22% /

8.透明挂载根目录

系统先将rootfsA或者B 挂载为根目录,这样具备了一个完整的系统,然后再将application以透明方式挂载在根目录上。

①我们 所看到的根文件系统是由rootfs A/B 和 application 两个分区组合在一起的。

②当我们修改一个任何位置的文件的时候,所做的修改在application里会有记录。

③当我们删除一个文件的时候,所做的修改在application里面会有记录。

④当我们增减一个文件的时候,所做的修改在application里面会有记录。

⑤当我们读取文件的时候,首先检测application里面的状态,再检测rootfs A/B的内容,一直到最后给我们一个结果。

好处和坏处:

坏处:当对文件进行操作的时候,比如我们修改了一个名字为abc的文件,那么同时存在/rom里面还有修改之前的abc,同时在/overlay里面修改之后的abc,所占用的空间是倍增的。

好处:系统不论任何时候,只要通过简单的删除掉/overlay里面的所有文件,就能达到复原的效果。

  • 3
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
CentOS的文件系统中,Overlay是一种联合文件系统(Union File System),它允许将多个文件系统以层叠的方式合并在一起。Overlay文件系统通常用于创建轻量级容器,其中一个只读的基础文件系统(Base File System)与一个可写的上层文件系统(Upper File System)进行合并。 在CentOS中,Overlay文件系统可以使用OverlayFS来实现。它通过将两个文件系统以层叠的方式合并,将只读的基础文件系统与可写的上层文件系统进行组合。这样,对于上层文件系统的读操作,会首先在上层文件系统中查找,如果找不到则会在基础文件系统中查找。对于写操作,则会直接在上层文件系统中进行。 要使用Overlay文件系统,首先需要确保内核支持OverlayFS。在CentOS 7及以上版本中,默认情况下已经支持OverlayFS。然后,你可以在需要的地方挂载Overlay文件系统,将只读的基础文件系统与可写的上层文件系统进行合并。 例如,可以使用以下命令来挂载Overlay文件系统: ``` mount -t overlay overlay -o lowerdir=/path/to/base,upperdir=/path/to/upper,workdir=/path/to/work /path/to/mount ``` 其中,`lowerdir`指定基础文件系统的路径,`upperdir`指定上层文件系统的路径,`workdir`指定工作目录的路径,`/path/to/mount`指定挂载点的路径。 请注意,Overlay文件系统需要Linux内核的支持,并且在某些情况下可能会有性能方面的考虑。因此,在使用Overlay文件系统之前,建议你仔细评估你的需求和系统资源,并确保了解其工作原理和限制。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

byd yes

你的鼓励是我最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值