[Ceph] 同一個塊存儲鏡像的多物理機(jī)掛載問題


一 塊存儲調(diào)用方式

Ceph的塊存儲有多種使用方式:
1 KRBD方式 : 本文章重點討論方式
基于內(nèi)核映射的調(diào)用方式,通過Kernel中的RBD模塊實現(xiàn)訪問后端存儲
2 利用QEMU模擬器掛載到虛擬機(jī)中
3 librbd方式:API庫調(diào)用

二 同一個塊存儲鏡像的多物理機(jī)掛載問題

這里我們采用KRBD的方式時,關(guān)于這個問題其實可以拆分來分析:
1.能不能同一個塊設(shè)備同時掛載到多個物理機(jī)?
能,但是互相不識,每個物理機(jī)的讀寫不會影響另一個物理機(jī),也不會在另一個物理機(jī)上展示其文件;如果再掛一個新的物理機(jī)時,會集中把所有物理機(jī)的文件都拷過來;

  1. 關(guān)于塊設(shè)備映射的文件系統(tǒng)格式化
    雖然會多個物理機(jī),但只需要第一次用這個塊設(shè)備時,將其格式化就好了,后續(xù)物理機(jī)不要格式化,不然的話,塊設(shè)備信息全部丟失,其他物理機(jī)也很無奈;
    這個過程中,會出現(xiàn)不一致性,比如如果兩個物理機(jī)都建了一個名字相同但大小不同的文件時,會以最后一個建的為準(zhǔn);

  2. 關(guān)于同一個塊設(shè)備,我的建議是最好不要掛載多個物理機(jī)上;
    掛載多個物理機(jī)雖然可以,但如果重新映射掛載物理機(jī)時會把其他物理機(jī)上文件一起拷貝過來,便會互相影響了;

  3. 關(guān)于塊存儲的數(shù)據(jù)復(fù)原
    這里是指如果客戶機(jī)掛掉了,必須用另個客戶機(jī)時要把掛掉的客戶機(jī)數(shù)據(jù)拷貝過來,便出現(xiàn)了同一個塊設(shè)備掛載多個客戶機(jī)了,另個客戶機(jī)此時會復(fù)原原來的那個客戶機(jī)數(shù)據(jù)的,這里經(jīng)過小數(shù)據(jù)的測試驗證。

  4. 期間遇到的一些問題
    5.1 文件系統(tǒng)格式化不需要每次內(nèi)核映射完畢后都調(diào)用,因為格式化意味著清空數(shù)據(jù).
    5.2 如果重復(fù)umount和mount操作時,不要在mount的目標(biāo)路徑下進(jìn)行操作,因為會出現(xiàn)mount后調(diào)用ls命令不刷新的場景,切記~
    5.3 在快照回滾或者其他場景時偶爾出現(xiàn)下面的問題

//問題
mount: wrong fs type, bad option, bad superblock

//解決
fsck -t ext4  /dev/rbd/rbd/foo2

三 RBD模塊

rbd模塊是內(nèi)核中內(nèi)置的一種驅(qū)動模塊,可以驅(qū)動Ceph塊存儲;
注意的是3.10.0版本以上內(nèi)核才會默認(rèn)集成該驅(qū)動。

//查看RBD模塊信息
modinfo rbd
//查看RBD模塊所屬的軟件包
rpm -qf /lib/modules/3.10.0-327.el7.x86_64/kernel/drivers/block/rbd.ko

四 塊存儲的一些常見命令

  1. 創(chuàng)建鏡像,也可以叫塊設(shè)備。
rbd create foo2 --size 2048 --image-feature layering --image-shared
  1. 創(chuàng)建內(nèi)核映射,將塊設(shè)備映射到操作系統(tǒng)。
sudo rbd map foo2 --name client.admin
  1. 查看塊設(shè)備映射列表
rbd showmapped
  1. 刪除塊設(shè)備映射
sudo rbd unmap /dev/rbd/rbd/foo2
  1. 導(dǎo)入導(dǎo)出塊設(shè)備
rbd import --image-format 2 /root/test1  rbd/foo2 
rbd export  rbd/foo2  /root/test1
  1. 創(chuàng)建快照
    rbd snap create rbd/foo2@snap1
  2. 查看快照
    rbd snap ls rbd/foo2
  3. 回滾快照
    rbd snap rollback rbd/foo2@snap1
  4. 刪除快照
    rbd snap rm rbd/foo2@snap1
  5. 刪除鏡像
    rbd rm rbd/foo2
  6. 掛載、解掛塊設(shè)備
sudo mount -t ext4 -o discard  /dev/rbd/rbd/foo2 /mnt/cc3
umount /mnt/cc3
  1. 格式化塊設(shè)備映射
    sudo mkfs.ext4 -m0 /dev/rbd/rbd/foo2
  2. 鏡像空間大小
    rbd diff rbd/foo2 | awk '{ SUM += $2 } END { print SUM/1024/1024 " MB" }'

PS: 這個有時在多物理機(jī)掛載場景下會不準(zhǔn)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容