挂载ceph块存储RBD(二)
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上