overlyfs and device-mapper snapshots 基本介绍以及操作验证

overlyfs

 

sudo mount -t overlay overlay -olowerdir=lower,upperdir=upper,workdir=work merged

将lower和upper“合并”,并挂载到merged目录

 

在merged目录创建h文件,可以看到出现在了upper目录下,可以看出它的创建规则,

 

测试一下copy_up操作:

  1. 修改文件a的meta信息
  2. 修改文件b的内容

测试a文件

root@jc:/home/work/merged# touch a

root@jc:/home/work#  ls -l lower/

总用量 8

-rw-r--r-- 1 root root    0 10月 10 10:01 a

-rw-r--r-- 1 root root    0 10月 10 10:01 b

drwxr-xr-x 2 root root 4096 10月 10 10:01 dir

drwxr-xr-x 2 root root 4096 10月 10 10:01 test

root@jc:/home/work/merged# ls -l a

-rw-r--r-- 1 root root 0 10月 10 10:20 a

 

测试b文件

 

root@jc:/home/work/merged# echo test >> b

root@jc:/home/work/merged# cat b

test

root@jc:/home/work/lower# cat b

root@jc:/home/work/lower# ls

a  b  dir  test

touch操作修改了文件a的atime信息,所以被copy_up了,文件b由于内容被修改,亦被copy_up

 

接下来,我们验证一下文件的删除和文件夹的删除,分为如下几步:

  1. 删除upper独有的文件e
  2. 删除test目录
  3. 删除共有的文件a,测试字符设备机制

 

root@jc:/home/work/merged# rm a e

root@jc:/home/work/merged# rm -rf test

root@jc:/home/work/merged# ls

b  dir f  h

root@jc:/home/work# ls -l lower/

总用量 8

-rw-r--r-- 1 root root    0 10月 10 10:01 a

-rw-r--r-- 1 root root    0 10月 10 10:01 b

drwxr-xr-x 2 root root 4096 10月 10 10:01 dir

drwxr-xr-x 2 root root 4096 10月 10 10:01 test

root@jc:/home/work# ls -l upper/

总用量 8

c--------- 1 root root 0, 0 10月 10 10:29 a

-rw-r--r-- 1 root root    5 10月 10 10:22 b

drwxr-xr-x 2 root root 4096 10月 10 10:02 dir

-rw-r--r-- 1 root root    0 10月 10 10:01 f

-rw-r--r-- 1 root root    0 10月 10 10:14 h

c--------- 1 root root 0, 0 10月 10 10:30 test

可以看到文件e删除后,没有任何字符设备生成,因为它是upper目录独有的,文件a和目录test被删除后,则是生成了字符设备,以表示文件已被删除,而lower目录中的文件a和目录test,并没有任何变化

 

测试opaque目录机制,具体的步骤是删除共有目录dir,然后再创建同名目录

root@jc:/home/work# rm -rf merged/dir

root@jc:/home/work# ls -l upper/

总用量 4

c--------- 1 root root 0, 0 10月 10 10:29 a

-rw-r--r-- 1 root root    5 10月 10 10:22 b

c--------- 1 root root 0, 0 10月 10 10:33 dir

-rw-r--r-- 1 root root    0 10月 10 10:01 f

-rw-r--r-- 1 root root    0 10月 10 10:14 h

c--------- 1 root root 0, 0 10月 10 10:30 test

root@jc:/home/work# ls -l lower/

总用量 8

-rw-r--r-- 1 root root    0 10月 10 10:01 a

-rw-r--r-- 1 root root    0 10月 10 10:01 b

drwxr-xr-x 2 root root 4096 10月 10 10:01 dir

drwxr-xr-x 2 root root 4096 10月 10 10:01 test

root@jc:/home/work# mkdir merged/dir

root@jc:/home/work# ls -l upper/

总用量 8

c--------- 1 root root 0, 0 10月 10 10:29 a

-rw-r--r-- 1 root root    5 10月 10 10:22 b

drwxr-xr-x 2 root root 4096 10月 10 10:34 dir

-rw-r--r-- 1 root root    0 10月 10 10:01 f

-rw-r--r-- 1 root root    0 10月 10 10:14 h

c--------- 1 root root 0, 0 10月 10 10:30 test

root@jc:/home/work# ls -l lower/

总用量 8

-rw-r--r-- 1 root root    0 10月 10 10:01 a

-rw-r--r-- 1 root root    0 10月 10 10:01 b

drwxr-xr-x 2 root root 4096 10月 10 10:01 dir

drwxr-xr-x 2 root root 4096 10月 10 10:01 test

root@jc:/home/work# ls merged/dir/

root@jc:/home/work#

可以看到,目录创建后,upper中的同名字符设备不见了,而其内部并没有文件c和文件d,也就是说该目录已经是一个opaque目录了。

device-mapper snapshots

base_dev.sh  /dev/sdb base //生成 配置表dm-table 和/dev/mapper/base   注:生成snapshot后无法查看

#!/bin/sh
size=$(blockdev --getsize $1)
echo "0 $size linear $1 0" > dm-table
dmsetup create $2 dm-table

./base_dev.sh /dev/sdb base

snap_dev.sh //生成snap配置表snap_table 和dev/mapper/snap ---mount后使用

#!/bin/sh
mkfs.ext4 $2
size1=$(blockdev --getsize $1)
size2=$(blockdev --getsize $2)
echo "0 $size1 snapshot $3 $2 N 16" > snap_table
dmsetup create $4 snap_table
 

./snap_dev.sh /dev/sdb /dev/sdc /dev/mapper/base snap //参数 1:base  2:snap 3:base_dev 4:snap name

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值