51工具盒子

依楼听风雨
笑看云卷云舒,淡观潮起潮落

Linux客户端远程挂载Ceph RBD并设置开机启动自动挂载

当我们安装完ceph集群后,集群外的机器想使用Ceph集群内创建的rbd文件。那么,就需要安装Ceph的客户端,也就是rbd客户端,以及一些RBD专用的内核模块。

步骤也相对简单,关于集群搭建,以及ceph原理可以看下面的文章,此处不过多介绍安装和原理部分

环境信息

Ceph集群信息

[root@ceph-01 ~]# ceph -s
  cluster:
    id:     c8ae7537-8693-40df-8943-733f82049642
    health: HEALTH_OK
  services:
    mon: 3 daemons, quorum ceph-01,ceph-02,ceph-03 (age 6h)
    mgr: ceph-03(active, since 10h), standbys: ceph-01, ceph-02
    mds: cephfs-abcdocker:1 cephfs:1 {cephfs-abcdocker:0=ceph-03=up:active,cephfs:0=ceph-02=up:active} 1 up:standby
    osd: 4 osds: 4 up (since 10h), 4 in (since 6w)
    rgw: 2 daemons active (ceph-01, ceph-02)
  task status:
  data:
    pools:   13 pools, 656 pgs
    objects: 7.16k objects, 25 GiB
    usage:   77 GiB used, 103 GiB / 180 GiB avail
    pgs:     656 active+clean
  io:
    client:   4.0 KiB/s wr, 0 op/s rd, 0 op/s wr

ceph版本

[root@ceph-01 ~]# ceph version
ceph version 14.2.22 (ca74598065096e6fcbd8433c8779a2be0c889351) nautilus (stable)

创建Pool池

首先在ceph中我们需要创建一个新的pool池,pool名称为abcdocker_rbd

ceph osd pool create abcdocker_rbd 32 32 # 两个 32 指定的 pg 和 pgp 的数量
ceph osd pool application enable abcdocker_rbd rbd

检查是否创建成功

[root@ceph-01 ~]# ceph osd pool ls|grep rbd
abcdocker_rbd

创建块设备

接下来我们需要创建一个rbd文件,这里使用layering

[root@ceph-01 ~]#  rbd create abcdocker_rbd/linux_mount.img --size 2G --image-feature=layering
#abcdocker_rbd 为pool名称
#linux_mount.img 为rbd文件名称
#--size rbd文件大小

此时我们通过rbd命令就可以看到这个img文件

[root@ceph-01 ~]# rbd ls abcdocker_rbd
linux_mount.img

并且使用info参数可以看到这个rbd文件大小

[root@ceph-01 ~]# rbd info abcdocker_rbd/linux_mount.img
rbd image 'linux_mount.img':
    size 2 GiB in 512 objects
    order 22 (4 MiB objects)
    snapshot_count: 0
    id: 58fa764ce60a
    block_name_prefix: rbd_data.58fa764ce60a
    format: 2
    features: layering
    op_features:
    flags:
    create_timestamp: Fri Jul 15 18:49:40 2022
    access_timestamp: Fri Jul 15 18:49:40 2022
    modify_timestamp: Fri Jul 15 18:49:40 2022

创建访问用户

创建一个普通用户,linux使用普通用户访问pool存储池

用户名称为lient.linux_mount
授权pool为abcdocker_rbd

[root@ceph-01 ~]# ceph auth get-or-create client.linux_mount mon 'profile rbd' osd 'profile rbd pool=abcdocker_rbd' mgr 'profile rbd pool=abcdocker_rbd'
[client.linux_mount]
    key = AQCHR9FiQIJVNhAATcyfD7+2yu0nJcBitZQwcQ==

导出信息为文件

[root@ceph-01 ~]#  ceph auth get-or-create client.linux_mount -o ceph.client.linux_mount.keyring

将用户的ceph.client.linux_mount.keyring文件和ceph.conf文件复制到客户端的/etc/ceph目录,这个步骤可以等客户端安装完ceph-common

客户端配置

配置yum源

#配置centos、epeo、ceph源
curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
wget -O /etc/yum.repos.d/ceph.repo http://down.i4t.com/ceph/ceph.repo
yum clean all
yum makecache

安装依赖以及ceph-common

[root@abcdocker ~]# yum install -y python-setuptools   ceph-common

到ceph节点中拷贝ceph.client.linux_mount.keyring文件和ceph.conf

[root@ceph-01 ~]# scp ceph.client.linux_mount.keyring root@192.168.31.73:/etc/ceph/
[root@ceph-01 ~]# scp /etc/ceph/ceph.conf root@192.168.31.73:/etc/ceph/

拷贝完成后,我们就可以去客户端执行命令,检查是否可以获取到rbd信息

[root@abcdocker ~]# rbd list --id  linux_mount -p abcdocker_rbd
linux_mount.img

客户端挂载

将远端的RBD文件映射到本地

[root@abcdocker ~]# rbd map abcdocker_rbd/linux_mount.img --id linux_mount
/dev/rbd0

查看rbd映射的信息


[root@abcdocker ~]# rbd showmapped
id pool          namespace image           snap device
0  abcdocker_rbd           linux_mount.img -    /dev/rbd0

格式化并挂载

[root@abcdocker ~]# mkfs.ext4 /dev/rbd0   #这里要看上面映射出来的地址
[root@abcdocker ~]# mkdir /data
[root@abcdocker ~]# mount /dev/rbd0 /data/

查看挂载结果

[root@abcdocker ~]# df -h
Filesystem               Size  Used Avail Use% Mounted on
/dev/mapper/centos-root   36G  9.4G   27G  27% /
devtmpfs                 3.9G     0  3.9G   0% /dev
tmpfs                    3.9G     0  3.9G   0% /dev/shm
tmpfs                    3.9G  8.7M  3.9G   1% /run
tmpfs                    3.9G     0  3.9G   0% /sys/fs/cgroup
/dev/mapper/centos-home   18G   33M   18G   1% /home
/dev/sda1               1014M  143M  872M  15% /boot
tmpfs                    783M     0  783M   0% /run/user/1000
tmpfs                    783M     0  783M   0% /run/user/0
/dev/rbd0                2.0G  6.0M  1.8G   1% /data

编辑/etc/ceph/rbdmap文件,设置自动map

方便开机启动自动挂载

echo "abcdocker_rbd/linux_mount.img          id=linux_mount,keyring=/etc/ceph/ceph.client.linux_mount.keyring " >>/etc/ceph/rbdmap
#abcdocker_rbd 为pool名称
#linux_mount.img 为rbd文件
#keyring 为之前同步的client key
#id 为rbd用户

设置rbdmap为开机启动

systemctl enable rbdmap

修改fstab,设置开机挂载

[root@abcdocker ~]# echo "/dev/rbd0  /data               ext4     defaults,noatime,_netdev 0 0" >>/etc/fstab
[root@abcdocker ~]# cat /etc/fstab  #检查

重启主机,测试开机是否自动map并挂载设备成功


启动连接一切OK

扩容

随着我们存储增多,后续可能需要扩容,扩容目前只需要两条简单的命令即可

rbd resize abcdocker_rbd/linux_mount.img --id  linux_mount  --size 10G
resize2fs /dev/rbd0
#如果我们想在客户端扩容,需要添加pool/rbd镜像,以及--id 添加用户,以及需要扩容的空间

扩容后


赞(1)
未经允许不得转载:工具盒子 » Linux客户端远程挂载Ceph RBD并设置开机启动自动挂载