Ceph塊裝置(RBD)常用命令
阿新 • • 發佈:2019-01-02
建立塊裝置映像
rbd create --size {megabytes} {pool-name}/{image-name}
例項:
[ceph-deploy@ceph-admin ~]$ rbd create --size 1024 foo
羅列塊裝置映像
rbd ls {poolname}
例項:
[ceph-deploy@ceph-admin ~]$ rbd ls # rbd list
foo
檢索映像資訊
rbd info {pool-name}/{image-name}
例項:
[ceph-deploy@ceph-admin ~]$ rbd info foo
rbd image 'foo':
size 1024 MB in 256 objects
order 22 (4096 kB objects)
block_name_prefix: rbd_data.d3a4238e1f29
format: 2
features: layering, exclusive-lock, object-map, fast-diff, deep-flatten
flags:
調整塊裝置映像大小
rbd resize --size 2048 foo (to increase)
rbd resize --size 2048 foo - -allow-shrink (to decrease)
例項:
[ceph-deploy@ceph-admin ~]$ rbd resize --size 2048 foo
Resizing image: 100% complete...done.
[ceph-deploy@ceph-admin ~]$ rbd info foo
rbd image 'foo':
size 2048 MB in 512 objects
order 22 (4096 kB objects)
block_name_prefix: rbd_data.d3a4238e1f29
format : 2
features: layering, exclusive-lock, object-map, fast-diff, deep-flatten
flags:
刪除塊裝置映像
rbd rm {pool-name}/{image-name}
例項:
[ceph-deploy@ceph-admin ~]$ rbd rm foo
Removing image: 100% complete...done.
對映塊裝置
sudo rbd map {pool-name}/{image-name} --id {user-name}
例項:
[ceph-deploy@ceph-admin ~]$ sudo rbd map rbd/foo
/dev/rbd0
檢視已對映塊裝置
rbd showmapped
例項:
[ceph-deploy@ceph-admin ~]$ rbd showmapped
id pool image snap device
0 rbd foo - /dev/rbd0
取消塊裝置對映
sudo rbd unmap /dev/rbd/{poolname}/{imagename}
例項:
[ceph-deploy@ceph-admin ~]$ sudo rbd unmap /dev/rbd0
使用Ceph塊裝置
建立並掛載一個檔案系統:
[ceph-deploy@ceph-admin ~]$ sudo mkfs.xfs /dev/rbd0
meta-data=/dev/rbd0 isize=512 agcount=9, agsize=64512 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=0, sparse=0
data = bsize=4096 blocks=524288, imaxpct=25
= sunit=1024 swidth=1024 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=1
log =internal log bsize=4096 blocks=2560, version=2
= sectsz=512 sunit=8 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
[ceph-deploy@ceph-admin ~]$ sudo mkdir /mnt/ceph-disk0
[ceph-deploy@ceph-admin ~]$ sudo mount /dev/rbd0 /mnt/ceph-disk0
[ceph-deploy@ceph-admin ~]$ df -h /mnt/ceph-disk0
Filesystem Size Used Avail Use% Mounted on
/dev/rbd0 2.0G 33M 2.0G 2% /mnt/ceph-disk0
通過將資料寫入塊裝置來進行檢測:
[ceph-deploy@ceph-admin ~]$ sudo dd if=/dev/zero of=/mnt/ceph-disk0/file0 count=100 bs=1M
100+0 records in
100+0 records out
104857600 bytes (105 MB) copied, 0.779733 s, 134 MB/s
[ceph-deploy@ceph-admin ~]$ sudo ls /mnt/ceph-disk0/file0 -lh
-rw-r--r--. 1 root root 100M Jul 19 15:33 /mnt/ceph-disk0/file0
[ceph-deploy@ceph-admin ~]$ df -h /mnt/ceph-disk0
Filesystem Size Used Avail Use% Mounted on
/dev/rbd0 2.0G 133M 1.9G 7% /mnt/ceph-disk0
增加塊裝置映像大小後,擴充套件檔案系統來利用增加了的儲存空間
[[email protected] ~]$ sudo dmesg | grep -i capacity
[17945.781304] rbd: rbd0: capacity 2147483648 features 0x1
[21955.926051] rbd0: detected capacity change from 2147483648 to 4294967296
[[email protected] ~]$ sudo xfs_growfs -d /mnt/ceph-disk0/
meta-data=/dev/rbd0 isize=512 agcount=9, agsize=64512 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=0 spinodes=0
data = bsize=4096 blocks=524288, imaxpct=25
= sunit=1024 swidth=1024 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=1
log =internal bsize=4096 blocks=2560, version=2
= sectsz=512 sunit=8 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
data blocks changed from 524288 to 1048576
[[email protected] ~]$ df -h /mnt/ceph-disk0
Filesystem Size Used Avail Use% Mounted on
/dev/rbd0 4.0G 133M 3.9G 4% /mnt/ceph-disk0
可能遇到的錯誤:
[[email protected] ~]$ sudo rbd map rbd/foo
rbd: sysfs write failed
RBD image feature set mismatch. You can disable features unsupported by the kernel with "rbd feature disable".
In some cases useful info is found in syslog - try "dmesg | tail" or so.
rbd: map failed: (6) No such device or address
原因:
rbd映象的一些特性,OS kernel並不支援,所以對映失敗。
檢視該映象支援了哪些特性:
[ceph-deploy@ceph-admin ~]$ rbd info foo
rbd image 'foo':
size 2048 MB in 512 objects
order 22 (4096 kB objects)
block_name_prefix: rbd_data.d3a4238e1f29
format: 2
features: layering, exclusive-lock, object-map, fast-diff, deep-flatten
flags:
可以看到特性feature一欄,由於OS的kernel只支援layering,其他都不支援,所以需要把部分不支援的特性disable掉。
解決方案一:
直接diable這個rbd映象的不支援的特性:
[[email protected] ~]$ rbd feature disable foo exclusive-lock object-map fast-diff deep-flatten
解決方案二:
建立rbd映象時就指明需要的特性,如:
[ceph-deploy@ceph-admin ~]$ rbd create --size 2048 foo --image-feature layering
解決方案三:
如果還想一勞永逸,那麼就在執行建立rbd映象命令的伺服器中,修改Ceph配置檔案/etc/ceph/ceph.conf
,在global section
下,增加
rbd_default_features = 1
,再建立rdb映象:
[ceph-deploy@ceph-admin ~]$ rbd create --size 2048 foo
通過上述三種方法後,檢視rbd映象的資訊
[ceph-deploy@ceph-admin ~]$ rbd info foo
rbd image 'foo':
size 2048 MB in 512 objects
order 22 (4096 kB objects)
block_name_prefix: rbd_data.d3a4238e1f29
format: 2
features: layering
flags:
再次嘗試對映rdb映象到本地塊裝置,成功!
[ceph-deploy@ceph-admin ~]$ sudo rbd map rbd/foo
/dev/rbd0