共計 2417 個字符,預計需要花費 7 分鐘才能閱讀完成。
這篇文章主要介紹 jewel 中 rbd-mirror 有什么用,文中介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們一定要看完!
rbd-mirror 是 jewel 版本新加入的一個特性,目的是在不同的 ceph 集群中同步 rbd 設備上的數據。
rbd-mirror 的內部實現如下圖所示:
在兩個相互獨立的 ceph 集群中分別多了一個守護進程 rbd-mirror,該守護進程負責同步 rbd 設備上的數據。rbd-mirror 的主要處理流程如下圖所示:
用戶操作塊設備向塊設備中寫入數據時,librbd 首先將寫操作寫入日志,當日志寫入完畢后應答用戶寫操作完畢。之后日志向本地塊設備寫入數據,于此同時日志通過 rbd-mirror 守護進程將日志發送到對端 ceph 集群。對端 ceph 集群將日志內容寫入到塊設備中,由此完成塊設備的同步功能。由此看到 rbd-mirror 的核心在于 rbd-mirror 守護進程和塊設備寫入的日志。
rbd-mirror 動手實踐部分如下:
1、集群環境。
rbd-mirror 的測試環境采用手動編譯 ceph 源代碼的方式安裝并配置 ceph 集群,具體操作過程請參考 http://my.oschina.net/linuxhunter/blog/682013。集群名稱分別是 ceph 和 ceph3。測試 rbd-mirror 使用的用戶是各自集群中的 admin 用戶(當然可以自行創建一個專門為 rbd-mirror 的特定用戶)。
2、rbd-mirror 設置。
1)復制 ceph 配置文件和 admin 用戶的 keyring 到對端 ceph 集群。
將 ceph 集群中的 ceph.conf 和 ceph.client.admin.keyring 復制到 ceph3 集群中的 /etc/ceph 目錄下,于此同時將 ceph3 集群中的 ceph3.conf 和 ceph3.client.admin.keyring 復制到 ceph 集群中。這樣 ceph 集群可以查看 ceph3 集群的狀態,ceph3 集群也可以查看 ceph 集群的狀態。
2)在兩個 ceph 集群中創建相同名稱的 pool。
#rbd –cluster ceph osd pool create image-pool 64 64
#rbd –cluster ceph3 osd pool create image-pool 64 64
3)使能 mirror 功能。
#rbd –cluster ceph mirror pool enable image-pool pool
#rbd –cluster ceph3 mirror pool enable image-pool pool
4)添加 cluster peer。
#rbd –cluster ceph mirror pool peer add image-pool client.admin@ceph3
#rbd –cluster ceph3 mirror pool peer add image-pool client.admin@ceph
5)啟動 rbd-mirror 守護進程。
#rbd-mirror -f –cluster ceph –setuser ceph –setgroup ceph
#rbd-mirror -f –cluster ceph3 –setuser ceph –setgroup ceph
6)查看 rbd-mirror 狀態。
#rbd –cluster ceph mirror pool info
Mode: image
Peers:
UUID NAME CLIENT
30018a0a-52b6-499e-b8f2-174d61eeeafe ceph3 client.admin
#rbd –cluster ceph mirror pool status
health: OK
images: 0 total
到此 rbd-mirror 環境已經成功搭建完畢。
3、rbd-mirror 測試。
1)在 ceph 集群中 image-pool 中創建一個塊設備。
#rbd –cluster ceph create image-pool/test1 –size 10240 –image-feature exclusive-lock, journaling
2)向 ceph 集群中 image-pool 中的塊設備寫入數據。
#mkdir -p /tmp/rbd
#rbd-fuse -p image-pool /tmp/rbd
#mkfs.ext4 /tmp/rbd/test1
#mount -o loop /tmp/rbd/test1 /mnt/
#echo hello, world /mnt/test.txt
#umount /mnt
#fusermount -u /tmp/rbd
3)在 ceph3 集群中查看 image-pool 中的塊設備信息。
#rbd –cluster ceph3 -p image-pool ls
test1
此時在 ceph3 集群中就可以看到剛剛在 ceph 集群中創建出來的 test1 塊設備;
4)在 ceph3 集群中掛載塊設備且查看塊設備中的內容。
#mkdir -p /tmp/rbd
#rbd-fuse -p image-pool /tmp/rbd
#mount -o loop /tmp/rbd/test1 /mnt
#ls /mnt/
test1.txt
#cat /mnt/test1.txt
hello,world
#umount /mnt
#fusermount -u /tmp/rbd
4、補充說明。
1)當前版本的 rbd-mirror 功能只支持集群之間一對一的 mirror,并不支持一對多的 mirror;
2)做 rbd-mirror 的兩個集群的 pool 名稱必須一致;
以上是“jewel 中 rbd-mirror 有什么用”這篇文章的所有內容,感謝各位的閱讀!希望分享的內容對大家有幫助,更多相關知識,歡迎關注丸趣 TV 行業資訊頻道!