Contents
ceph简介
https://docs.ceph.com/en/reef/
常用的存储类型:
- DAS(直连存储)ide线,sata线,sas线
- NAS(网络附加存储)Samba,nfs,ftp 文件系统
- SAN(存储区域网络)iscsi 块设备
- SDS (软件定义存储) ceph,glusterfs ,hadoop,lustre,fastDFS
ext3,ext4,fat32,ntfs,xfs文件系统
Ceph是一个开源的分布式存储系统,具有多个显著的特点和优势,这些特点使其在云计算、大数据和容器等领域得到广泛应用。
ceph提供EB级别=1024PB=1024TB=1024GB
iscsi 块存储没有锁机制,共享要用文件系统ceph,支持锁机制。
Ceph的主要特点:
- 高可用性
- Ceph采用分布式存储技术,将数据存储在多个节点上,并通过自动数据复制和恢复机制,确保数据的高可用性和持久性。
- 即使部分节点出现故障或离线,Ceph也能自动从其他节点恢复数据,保证数据访问的连续性和可靠性。
- 可扩展性
- Ceph支持横向扩展,通过添加新的存储节点来增加存储容量和吞吐量,而无需对现有系统进行大规模修改。
- 这种扩展方式灵活且高效,能够轻松应对容量和性能的快速增长需求。
- 强一致性
- Ceph采用一致性哈希算法来定位和分配数据,确保数据在集群中的均匀分布和强一致性。
- 这意味着数据在集群中的多个副本之间保持一致,避免了数据重复或丢失的情况。
- 灵活性
- Ceph可以存储任意大小的对象,无需预定义或固定格式,非常适合存储各种类型的数据,包括大型文件、多媒体内容和虚拟机镜像等。
- 同时,Ceph支持多种存储接口,包括对象存储、块存储和文件系统存储,满足不同应用的需求。
- 高性能
- Ceph通过并行处理和数据分片来提供高性能的数据访问。它可以在多个存储节点上同时访问和处理数据,从而提高读写性能。
- 此外,Ceph的架构设计使其能够充分利用存储节点的计算能力,进一步提高整体性能。
- 经济高效
- Ceph采用了分布式存储和智能数据管理策略,能够充分利用集群中的存储资源,避免资源浪费。
- 同时,Ceph可以在商用硬件上运行,降低了成本,使得用户能够以较低的成本获得高性能和高可靠性的存储服务。
- 弹性和可靠性
- Ceph具有弹性的特点,可以自动进行数据迁移和负载均衡,以适应节点负载的变化。
- 此外,Ceph采用CRUSH算法进行数据的复制和分布,提高了数据的冗余度和可靠性。
- 易于管理
- Ceph提供了丰富的管理工具和API,方便用户对集群进行监控、管理和配置。
- 例如,CephDashboard是一个强大的Web管理界面,用户可以直观地查看集群的状态和性能数据,并进行必要的操作。
Ceph的核心组件及其功能概述:
- RADOS (Reliable Autonomic Distributed Object Store)
- RADOS是Ceph的核心存储系统,负责数据的存储和复制。
- 它将数据划分为对象(Object),并通过分布式存储和复制机制实现高可靠性和高性能的数据存储。
- RADOS具有自动故障检测和自我修复等功能,确保数据的高可靠性。
- Ceph OSD (Object Storage Daemon)
- Ceph OSD是Ceph的对象存储守护进程,负责处理数据的读写请求,以及数据的存储和复制。
- 每个OSD负责存储和管理一部分数据,并提供数据的冗余备份。
- OSD具有自我管理和自动容错机制,以确保系统的高可靠性和高性能。
- Ceph MON (Monitor)
- Ceph MON是Ceph的监控器,负责集群的状态监控、元数据管理和节点发现。
- 它维护集群的状态信息、存储拓扑结构和数据分布策略。
- 为了高可用性,通常会有多个Monitor实例,它们之间通过Paxos算法保持状态一致。至少三台服务器,过半原则,坏有一半,服务就不可用。
- Ceph MDS (Metadata Server)
- Ceph MDS是Ceph的元数据服务器,负责管理文件系统的元数据,包括目录结构、文件属性和访问权限等。
- 它提供文件系统的元数据访问和命名空间管理功能,仅用于Ceph文件系统(CephFS)。
- Ceph RGW (RADOS Gateway)
- Ceph RGW是Ceph的对象存储网关,提供对象存储服务的接口。
- 它允许通过S3和Swift等标准协议访问Ceph存储集群。
- RGW负责处理外部应用程序和Ceph集群之间的数据传输和访问。
- Ceph RBD (RADOS Block Device)
- Ceph RBD是Ceph的块设备服务,提供分布式块存储的功能。
- 它可以将Ceph存储集群作为块设备挂载到主机上使用,支持快照、克隆和thin-provisioning等功能。
- Ceph MGR (Manager)
- Ceph MGR是一个相对较新的组件,在Ceph Luminous版本(即12.0版本)中首次被引入。
- MGR提供了一个集中的服务,用于管理和监控Ceph集群的各个方面。
- 它收集和存储集群的监控数据,提供报警和通知,管理服务,执行集群管理任务,生成集群报告,并提供一个REST API。
Ceph存储类型
- Ceph对象存储(RADOS Gateway)
- 特点:基于HTTP/RESTful接口方式进行数据访问,可以存储和检索大规模非结构化数据。
- 优势
- 无限扩展性,能够管理海量的数据。
- 提供高可用性和数据冗余机制。
- 兼容S3和Swift接口,适用于云存储、大规模数据分析、多媒体应用等场景。
- Ceph块存储(RADOS Block Device, RBD)
- 特点:提供块设备的抽象,类似于传统的磁盘设备,可以映射到使用块设备的应用程序(如操作系统的文件系统)。
- 优势
- 高性能和可扩展的存储能力。
- 数据复制和故障恢复的能力,保证数据的可靠性和可用性。
- 支持快照和克隆等高级功能,用于数据保护和测试。
- 适用于共享存储、虚拟化和容器化等场景。
- Ceph文件系统(CephFS)
- 特点:一个高性能和高可用性的分布式文件系统解决方案,与传统的POSIX文件系统兼容。
- 优势
- 提供了类似于传统文件系统的接口和语义。
- 支持POSIX文件系统操作,提供了透明的命名空间和目录层次结构。
- 弹性扩展,根据存储需求自动调整数据分布和负载均衡。
- 适用于需要共享存储的应用,如HPC(高性能计算)、容器存储、共享文件存储等场景。
安装配置
环境准备
- 创建1台客户端虚拟机
- 创建3台存储集群虚拟机
- 配置主机名、IP地址、YUM源
- 修改所有主机的主机名
- 配置无密码SSH连接
- 配置NTP时间同步
- 创建虚拟机磁盘
主机 | 角色 |
---|---|
nnode1 | ceph-deploy、osd、mgr |
dnode1 | osd |
dnode2 | osd、mds |
dnode3 | client |
新建ceph源
cat >/etc/yum.repos.d/ceph.repo<<EOF
[ceph]
name=ceph
baseurl=http://mirrors.aliyun.com/ceph/rpm-luminous/el7/x86_64/
gpgcheck=0
[ceph-noarch]
name=cephnoarch
baseurl=http://mirrors.aliyun.com/ceph/rpm-luminous/el7/noarch/
gpgcheck=0
EOF
安装部署脚本,自动部署ceph集群,需要主机名免密登录其他主机
yum install ceph-deploy
mkdir ceph-cluster
cd ceph-cluster/
ceph-deploy new nnode1 dnode1 dnode2
[root@nnode1 ceph-cluster]# ls
ceph.conf ceph-deploy-ceph.log ceph.log ceph.mon.keyring
[root@nnode1 ceph-cluster]# cat ceph.conf
[global]
fsid = 2cf25983-13ef-4106-86be-5d7d44b831b3
mon_initial_members = nnode1, dnode1, dnode2
mon_host = 192.168.126.21,192.168.126.22,192.168.126.23
auth_cluster_required = cephx
auth_service_required = cephx
auth_client_required = cephx
mon有三个,分别列出了主机名和ip,cephx是密码占位符
for i in nnode1 dnode1 dnode2;do ssh $i yum -y install ceph-mon ceph-osd ceph-mds ceph-radosgw;done
拷贝配置文件到节点并启动mon服务
ceph-deploy mon create-initial
[root@dnode1 ~]# ls /etc/ceph
ceph.conf rbdmap tmpfR8xOu
[root@dnode1 ~]# systemctl status ceph-mon@dnode1.service
● ceph-mon@dnode1.service - Ceph cluster monitor daemon
Loaded: loaded (/usr/lib/systemd/system/ceph-mon@.service; enabled; vendor preset: disabled)
Active: active (running) since 日 2024-06-30 14:25:35 CST; 3min 25s ago
Main PID: 2925 (ceph-mon)
CGroup: /system.slice/system-ceph\x2dmon.slice/ceph-mon@dnode1.service
└─2925 /usr/bin/ceph-mon -f --cluster ceph --id dnode1 --setuser ceph --setgroup ceph
6月 30 14:25:35 dnode1 systemd[1]: Started Ceph cluster monitor daemon.
[root@dnode2 ~]# systemctl status ceph-mon@dnode2.service
● ceph-mon@dnode2.service - Ceph cluster monitor daemon
Loaded: loaded (/usr/lib/systemd/system/ceph-mon@.service; enabled; vendor preset: disabled)
Active: active (running) since 日 2024-06-30 14:25:38 CST; 3min 53s ago
Main PID: 11741 (ceph-mon)
CGroup: /system.slice/system-ceph\x2dmon.slice/ceph-mon@dnode2.service
└─11741 /usr/bin/ceph-mon -f --cluster ceph --id dnode2 --setuser ceph --setgroup ceph
6月 30 14:25:38 dnode2 systemd[1]: Started Ceph cluster monitor daemon.
此时执行ceph -s会出错,是由于缺少/etc/ceph/ceph.client.admin.keyring文件
执行
[root@nnode1 ceph-cluster]#ceph-deploy admin nnode1 dnode2 dnode1
[root@nnode1 ceph-cluster]# ls /etc/ceph/
ceph.client.admin.keyring ceph.conf rbdmap tmpLYO4Qp
[root@nnode1 ceph-cluster]# ceph -s
cluster:
id: 2cf25983-13ef-4106-86be-5d7d44b831b3
health: HEALTH_OK
services:
mon: 3 daemons, quorum nnode1,dnode1,dnode2
mgr: no daemons active
osd: 0 osds: 0 up, 0 in
data:
pools: 0 pools, 0 pgs
objects: 0 objects, 0B
usage: 0B used, 0B / 0B avail
pgs:
解决ceph -s报错
health: HEALTH_WARN
no active mgr
[root@nnode1 ceph-cluster]# ceph-deploy mgr create nnode1
块存储
osd分配,一个机器需要一个盘(ssd,加快访问速度),分两个分区缓存另外两个共享盘,两个共享盘
理想情况
for i in node1 node2 node3
do
ssh $i "parted /dev/vdb mklabel gpt"
ssh $i "parted /dev/vdb mkpart primary 1 50%"
ssh $i "parted /dev/vdb mkpart primary 50% 100%"
done
实验环境
for i in dnode2 dnode1
do
ssh $i "parted /dev/sdb mklabel gpt"
ssh $i "parted /dev/sdb mkpart primary 1 50%"
ssh $i "parted /dev/sdb mkpart primary 50% 100%"
done
ssh nnode1 "parted /dev/sde mklabel gpt"
ssh nnode1 "parted /dev/sde mkpart primary 1 50%"
ssh nnode1 "parted /dev/sde mkpart primary 50% 100%"
所有节点修改磁盘的权限,让ceph能操作磁盘,系统重启后消失
chown ceph.ceph /dev/sde1
chown ceph.ceph /dev/sde2
chown ceph.ceph /dev/sdb1
chown ceph.ceph /dev/sdb2
永久修改权限
vim /etc/udev/rules.d/71-ceph.rules
cat >/etc/udev/rules.d/71-ceph.rules<<EOF
ENV{DEVNAME}=="/dev/vdb1",OWNER="ceph",GROUP="ceph"
ENV{DEVNAME}=="/dev/vdb2",OWNER="ceph"GROUP="ceph"
EOF
cat >/etc/udev/rules.d/71-ceph.rules<<EOF
ENV{DEVNAME}=="/dev/vdb1",OWNER="ceph",GROUP="ceph"
ENV{DEVNAME}=="/dev/vdb2",OWNER="ceph"GROUP="ceph"
EOF
格式化清空磁盘
[root@nnode1 ceph-cluster]# ceph-deploy disk zap nnode1 /dev/sdf /dev/sdg
[root@nnode1 ceph-cluster]# ceph-deploy disk zap dnode1 /dev/sdc /dev/sdd
[root@nnode1 ceph-cluster]# ceph-deploy disk zap dnode2 /dev/sde /dev/sdd
创建osd存储空间
ceph-deploy osd create --data /dev/sdf nnode1
ceph-deploy osd create --data /dev/sdg nnode1
ceph-deploy osd create --data /dev/sdd dnode2
ceph-deploy osd create --data /dev/sde dnode2
ceph-deploy osd create --data /dev/sdc dnode1
ceph-deploy osd create --data /dev/sdd dnode1
[root@nnode1 ceph-cluster]# ceph -s
cluster:
id: 2cf25983-13ef-4106-86be-5d7d44b831b3
health: HEALTH_WARN
no active mgr
services:
mon: 3 daemons, quorum nnode1,dnode1,dnode2
mgr: no daemons active
osd: 6 osds: 6 up, 6 in
data:
pools: 0 pools, 0 pgs
objects: 0 objects, 0B
usage: 0B used, 0B / 0B avail
pgs:
创建池子并指定副本数量
[root@nnode1 ceph-cluster]# ceph osd pool create mypool 3
pool 'mypool' created
[root@nnode1 ceph-cluster]# ceph osd lspools
1 mypool,
创建镜像并查看镜像
[root@nnode1 ceph-cluster]# rbd create mypool/image --image-feature layering --size 2G
- mypool是池子名字/image是镜像名字,默认池子是rbd时不必加池子名字
-
--image-feature layering
是一个选项,用于启用 RBD 镜像的分层特性(layering feature)(COW写时复制)。这个特性允许你创建一个 RBD 镜像,该镜像可以基于另一个 RBD 镜像(称为父镜像或基础镜像)进行分层。
[root@nnode1 ceph-cluster]# rbd info mypool/image
rbd image 'image':
size 2GiB in 512 objects
order 22 (4MiB objects)
block_name_prefix: rbd_data.10a06b8b4567
format: 2
features: layering
flags:
create_timestamp: Sun Jun 30 16:13:21 2024
扩容
[root@nnode1 ceph-cluster]# rbd resize mypool/image --size 3G
Resizing image: 100% complete...done.
[root@nnode1 ceph-cluster]# rbd info mypool/image
rbd image 'image':
size 3GiB in 768 objects
order 22 (4MiB objects)
block_name_prefix: rbd_data.10a06b8b4567
format: 2
features: layering
flags:
create_timestamp: Sun Jun 30 16:13:21 2024
缩容
[root@nnode1 ceph-cluster]# rbd resize mypool/image --size 1G --allow-shrink
Resizing image: 100% complete...done.
[root@nnode1 ceph-cluster]# rbd info mypool/image
rbd image 'image':
size 1GiB in 256 objects
order 22 (4MiB objects)
block_name_prefix: rbd_data.10a06b8b4567
format: 2
features: layering
flags:
create_timestamp: Sun Jun 30 16:13:21 2024
客户端
yum install ceph-common
拷贝配置文件给客户端
[root@nnode1 ceph-cluster]# cd /etc/ceph/
[root@nnode1 ceph]# scp ceph.conf dnode3:/etc/ceph/
[root@nnode1 ceph]# scp ceph.client.admin.keyring dnode3:/etc/ceph/
客户端获取共享磁盘
[root@dnode3 ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 30G 0 disk
├─sda1 8:1 0 1G 0 part /boot
└─sda2 8:2 0 29G 0 part
├─centos-root 253:0 0 26G 0 lvm /
└─centos-swap 253:1 0 3G 0 lvm [SWAP]
sdb 8:16 0 50G 0 disk
sr0 11:0 1 4.2G 0 rom
[root@dnode3 ~]# rbd map mypool/image
/dev/rbd0
[root@dnode3 ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 30G 0 disk
├─sda1 8:1 0 1G 0 part /boot
└─sda2 8:2 0 29G 0 part
├─centos-root 253:0 0 26G 0 lvm /
└─centos-swap 253:1 0 3G 0 lvm [SWAP]
sdb 8:16 0 50G 0 disk
sr0 11:0 1 4.2G 0 rom
rbd0 252:0 0 1G 0 disk
多了rbd0的磁盘
ceph-deploy new 新建一个集群,新建一个配置文件,用户名和密码
ceph-deploy install node1 node2 安装mon osd,但是ceph是redhat的,centos用不了,只能手动装包
ceph-deploy mon add(加一台) node1/create node1 node2/create-initial 自动添加所有(ceph.conf配置文件中的mon_initial_members=node1 node2)
(30分支只能起三次,ceph-mon@service配置文件中写的)
systemctl restart ceph-mon@node1.service
ceph-deploy osd create node1:vdc:/dev/vdb1
以上命令表示启动node上的服务systemctl start ceph-osd@0/1/2...
ceph osd tree
rbd create rbd/demo-image --image-feature layering --size 10G
rbd resize --size 7G demo-image [--allow-shrink]
rdb info image
客户端
yum install reph-common
scp 192...:/etc/ceph/ceph.conf /etc/ceph/
scp 192...:/etc/ceph/ceph.client /etc/ceph
rbd map image
lsblk
rbd showmapped
mkfs.xfs /dev/rbd0
mount /dev/rbd0 /mnt/
echo "test" > /mnt/test.txt
副本、快照
[root@dnode3 ~]# mkfs.xfs /dev/rbd0
meta-data=/dev/rbd0 isize=512 agcount=8, agsize=32768 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=0, sparse=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
[root@dnode3 ~]# umount /dev/rbd0 /mnt
[root@dnode3 ~]# mount /dev/rbd0 /mnt
[root@dnode3 ~]# echo "ceph"> /mnt/ceph
创建快照
[root@nnode1 ceph]# rbd snap create mypool/image --snap snap1
查看快照
[root@nnode1 ceph]# rbd snap ls mypool/image
SNAPID NAME SIZE TIMESTAMP
4 snap1 1GiB Sun Jun 30 17:45:17 2024
删除文件
[root@dnode3 ~]# rm -f /mnt/ceph
还原快照,不支持在线还原,卸载还原,重新挂载
[root@dnode3 ~]# umount /mnt
[root@nnode1 ceph]# rbd snap rollback mypool/image --snap snap1
Rolling back to snapshot: 100% complete...done.
看到删除的文件回来了
[root@dnode3 ~]# cat /mnt/ceph
ceph
删除快照
[root@nnode1 ceph]# rbd snap rm mypool/image --snap snap1
创建共享镜像,用旧的镜像创建新的镜像
1、创建旧镜像,写数据
2、创建快照
3、用快照克隆新镜像(克隆之前保护快照)
4、镜像和快照是父子关系,不能删除原来的快照
5、flatten解绑父子关系
6、取消镜像保护
rbd snap ls mypool/image
保护镜像,防止克隆时被人删除
rbd snap protect mypool/image --snap snap1
此时无法删除
[root@nnode1 ceph]# rbd snap rm mypool/image --snap snap1
Removing snap: 02024-06-30 18:06:15.887412 7fa7caff1d40 -1 librbd::Operations: snapshot is protected% complete...failed.
rbd: snapshot 'snap1' is protected from removal.
创建image-clone镜像
[root@nnode1 ceph]# rbd clone mypool/image --snap snap1 img-clone1 --image-feature layering
查看镜像
[root@nnode1 ceph]# rbd info img-clone1
rbd image 'img-clone1':
size 1GiB in 256 objects
order 22 (4MiB objects)
block_name_prefix: rbd_data.10c56b8b4567
format: 2
features: layering
flags:
create_timestamp: Sun Jun 30 18:08:01 2024
parent: mypool/image@snap1
overlap: 1GiB
新的镜像基于旧的镜像,删除就镜像新镜像会崩溃,需要解绑快照的父子关系
[root@nnode1 ceph]# rbd flatten img-clone1
Image flatten: 100% complete...done.
取消镜像保护
rbd snap unprotect mypool/image --snap snap1
客户端绑定新的镜像
[root@dnode3 ~]# rbd map img-clone1
/dev/rbd1
[root@dnode3 ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 30G 0 disk
├─sda1 8:1 0 1G 0 part /boot
└─sda2 8:2 0 29G 0 part
├─centos-root 253:0 0 26G 0 lvm /
└─centos-swap 253:1 0 3G 0 lvm [SWAP]
sdb 8:16 0 50G 0 disk
sr0 11:0 1 4.2G 0 rom
rbd0 252:0 0 1G 0 disk /mnt
rbd1 252:16 0 1G 0 disk
删除镜像
查看绑定情况
[root@dnode3 ~]# rbd showmapped
id pool image snap device
0 mypool image - /dev/rbd0
1 rbd img-clone1 - /dev/rbd1
解绑镜像
rbd unmap 镜像名/磁盘名
删除快照
rbd snap rm mypool/image --snap snap1
删除镜像
[root@nnode1 ceph]# rbd rm img-clone1
Removing image: 100% complete...done.
[root@nnode1 ceph-cluster]# rbd rm mypool/image
虚拟机使用ceph
vim secret.xml //新建临时文件
<secret ephemeral='no'private='no'>
<usage type="ceph'>
<name> client.admin secret</name>
</usage>
</secret>
#使用XML配置文件创建secret
virsh secret-define secret.xml
733f0fd1-e3d6-4c25-a69f-6681fc19802b
//随机的UUID,这个UUID对应的有账户信息
virsh secret-list
850a0a99-2110-40b7-83cb-c60adebeb129 ceph client.admin secret
virsh secret-set-value \
--secret 850a0a99-2110-40b7-83cb-c60adebeb129 \
--base64 AQBs+oBmxg9oEhAADCr9P/CORPO95nlh4ihS0Q==
//这里secret后面是之前创建的secret的UUID
//base64后面是client.admin账户的密码
[root@nnode1 ceph]# cat /etc/ceph/ceph.client.admin.keyring
[client.admin]
key = AQBs+oBmxg9oEhAADCr9P/CORPO95nlh4ihS0Q==
//现在secret中既有账户信息又有密钥信息
virsh edit vm1
<disk type='network' device='disk'>
<driver name='qemu" type='raw"/>
<auth usemame="dmin'>
<secret type='ceph' uuid='850a0a99-2110-40b7-83cb-c60adebeb129'
</auth>
<source protocol='rbd' name='rbd/vm1-image'>
<host name="192.168.126.21" port="6789"/>
</source>
<target dev='vdb' bus='virtio'/>
</disk>
修改uuid为secret的uuid
name改为镜像名称
host改为ceph的服务端主机
文件系统
创建mds
[root@nnode1 ceph-cluster]# systemctl start ceph-mds@dnode2
[root@nnode1 ceph-cluster]# systemctl status ceph-mds@dnode2
[root@dnode2 ~]# systemctl status ceph-mds@dnode2
● ceph-mds@dnode2.service - Ceph metadata server daemon
Loaded: loaded (/usr/lib/systemd/system/ceph-mds@.service; enabled; vendor preset: disabled)
Active: active (running) since 日 2024-06-30 19:25:40 CST; 45s ago
Main PID: 15981 (ceph-mds)
CGroup: /system.slice/system-ceph\x2dmds.slice/ceph-mds@dnode2.service
└─15981 /usr/bin/ceph-mds -f --cluster ceph --id dnode2 --setuser ceph --setgroup ceph
6月 30 19:25:40 dnode2 systemd[1]: Started Ceph metadata server daemon.
6月 30 19:25:40 dnode2 ceph-mds[15981]: starting mds.dnode2 at -
查看存储池
ceph osd lspools
文件系统由inode+block组成,下面两个pool分别充当这两个角色
建池子,存元数据和数据,128类似目录,分类存放数据,推荐64或者128(是2的幂)
ceph osd pool create pool_meta 128
ceph osd pool create pool_data 128
//默认一个集群只能创建1个文件系统(名称自建为misi),多余的会报错
//注意,先写medadata池,再写data池
ceph fs new misi pool_meta pool_data
查看文件系统
[root@nnode1 ceph-cluster]# ceph fs ls
name: misi, metadata pool: pool_meta, data pools: [pool_data ]
[root@dnode3 ceph]# mount -t ceph 192.168.126.23:6789:/ /ceph -o name=admin,secret=AQBs+oBmxg9oEhAADCr9P/CORPO95nlh4ihS0Q==
[root@dnode3 ceph]# cd /ceph
[root@dnode3 ceph]# dd if=/dev/zero of=a.txt bs=1M count=500
查看,挂的是整个集群的大小
[root@dnode3 ceph]# df -h
文件系统 容量 已用 可用 已用% 挂载点
/dev/mapper/centos-root 26G 22G 4.7G 83% /
devtmpfs 735M 0 735M 0% /dev
tmpfs 747M 0 747M 0% /dev/shm
tmpfs 747M 9.6M 737M 2% /run
tmpfs 747M 0 747M 0% /sys/fs/cgroup
/dev/sda1 1014M 142M 873M 14% /boot
tmpfs 150M 0 150M 0% /run/user/0
/dev/rbd0 1014M 33M 982M 4% /mnt
192.168.126.23:6789:/ 1.7G 500M 1.2G 30% /ceph
[root@nnode1 ceph-cluster]# ceph osd pool ls
mypool
rbd
pool_meta
pool_data
[root@nnode1 ceph-cluster]# ceph df
GLOBAL:
SIZE AVAIL RAW USED %RAW USED
12.0GiB 5.92GiB 6.05GiB 50.55
POOLS:
NAME ID USED %USED MAX AVAIL OBJECTS
mypool 1 19B 0 1.77GiB 2
rbd 2 19B 0 1.77GiB 3
pool_meta 3 47.7KiB 0 1.77GiB 22
pool_data 4 0B 0 1.77GiB 0
查看副本策略
[root@nnode1 ceph-cluster]# ceph osd pool get pool_data size
size: 3
查看pool的所有信息
[root@nnode1 ceph-cluster]# ceph osd pool get rbd all
size: 3
min_size: 2
crash_replay_interval: 0
pg_num: 3
pgp_num: 3
crush_rule: replicated_rule
hashpspool: true
nodelete: false
nopgchange: false
nosizechange: false
write_fadvise_dontneed: false
noscrub: false
nodeep-scrub: false
use_gmt_hitset: 1
auid: 0
fast_read: 0
加入2G的osd,可以看到使用的和未使用的都增加了1G左右,说明ceph将一半的存储用来备份,不允许使用
[root@nnode1 ceph-cluster]# ceph df
GLOBAL:
SIZE AVAIL RAW USED %RAW USED
14.0GiB 6.91GiB 7.07GiB 50.58
POOLS:
NAME ID USED %USED MAX AVAIL OBJECTS
mypool 1 19B 0 2.07GiB 2
rbd 2 19B 0 2.07GiB 3
pool_meta 3 47.7KiB 0 2.07GiB 22
pool_data 4 0B 0 2.07GiB 0
[root@dnode3 ceph]# dd if=/dev/zero of=a.txt bs=1M count=500
看到500M的文件实际使用440M磁盘,占用ceph存储了1.3G,差不多是440的3倍
[root@nnode1 ceph-cluster]# ceph df
GLOBAL:
SIZE AVAIL RAW USED %RAW USED
14.0GiB 5.62GiB 8.36GiB 59.80
POOLS:
NAME ID USED %USED MAX AVAIL OBJECTS
mypool 1 19B 0 1.47GiB 2
rbd 2 19B 0 1.47GiB 3
pool_meta 3 81.0KiB 0 1.47GiB 22
pool_data 4 440MiB 22.65 1.47GiB 110
对象存储
ceph-deploy rgw create nnode1 (7480端口)
nnode1服务端修改端口
修改/etc/ceph/ceph.conf
[client.rgw.nnode1]
host nnode1
rgw_frontends "civetweb port=8000"
//nnode1为主机名
//civetweb是RGW内置的一个web服务
systemctl rstart ceph-radosgw@rgw.nnode1.service
端口就改为8000
使用第三方使用对象存储s3cmd
Amazon S3 Tools: Command Line S3 Client and S3 Backup for Windows, Linux: s3cmd, s3express
s3cmd put
s3cmd get
s3cmd ls
问题及解决
application not enabled on 2 pool(s)
cluster:
id: 2cf25983-13ef-4106-86be-5d7d44b831b3
health: HEALTH_WARN
application not enabled on 2 pool(s)
未指定pool的存储类型
RGW、RBD和CephFS在Ceph存储系统中各自扮演着不同的角色,它们分别代表了对象存储、块存储和文件级存储的接口,并且各自拥有其独特的存储池。指定pool的类型即可。
[root@nnode1 ceph-cluster]# ceph osd pool application enable rbd rbd
enabled application 'rbd' on pool 'rbd'
[root@nnode1 ceph-cluster]# ceph osd pool application enable mypool rbd
enabled application 'rbd' on pool 'mypool'
[root@nnode1 ceph-cluster]# ceph -s
cluster:
id: 2cf25983-13ef-4106-86be-5d7d44b831b3
health: HEALTH_OK
services:
mon: 3 daemons, quorum nnode1,dnode1,dnode2
mgr: nnode1(active)
mds: misi-1/1/1 up {0=dnode2=up:active}
osd: 6 osds: 6 up, 6 in
data:
pools: 4 pools, 262 pgs
objects: 177 objects, 516MiB
usage: 7.56GiB used, 4.42GiB / 12.0GiB avail
pgs: 262 active+clean