挂载ceph块存储RBD(二)

作者: oldboy 分类: Openstack 发布时间: 2023-02-03 14:41

RBD(RADOS Block Devices)即为块存储的一种,RBD通过librbd库与OSD进行交互,RBD为KVM等虚拟机化技术和云服务提供高性能和无限可扩展性的存储后端,这些系统依赖于libvirt和QEMU实用程序与RBD进行集成,客户端基于librbd库即可将RADOS存储集群用作块设备,用于rbd的存储池需要事先启用rbd功能并进行初始化。

一、在monitor(ceph-mon1)上创建存储池(cephu用户)

su - cephu
sudo ceph osd pool create myrbd 500 500

myrbd是存储池名
前面的500是PG的数量,后面的500是PGP的数量,一般和PG数量保持一致。(pgp用于在pg故障时归档pg的数据,因此pgp通常等于pg的值)

#osd的数量5个内的写128 128

              5-10写512 512

              10-50写4096 4096

在实际生产中有3 台store节点,每台有2个存储盘,这样就是6个OSD存储盘,但写512就报错了

查看已有的存储池

sudo ceph osd pool ls

删除存储池,默认删除功能是禁用的,需要先修改下配置文件才能删除

cat操作需要切换到root帐户下操作

su -
cat >>/etc/ceph/ceph.conf<<EOF

[mon]
mon_allow_pool_delete = true
EOF
#重启服务
systemctl restart ceph-mon.target
#                       两个都是存储池名
su - cephu
sudo ceph osd pool delete myrbd myrbd --yes-i-really-really-mean-it

对存储池启用RBD功能并初始化

#                                前面一个是存储池名
sudo ceph osd pool application enable myrbd rbd
sudo rbd pool init myrbd

二、客户端挂载使用

1、要做host本地解析,能够与admin节点主机名互通

admin节点和mon1节点root帐户下操作(mon1不做的话,在client上创建空镜像设备块报错)

cat >>/etc/hosts<<EOF
192.168.201.140 ceph-client
EOF

client节点的root帐户下操作(不做mon1的话,在client上创建空镜像设备块报错)

cat >>/etc/hosts<<EOF
192.168.201.130 ceph-admin
192.168.201.131 ceph-mon1
EOF

2、client节点升级内核(由于centos内核较低无法挂载使用的)(admin节点root帐户下操作)

#导入key
rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org
#安装elrepo源
rpm -Uvh http://www.elrepo.org/elrepo-release-7.0-2.el7.elrepo.noarch.rpm
#查看可用的系统内核包
yum --disablerepo="*" --enablerepo="elrepo-kernel" list available

可以看出低版本的是lt,高版本的是ml,安装高版本内核

yum --enablerepo=elrepo-kernel install -y kernel-ml kernel-ml-devel

查看内核默认启动顺序并修改高版本内核为系统启动内核

awk -F\' '$1=="menuentry " {print $2}' /etc/grub2.cfg
grub2-set-default 0
reboot

查看当前内核

uname -r

删除旧内核

yum remove -y kernel

三、在client节点上安装ceph

yum -y install python-setuptools
cat >/etc/yum.repos.d/ceph.repo<<'EOF'
[ceph]
name=ceph packages for $basearch
baseurl=http://mirrors.aliyun.com/ceph/rpm-luminous/el7/$basearch
enabled=1
gpgcheck=0
type=rpm-md
gpgkey=https://mirrors.aliyun.com/ceph/keys/release.asc
priority=1

[ceph-noarch]
name=ceph noarch packages
baseurl=http://mirrors.aliyun.com/ceph/rpm-luminous/el7/noarch
enabled=1
gpgcheck=0
type=rpm-md
gpgkey=https://mirrors.aliyun.com/ceph/keys/release.asc
priority=1

[ceph-source]
name=ceph source packages
baseurl=http://mirrors.aliyun.com/ceph/rpm-luminous/el7/SRPMS
enabled=1
gpgcheck=0
type=rpm-md
gpgkey=https://mirrors.aliyun.com/ceph/keys/release.asc
priority=1
EOF
yum clean all
useradd cephu&&echo qweqwe|passwd --stdin cephu
echo "cephu ALL=(root) NOPASSWD:ALL" >>/etc/sudoers
su - cephu
sudo yum install ceph ceph-radosgw -y

四、在admin节点cephu帐户下授权client节点

su - cephu
#免密,不是必须
ssh-copy-id ceph-client
cd my-cluster/
ceph-deploy admin ceph-client

执行完之后,client节点下就会有密钥文件

五、返回client节点的cephu用户,连入集群要赋予读的权限

#su - cephu
sudo chmod +r /etc/ceph/ceph.client.admin.keyring

解决映射镜像时出错的问题(root帐户下才能操作):

echo "rbd_default_features = 1" >> /etc/ceph/ceph.conf

六、client客户端普通用户下创建空的块设备镜像(单位M)

rbd存储池并不能直接用于块设备,而是需要事先在其中按需创建映像(image),并把映像文件作为块设备使用

1、查看集群状态

#su - cephu
ceph -s

还有894G可用

2、创建块设备镜像

sudo rbd create myimage01 --size 600G --pool myrbd

查看创建的块设备

sudo rbd list --pool myrbd

查看指定块设备的信息

sudo rbd info myimage01 --pool myrbd

删除块设备

3、映射块设备镜像到主机

sudo rbd map myimage01 --pool myrbd --name client.admin

在系统里查看磁盘设备

格式化挂载即可

sudo mkfs.xfs -f /dev/rbd0

也可以格式化

sudo mkfs.xfs -f /dev/rbd/myrbd/myimage01
sudo mkdir /rbddisk
sudo mount /dev/rbd/myrbd/myimage01 /rbddisk

再配置永久挂载即可使用了

写入数据测试下读写(虚拟机本身就卡,宿主机的磁盘也不好用,所以速度比较低)

查看数据存储到了哪个OSD上

ceph osd map myrbd test.GHO

可以看出存储在了编号为1,2,5的OSD上

如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!

发表回复

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

标签云