2016年11月21日 星期一

在 CentOS7/RHEL7 上,使用快照分層化(Snapshot layering)快速建立影像檔案!

設定提要:
  • Ceph Hammer 套件的架設,請參考這一篇
  • Ceph Block 的使用,請參考這一篇
  • 管理 RBD 快照的方式,請參考這一篇
快速設定流程:
  1. 在 ServerC 上建立一個 128MB 的 RDB 映像檔:(--image-format 2 是啟動分層功能的方式!)
    [root@serverc ~]#rbd create test-clone --image-format 2 --size 128
    
  2. 在 ServerB 上建立一個指標,指到上一步驟所建立的 RDB 映像檔:
    [root@serverb ~]# rbd --id rbd.serverb map test-clone
    [root@serverb ~]# rbd --id rbd.serverb showmapped
    id pool image      snap device    
    0  rbd  test-clone -    /dev/rbd0 
    
  3. 在 ServerB 上,針對 RDB 映像檔,建立檔案系統,並且掛載到 /mnt/clones 目錄下:
    [root@serverb ~]#mkfs.ext4 /dev/rbd0
    [root@serverb ~]#mkdir /mnt/clones
    [root@serverb ~]#mount /dev/rbd0 /mnt/clones
    
  4. 在 ServerB 上,新增一個 10MB 的檔案到 /mnt/clones 目錄下:
    [root@serverb ~]#dd if=/dev/zero of=/mnt/clones/file-1 bs=1M count=10
    
  5. 在 ServerC 上,新增一個新的 snapshot:
    [root@serverc ~]#rbd snap create --snap my-snapshot test-clone
    
  6. 在 ServerC 上,建立一個 my-snapshot 複本在 test-clone 內,名為 my-clone:
    [root@serverc ~]#rbd clone --image test-clone --snap my-snapshot --dest my-clone
    
  7. 在 ServerC 上,確認 my-clone 有完整被建立起來:
    [root@serverc ~]#rbd children --image test-clone --snap my-snapshot
    
  8. 在 ServerC 上,扁平化 my-clone 影像檔:
    [root@serverc ~]#rbd flatten --image my-clone
    
  9. 在 ServerB 上建立一個指標,指到新建立的 my-clone 映像檔:
    [root@serverb ~]#rbd --id rbd.serverb map my-clone
    [root@serverb ~]# rbd --id rbd.serverb showmapped
    
  10. 在 ServerB 上,缷載 /mnt/clones 目錄:
    [root@serverb ~]#umount /mnt/clones
    
  11. 在 ServerB 上,掛載新的 RBD 檔到 /mnt/clones 目錄:
    [root@serverb ~]#mount /dev/rbd1 /mnt/clones
    
  12. 在 ServerB 上,查詢 /mnt/clones 目錄,是否有 file-1 檔案:
    [root@serverb ~]#ls /mnt/clones