2016年10月25日 星期二

在 CentOS7/RHEL7 上,使用 Ceph Block 設備(RBD)

設定提要:
  • Ceph Hammer 套件的架設,請參考這一篇
快速設定流程:
  1. 切換到建立 Ceph 時的目錄:
    #cd ~/ceph-deploy
    
  2. 編輯 Ceph 設定檔:
    #vim ceph.conf
    (在檔尾追加下列設定:)
    [client]
    rbd_cache = true
    rbd_cache_writethrough_until_flush = true
    
  3. 重新配置 Ceph :
    #ceph-deploy --overwrite-conf config push serverd servere
    
  4. 為 RBD 客戶端建立憑證:
    #ceph auth get-or-create client.rbd.serverb osd 'allow rwx pool=rbd' mon 'allow r' -o /etc/ceph/ceph.client.rbd.serverb.keyring
    
    (上述指令若輸入錯誤,請先刪除,再重新輸入:)
    ceph auth del client.rbd.serverb
    
  5. 建立一個 RBD 影像檔:
    #rbd create test --size 128
    
  6. 確認剛才建立的 RBD 影像檔:
    #rbd info test
    
  7. 切換至 Serverb 主機,安裝 Ceph 指令工具:
    #yum install -y ceph-common
    
  8. 在 Serverb 主機上,啟動 RBD Map 服務:
    #chkconfig rbdmap on
    #systemctl start rbdmap
    
  9. 在 Serverb 主機,導入 RBD 核心驅動工具:
    #modprobe rbd
    #lsmod | grep rbd
    
  10. 將 ServerC 上的 keyring 與 ceph.conf 檔,複製到 Serverb 主機:
    #scp root@serverc:/etc/ceph/ceph.client.rbd.serverb.keyring /etc/ceph/
    #scp root@serverc:/etc/ceph/ceph.conf /etc/ceph/
    
  11. 在 Serverb 主機上,繪製 RBD 影像檔:
    #rbd --id rbd.serverb map test
    
  12. 在 Serverb 主機上,驗證 RBD 影像檔:
    #rbd --id rbd.serverb showmapped
    
  13. 在 Serverb 主機上,將 RBD 影像檔,製成檔案系統:
    #mkfs.ext4 /dev/rbd0
    #mkdir /mnt/rbd
    #mount /dev/rbd0 /mnt/rbd
    
    (亦可寫入 /etc/fstab 檔案內:)
    /dev/rbd0  /mnt/rbd  ext4 defaults,_netdev 0 0
    
  14. 測試一下效能:
    #dd if=/dev/zero of=/tmp/test1 bs=10M count=1
    #df
    #cp /tmp/test1 /mnt/rbd
    #ls /mnt/rbd/
    #rados --id rbd.serverb df
    #dd if=/dev/zero of=/tmp/test2 bs=10M count=1
    #cp /tmp/test2 /mnt/rbd
    #df
    #rados --id rbd.serverb df
    
  15. 在 Serverb 主機上,利用 rbd put 指令,上傳物件到 RADOS :
    #dd if=/dev/zero of=/tmp/test3 bs=10M count=1
    #rados --id rbd.serverb -p rbd put test3 /mnt/test3
    #rados --id rbd.serverb df
    #rados --id rbd.serverb -p rbd stat test3
    
    (以下是不允許的狀況:)
    #rados --id rbd.serverb -p data put test1 /tmp/test1