一、注意事项:
- 不能将一个镜像同时挂载到多个节点,如果这样操作,将会损坏数据(产生脑裂现象)
- 如果希望不同的节点,拥有完全相同的数据盘,可以使用克隆技术
- 克隆是基于快照的,不能直接对镜像克隆
- 快照必须是受保护的快照,才能克隆
- 可以给多个客户端生成数据相同的数据盘
二、克隆流程:
克隆流程.png
三、功能实现:
第一步:创建镜像
# 创建名为img2的镜像,大小10GB
[root@node1 ~]# rbd create img2 --size 10G
# 映射到本地
[root@node1 ~]# rbd map img2
# 格式化xfs
/dev/rbd0
[root@node1 ~]# mkfs.xfs /dev/rbd0[root@node1 ~]# mount /dev/rbd0 /mnt/
# 向镜像中写入数据
[root@node1 ~]# for i in {1..20}
> do
> echo "Hello World $i" > /mnt/file$i.txt
> done
[root@node1 ~]# ls /mnt/
file10.txt file15.txt file1.txt file5.txt
file11.txt file16.txt file20.txt file6.txt
file12.txt file17.txt file2.txt file7.txt
file13.txt file18.txt file3.txt file8.txt
file14.txt file19.txt file4.txt file9.txt
# 数据写入完成后卸载镜像(这步可做可不做)
[root@node1 ~]# umount /mnt/
[root@node1 ~]# rbd unmap /dev/rbd0
第二步:创建镜像的快照
# 为img2创建名为img2-sn1快照
[root@node1 ~]# rbd snap create img2 --snap img2-sn1
第三步:将创建的快照设置“保护”
# 保护img2-sn1快照
[root@node1 ~]# rbd snap protect img2 --snap img2-sn1
第四步:克隆
# 通过受保护的快照img2-sn1创建克隆镜像
[root@node1 ~]# rbd clone img2 --snap img2-sn1 img2-sn1-1
# 如果前面配置文件没有将rbd_default_features = 1
# 则需要在最后加上 --image-feature layering
[root@node1 ~]# rbd clone img2 --snap img2-sn1 img2-sn1-2 --image-feature layering
# 查看创建出来的、克隆的镜像
[root@node1 ~]# rbd list
img1
img2
img2-sn1-1
img2-sn1-2
网友评论