Ceph 完全支持快照,它是一個基於時間點的、只讀的 RBD 鏡像副本。 可以通過創建快
照並恢復其原始數據,保存 Ceph RBD 鏡像的狀態。
快照操作:
(0)客戶端已經map了remote_rbd1 的rbd
[root@zabbix71 alertscripts]# rbd showmapped
id pool namespace image snap device
0 rbd remote_rbd1 - /dev/rbd0
(1)rbd已經mount在mnt目錄
[root@zabbix71 alertscripts]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/rbd0 150G 9.8G 141G 7% /mnt
(2)在/mnt下創建2個測試文件
[root@zabbix71 mnt]# ls
ceph-file test test1
(3)服務器端做快照
語法:
rbd snap create<pool-name>/<image-name> @<snap-name
[root@node140 ~]# rbd snap create rbd/remote_rbd1@snap1
[root@node140 ~]# rbd snap ls rbd/remote_rbd1
SNAPID NAME SIZE PROTECTED TIMESTAMP
snap1 150 GiB Wed Aug 28 15:33:35 2019
(4)測試快照恢復功能,在客戶端刪除2個test 文件
[root@zabbix71 mnt]# ls
ceph-file test test1
[root@zabbix71 mnt]# rm -fr *
(5)客戶端umount 掛載,取消map rbd 映射
[root@zabbix71 /]# umount /mnt/
[root@zabbix71 /]# rbd unmap remote_rbd1
註釋:如果不執行上面的卸載命令和取消映射就會出現如下報錯
[root@node140 /]# rbd snap rollback rbd/remote_rbd1@snap1
Rolling back to snapshot: 0% complete...failed.
rbd: rollback failed: (30) Read-only file system
(6)通過快照進行回滾,注意快照回滾,之前的數據會被覆蓋
語法:rbd snap rollback pool-name>/< image-name> @<snap-name
[root@node140 /]# rbd snap rollback rbd/remote_rbd1@snap1
Rolling back to snapshot: 100% complete...done.
(7)重新掛在檢查,原來的文件恢復
[root@zabbix71 /]# rbd map remote_rbd1
/dev/rbd0
[root@zabbix71 /]# mount /dev/rbd0 /mnt/
[root@zabbix71 /]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/centos-root 46G 12G 34G 27% /
devtmpfs 7.8G 0 7.8G 0% /dev
tmpfs 7.8G 0 7.8G 0% /dev/shm
tmpfs 7.8G 113M 7.7G 2% /run
tmpfs 7.8G 0 7.8G 0% /sys/fs/cgroup
/dev/sda1 1014M 180M 835M 18% /boot
tmpfs 1.6G 0 1.6G 0% /run/user/0
/dev/rbd0 150G 33M 150G 1% /mnt
[root@zabbix71 /]# cd /mnt/
[root@zabbix71 mnt]# ls
test test1
(8)當不再需要某個快照時,可以使用如下命令刪除指定的快照 刪除快照不會刪除 Ceph RBD 鏡像巾當前的數據:
[root@node140 /]# rbd snap rm rbd/remote_rbd1@snap1
Removing snap: 100% complete...done.