在Ubuntu 18.04上安装和配置Ceph块设备
在本指南中,我们将学习如何在Ubuntu 18.04上安装和配置Ceph块设备。 Ceph块设备 是Ceph Storage Cluster的部署选项之一。其他部署包括 Ceph对象存储 和 Ceph文件系统。
Ceph块设备也称为 Reliable Autonomic Distributed Object Store (RADOS) Block Device
(RBD)。他们使用 librbd
图书馆。
可以像安装普通硬盘一样将Ceph挂载为块设备。将数据写入Ceph块设备时,会在Ceph存储群集中的多个对象存储设备(OSD)中剥离数据。
RBD与KVM集成,因此可用于为云计算系统(例如OpenStack)提供块存储设备
在Ubuntu 18.04上安装和配置Ceph块设备
在继续之前,请确保您具有正在运行的Ceph存储集群。
请遵循以下指南,了解如何在Ubuntu 18.04上安装和设置Ceph Storage Cluster。
在Ubuntu 18.04上设置三节点Ceph存储集群
部署架构
准备Ceph客户端以进行Ceph部署
创建Ceph部署用户
在Ceph客户端上,创建具有无密码sudo权限的ceph用户,以安装ceph软件包和配置,就像在Ceph OSD节点上所做的一样。 不要使用用户名 ceph
因为它是保留的。
更换 cephadmin
用户名。
useradd -m -s /bin/bash cephadmin
passwd cephadmin
echo -e "Defaults:cephadmin !requirettyncephadmin ALL=(ALL:ALL) NOPASSWD:ALL" >> /etc/sudoers.d/cephadmin
chmod 0440 /etc/sudoers.d/cephadmin
配置时间同步
为了确保Ceph群集和Ceph客户端之间的时间同步,请将Ceph客户端配置为使用与Ceph群集相同的NTP服务器。
apt install chrony
vim /etc/chrony/chrony.conf
... # pool ntp.ubuntu.com iburst maxsources 4 # pool 0.ubuntu.pool.ntp.org iburst maxsources 1 # pool 1.ubuntu.pool.ntp.org iburst maxsources 1 # pool 2.ubuntu.pool.ntp.org iburst maxsources 2 pool ntp.kifarunix-demo.com iburst ...
重新启动并启用chronyd以在系统引导上运行。
systemctl enable chronyd
systemctl restart chronyd
安装Python 2
在Ubuntu 18.04上部署Ceph需要Python 2。您可以通过执行以下命令来安装Python 2。
apt install python-minimal
设置无密码SSH登录到Ceph客户端
以您在Ceph Admin节点上创建的Ceph用户身份登录,生成无密码的SSH密钥并将其复制到客户端。
我们已经在关于在Ubuntu 18.04上设置Ceph集群的指南中做到了这一点。如果您按照指南进行操作,只需更新用户SSH配置文件, ~/.ssh/config
,以及Ceph客户端的连接详细信息。
su - cephadmin
vim ~/.ssh/config
Host ceph-osd01 Hostname ceph-osd01 User cephadmin Host ceph-osd02 Hostname ceph-osd02 User cephadmin Host ceph-osd03 Hostname ceph-osd03 User cephadmin Host ceph-client Hostname ceph-client User cephadmin
如果您没有DNS服务器,请更新hosts文件。
echo "192.168.2.118 ceph-client.kifarunix-demo.com ceph-client" >> /etc/hosts
接下来,将SSH密钥复制到Ceph客户端。
ssh-copy-id ceph-client
在Ceph管理节点上安装Ceph实用工具
在Ceph Admin节点上运行以下命令,以安装用于挂载ceph存储集群并与之交互的通用实用程序。这些由包装提供, ceph-common
。
sudo apt install ceph-common
在Ceph客户端上安装Ceph
通过运行以下命令在Ceph客户端上安装Ceph软件包。从ceph用户配置目录运行Ceph部署。
su - cephadmin
cd kifarunix-cluster/
ceph-deploy install ceph-client
将Ceph配置和密钥复制到Ceph客户端。
ceph-deploy admin ceph-client
创建块设备池
为了使用Ceph块设备客户端,您需要为RADOS块设备RBD创建一个池并对其进行初始化。
- 池是用于存储对象的逻辑组。他们管理池的放置组,副本和CRUSH规则。
- 放置组是逻辑对像池的一部分,它将对像作为组放置到OSD中。 Ceph客户端计算对象应存储在哪个展示位置组。
要创建Ceph池,请使用以下命令;
ceph osd pool create {pool-name} pg_num pgp_num
哪里:
{pool-name}
是您正在创建的Ceph池的名称。pg_num
是池的展示位置组的总数。建议pg_num
当您的Ceph集群中使用少于5个OSD时,此参数设置为128。pgp_num
指定用于放置目的的放置组总数。 应等于展示位置组的总数。
因此,在 Ceph客户,请运行以下命令以创建一个名为 kifarunixrbd
。
[email protected]:~$ ssh ceph-ceph-client
接下来,创建一个具有放置组编号128的OSD池
[email protected]:~$ sudo ceph osd pool create kifarunixrdb 128 128
将创建的池与相应的应用程序相关联,以防止未经授权的客户端类型将数据写入池中。一个应用可以是;
cephfs
(Ceph文件系统)。rbd
(Ceph块设备)。rgw
(Ceph对象网关)。
要将上面创建的池与RBD关联起来,只需执行以下命令即可。相应地替换池的名称。
[email protected]:~$ sudo ceph osd pool application enable kifarunixrdb rbd
为池创建并启用应用程序后,可以使用以下命令对其进行初始化;
[email protected]:~$ sudo rbd pool init -p kifarunixrdb
列出可用的池;
sudo ceph osd lspools
创建块设备映像
在Ceph客户端中使用以下命令将图像添加到节点之前,请先在Ceph存储群集中为该块设备创建一个图像。
rbd create--size --pool
例如,要在上面创建的池kifarunixrbd中创建1GB的块设备映像,只需运行以下命令即可;
[email protected]:~$ sudo rbd create disk01 --size 1G --pool kifarunixrbd
列出池中的图像,例如kifarunixrbd;
sudo rbd ls -l kifarunixrbd
NAME SIZE PARENT FMT PROT LOCK disk01 1 GiB 2
要检索有关所创建图像的信息,请运行命令;
sudo rbd --image disk01 -p kifarunixrbd info
rbd image 'disk01':
size 1 GiB in 256 objects
order 22 (4 MiB objects)
id: 37886b8b4567
block_name_prefix: rbd_data.37886b8b4567
format: 2
features: layering, exclusive-lock, object-map, fast-diff, deep-flatten
op_features:
flags:
create_timestamp: Sat Mar 14 21:39:19 2020
从池中删除图像;
sudo rbd rm disk01 -p kifarunixrbd
将其移至垃圾箱以供以后删除;
sudo rbd trash move kifarunixrbd/disk01
要将图像从垃圾桶还原到池中,请获取在垃圾桶存储中分配的图像ID,然后使用该ID还原图像。
sudo rbd trash list kifarunixrbd
37986b8b4567 image01
哪里 基法尼 是池的名称。
sudo rbd trash restore kifarunixrbd/37986b8b4567
从垃圾箱清空图像以永久删除;
rbd trash remove kifarunixrbd/37986b8b4567
将图像映射到块设备
创建映像后,可以使用将其映射到块设备。但是,在映射映像之前,请通过运行以下命令禁用内核不支持的所有功能。 替换池和映像名称。
[email protected]:~$ sudo rbd feature disable kifarunixrbd/disk01 object-map fast-diff deep-flatten
如果RBD内核模块尚未加载,它将由rdb加载。
接下来,将图像映射到块设备。
sudo rbd map disk01 --pool kifarunixrbd
/dev/rbd0
要显示映射到内核模块的块设备映像,请使用 rbd
命令;
[email protected]:~$ sudo rbd showmapped
id pool image snap device 0 kifarunixrbd disk01 - /dev/rbd0
要取消映射块设备映像,请使用命令rbd unmap /dev/rbd/{poolname}/{imagename}
例如;
sudo rbd unmap /dev/rbd/kifarunixrbd/disk01
在Ceph块设备上创建文件系统
Ceph映射的块设备现已准备就绪。剩下的就是在其上创建一个文件系统并将其挂载以使其可用。
例如,在其上创建XFS文件系统;
sudo mkfs.xfs /dev/rbd0 -L cephbd
meta-data=/dev/rbd0 isize=512 agcount=9, agsize=31744 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=1, sparse=0, rmapbt=0, reflink=0
data = bsize=4096 blocks=262144, imaxpct=25
= sunit=1024 swidth=1024 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=1
log =internal log bsize=4096 blocks=2560, version=2
= sectsz=512 sunit=8 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
在Ubuntu 18.04上安装Ceph块设备
现在,您可以安装块设备。例如,将其安装在 /media/ceph
目录;
sudo mkdir /media/ceph
sudo mount /dev/rbd0 /media/ceph
您也可以按以下方式安装它:
sudo mount /dev/rbd/kifarunixrbd/disk01 /media/ceph/
检查已挂载的文件系统;
df -hT -P /dev/rbd0
Filesystem Type Size Used Avail Use% Mounted on /dev/rbd0 xfs 1014M 34M 981M 4% /media/ceph
你去。
如果您检查Ceph集群的运行状况;
[email protected]:~# ceph --status
cluster: id: ecc4e749-830a-4ec5-8af9-22fcb5cadbca health: HEALTH_OK services: mon: 2 daemons, quorum ceph-osd01,ceph-osd02 mgr: ceph-osd01(active), standbys: ceph-osd02 osd: 3 osds: 3 up, 3 in data: pools: 1 pools, 128 pgs objects: 18 objects, 14 MiB usage: 3.1 GiB used, 8.9 GiB / 12 GiB avail pgs: 128 active+clean
这标志着我们关于如何在Ubuntu 18.04上安装和配置Ceph块设备的指南的结尾。
参考
其他教程
在Ubuntu 18.04上安装和设置GlusterFS
如何在RHEL / CentOS 7上安装和配置NFS服务器
。