最近一个项目有点收获,记录一下:
基础知识点
zfs文件系统:参考 oracle 的zfs手册,很详细 Oracle® Solaris管理:ZFS文件系统
卷volume、存储池pool、快照snapshot、克隆clone、mount挂载点、iscsi、rsync
可以进行 key search
需求
完成的功能:读取一个 volume 块设备里面的东西,这个 volume 是通过 iscsi 映射给客户端进行不间断的写操作,怎样在不停止写操作的前提下读取某一时刻这个 volume 里面的数据信息。
notice1:一个 block volume 在同时映射到两个机器上时会出现 iscsi 阻塞;
notice2:一个 block volume 在映射到一个客户端后,自身和里面的快照均不可被进行 mount 操作;
notice3:实验发现对这个卷做一个快照,然后对这个快照再做克隆,这个克隆可以被映射出去;
都是血的教训,做了好久实验得到的结论
orcale 的zfs 文件系统手册给出一句话。。。。。算了,不装逼了,我忘了,好好看书去。
大概意思就是快照不可以被操作,只是一个只读的副本。
流程
创建快照:
zfs snapshot mypool/A5@test
快照克隆:
zfs clone mypool/A5@test mypool/A5test-clone
创建target:
targetcli /backstores/block/ create test-clone /dev/zvol/mypool/A5test-clone false
targetcli /iscsi create iqn.2015-05.com.leadstor:sn:l104h701311:10:cln:A5test-clone
targetcli /iscsi/iqn.2015-05.com.leadstor:sn:l104h701311:10:cln:a5test-clone/tpg1/luns create /backstores/block/A5test-clone
targetcli /iscsi/iqn.2015-05.com.leadstor:sn:l104h701311:10:cln:a5test-clone/tpg1/portals create 192.168.1.112 3260
targetcli /iscsi/iqn.2015-05.com.leadstor:sn:l104h701311:10:cln:a5test-clone/tpg1/ set attribute cache_dynamic_acls=1
targetcli /iscsi/iqn.2015-05.com.leadstor:sn:l104h701311:10:cln:a5test-clone/tpg1/ set attribute demo_mode_write_protect=0
targetcli /iscsi/iqn.2015-05.com.leadstor:sn:l104h701311:10:cln:a5test-clone/tpg1/ set attribute generate_node_acls=1
targetcli saveconfig
建立映射:
iscsiadm -m discovery -t st -p 192.168.1.112
iscsiadm -m node -T iqn.2015-05.com.leadstor:sn:l104h701311:10:cln:a5test-clone -p 192.168.1.112 3260 -l
获取磁盘:
udevadm info -q path -n /dev/sdam1 | xargs udevadm info -q env -p
mount挂载:
mount -o ro /dev/sd /var/testsnap3/
rsync传输:
rsync -avz /var/testsnap3/ root@192.168.3.44:/var/test1
umount卸载:
umount /var/testsnap3
退出iscsi连接:
iscsiadm -m node -T iqn.2015-05.com.leadstor:sn:l104h701311:10:cln:a5test-clone -p 192.168.1.112 3260 -u
删除target:
targetcli /iscsi delete iqn.2015-05.com.leadstor:sn:l104h701311:10:cln:A5test-clone
targetcli /backstores/block/ delete test-clone /dev/zvol/mypool/A5test-clone
targetcli saveconfig
删除克隆:
zfs destroy mypool/A5@test mypool/A5test-clone -f
创建快照:
zfs destroy mypool/A5@test -f
在删除克隆的时候有问题,还在解决
:问题解决,原因已找到,使用的是开源zfs文件系统,09版本,09之后zfs被oracle收购后,后续版本不能免费使用,因此这个当前版本zfs 文件系统自身的漏洞,不能直接进行克隆删除删除,可以通过快照级联删除。如果尝试删除克隆会造成一种克隆未删除的假象,对后续快照删除造成影响。