Ceph基于普通用于挂载块存储、实现对块存储的动态空间拉伸
客户端使用普通账户挂载并使用 RBD
测试客户端使用普通账户挂载并使用 RBD
创建普通账户并授权
创建普通账户
cephadmin@ceph-deploy:~/ceph-cluster$ ceph auth add client.lxh mon 'allow r' osd 'allow rwx pool=rbd-data' added key for client.lxh
验证用户信息
cephadmin@ceph-deploy:~/ceph-cluster$ ceph auth get client.lxh [client.lxh] key = AQDNPoxjqGNpLxAAoBJOZKOiNg/MFMsS8x2VSg== caps mon = "allow r" caps osd = "allow rwx pool=rbd-data" exported keyring for client.lxh
创建keyring文件
cephadmin@ceph-deploy:~/ceph-cluster$ ceph-authtool --create-keyring ceph.client.lxh.keyring creating ceph.client.lxh.keyring
导出用户 keyring
cephadmin@ceph-deploy:~/ceph-cluster$ ceph auth get client.lxh -o ceph.client.lxh.keyring exported keyring for client.lxh
查看用户keyring
cephadmin@ceph-deploy:~/ceph-cluster$ cat ceph.client.lxh.keyring [client.lxh] key = AQDNPoxjqGNpLxAAoBJOZKOiNg/MFMsS8x2VSg== caps mon = "allow r" caps osd = "allow rwx pool=rbd-data"
同步普通用户认证文件
cephadmin@ceph-deploy:~/ceph-cluster$ scp ceph.conf ceph.client.lxh.keyring root@192.168.100.80:/etc/ceph/
客户端验证
客户端验证权限
默认情况下,客户端只有普通用户的认证文件,使用ceph客户端就会出现无client.admin的管理员认证文件的错误提示
因此,使用ceph客户端需要指定普通用户来运行,具体参数为--user
[root@ansible ~]# ceph --user lxh -s
映射 rbd
1、使用普通用户权限映射data-img1镜像
[root@ansible ~]# rbd --user lxh -p rbd-data map data-img1 /dev/rbd0
验证块设备
[root@ansible ~]# lsblk
2、使用普通用户权限映射data-img2镜像
[root@ansible ~]# rbd --user lxh -p rbd-data map data-img2 /dev/rbd1
验证块设备
格式化并使用 rbd 镜像
1、格式化rbd0
[root@ansible ~]# mkfs.xfs /dev/rbd0 Discarding blocks...Done. meta-data=/dev/rbd0 isize=512 agcount=8, agsize=98304 blks = sectsz=512 attr=2, projid32bit=1 = crc=1 finobt=0, sparse=0 data = bsize=4096 blocks=786432, 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
2、挂载并使用rbd0
[root@ansible ~]# mkdir /data [root@ansible ~]# mount /dev/rbd0 /data [root@ansible ~]# tar -zcf etc.tar.gz /etc [root@ansible ~]# mv etc.tar.gz /data [root@ansible ~]# df -h /data Filesystem Size Used Avail Use% Mounted on /dev/rbd0 3.0G 44M 3.0G 2% /data [root@ansible ~]# ll /data total 11272 -rw-r--r-- 1 root root 11540042 Dec 4 15:15 etc.tar.gz
3、格式化rbd1
[root@ansible ~]# mkfs.xfs /dev/rbd1 Discarding blocks...Done. meta-data=/dev/rbd1 isize=512 agcount=8, agsize=163840 blks = sectsz=512 attr=2, projid32bit=1 = crc=1 finobt=0, sparse=0 data = bsize=4096 blocks=1310720, 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
4、挂载并使用rbd1
[root@ansible ~]# mkdir /data1 [root@ansible ~]# mount /dev/rbd1 /data1 [root@ansible ~]# tar -zcf etc.tar.gz /etc [root@ansible ~]# mv etc.tar.gz /data1 [root@ansible ~]# df -h /data1 Filesystem Size Used Avail Use% Mounted on /dev/rbd1 5.0G 44M 5.0G 1% /data1 [root@ansible ~]# ll /data1 total 11272 -rw-r--r-- 1 root root 11540042 Dec 4 15:46 etc.tar.gz
管理端验证
cephadmin@ceph-deploy:~/ceph-cluster$ rbd ls -p rbd-data -l NAME SIZE PARENT FMT PROT LOCK data-img1 3 GiB 2 data-img2 5 GiB 2 excl data-img3 5 GiB 2
data-img2 LOCK选项处为excl表示,该镜像启用了exclusive-lock特性,只允许一个客户端挂载
验证 ceph 内核模块
挂载 rbd 之后系统内核会自动加载 libceph.ko 模块
[root@ansible ~]# lsmod|grep ceph [root@ansible ~]# modinfo libceph
Ubuntu:
Centos:
开机自动挂载
添加自动挂载的命令
[root@ansible ~]# vim /etc/rc.d/rc.local rbd --user lxh -p rbd-data map data-img1 rbd --user lxh -p rbd-data map data-img2 mount /dev/rbd0 /data mount /dev/rbd1 /data1
添加rc.local执行权限
[root@ansible ~]# chmod +x /etc/rc.d/rc.local [root@ansible ~]# cat /etc/rc.d/rc.local #load rbd ceph modules modprobe rbd modprobe libceph #config rbd map rbd --user lxh -p rbd-data map data-img1 sleep 1s mount /dev/rbd0 /data sleep 2s rbd --user lxh -p rbd-data map data-img2 sleep 1s mount /dev/rbd1 /data1 exit 0
重启客户端服务器
[root@ansible ~]# reboot
客户端查看rbd镜像的映射关系
[root@ansible ~]# rbd showmapped id pool namespace image snap device 0 rbd-data data-img1 - /dev/rbd0 1 rbd-data data-img2 - /dev/rbd1
卸载 rbd 镜像
客户端首先取消挂载
[root@ansible ~]# umount /data
客户端再执行rbd的取消映射
[root@ansible ~]# rbd --user lxh -p rbd-data unmap data-img1 [root@ansible ~]# rbd --user lxh -p rbd-data unmap data-img2
rbd 镜像空间拉伸:
可以扩展RBD空间,不建议缩小空间
当前 rbd 镜像空间大小
cephadmin@ceph-deploy:~/ceph-cluster$ rbd ls -p rbd-data -l NAME SIZE PARENT FMT PROT LOCK data-img1 3 GiB 2 data-img2 5 GiB 2 excl data-img3 5 GiB 2
rbd 镜像空间拉伸命令
cephadmin@ceph-deploy:~/ceph-cluster$ rbd help resize usage: rbd resize [--pool <pool>] [--namespace <namespace>] [--image <image>] --size <size> [--allow-shrink] [--no-progress] <image-spec> Resize (expand or shrink) image. Positional arguments <image-spec> image specification (example: [<pool-name>/[<namespace>/]]<image-name>) Optional arguments -p [ --pool ] arg pool name --namespace arg namespace name --image arg image name -s [ --size ] arg image size (in M/G/T) [default: M] --allow-shrink permit shrinking --no-progress disable progress output
拉伸 rbd 镜像空间
将data-img1镜像空间拉伸为5G
cephadmin@ceph-deploy:~/ceph-cluster$ rbd resize --pool rbd-data --image data-img1 --size 5G Resizing image: 100% complete...done. cephadmin@ceph-deploy:~/ceph-cluster$ rbd ls -p rbd-data -l NAME SIZE PARENT FMT PROT LOCK data-img1 5 GiB 2 data-img2 5 GiB 2 excl data-img3 5 GiB 2
客户端验证空间
虽然磁盘的大小在客户端已经为5G,但是分区还没有刷新
[root@ansible ~]# fdisk -l /dev/rbd0 Disk /dev/rbd0: 5368 MB, 5368709120 bytes, 10485760 sectors Units = sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 4194304 bytes / 4194304 bytes [root@ansible ~]# df -h /dev/rbd0 Filesystem Size Used Avail Use% Mounted on /dev/rbd0 3.0G 44M 3.0G 2% /data
刷新分区大小
磁盘分区系统是xfs使用xfs_growfs工具,ext4的使用resize2fs工具。
利用工具直接对挂载的目的分区目录使用
#xfs文件系统 [root@ansible ~]# xfs_growfs /data/ #ext4文件系统 [root@ansible ~]# resize2fs /dev/rbd0
本文来自博客园,作者:PunchLinux,转载请注明原文链接:https://www.cnblogs.com/punchlinux/p/17061745.html
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)