Ceph
Ceph是一个对象(object)式存储系统,它把每一个待管理的数据流(如一个文件)切分为一到多个固定大小的对象数据,并以其为原子单元完成数据存储。
对象数据的底层存储服务式由多个主机(host)组成的存储集群,该集群也被称之为RADOS(Reliable Automatic Distributed Object Store)存储集群,即可靠,自动化,分布式对象存储系统。
librados 是 RADOS 存储集群的 API,它支持 C、C++、java、Python、Ruby 和 php 等编程语言。
Ceph 部署
初始化ceph集群
管理 osd
移除服务并移除节点
副本池创建及配置
创建一个副本池
修改资源池
使用 rados 命令进行简单对象操作
为资源池创建快照
资源池配额设置
删除资源池
纠删码池
ceph 用户管理实践
ceph 块存储 RBD 实践
简介
- Ceph 块存储共享基于 RADOS 构建,经过精简配置,大小调整后,在多个 OSD 上实现存储数据条带化。Ceph 块存储可实现快照,复制和存储的强一致性。
- 应用访问块存储通过两种方式实现:
- Librbd 用户态接口:librados.so 库作为客户端连接 RADOS 集群。
- Krbd 内核态接口,通过 rbd 命令将块设备映射为主机设备,可挂载至指定目录。
创建块设备
客户端连接
RBD 设备扩容
创建快照
Ceph 块存储所涉其他命令
- 列出资源池内所有rbd设备:rbd [--pool pool-name] ls
- 查询指定rbd设备的详细信息:rbd info [poo-name/]image-name
- 查询指定rbd设备的状态信息:rbd status [poo-name/]image-name
- 查询指定rbd设备的容量大小:rbd du [poo-name/]image-name
- 查询指定rbd设备是否已被加锁:rbd lock ls [poo-name/]image-name
- 删除指定rbd设备的锁:rbd [--pool pool-name] lock rm image-name lock-id locker
RBD 设备特性
- 在创建 RBD 设备时,使用参数--image-feature" 可开启对应特性, RBD 设备支持的特性有:
- layering:克隆的分层
- Strping:可提高性能的条带 v2 版本
- exclusive-lock:独占锁
- object-map:对象映射,依赖 exclusive-lock 特性
- fast-diff:快速差异计算,依赖object-map 特性
- deep-flatten:快照的扁平化
- journaling:日志功能,依赖 exclusive-lock特性
- data-pool:纠删码池支持
RBD 设备的导入导出
ceph 文件存储 Cephfs 实践
简介
ceph 文件系统(CephFS)是基于 ceph 分布式存储 DOS 构建的兼容 POS 以的文件系统。
cephFS 致力于提供先进的、多用户、高可用、高性能的文件存储。
CephFS 支持的场景包括共享主目录、高性能计算暂存空间及工作流共享存储等。
CephFS 需要运行在集群中运行 MDS 服务,其守护进程为 ceph-mds ,用于管理 CephFS 中所存储文件的元数据,及协调对 ceph 集群的访问。
CephFS 通过 ceph-mds 将元数据与数据分开,可降低复杂性并提高可靠性。
创建 cephfs 所需的资源
客户端挂载
将创建cephfs挂载到客户端的/mnt/cephfs目录中,并需实现开机自动挂载。
Ceph
Ceph是一个对象(object)式存储系统,它把每一个待管理的数据流(如一个文件)切分为一到多个固定大小的对象数据,并以其为原子单元完成数据存储。
对象数据的底层存储服务式由多个主机(host)组成的存储集群,该集群也被称之为
RADOS(Reliable Automatic Distributed Object Store)存储集群,即可靠,自动化,分布式对象存储系统。librados 是 RADOS 存储集群的 API,它支持 C、C++、java、Python、Ruby 和 php 等编程语言。
Ceph 部署
初始化ceph集群
管理 osd
移除服务并移除节点
副本池创建及配置
创建一个副本池
修改资源池
使用 rados 命令进行简单对象操作
为资源池创建快照
资源池配额设置
删除资源池
纠删码池
ceph 用户管理实践
ceph 块存储 RBD 实践
简介
创建块设备
客户端连接
# 客户端安装客户端软件 yum install -y ceph-common # 使用rbd命令将创建好的rbd设备映射到Client,--name 表明身份,/etc/ceph/ceph.client.block.keyring rbd map block/rbd1 --name client.block rbd map block/rbd2 --name client.block # 将映射后的设备格式化,并按照规划,挂载到指定目录下 mkdir -p /mnt/rbd{1,2} mkfs.xfs /dev/rbd0 mkfs.xfs /dev/rbd1 mount /dev/rbd0 /mnt/rbd1 mount /dev/rbd1 /mnt/rbd2 # rbd设 备设置为自动挂载 vim /etc/fstab /dev/rbd/block/rbd1 /mnt/rbd1 xfs defaults,_netdev 0 0 /dev/rbd/block/rbd2 /mnt/rbd2 xfs defaults,_netdev 0 0 # 编辑/etc/ceph/rbdmap文件 block/rbd1 id=block,keyring=/etc/ceph/ceph.client.block.keyring block/rbd2 id=block,keyring=/etc/ceph/ceph.client.block.keyring # 将rbdmap服务设置为开机自启动 systemctl enable rbdmapRBD 设备扩容
创建快照
Ceph 块存储所涉其他命令
RBD 设备特性
RBD 设备的导入导出
RBD 设备支持全量导入导出:
除了全量导入导出外,RBD 设备还可以借助快照,进行增量导入导出:
ceph 文件存储 Cephfs 实践
简介
ceph 文件系统(CephFS)是基于 ceph 分布式存储 DOS 构建的兼容 POS 以的文件系统。
cephFS 致力于提供先进的、多用户、高可用、高性能的文件存储。
CephFS 支持的场景包括共享主目录、高性能计算暂存空间及工作流共享存储等。
CephFS 需要运行在集群中运行 MDS 服务,其守护进程为 ceph-mds ,用于管理 CephFS 中所存储文件的元数据,及协调对 ceph 集群的访问。
CephFS 通过 ceph-mds 将元数据与数据分开,可降低复杂性并提高可靠性。
创建 cephfs 所需的资源
# 创建资源池 # 创建两个副本池,分别命名为data_cephfs和metadata_cephfs,其中data_cephfs作为cephFS的数据池,metadata_cephfs作为cephFS的元数据池,具体命令如下: [ceph: root@ceph01 /]# ceph osd pool create metadata_cephfs [ceph: root@ceph01 /]# ceph osd pool create data_cephfs # 格式化资源池 [ceph: root@ceph01 /]# ceph fs new fs01 metadata_cephfs data_cephfs # 在ceph集群中部署两个MDS [ceph: root@ceph01 /]# ceph orch apply mds fs01 --placement="2" # 查看MDS的状态 ceph orch ls # 创建用户 # 创建用户user01,使其可对fs01有读写权限 [ceph: root@ceph01 /]# ceph fs authorize fs01 client.user01 / rwps -o ceph.client.user01.keyring # 查看 MDS 所在节点的地址 [ceph: root@ceph-node-1 /]# ceph fs status fs01 - 0 clients ==== RANK STATE MDS ACTIVITY DNS INOS DIRS CAPS 0 active fs01.ceph-node-2.qkvtut Reqs: 0 /s 10 13 12 0 POOL TYPE USED AVAIL metadata_cephfs metadata 96.0k 37.9G data_cephfs data 0 37.9G STANDBY MDS fs01.ceph-node-3.cncuju MDS version: ceph version 16.2.13 (5378749ba6be3a0868b51803968ee9cde4833a3e) pacific (stable)客户端挂载
将创建cephfs挂载到客户端的/mnt/cephfs目录中,并需实现开机自动挂载。