image
1.创建image
数据存储池保护策略为副本
命令格式:
rbd create {replicated_pool_name}/{image_name} --size {image_size}
或
rbd create {image_name} --size {image_size} --pool {replicated_pool_name}
eg:
rbd create data/image --size=1024M
rbd create image4 --size 1M --pool data
数据数据池保护策略为纠删码
ceph Luminous支持image的数据池为纠删码,rbd将imge数据存储在纠删码池中,但image头和元数据仍然需要进入副本存储池(所以需要2个存储池,副本存储池做元数据存储池)
命令格式:
rbd create {replicated_pool}/{image_name} --size {image_size} --data-pool {erasure_pool}
或
rbd create {image_name} --pool {replicated_pool} --size {image_size} --data-pool {image_name}
eg:(data为副本,ec为纠删码)
rbd create data/image_ec --size 1024 --data-pool ec
或
rbd create image_ec1 --pool data --size 1024 --data-pool ec
在后续的一次实践中发现使用上述命令遇到创建image失败,报错形如:librbd::image::CreateRequest: 0x564b123bcef0 handle_validate_overwrite: pool missing required overwrite support
rbd: create error: (22) Invalid argument
研究后发现,Luminous支持image的数据池为纠删码,必须设置纠删码存储池的allow_ec_overwrites属性为true
问题解决如下:
[root@node81 test]#
[root@node81 test]# rbd create rbd_meta/image_ec --size 1024 --data-pool rbd_data
2018-12-12 02:00:50.926325 7f7033fff700 -1 librbd::image::CreateRequest: 0x564b123bcef0 handle_validate_overwrite: pool missing required overwrite support
rbd: create error: (22) Invalid argument
[root@node81 test]#
[root@node81 test]#
[root@node81 test]# ceph osd pool set rbd_data allow_ec_overwrites true
set pool 4 allow_ec_overwrites to true
[root@node81 test]#
[root@node81 test]#
[root@node81 test]# rbd create rbd_meta/image_ec --size 1024 --data-pool rbd_data
[root@node81 test]#
[root@node81 test]#
[root@node81 test]# rbd info rbd_meta/image_ec
rbd image 'image_ec':
size 1GiB in 256 objects
order 22 (4MiB objects)
data_pool: rbd_data
block_name_prefix: rbd_data.3.1edeb6b8b4567
format: 2
features: layering, exclusive-lock, object-map, fast-diff, deep-flatten, data-pool
flags:
create_timestamp: Wed Dec 12 02:02:03 2018
[root@node81 test]#
2.查看image信息
查看某个存储池下所有image信息,可选参数-l会例举一些扩展信息(快照、克隆、大小等)
命令格式:
rbd ls [ -l ] {pool_name}
eg:
rbd ls -l data
输出形如:
[root@node81 ~]# rbd ls -l data
NAME SIZE PARENT FMT PROT LOCK
clone1 1GiB 2
image 1GiB 2
image@snap 1GiB 2
image2 1GiB 2
image3 1022MiB 2 excl
image3@1 1022MiB 2
image4 1MiB 2
image_ec 1GiB 2
image_ec1 1GiB 2
[root@node81 ~]#
查看某个image详情(大小)
命令格式:
rbd info {pool_name}/{image_name}
eg:
rbd info data/image2</