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
    

2016年10月21日 星期五

在 CentOS7/RHEL7 上,安裝 Ceph Storage 系統

設定提要:
  • 使用 Ceph Hammer 套件來架設!
  • 先暫停 firewalld 服務,以利架設過程!
快速設定流程:
  1. 利用 yum 進行相關套件安裝:
    #yum -y install centos-release-ceph-hammer
    #yum -y install ceph-deploy
    
  2. 建立 Ceph 設定目錄:
    #mkdir ~/ceph-deploy
    
  3. 建立 Ceph 安裝設定檔:
    #cd ~/ceph-deploy
    #ceph-deploy new serverc serverd servere
    
    (若無架設 DNS Server,請預先在 /etc/hosts 建立相關主機設定,並複至到其他主機)
    192.168.0.1 serverc serverc.example.com
    192.168.0.2 serverd serverd.example.com
    192.168.0.3 servere servere.example.com
    
    
  4. 建立 ssh key ,並複製到其他主機:
    #ssh-keygen -t rsa
    #ssh-copy-id root@serverd
    #ssh-copy-id root@servere
    
  5. 修改 Ceph 安裝設定檔:
    #cd ~/ceph-deploy
    #vim ceph.conf
    (增加下列設定:)
    osd journal size = 1024
    osd pool default size = 2
    osd pool default min size = 1
    public network = 192.168.0.0/24
    [mon]
    mon osd allow primary affinity = 1
    
  6. 安裝 Ceph 至各主機上:
    #ceph-deploy install serverc serverd servere
    
  7. 在 ServerC 上,安裝 Ceph 監視器,監視各主機運作:
    #ceph-deploy mon create serverc serverd servere
    
  8. 在 ServerC 上,收集 Ceph 監視器金鑰:
    #ceph-deploy gatherkeys serverc
    
  9. 在 ServerC 上,查詢 Ceph Cluster 狀態:
    #ceph -s
    
  10. 在 ServerC 上,查詢 ServerC 的硬碟空間狀態:
    #ceph-deploy disk list serverc
    
  11. 使用各 Server 上的 vdb 的硬碟空間:
    #cd ~/ceph-deploy
    #ceph-deploy osd create serverc:vdb serverd:vdb servere:vdb
    
    (做完後,記得要重開機!)
    
  12. 在 ServerC 上,再次查詢 Ceph Cluster 狀態:
    #ceph -s
    
  13. 在 ServerC 上,查詢 Ceph Cluster 狀態的方式:
    #ceph -w
    #service ceph status mon
    #service ceph status osd
    #ps -ef | grep ceph-osd
    #service ceph stop osd
    #ceph osd tree
    #service ceph start osd
    #ceph osd tree
    
  14. 如果修改了 ceph-deploy 下的 ceph.conf 檔案,可重新再配置 ceph :
    #vim ~/ceph-deploy/ceph.conf
    (加入下列幾行:)
    [mon]
    mon_clock_drift_allowed = 1
    mon_clock_drift_warn_backoff = 30
    
    (開啟重新配置)
    #ceph-deploy --overwrite-conf config push serverc serverd servere
    #service ceph restart mon
    #ssh serverd "service ceph restart mon"
    #ssh servere "service ceph restart mon"
    

RADOS 驗證:
  1. 在 ServerC 上,建立一個小檔案,並上載到 RADOS server:
    #dd if=/dev/zero of=/tmp/test bs=10M count=1
    #rados mkpool data
    #rados -p data put test1 /tmp/test
    #rados df
    
    (再多推一些東西上去:)
    #rados -p data put test2 /tmp/test
    #rados -p data put test3 /tmp/test
    #rados df
    
  2. 刪除 RADOS server 內的資料:
    #rados -p data rm test1
    #rados -p data rm test2
    #rados -p data rm test3
    

CephX 的驗證機制:
  1. 在 ServerC 上,使用 Ceph 的監看模式,查看CephX上的ID與金鑰:
    #ceph --id admin --keyring /etc/ceph/ceph.client.admin/keyring -w
    
  2. 使用 rbd 指令,建立一個影像檔:
    #rbd --id admin --keyring /etc/ceph/ceph.client.admin.keyring create --size 1024 testimg
    
  3. 使用 rbd 指令,移除先前建立一個影像檔:
    #rbd --id admin --keyring /etc/ceph/ceph.client.admin.keyring rm testimg
    
  4. 可以利用 Shell 指令,指定一部份的 rbd 指令:
    #CEPH_ARGS='--id user --keyring /etc/ceph/ceph.client.user.keyring'
    
  5. 增加一個使用者 rhuser 到 Ceph 內:
    ceph auth get-or-create client.rhuser mds 'allow' osd 'allow *' mon 'allow *' -o /etc/ceph/ceph.client.rhuser.keyring
    
  6. 查詢使用者相關資料與權限:
    #ceph auth list
    
  7. 修訂使用者 rhuser 相關資料與權限:
    #ceph --id admin --keyring /etc/ceph/ceph.client.admin.keyring auth caps client.rhuser osd 'allow * pool=data' mon 'allow *'