Ceph存储之二(部署与使用 Ceph RBD 块存储)-共享的是磁盘

第一:ceph介绍

组件名 解释
RADOSGW 对象网关守护程序
RADOS 存储集群
Monitor 监视器,RADOS的组件,为何整个ceph集群的全局状态
OSD Object Storage Device,RADOS的组件,用于存储资源,即数据盘(一个磁盘一个OSD进程)
MDS 为ceph文件系统存储元数据,他允许客户机挂载任意大小的posix文件系统,不直接提供任何数据,其他块存储,对象存储不需要这东西
RBD 块存储
CEPHFS 文件存储
LIBRADOS 和RADOS 交互的基本库,librados,ceph通过原生协议和RADOS交互

第二:角色规划

主机名 主机IP 磁盘配比 角色
ceph50 public-ip:192.168.200.50
cluster-ip:192.168.100.50
sda,sdb,sdc,sdd
sda是系统盘,另外三块数据盘
sdb为ssd,sdc,sdd为hdd
ceph-deploy,monitor,mgr,osd
ceph51 public-ip:192.168.200.51
cluster-ip:192.168.100.51
sda,sdb,sdc,sdd
sda是系统盘,另外三块数据盘
sdb为ssd,sdc,sdd为hdd
monitor,mgr,osd
ceph52 public-ip:192.168.200.52
cluster-ip:192.168.100.52
sda,sdb,sdc,sdd
sda是系统盘,另外三块数据盘
sdb为ssd,sdc,sdd为hdd
monitor,mgr,osd

第三:ceph存储集群的搭建

请看这篇文章 https://wsfnk.com/archives/1163.html

第四:客户端,先配置ceph软件源,并进行安装

#配置ceph软件源
echo '#阿里ceph源
[ceph]
name=ceph
baseurl=http://mirrors.aliyun.com/ceph/rpm-nautilus/el7/x86_64/
gpgcheck=0
[ceph-noarch]
name=cephnoarch
baseurl=http://mirrors.aliyun.com/ceph/rpm-nautilus/el7/noarch/
gpgcheck=0
[ceph-source]
name=ceph-source
baseurl=http://mirrors.aliyun.com/ceph/rpm-nautilus/el7/SRPMS/
gpgcheck=0
#'>/etc/yum.repos.d/ceph.repo

在客户端上安装ceph 客户端软件
    yum install ceph -y

第五:创建ceph 块客户端用户名和认证密钥,用户是rbd, mon的权限是读,osd是读写执行

(这是在ceph50上操作),ceph rbd 支持已经添加到linux主线内核中,2.6.34及以后都支持

在ceph 服务器上生成用户名为 rbd 的 key文件,并为其分别设置mon osd 对应权限
    su - ceph
    cd ~/my-cluster
    ceph auth get-or-create client.rbd mon 'allow r' osd 'allow class-read object_prefix rbd_children, allow rwx pool=rbd' | tee ./ceph.client.rbd.keyring

    将生成的rbd用户的key文件,以及服务器上的ceph.conf配置文件,一同复制到客户机上(客户机要先创建/etc/ceph目录哦)
    scp ceph.client.rbd.keyring /etc/ceph/ceph.conf root@192.168.200.60:/etc/ceph/

第六:客户机检查是否复合块设备环境要求,并与ceph服务器进行连接

验证,并加载内核模块
    uname -r
    modprobe rbd
    echo $?

使用指定的rbd用户进行登录,不指定的话会使用默认的admin账户登录
    ceph -s --name client.rbd
[root@clinet /]# ceph -s --name client.rbd
  cluster:
    id:     7d14181a-6159-40d6-9728-e1eb2408d73b
    health: HEALTH_OK

  services:
    mon: 3 daemons, quorum ceph50,ceph51,ceph52 (age 6h)
    mgr: ceph50(active, since 5w), standbys: ceph52, ceph51
    mds: cephfs:1 {0=ceph50=up:active} 2 up:standby
    osd: 9 osds: 9 up (since 5w), 9 in (since 5w)

  data:
    pools:   3 pools, 384 pgs
    objects: 1.25k objects, 4.8 GiB
    usage:   23 GiB used, 112 GiB / 135 GiB avail
    pgs:     384 active+clean

第七:在ceph服务端 创建rbd存储pool,并在客户机进行挂载

A:创建一个名为rbd的pool(在ceph服务器上执行,要是命令无法创建,可以去ceph的web gui界面创建)
    ceph osd pool cerate rbd 512

#剩下的在客户端上执行    
B:创建一个名为rbd-test 的块设备,并指定用户名为 client.rbd(就是上面生成的rbd key那个用户,因为权限在生成是有控制)
    用法:rbd create poolname/image_name --size 1024默认是m --name user
[root@client /]# rbd create rbd/rbd-test --size 10240 --name client.rbd

C:查看用户client.rbd下面 当前的块儿设备有哪些
[root@client /]# rbd ls -p rbd --name client.rbd
rbd-test
[root@client /]# rbd list --name client.rbd
rbd-test

D:查看块儿设备 rbd-test 的详情(比如大小,支持的功能features,有的是不支持的,需要后面进行禁用,只启用分层特性)
[root@client /]# rbd --image rbd-test info --name client.rbd
rbd image 'rbd-test':
    size 10 GiB in 2560 objects     #大小是1024M,被分成256个对象
    order 22 (4 MiB objects)        #每个对象大小是4M
    snapshot_count: 0
    id: 5e91bb7ddf23
    block_name_prefix: rbd_data.5e91bb7ddf23    #命名格式
    format: 2       #指定磁盘格式,raw裸磁盘。qcow和qcow2支持更丰富的特性(精简置备)
    features: layering, exclusive-lock, object-map, fast-diff, deep-flatten #要支持所有的属性,必须内核在4.4以上,目前内核不支持,必须禁掉,否则不能创建映射
    op_features: 
    flags: 
    create_timestamp: Tue Feb 25 10:56:12 2020
    access_timestamp: Tue Feb 25 10:56:12 2020
    modify_timestamp: Tue Feb 25 10:56:12 2020

===============================
E:映射块设备(会报错,需要跳到后一步,禁用特性)
[root@client /]# rbd map --image rbd/rbd-test --name client.rbd
rbd: sysfs write failed
RBD image feature set mismatch. You can disable features unsupported by the kernel with "rbd feature disable rbd-test 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

F:禁用image块设备特性,方法一:动态禁用(推荐这种方式)
    rbd feature disable rbd/rbd-test exclusive-lock object-map deep-flatten fast-diff --name client.rbd

    禁用image块设备特性,方法二:创建rbd image镜像时,只启用分层特性(推荐这种方式)
    rbd create rbd/rbd-test2 --size 10240 --image-feature layering --name client.rbd

    禁用image块设备特性,方法三:ceph配置文件ceph.conf 中禁用(该方式不推荐)
    #在ceph.conf 的globe 中加入如下的内容
    rbd_default_features = 1
    #重启monitor
    systemctl restart ceph-mon.target

G:再次执行映射
[root@client /]# rbd map --image rbd/rbd-test --name client.rbd
/dev/rbd0

H:查看映射
[root@client /]# rbd showmapped --name client.rbd
id pool namespace image    snap device    
0  rbd            rbd-test -    /dev/rbd0

I:格式化磁盘映像,并挂载使用
    mkfs.xfs /dev/rbd0
    mkdir /mnt/cephrbd
    mount /dev/rbd0 /mnt/cephrbd
    dd if=/dev/zero of=/mnt/cephrbd/test count=100 bs=1M

第八:在客户机实现开机自动挂载

配置自动映射/etc/ceph/rbdmap 配置文件
[root@client ~]# cat /etc/ceph/rbdmap 
# RbdDevice     Parameters
#poolname/imagename    id=client,keyring=/etc/ceph/ceph.client.keyring
rbd/rbd-test    id=rbd,keyring=/etc/ceph/ceph.client.rbd.keyring

配置自动挂载文件/etc/fstab
    #这是语法  /dev/rbd/rbd_pool_name/image_name /mnt filesystem  defaults,noatime,_netdev    0 0
    echo "/dev/rbd/rbd/rbd-test /tmp xfs  defaults,noatime,_netdev    0 0" >> /etc/fstab

rbdmap开机启动
    systemctl enable rbdmap.service

重启测试

#提示:若出现开机后依旧无法自动挂载,rbdmap也异常,可如下操作:
[root@client ~]# vi /usr/lib/systemd/system/rbdmap.service
[Unit]
Description=Map RBD devices
WantedBy=multi-user.target          #添加这一行再测
声明:本文为原创,作者为 辣条①号,转载时请保留本声明及附带文章链接:https://boke.wsfnk.com/archives/182.html
谢谢你请我吃辣条谢谢你请我吃辣条

如果文章对你有帮助,欢迎点击上方按钮打赏作者

最后编辑于:2022/12/11作者: 辣条①号

现在在做什么? 接下来打算做什么? 你的目标什么? 期限还有多少? 进度如何? 不负遇见,不谈亏欠!

暂无评论

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注

arrow grin ! ? cool roll eek evil razz mrgreen smile oops lol mad twisted wink idea cry shock neutral sad ???

文章目录