-創(chuàng)建 Ceph 塊存儲系統(tǒng) RBD 接口-
1、創(chuàng)建一個名為 rbd-demo 的專門用于 RBD 的存儲池
ceph osd pool create rbd-demo 64 64
2、將存儲池轉(zhuǎn)換為 RBD 模式
ceph osd pool application enable rbd-demo rbd
3、初始化存儲池
rbd pool init -p rbd-demo # -p 等同于 --pool
4、創(chuàng)建鏡像
rbd create -p rbd-demo --image rbd-demo1.img --size 10G
可簡寫為:
rbd create rbd-demo/rbd-demo2.img --size 10G
5、鏡像管理
//查看存儲池下存在哪些鏡像
rbd ls -l -p rbd-demo
//查看鏡像的詳細(xì)信息
rbd info -p rbd-demo --image rbd-demo1.img
rbd image 'rbd-demo.img':
size 10 GiB in 2560 objects #鏡像的大小與被分割成的條帶數(shù)
order 22 (4 MiB objects) #條帶的編號,有效范圍是12到25,對應(yīng)4K到32M,而22代表2的22次方,這樣剛好是4M
snapshot_count: 0
id: 5fc98fe1f304 #鏡像的ID標(biāo)識
block_name_prefix: rbd_data.5fc98fe1f304 #名稱前綴
format: 2 #使用的鏡像格式,默認(rèn)為2
features: layering, exclusive-lock, object-map, fast-diff, deep-flatten #當(dāng)前鏡像的功能特性
op_features: #可選的功能特性
flags:
//修改鏡像大小
rbd resize -p rbd-demo --image rbd-demo1.img --size 20G
rbd info -p rbd-demo --image rbd-demo1.img
#使用 resize 調(diào)整鏡像大小,一般建議只增不減,如果是減少的話需要加選項(xiàng) --allow-shrink
rbd resize -p rbd-demo --image rbd-demo1.img --size 5G --allow-shrink
//刪除鏡像
#直接刪除鏡像
rbd rm -p rbd-demo --image rbd-demo2.img
或
rbd remove rbd-demo/rbd-demo2.img
#推薦使用 trash 命令,這個命令刪除是將鏡像移動至回收站,如果想找回還可以恢復(fù)
rbd trash move rbd-demo/rbd-demo1.img
rbd ls -l -p rbd-demo
rbd trash list -p rbd-demo
5fc98fe1f304 rbd-demo1.img
#還原鏡像
rbd trash restore rbd-demo/5fc98fe1f304
rbd ls -l -p rbd-demo
6、Linux客戶端使用
客戶端使用 RBD 有兩種方式:
●通過內(nèi)核模塊KRBD將鏡像映射為系統(tǒng)本地塊設(shè)備,通常設(shè)置文件一般為:/dev/rbd*
●另一種是通過librbd接口,通常KVM虛擬機(jī)使用這種接口。
本例主要是使用Linux客戶端掛載RBD鏡像為本地磁盤使用。開始之前需要在所需要客戶端節(jié)點(diǎn)上面安裝ceph-common軟件包,因?yàn)榭蛻舳诵枰{(diào)用rbd命令將RBD鏡像映射到本地當(dāng)作一塊普通硬盤使用。并還需要把ceph.conf配置文件和授權(quán)keyring文件復(fù)制到對應(yīng)的節(jié)點(diǎn)。
//在管理節(jié)點(diǎn)創(chuàng)建并授權(quán)一個用戶可訪問指定的 RBD 存儲池
#示例,指定用戶標(biāo)識為client.osd-mount,對另對OSD有所有的權(quán)限,對Mon有只讀的權(quán)限
ceph auth get-or-create client.osd-mount osd "allow * pool=rbd-demo" mon "allow r" > /etc/ceph/ceph.client.osd-mount.keyring
//修改RBD鏡像特性,CentOS7默認(rèn)情況下只支持layering和striping特性,需要將其它的特性關(guān)閉
rbd feature disable rbd-demo/rbd-demo1.img object-map,fast-diff,deep-flatten
//將用戶的keyring文件和ceph.conf文件發(fā)送到客戶端的/etc/ceph目錄下
cd /etc/ceph
scp ceph.client.osd-mount.keyring ceph.conf root@client:/etc/ceph
//linux客戶端操作
#安裝 ceph-common 軟件包
yum install -y ceph-common
#執(zhí)行客戶端映射
cd /etc/ceph
rbd map rbd-demo/rbd-demo1.img --keyring /etc/ceph/ceph.client.osd-mount.keyring --user osd-mount
#查看映射
rbd showmapped
rbd device list
#斷開映射
rbd unmap rbd-demo/rbd-demo1.img
#格式化并掛載
mkfs.xfs /dev/rbd0
mkdir -p /data/bb
mount /dev/rbd0 /data/bb
#在線擴(kuò)容
在管理節(jié)點(diǎn)調(diào)整鏡像的大小
rbd resize rbd-demo/rbd-demo1.img --size 30G
在客戶端刷新設(shè)備文件
xfs_growfs /dev/rbd0 #刷新xfs文件系統(tǒng)容量
resize2fs /dev/rbd0 #刷新ext4類型文件系統(tǒng)容量
7、快照管理
對 rbd 鏡像進(jìn)行快照,可以保留鏡像的狀態(tài)歷史,另外還可以利用快照的分層技術(shù),通過將快照克隆為新的鏡像使用。
//在客戶端寫入文件
echo 1111 > /data/bb/11.txt
echo 2222 > /data/bb/22.txt
echo 3333 > /data/bb/33.txt
//在管理節(jié)點(diǎn)對鏡像創(chuàng)建快照
rbd snap create --pool rbd-demo --image rbd-demo1.img --snap demo1_snap1
可簡寫為:
rbd snap create rbd-demo/rbd-demo1.img@demo1_snap1
//列出指定鏡像所有快照
rbd snap list rbd-demo/rbd-demo1.img
#用json格式輸出:
rbd snap list rbd-demo/rbd-demo1.img --format json --pretty-format
//回滾鏡像到指定
在回滾快照之前,需要將鏡像取消鏡像的映射,然后再回滾。
#在客戶端
rm -rf /data/bb/*
umount /data/bb
rbd unmap rbd-demo/rbd-demo1.img
#在管理節(jié)點(diǎn)操作,回滾
rbd snap rollback rbd-demo/rbd-demo1.img@demo1_snap1
#在客戶端重新映射并掛載
rbd map rbd-demo/rbd-demo1.img --keyring /etc/ceph/ceph.client.osd-mount.keyring --user osd-mount
mount /dev/rbd0 /data/bb
ls /data/bb #發(fā)現(xiàn)數(shù)據(jù)還原回來了
//限制鏡像可創(chuàng)建快照數(shù)
rbd snap limit set <RDB存儲池名>/<鏡像名> --limit 3
#解除限制:
rbd snap limit clear <RDB存儲池名>/<鏡像名>
//刪除快照
#刪除指定快照:
rbd snap rm <RDB存儲池名>/<鏡像名>@<快照名>
#刪除所有快照:
rbd snap purge <RDB存儲池名>/<鏡像名>
//快照分層
快照分層支持用快照的克隆生成新鏡像,這種鏡像與直接創(chuàng)建的鏡像幾乎完全一樣,支持鏡像的所有操作。唯一不同的是克隆鏡像引用了一個只讀的上游快照,而且此快照必須要設(shè)置保護(hù)模式。
#快照克隆
1)將上游快照設(shè)置為保護(hù)模式:
rbd snap create rbd-demo/rbd-demo1.img@demo1_snap666
rbd snap protect rbd-demo/rbd-demo1.img@demo1_snap666
2)克隆快照為新的鏡像
rbd clone rbd-demo/rbd-demo1.img@demo1_snap666 --dest rbd-demo/rbd-demo666.img
rbd ls -p rbd-demo
3)命令查看克隆完成后快照的子鏡像
rbd children rbd-demo/rbd-demo1.img@demo1_snap666
//快照展平
通常情況下通過快照克隆而得到的鏡像會保留對父快照的引用,這時候不可以刪除該父快照,否則會有影響。
rbd snap rm rbd-demo/rbd-demo1.img@demo1_snap666
#報(bào)錯 snapshot 'demo1_snap666' is protected from removal.
如果要刪除快照但想保留其子鏡像,必須先展平其子鏡像,展平的時間取決于鏡像的大小
1) 展平子鏡像
rbd flatten rbd-demo/rbd-demo666.img
2)取消快照保護(hù)
rbd snap unprotect rbd-demo/rbd-demo1.img@demo1_snap666
3)刪除快照
rbd snap rm rbd-demo/rbd-demo1.img@demo1_snap666
rbd ls -l -p rbd-demo #在刪除掉快照后,查看子鏡像依然存在
8、鏡像的導(dǎo)出導(dǎo)入
//導(dǎo)出鏡像
rbd export rbd-demo/rbd-demo1.img /opt/rbd-demo1.img
//導(dǎo)入鏡像
#卸載客戶端掛載,并取消映射
umount /data/bb
rbd unmap rbd-demo/rbd-demo1.img
#清除鏡像下的所有快照,并刪除鏡像
rbd snap purge rbd-demo/rbd-demo1.img
rbd rm rbd-demo/rbd-demo1.img
rbd ls -l -p rbd-demo
#導(dǎo)入鏡像
rbd import /opt/rbd-demo1.img rbd-demo/rbd-demo1.img
rbd ls -l -p rbd-demo
- OSD 故障模擬與恢復(fù) -
1、模擬 OSD 故障
如果 ceph 集群有上千個 osd,每天壞 2~3 個太正常了,我們可以模擬 down 掉一個 osd
#如果 osd 守護(hù)進(jìn)程正常運(yùn)行,down 的 osd 會很快自恢復(fù)正常,所以需要先關(guān)閉守護(hù)進(jìn)程
ssh root@node01 systemctl stop ceph-osd@0
#down 掉 osd
ceph osd down 0
ceph osd tree
2、將壞掉的 osd 踢出集群
//方法一:
#將 osd.0 移出集群,集群會開始自動同步數(shù)據(jù)
ceph osd out osd.0
#將 osd.0 移除 crushmap
ceph osd crush remove osd.0
#刪除守護(hù)進(jìn)程對應(yīng)的賬戶信息
ceph auth rm osd.0
ceph auth list
#刪掉 osd.0
ceph osd rm osd.0
ceph osd stat
ceph -s
//方法二:文章來源:http://www.zghlxwxcb.cn/news/detail-578619.html
ceph osd out osd.0
#使用綜合步驟,刪除配置文件中針對壞掉的 osd 的配置
ceph osd purge osd.0 --yes-i-really-mean-it
3、把原來壞掉的 osd 修復(fù)后重新加入集群文章來源地址http://www.zghlxwxcb.cn/news/detail-578619.html
#在 osd 節(jié)點(diǎn)創(chuàng)建 osd,無需指定名,會按序號自動生成
cd /etc/ceph
ceph osd create
#創(chuàng)建賬戶
ceph-authtool --create-keyring /etc/ceph/ceph.osd.0.keyring --gen-key -n osd.0 --cap mon 'allow profile osd' --cap mgr 'allow profile osd' --cap osd 'allow *'
#導(dǎo)入新的賬戶秘鑰
ceph auth import -i /etc/ceph/ceph.osd.0.keyring
ceph auth list
#更新對應(yīng)的 osd 文件夾中的密鑰環(huán)文件
ceph auth get-or-create osd.0 -o /var/lib/ceph/osd/ceph-0/keyring
#加入 crushmap
ceph osd crush add osd.0 1.000 host=node01 #1.000 代表權(quán)重
#加入集群
ceph osd in osd.0
ceph osd tree
#重啟 osd 守護(hù)進(jìn)程
systemctl restart ceph-osd@0
ceph osd tree #稍等片刻后 osd 狀態(tài)為 up
//如果重啟失敗
報(bào)錯:
Job for ceph-osd@0.service failed because start of the service was attempted too often. See "systemctl status ceph-osd@0.service" and "journalctl -xe" for details.
To force a start use "systemctl reset-failed ceph-osd@0.service" followed by "systemctl start ceph-osd@0.service" again.
#運(yùn)行
systemctl reset-failed ceph-osd@0.service && systemctl restart ceph-osd@0.service
到了這里,關(guān)于Ceph 塊存儲系統(tǒng) RBD 接口的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!