首页 > 其他分享 >使用ceph的块存储rbd

使用ceph的块存储rbd

时间:2023-08-08 12:38:58浏览次数:52  
标签:存储 admin sudo ceph etc client rbd


CEPH 块设备

块是一个字节序列(例如,一个 512 字节的数据块)。基于块的存储接口是最常见的存储数据方法,它们基于旋转介质,像硬盘、 CD 、软盘、甚至传统的 9 磁道磁带。无处不在的块设备接口使虚拟块设备成为与 Ceph 这样的海量存储系统交互的理想之选。

Ceph 块设备是精简配置的、大小可调且将数据条带化存储到集群内的多个 OSD 。 Ceph 块设备利用 RADOS 的多种能力,如快照、复制和一致性。 Ceph 的 RADOS 块设备( RBD )使用内核模块或 librbd 库与 OSD 交互。

注意:内核模块可使用 Linux 页缓存。对基于 librbd 的应用程序, Ceph 可提供 RBD 缓存。

Ceph 块设备靠无限伸缩性提供了高性能,如向内核模块、或向 abbr:KVM (kernel virtual machines) (如 Qemu 、 OpenStack 和 CloudStack 等云计算系统通过 libvirt 和 Qemu 可与 Ceph 块设备集成)。

使用ceph的块存储rbd_rbd

更多信息参考
http://docs.ceph.org.cn/rbd/rbd/

配置块设备(client节点)

注意作为client节点也需要安装ceph,否则rbd会报错sudo: rbd: command not found。

需要注意的是client节点需要是ceph集群中的一员,需要有/etc/ceph/ceph.client.admin.keyring文件,否则无法跟ceph集群沟通,会报错ceph monclient(hunting) error missing keyring cannot use cephx for authentication。

/etc/ceph/ceph.client.admin.keyring文件是在执行以下命令时生产的

ceph-deploy new NodeA NodeB NodeC
ceph-deploy mon create-initial

或者

可以从集群的其他节点(主节点的/etc/ceph目录下)上将ceph.client.admin.keyring和ceph.conf文件复制一份过来,放到/etc/ceph目录下。
比如在client节点使用命令

scp ceph1:/etc/ceph/ceph.client.admin.keyring /etc/ceph
scp ceph1:/etc/ceph/ceph.conf /etc/ceph

如果没有conf文件会报错
-1 did not load config file, using default settings

CephX 认证系统

在执行rbd命令之前请先使用命令ceph -s确保集群的健康情况如下:

[zzq@localhost ceph]$ ceph -s
    cluster 60cfd9c4-e6c1-4d0d-a2f4-5a0213326909
     health HEALTH_OK
     monmap e1: 3 mons at {ceph1=192.168.199.81:6789/0,ceph2=192.168.199.82:6789/0,ceph3=192.168.199.83:6789/0}
            election epoch 4, quorum 0,1,2 ceph1,ceph2,ceph3
     osdmap e29: 3 osds: 3 up, 3 in
      pgmap v88: 120 pgs, 1 pools, 0 bytes data, 0 objects
            100 MB used, 15226 MB / 15326 MB avail
                 120 active+clean
[zzq@localhost ceph]$

否则rbd可能遇到的问题卡住不动,因为集群不健康io是被封锁的,解决方式参考
遇到问题—ceph—ceph的rbd命令没反应卡住

创建映像

命令格式如下

sudo rbd create foo --size 4096 [-m {mon-IP}] [-k /path/to/ceph.client.admin.keyring]

foo是块的名称
size是块大小
-m 是主机名或ip
-k是client节点的key文件,可以使用命令查看ls /etc/ceph

例如

sudo rbd create foo --size 4096 -m ceph1 -k /etc/ceph/ceph.client.admin.keyring

可以使用命令查看块的创建情况

sudo rbd list -k /etc/ceph/ceph.client.admin.keyring

正确输出如下:

[zzq@localhost ceph]$ sudo rbd create foo --size 4096 -m ceph1 -k /etc/ceph/ceph.client.admin.keyring
[zzq@localhost ceph]$ sudo rbd list -k /etc/ceph/ceph.client.admin.keyring
foo
[zzq@localhost ceph]$

如果报错

[zzq@localhost ~]$ sudo rbd create foo --size 4096 -m ceph1 -k /etc/ceph/ceph.client.admin.keyring
ERROR: modinfo: could not find module rbd
FATAL: Module rbd not found.
rbd: failed to load rbd kernel module (1)
rbd: sysfs write failed
rbd: map failed: (2) No such file or directory

原因
Since CEPH RBD module was first introduced with kernel 2.6.34 (and current RHEL/CentOS kernel is 2.6.32) – that means we need a newer kernel.

所以需要升级内核,使用命令如下:

sudo rpm --import http://elrepo.org/RPM-GPG-KEY-elrepo.org
sudo rpm -Uvh http://www.elrepo.org/elrepo-release-6-8.el6.elrepo.noarch.rpm
sudo yum --enablerepo=elrepo-kernel install kernel-ml

编辑etc/grub.conf然后重启

使用命令

sudo vi /etc/grub.conf
sudo reboot

将default = 1 改为default = 0

将映像映射为块设备

将映像映射为块设备的命令
格式

sudo rbd map foo  --name client.admin [-m {mon-IP}] [-k /path/to/ceph.client.admin.keyring]

例如

sudo rbd map foo  --name client.admin -m ceph1 -k /etc/ceph/ceph.client.admin.keyring

正确输出如下:

[zzq@localhost ceph]$ sudo rbd map foo  --name client.admin -m ceph1 -k /etc/ceph/ceph.client.admin.keyring
/dev/rbd0
[zzq@localhost ceph]$

查看块映射map和创建文件系统

rbd showmapped

输出如下:

[zzq@localhost ceph]$ rbd showmapped
id pool image snap device    
0  rbd  foo   -    /dev/rbd0

则使用/dev/rbd0创建文件系统

sudo mkfs.ext4 -m0 /dev/rbd0

正确输出如下:

[zzq@localhost ceph]$ sudo mkfs.ext4 -m0 /dev/rbd0
mke2fs 1.41.12 (17-May-2010)
Discarding device blocks: done                            
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=1024 blocks, Stripe width=1024 blocks
262144 inodes, 1048576 blocks
0 blocks (0.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=1073741824
32 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks: 
    32768, 98304, 163840, 229376, 294912, 819200, 884736

Writing inode tables: done                            
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done

This filesystem will be automatically checked every 32 mounts or
180 days, whichever comes first.  Use tune2fs -c or -i to override.
[zzq@localhost ceph]$

挂载文件系统并写入文件查看

sudo mkdir /cephAll
sudo mount /dev/rbd0 /cephAll
cd /cephAll
sudo vi helloCeph.txt
ls
df -h

这样我们就能在client中直接对ceph集群存储进行读取写入了。

输出如下:

[zzq@localhost ceph]$ sudo mkdir /cephAll
[zzq@localhost ceph]$ sudo mount /dev/rbd0 /cephAll
[zzq@localhost ceph]$ cd /cephAll
[zzq@localhost cephAll]$ sudo vi helloCeph.txt
[zzq@localhost cephAll]$ ls
helloCeph.txt  lost+found
[zzq@localhost cephAll]$ df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/mapper/vg_localhost-lv_root
                       18G  2.2G   15G  13% /
tmpfs                 482M     0  482M   0% /dev/shm
/dev/sda1             477M   86M  362M  20% /boot
/dev/rbd0             3.9G  8.0M  3.8G   1% /cephAll
[zzq@localhost cephAll]$

其他块命令

映射块设备

格式如下:

sudo rbd map {pool-name}/{image-name} --id {user-name}

例如:

sudo rbd map test/foo2 --id admin

如若启用cephx认证,还需指定密钥

sudo rbd map test/foo2 --id admin --keyring /etc/ceph/ceph.client.admin.keyring

查看已映射设备

rbd showmapped

取消块设备映射

格式如下:

sudo rbd unmap /dev/rbd/{poolname}/{imagename}

例如:

sudo rbd unmap /dev/rbd/test/foo2

罗列块设备映像

sudo rbd ls

检索映像信息

格式

sudo rbd info {image-name}

例如

sudo rbd info foo

或者
格式

sudo rbd info {pool-name}/{image-name}

例如:

sudo rbd info test/foo

调整块设备映像大小

命令如下:

sudo rbd resize --size 512 test/foo --allow-shrink  #调小
sudo rbd resize --size 4096 test/foo        #调大

删除块设备

sudo rbd rm test/foo


标签:存储,admin,sudo,ceph,etc,client,rbd
From: https://blog.51cto.com/u_16218512/7007041

相关文章

  • 使用ceph的文件存储CephFS
    CephFS是一个支持POSIX接口的文件系统,它使用Ceph存储集群来存储数据。文件系统对于客户端来说可以方便的挂载到本地使用。CephFS构建在RADOS之上,继承RADOS的容错性和扩展性,支持冗余副本和数据高可靠性。注意:当前,CephFS还缺乏健壮得像‘fsck’这样的检查和修复功能。存储重......
  • ceph新增节点
    我们在上一篇文章中已经学习了手动安装ceph和ceph的挂载使用手动安装ceph和使用本章记录我们在日常运维中经常遇到的场景,就是如何给这个集群扩容–增加节点。假如我们新采购了一台服务器想融入到ceph集群中,步骤如下:调整网络情况ip地址需要与ceph集群在同一内网内使用命令如下:ifcon......
  • k8s 学习笔记之数据存储——高级存储
    高级存储前面已经学习了使用NFS提供存储,此时就要求用户会搭建NFS系统,并且会在yaml配置nfs。由于kubernetes支持的存储系统有很多,要求客户全都掌握,显然不现实。为了能够屏蔽底层存储实现的细节,方便用户使用,kubernetes引入PV和PVC两种资源对象。PV(PersistentVolume......
  • K8S使用ceph-csi持久化存储之RBD
    Kubernetes集成Ceph一般有两种方案:Ceph组件运行在Kubernetes中,可以使用Rook;还有就是Kubernetes集成外部的Ceph集群。Ceph版本[root@master~]#ceph-vcephversion14.2.22(ca74598065096e6fcbd8433c8779a2be0c889351)nautilus(stable)Kubernetes版本[root@master~]#k......
  • ceph-deploy部署ceph集群 nautilus 14.2.22
    规划主机名IP地址系统ceph版本ceph硬盘大小组件规划master192.168.1.60CentOS7.9ceph-15.2.10sdb100GOSD、MOD、MDS、MGR主节点node01192.168.1.70CentOS7.9ceph-15.2.10sdb100GOSD从节点node02192.168.1.80CentOS7.9ceph-15.2.10sdb100......
  • 视频融合平台视频汇聚平台LiteCVR的存储异常垃圾数据增多如何快捷清理
    LiteCVR视频融合平台部署迅捷高效,具备极大的功能灵活性,支持多种协议和设备类型的接入。在视频方面,它能够实现多项功能,包括视频直播、录像、回放、检索、云存储、告警上报、语音对讲、集群、智能分析以及平台级联等。根据用户的反馈,使用LiteCVR时发现数据库中存在大量无效数据,导致......
  • 斩获可信云最佳实践,天翼云存储资源盘活系统助力“一云多芯”!
    7月25日至26日,中国信息通信研究院、中国通信标准化协会主办的“2023可信云大会”在京召开。大会以“云领创新 算启新篇”为主题,围绕产业发展、关键技术、最/佳实践等展开深入交流。天翼云携存储资源盘活系统(HBlock)应邀出席本次大会,并荣获可信云最/佳实践。顺应“一云多芯”趋势......
  • 实现无限存储:基于JuiceFS 创建 Samba 和 NFS 共享
    随着企业数据量的持续增长,存储容量需求日益增大。如何采用没有容量上限的云存储替换本容量有限的本地磁盘,已成为广泛的需求和共识。特别是在企业中常用的Samba和NFS共享,如果能够使用云存储作为底层存储,就能有效解决存储扩容和本地磁盘损坏导致的数据丢失问题。本文将以Linux......
  • Ceph常用命令汇总
    对象用户和桶$radosgw-adminusercreate--display-name="johnnyrotten"--uid=johnny$radosgw-adminuserrm--uid=johnny$radosgw-adminuserrename--uid=johny--new-uid=joe$radosgw-adminuserrm--uid=johnny--purge-data$radosgw-adminbucketr......
  • 复习笔记|第十六章 Windows存储器管理《操作系统原理教程》
    参考教材:《操作系统原理教程(第4版)》刘美华翟岩龙著大纲问题回答(精简版)1.两种数据结构:虚拟地址描述符VAD、区域对象,这两种结构各有什么作用?◆P304◼Windows系统采用一棵由虚拟地址描述符(VAD)构成的平衡二叉树来管理进程私有地址空间。一个进程的一组VAD结构构成一棵自平衡二......