Ceph RBD

块是一个字节序列(例如,一个 512 字节的数据块)。基于块的存储接口是最常见的存储数据方法,它们基于旋转介质,像硬盘,CD,软盘,甚至传统的9磁道磁带。无处不在的块设备接口使虚拟块设备成为与Ceph这样的海量存储系统交互的理想之选。

Ceph 块设备是精简配置的、大小可调且将数据条带化存储到集群内的多个 OSD 。 Ceph 块设备利用 RADOS 的多种能力,如快照、复制和一致性。 Ceph 的 RADOS 块设备( RBD )使用内核模块或 librbd 库与 OSD 交互。

  • RBD=RADOS Block Devices;
  • 需要在 ceph-deploy 机器的conf目录内执行,不然报错;
  • 和其他节点一样,完成准备工作内容;

2.0.1 创建Ceph RBD设备的用户

客户机需要去访问Ceph 集群,Ceph 创建了一个默认用户ceph.admin,它有足够的权限去访问Ceph 集群,但是完全不推荐使用这个用户而是新建一个用户去访问特定的储存池。

新创建一个用户user01:

  1. rbd这个pool有读写权限
  2. MON=r 能只读MON节点信息
# 最简单粗暴
sudo ceph auth get-or-create client.user01 mon 'allow r' osd 'allow *'
# 创建ceph用户 user01 拥有rbd储存池的权限
sudo ceph auth get-or-create client.user01 mon 'allow r' osd 'allow class-read object_prefix rbd_children,allow rwx pool=rbd,allow rwx pool=rbd'
# 多个pool caps: [allow * pool=X, allow * pool=Y]
sudo ceph auth get-or-create client.user01 mon 'allow r' osd 'allow class-read object_prefix rbd_children,allow rwx pool=rbd,allow rwx pool=rbd,allow rwx pool=rbd2'
 
# 再次查看用户caps
# ceph auth get USERTYPE.USERNAME
ceph auth get client.user01
 
# 修改用户权限
ceph auth caps client.user01 mon 'allow *' osd 'allow *'

RBD设备的运行需要在集群里创建一个pool,需要预先确认pool的pg值1),pg计算器.

sudo ceph osd pool create rbd 128

  • 在client端操作;

4.1 配置用户信息

# 获取刚才创建的用户信息并写入client
ssh admin@ceph-1 "sudo ceph auth get client.user01" > /etc/ceph/ceph.client.user01.keyring
chmod 644 /etc/ceph/ceph.client.user01.keyring
# 以后就必须要使用client.user01用户来查看ceph健康情况
ceph -s --name client.user01

4.2 创建RBD块设备

# 创建一个40G的RBD设备
rbd -p rbd --name client.user01 create disk01 --size 40G --image-feature layering
# 列出RBD设备
rbd -p rbd --name client.user01 ls -l
# 映射RBD设备到本地系统
rbd -p rbd --name client.user01 map disk01
# 查看映射关系
rbd showmapped
# 格式化并挂载RBD设备
mkfs.xfs /dev/rbd0
# -o discard打开TRIM支持
mount -o discard /dev/rbd0 /mnt
df -h


1)
placement group,归置组
  • storage/ceph/ceph_rbd.txt
  • 最后更改: 2019/04/16 18:31
  • (外部编辑)