2016年11月17日 星期四

在 CentOS7/RHEL7 上,管理 RBD 快照檔案!

設定提要:
  • Ceph Hammer 套件的架設,請參考這一篇
  • Ceph Block 的使用,請參考這一篇
快速設定流程:
  1. 在 ServerC 上建立一個 128MB 的 RDB 映像檔:
    [root@serverc ~]# rbd create test-snapshot --size 128
    
  2. 在 ServerB 上建立一個指標,指到上一步驟所建立的 RDB 映像檔:
    [root@serverb ~]# rbd --id rbd.serverb map test-snapshot
    [root@serverb ~]# rbd --id rbd.serverb showmapped
    id pool image         snap device    
    0  rbd  test-snapshot -    /dev/rbd0 
    
    
  3. 在 ServerB 上,將 RDB 映像檔格式化成 ext4 檔案系統:
    [root@serverb ~]# mkfs.ext4 /dev/rbd0
    
  4. 在 ServerB 上,將 RDB 映像檔掛載起來:
    [root@serverb ~]# mkdir /mnt/snapshots
    [root@serverb ~]# mount /dev/rbd0 /mnt/snapshots
    
  5. 在 ServerB 上,利用 df 指令來查看檔案系統:
    [root@serverb ~]# df -h
    
  6. 利用 dd 指令,在 snapshots 目錄內,建一個 10MB 的檔案:
    [root@serverb ~]# dd if=/dev/zero of=/mnt/snapshots/file-1 bs=1M count=10
    
  7. 在 ServerC 上建立一個 RDB 快照檔案,指向 RDB 映像檔:
    [root@serverc ~]# rbd snap create --snap my-snapshot test-snapshot
    
  8. 在 ServerB 上,利用 dd 指令,在 snapshots 目錄內,建另一個 10MB 的檔案:
    [root@serverb ~]# dd if=/dev/zero of=/mnt/snapshots/file-2 bs=1M count=10
    [root@serverb ~]#ls /mnt/snapshots
    
  9. 在 ServerC 上建立另一個 RDB 快照檔案,指向 RDB 映像檔:
    [root@serverc ~]# rbd snap create --snap another-snap test-snapshot
    
  10. 在 ServerB 上,缷載 /mnt/snapshots 目錄:
    [root@serverb ~]#umount /mnt/snapshots
    
  11. 在 ServerC 上,列出所有建立的 RDB 快照檔案:
    [root@serverc ~]# rbd --id rbd.serverb snap ls test-snapshot
    
  12. 在 ServerC 上,返回到第一個 RDB 快照, my-snapshot:
    [root@serverc ~]# rbd snap rollback --snap my-snapshot test-snapshot
    
  13. 在 ServerB 上,將 RDB 映像檔掛載起來:
    [root@serverb ~]# mount /dev/rbd0 /mnt/snapshots
    [root@serverb ~]#ls /mnt/snapshots
    
  14. 在 ServerB 上,缷載 /mnt/snapshots 目錄:
    [root@serverb ~]#umount /mnt/snapshots
    
  15. 在 ServerC 上,返回到第二個 RDB 快照, another-snapshot:
    [root@serverc ~]# rbd snap rollback --snap another-snap test-snapshot
    
  16. 在 ServerB 上,將 RDB 映像檔掛載起來:
    [root@serverb ~]# mount /dev/rbd0 /mnt/snapshots
    [root@serverb ~]#ls /mnt/snapshots