文章目录
第一: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 #添加这一行再测
如果文章对你有帮助,欢迎点击上方按钮打赏作者
暂无评论