要实践本手册,需要完成集群存储快速入门安装,并确保Ceph集群处于active状态,才能使用块设备
Note Ceph 块设备也叫 RBD 或 RADOS 块设备。
你可以在虚拟机上运行 ceph-client 节点,但是不能在与 Ceph 存储集群(除非它们也用 VM )相同的物理节点上执行下列步骤。
安装Ceph
1,确认你使用了合适的内核版本,详情见操作系统推荐。
lsb_release -a #Ubuntu uname -r #CentOS
2,在管理节点上,通过ceph-deploy安装ceph
ceph-deploy install ceph-client
注意:ceph-client为可以连接的主机名或者IP地址,最好设置好ssh免密,否则需要输入密码才能进行安装
最好在对应节点设置好yum源使用以下命令安装,否则安装很慢或者安装失败
yum -y update && yum -y install ceph-radosgw
3,在管理节点上,用 ceph-deploy 把 Ceph 配置文件和 ceph.client.admin.keyring 拷贝到 ceph-client 。
ceph-deploy 工具会把密钥环复制到 /etc/ceph 目录,要确保此密钥环文件有读权限
配置块设备
1,创建存储池
要创建一个存储池,执行
ceph osd pool create {pool-name} {pg-num} [{pgp-num}] [replicated] [crush-ruleset-name] [expected-num-objects] ceph osd pool create {pool-name} {pg-num} {pgp-num} erasure [erasure-code-profile] [crush-ruleset-name] [expected_num_objects]
参数含义如下
{pool-name}
描述:存储池名称,必须唯一
类型:String
是否必需:必需
{pg-num}
描述:存储池拥有的归置组总数。
确定 pg_num 取值是强制性的,因为不能自动计算。下面是几个常用的值: 少于 5 个 OSD 时可把 pg_num 设置为 128 OSD 数量在 5 到 10 个时,可把 pg_num 设置为 512 OSD 数量在 10 到 50 个时,可把 pg_num 设置为 4096 OSD 数量大于 50 时,你得理解权衡方法、以及如何自己计算 pg_num 取值 自己计算 pg_num 取值时可借助 pgcalc 工具
类型:整数
是否必需:必需
{pgp-num}
描述:用于归置的归置组总数。此值应该等于归置组总数,归置组分割的情况下除外。
类型:整数
是否必需:没指定的话读取默认值、或 Ceph 配置文件里的值。
默认值:8
{replicated|erasure}
描述:存储池类型,可以是副本(保存多份对象副本,以便从丢失的 OSD 恢复)或纠删(获得类似 RAID5 的功能)。多副本存储池需更多原始存储空间,但已实现所有 Ceph 操作;纠删存储池所需原始存储空间较少,但目前仅实现了部分 Ceph 操作。
类型:string
是否必需:No
默认值:replicated
例如创建一个存储池
[root@client ~]# ceph osd pool create rbd_pool 128 pool 'rbd_pool' created
初始化存储池(没有返回)
[root@client ~]# rbd pool init rbd_pool
2,创建一个存储卷
创建存储卷卷名为volume1 使用存储卷为rbd_pool 大小问5000M
rbd create volume1 --pool rbd_pool --size 5000
查看
[root@ceph-client]# rbd ls rbd_pool volume1
# rbd info volume1 -p rbd_pool rbd image 'volume1': size 4.9 GiB in 1250 objects order 22 (4 MiB objects) snapshot_count: 0 id: 11586d5ffd28 block_name_prefix: rbd_data.11586d5ffd28 format: 2 features: layering, exclusive-lock, object-map, fast-diff, deep-flatten op_features: flags: create_timestamp: Thu Aug 6 17:45:49 2020 access_timestamp: Thu Aug 6 17:45:49 2020 modify_timestamp: Thu Aug 6 17:45:49 2020
将创建的卷映射成块设备
因为rbd镜像的一些特性,OS kernel并不支持,所以映射报错
# rbd map rbd_pool/volume1 rbd: sysfs write failed RBD image feature set mismatch. You can disable features unsupported by the kernel with "rbd feature disable rbd_pool/volume1 object-map fast-diff deep-flatten". In some cases useful info is found in syslog - try "dmesg | tail". rbd: map failed: (6) No such device or address
解决办法:disable掉相关特性
rbd feature disable rbd_pool/volume1 exclusive-lock object-map fast-diff deep-flatten
再次映射
# rbd map rbd_pool/volume1 /dev/rbd0
查看映射
# rbd showmapped id pool namespace image snap device 0 rbd_pool volume1 - /dev/rbd0
格式化挂载
mkfs.xfs /dev/rbd0 mount /dev/rbd0 /mnt
查看
# df -h |tail -1 /dev/rbd0 4.9G 33M 4.9G 1% /mnt