前言
Ceph 向导
- Ceph开源项目地址:
- Ceph官方开发的相关项目总览:
- https://github.com/ceph
- 推荐部署方式:
- 早期版本(Nautilus 14.X.X版本或更早):
- ceph-deploy(使用SSH的方式进行部署)
- 现代版本(Octopus 15.X.X及之后的版本):
- cephadm(新的部署工具)
- ceph-container(利用容器方式部署):https://github.com/ceph/ceph-container
- ceph-ansible(利用Ansible剧本部署):https://github.com/ceph/ceph-ansible
- ceph-salt(利用SaltStack部署):https://github.com/ceph/ceph-salt
- ceph-chef(利用Chef菜谱部署):https://github.com/ceph/ceph-chef
- 早期版本(Nautilus 14.X.X版本或更早):
硬件要求
CPU与内存需求
服务 | CPU | 内存 | 存储 | 理由 |
MDS | 4C+ | 每进程1G+ | 每进程1M+ | 快速寻址,元数据映射到缓存 |
OSD | 每服务1~2C | 每TB数据~1G | 独立块设备 | 支撑RADOS服务、执行CRUSH MAP、维护副本,数据重构时有更多内存需求 |
MON | 每服务1~2C | 每进程1G+ | 每进程10G+ | 存算融合架构,根据计算需求调整 |
存储需求
- 建议分别使用独立的硬盘承载:操作系统和软件,单个OSD服务,WAL预写日志
- 按需选择硬盘的大小和个数,基于成本考量,建议选择大容量硬盘的同时避免边际效应
- 可选择SSD作为承载OSD的预写日志或CephFS元数据的存储介质,以达到更优的性价比,但需要注意:
- 并发写性能(IPS):WAL涉及写密集语义,廉价SSD的高负载并发写性能可能较低
- 顺序写:WAL也有一定的顺序写需求,在承载多OSD的WAL时要考虑顺序写的极限
网络需求
- 存储前后端服务非常依赖网络,因此至少需要2xGE网络,推荐使用10Gb、25Gb、40Gb或100Gb传输速率的设备组网
基础架构
![图片[1]-Ceph环境部署 – 北梦の博客-北梦の博客](https://wpstatic.b52m.cn/wp-content/uploads/2025/04/批注-2025-04-27-165658.png)
环境准备
准备三台虚拟机,虚拟机基本配置如下,使用的是centos7
两块硬盘,两张网卡
![图片[2]-Ceph环境部署 – 北梦の博客-北梦の博客](https://wpstatic.b52m.cn/wp-content/uploads/2025/04/批注-2025-04-27-165857.png)
1.配置网络
主机名 | NIC1(存储前端,要求能通外网)-ens32 | NIC2(存储后端)-ens33 |
zy-ceph01 | 192.168.110.101/24 | 172.18.1.101/24 |
zy-ceph02 | 192.168.110.102/24 | 172.18.1.102/24 |
zy-ceph03 | 192.168.110.103/24 | 172.18.1.103/24 |
ens32需要和vm虚拟机的nat网卡的网段一致,ens33任意合理网段即可
2.配置hosts
cat >> /etc/hosts << EOF
192.168.110.101 zy-ceph01
192.168.110.102 zy-ceph02
192.168.110.103 zy-ceph03
EOF
3.配置主机名和网络
hostnamectl set-hostname zy-ceph01 #其他同理
4.创建用于部署Ceph的用户(可选建议)
useradd cephduser ##用户名可自定义,但不要使用ceph*
passwd cephduser ##在生产环境中,密码必须尽量复杂
确保各 Ceph 节点上新创建的用户都有 sudo 权限
echo "cephduser ALL = (root) NOPASSWD:ALL" | sudo tee /etc/sudoers.d/cephduser
sudo chmod 0440 /etc/sudoers.d/cephduser
su - cephduser ##切换到该用户,后续命令将使用此用户执
sudo ifconfig ##测试,如果后续碰到权限问题请在命令前加sudo
5.关闭防火墙
systemctl stop firewalld
systemctl disable firewalld
6.关闭selinux
setenforce 0
sed -i 's/enforcing/disabled/' /etc/selinux/config
7.设置文件描述符(调优)
echo 'ulimit -SHn 102400' >> /etc/rc.local ##/etc/profile亦可
cat >> /etc/security/limits.conf << EOF
* soft nofile 65535
* hard nofile 65535
EOF
8.内核参数优化(调优)
cat >> /etc/sysctl.conf << EOF
kernel.pid_max = 4194303 ##用户打开最大进程数,2^22-1
vm.swappiness = 0 ##关闭交换分区
EOF
9.更换yum源
所有节点生成Ceph yum源文件
cat << EOF | tee /etc/yum.repos.d/ceph.repo
[Ceph]
name=Ceph packages for $basearch
baseurl=https://mirrors.tuna.tsinghua.edu.cn/ceph/rpm-nautilus/el7/x86_64/
enabled=1
gpgcheck=1
type=rpm-md
gpgkey=https://download.ceph.com/keys/release.asc
priority=1
[Ceph-noarch]
name=Ceph noarch packages
baseurl=https://mirrors.tuna.tsinghua.edu.cn/ceph/rpm-nautilus/el7/noarch
enabled=1
gpgcheck=1
type=rpm-md
gpgkey=https://download.ceph.com/keys/release.asc
priority=1
[ceph-source]
name=Ceph source packages
baseurl=https://mirrors.tuna.tsinghua.edu.cn/ceph/rpm-nautilus/el7/SRPMS
enabled=1
gpgcheck=1
type=rpm-md
gpgkey=https://download.ceph.com/keys/release.asc
EOF
重建仓库缓存
yum makecache
10.安装基础软件包
yum -y install epel-release.noarch
yum -y install vim net-tools bash-completion unzip sshpass wget
11.调优,按需选择
echo "8192" > /sys/block/sd[x]/queue/read_ahead_kb
##预读策略,预读大小echo "deadine" > /sys/block/sd[x]/queue/scheduler
##适用于HDD的IO调度echo "noop" > /sys/block/sd[x]/queue/scheduler
##适用于SSD的IO调度
一般第二块磁盘的名称为sdb,可以使用lsblk
查看
虚拟机可以直接选择
echo "8192" > /sys/block/sdb/queue/read_ahead_kb
echo "noop" > /sys/block/sdb/queue/scheduler
12.安装时间同步软件chrony(注意部分系统可能已经内置该软件)
yum -y install chrony
vim /etc/chrony.conf
- 注释掉公网的时间同步服务器域名
- 插入【server [IP] iburst】,此处[IP]为主节点IP,此操作每个节点都要执行
- 插入【allow [IP段/MASK]】,[IP]为集群所在的网络地址(网段),仅主节点执行
- 插入【local stratum 10】,设置本地同步级别为10(1-15)*,而且即便本机时间没有向上级同步,也允许客户端向本地获取时间,仅主节点执行
![图片[3]-Ceph环境部署 – 北梦の博客-北梦の博客](https://wpstatic.b52m.cn/wp-content/uploads/2025/04/批注-2025-04-27-16585712.png)
重启chrony服务
systemctl restart chronyd
测试同步服务
chronyc sources -v
MS项的值为^时同步即为同步成功
![图片[4]-Ceph环境部署 – 北梦の博客-北梦の博客](https://wpstatic.b52m.cn/wp-content/uploads/2025/04/图片1.png)
第一次可能会失败,重试几次即可
vim /etc/chrony.conf
- 注释掉公网的时间同步服务器域名
- 插入【server [IP] iburst】,此处[IP]为主节点IP,此操作每个节点都要执行
- 插入【allow [IP段/MASK]】,[IP]为集群所在的网络地址(网段),仅主节点执行
- 插入【local stratum 10】,设置本地同步级别为10(1-15)*,而且即便本机时间没有向上级同步,也允许客户端向本地获取时间,仅主节点执行
![图片[5]-Ceph环境部署 – 北梦の博客-北梦の博客](https://wpstatic.b52m.cn/wp-content/uploads/2025/04/图片2.png)
重启chrony服务
systemctl restart chronyd
测试同步服务
chronyc sources -v
![图片[6]-Ceph环境部署 – 北梦の博客-北梦の博客](https://wpstatic.b52m.cn/wp-content/uploads/2025/04/图片3.png)
第一次可能会失败,重试几次即可
13.配置免密互信,使节点间可直接登录,为之后Ceph-Deploy批量配置作准备*
ssh-keygen
按3次回车在默认路径生成无口令的密钥对
ssh-copy-id cephduser@zy-ceph01
ssh-copy-id cephduser@zy-ceph02
ssh-copy-id cephduser@zy-ceph03
在每一台分别输入上述3条命令,输入用户cephduser
的密码
![图片[7]-Ceph环境部署 – 北梦の博客-北梦の博客](https://wpstatic.b52m.cn/wp-content/uploads/2025/04/图片2-1.png)
测试免密登录
ssh cephduser@zy-ceph01
ssh cephduser@zy-ceph02
ssh cephduser@zy-ceph03
可以直接登录就说明没有问题
![图片[8]-Ceph环境部署 – 北梦の博客-北梦の博客](https://wpstatic.b52m.cn/wp-content/uploads/2025/04/图片1-1.png)
ssh-copy-id root@zy-ceph01
ssh-copy-id root@zy-ceph02
ssh-copy-id root@zy-ceph03
在每一台分别输入上述3条命令,输入用户root
的密码
测试免密登录
ssh root@zy-ceph01
ssh root@zy-ceph02
ssh root@zy-ceph03
可以直接通信就说明没有问题
14.在所有节点安装Ceph-Deploy(v2.0.1)
检查Ceph-Deploy版本是否为2.0.1
yum list|grep ceph-deploy
![图片[9]-Ceph环境部署 – 北梦の博客-北梦の博客](https://wpstatic.b52m.cn/wp-content/uploads/2025/04/屏幕截图-2025-04-27-183318.png)
安装Ceph-Deploy
yum install -y ceph-deploy
开始部署
ceph-deploy命令概述
常用命令 | 描述 |
new | 开始部署一个新课ceph存储集群,并生成CLUSTER.conf集群配置文件和keyring认证文件 |
install | 在远程主机上安装ceph相关的软件包,可以通过–release指定安装的版本 |
rgw | 管理RGW守护进程 |
mgr | 管理MGR守护进程 |
mds | 管理MDS守护进程 |
mon | 管理MON守护进程 |
gatherkeys | 收集用于配置新节点的身份验证密钥 |
disk | 管理远程主机的硬盘 |
osd | 在远程主机上准备数据磁盘;即为指定主机的指定数据盘绑定OSD服务 |
repo | 仓库定义配置管理 |
admin | 分发集群配置文件和admin认证文件到远程主机 |
config | 分发集群配置文件ceph.conf到远程主机,或从远程主机拷贝此文件 |
uninstall | 删除远程主机的Ceph软件包 |
purgedata | 删除远程主机的Ceph数据,包括/var/lib/ceph和/etc/ceph下的内容 |
purge | 删除远程主机的Ceph软件包和数据,相当于uninstall+purgedata |
forgetkeys | 遗忘(删除)本地主机所有的验证keyring,包括client.admin、monitor、bootstrap等认证文件 |
pkg | 管理远程主机的安装包 |
calamari | 安装和配置 Calamari 节点;它是一个web监控平台;需要预配置包含该软件包的软件仓库 |
cephduser
用户执行,如果使用root用户可以省略su - cephduser
1.在主节点中创建一个目录,用于存放Ceph生成的配置文件、密钥对
将Ceph01作为主节点,后续部署操作将在此节点,以ceph_cluster为工作目录执行ceph-deploy命令(主节点)
mkdir ceph_cluster && cd ceph_cluster
安装pip(如果已经安装可以省略)(主节点)
curl https://cdn.b52m.cn/static/get-pip-py2.py -o get-pip.py
python get-pip.py
curl https://cdn.b52m.cn/static/get-pip.py -o get-pip.py
python get-pip.py
2.在主节点上创建Ceph集群
创建MON服务,并在当前工作目录生成配置文件等(主节点)
ceph-deploy new zy-ceph01 zy-ceph02
![图片[10]-Ceph环境部署 – 北梦の博客-北梦の博客](https://wpstatic.b52m.cn/wp-content/uploads/2025/04/图片3-1.png)
3.在集群配置目录下的集群配置文件【ceph.conf】的global段中定义网段
- public_network = 192.168.110.0/24 ##用于客户端访问集群服务
- cluster_network = 172.18.1.0/24 ##用于内部数据同步(如OSD数据复制、心跳检测)
- 修改集群副本数为“2”(可选,针对低配实验环境)
- osd pool default size = 2
修改配置文件(主节点),例如:
vim ceph.conf
[global]
fsid = 9ad73733-1d25-4c44-abf4-7f27c0c3c473
mon_initial_members = zy-ceph01, zy-ceph02
mon_host = 192.168.110.101,192.168.110.102
auth_cluster_required = cephx
auth_service_required = cephx
auth_client_required = cephx
public_network = 192.168.110.0/24
cluster_network = 172.18.1.0/24
推送配置到所有节点(主节点)
ceph-deploy --overwrite-conf config push zy-ceph01 zy-ceph02
重启服务(每个节点都要执行)
sudo systemctl restart ceph-*.target
4.为每个节点安装Ceph
ceph-deploy install --no-adjust-repos --nogpgcheck zy-ceph01 zy-ceph02
批量安装,同时安装ceph-radosgw,–no-adjust-repos:安装过程中不调整为官方源
sudo yum install -y ceph
手动为所有节点执行,并行操作效率更高
查询版本
ceph -v
![图片[11]-Ceph环境部署 – 北梦の博客-北梦の博客](https://wpstatic.b52m.cn/wp-content/uploads/2025/04/图片5.png)
5.初始化mon,生成检测集群所需的密钥
ceph-deploy mon create-initial
![图片[12]-Ceph环境部署 – 北梦の博客-北梦の博客](https://wpstatic.b52m.cn/wp-content/uploads/2025/04/图片6.png)
执行ls
可以发现目录下多了几个keyring
文件
查询服务状态
主节点
sudo systemctl status ceph-mon@zy-ceph01
![图片[13]-Ceph环境部署 – 北梦の博客-北梦の博客](https://wpstatic.b52m.cn/wp-content/uploads/2025/04/图片7.png)
子节点
sudo systemctl status ceph-mon@zy-ceph02
![图片[14]-Ceph环境部署 – 北梦の博客-北梦の博客](https://wpstatic.b52m.cn/wp-content/uploads/2025/04/图片8.png)
分发集群配置和admin认证文件
ceph-deploy admin zy-ceph01 zy-ceph02
![图片[15]-Ceph环境部署 – 北梦の博客-北梦の博客](https://wpstatic.b52m.cn/wp-content/uploads/2025/04/图片9.png)
可以使用ls /etc/ceph
查看是否生成ceph.conf
文件
![图片[16]-Ceph环境部署 – 北梦の博客-北梦の博客](https://wpstatic.b52m.cn/wp-content/uploads/2025/04/图片10.png)
生成的客户端管理员密钥需要对主节点的集群部署用户开放权限
如果为root用户可以省略
sudo setfacl -m u:cephduser:rw /etc/ceph/ceph.client.admin.keyring
使用ls -l /etc/ceph
可以发现权限多出了个+
- 完成后可在mon节点输入
ceph -s
查询集群状态 - 也可在mon节点查找带mon关键字的进程和其侦听的端口,默认端口为6789
- 可为mon配置DNS轮询或3层负载均衡,但通常mon压力较小,不会成为性能瓶颈
![图片[17]-Ceph环境部署 – 北梦の博客-北梦の博客](https://wpstatic.b52m.cn/wp-content/uploads/2025/04/图片11.png)
![图片[18]-Ceph环境部署 – 北梦の博客-北梦の博客](https://wpstatic.b52m.cn/wp-content/uploads/2025/04/图片12.png)
6.部署mgr,用于监测集群
ceph-deploy mgr create zy-ceph01 zy-ceph02
![图片[19]-Ceph环境部署 – 北梦の博客-北梦の博客](https://wpstatic.b52m.cn/wp-content/uploads/2025/04/图片13.png)
ceph-deploy
命令时都处于正确的工作目录;另外执行此命令不需要sudo提权查询状态
ceph -s
![图片[20]-Ceph环境部署 – 北梦の博客-北梦の博客](https://wpstatic.b52m.cn/wp-content/uploads/2025/04/图片14.png)
sudo ss -antlup | grep mgr
![图片[21]-Ceph环境部署 – 北梦の博客-北梦の博客](https://wpstatic.b52m.cn/wp-content/uploads/2025/04/图片15.png)
7.在主节点上开始部署Ceph-osd(请确保集群后端网络正常)
列出该节点的块设备
ceph-deploy disk list zy-ceph02
![图片[22]-Ceph环境部署 – 北梦の博客-北梦の博客](https://wpstatic.b52m.cn/wp-content/uploads/2025/04/图片16.png)
可以看见第二块磁盘的名称为sdb
擦除指定主机的指定磁盘(可选)
ceph-deploy disk zap zy-ceph01 /dev/sdb
ceph-deploy disk zap zy-ceph02 /dev/sdb
每个主机的每个业务硬盘创建OSD,要在主节点上为每个节点的每个业务硬盘执行
ceph-deploy osd create --data /dev/sdb zy-ceph01
ceph-deploy osd create --data /dev/sdb zy-ceph02
![图片[23]-Ceph环境部署 – 北梦の博客-北梦の博客](https://wpstatic.b52m.cn/wp-content/uploads/2025/04/图片17.png)
![图片[24]-Ceph环境部署 – 北梦の博客-北梦の博客](https://wpstatic.b52m.cn/wp-content/uploads/2025/04/图片18.png)
查询状态
ceph -s
![图片[25]-Ceph环境部署 – 北梦の博客-北梦の博客](https://wpstatic.b52m.cn/wp-content/uploads/2025/04/图片19.png)
可以发现osd为2
安装完毕,检查集群状态
- 输入ceph -s,检查集群状态信息;或输入ceph df,检查集群容量信息
- 集群信息:可能会有一个告警,因为集群运行在不安全模式下,执行ceph config set mon auth_allow_insecure_global_id_reclaim false命令关闭不安全模式即可
- 服务信息:包含mon、mgr、mds、osd、rgw,且数量符合节点配置
- 数据信息:存储池、PG、对象的数量,已用和可用的容量、PG状态等符合实配
- 输入ceph osd tree,可查询到集群各节点的osd服务和它们对应的硬盘
- 若其它节点中没有密钥,可向主节点手动请求&同步密钥(可选)
- cd /etc/ceph ##以此目录为工作目录,输入pwd可查询
- ceph-deploy gatherkeys {hostname} ##向主节点同步;其它所有节点都要执行
- 完成Ceph部署,建议重新登录用户以刷新环境变量
![图片[26]-Ceph环境部署 – 北梦の博客-北梦の博客](https://wpstatic.b52m.cn/wp-content/uploads/2025/04/图片20.png)
![图片[27]-Ceph环境部署 – 北梦の博客-北梦の博客](https://wpstatic.b52m.cn/wp-content/uploads/2025/04/图片21.png)
- 如果安装过程中碰到难以解决的阻碍,可以尝试执行以下命令清理环境,然后
重新部署Ceph - ceph-deploy purgedata {hostname1} [{hostnameX}]
- ceph-deploy forgetkeys
- 还可以执行下列命令,将本地安装包一并清理
- ceph-deploy purge {hostname1} [{hostnameX}]
- 如果需要删除某OSD或移除对应的块设备,必须遵循以下流程:
- 剔除设备:ceph osd out {osd-num}
- 不允许批量操作,除非存储池中没有重要数据;
- 停止服务:sudo systemctl stop ceph-osd@{osd-num}
- 擦除数据(可选):ceph osd purge {osd-num} –yes-i-really-mean-it
- 移出 crush map:ceph osd crush remove {name}
- 删除 ceph auth 记录:ceph auth del osd.{osd-num}
- 移出 osdmap:ceph osd rm {osd-num}
- 手动删除 ceph.conf 中的记录(如果有)
- 必须等待集群自愈后(PG 状态为 active+clean)才能继续删除*
- 剔除设备:ceph osd out {osd-num}
8.扩展Ceph集群
扩展Ceph集群
仅安装ceph通用组件和mon组件(节点3执行)
yum install ceph-common ceph-mon
为集群添加mon节点(主节点执行)
ceph-deploy mon add zy-ceph03
查验集群mon节点状态,将返回JSON数据;带上--format json-pretty
参数会格式化显示,可读性更佳(主节点执行)
ceph quorum_status --format json-pretty
或者使用ceph -s
(主节点执行)
![图片[28]-Ceph环境部署 – 北梦の博客-北梦の博客](https://wpstatic.b52m.cn/wp-content/uploads/2025/04/图片23.png)
扩展Ceph-mgr节点
仅安装ceph-mgr组件(节点3执行)
sudo yum install ceph-mgr -y
为集群添加mgr节点(主节点执行)
ceph-deploy mgr create zy-ceph03
![图片[29]-Ceph环境部署 – 北梦の博客-北梦の博客](https://wpstatic.b52m.cn/wp-content/uploads/2025/04/图片24.png)
查询运行状态(节点3执行)
sudo systemctl status ceph-mgr@zy-ceph03.service
![图片[30]-Ceph环境部署 – 北梦の博客-北梦の博客](https://wpstatic.b52m.cn/wp-content/uploads/2025/04/图片25.png)
分发集群配置和admin认证文件(主节点执行)
ceph-deploy admin zy-ceph03
扩展Ceph-osd节点
安装osd组件(节点3执行)
sudo yum install ceph -y
创建OSD(主节点执行)
ceph-deploy osd create --data /dev/sdb zy-ceph03
![图片[31]-Ceph环境部署 – 北梦の博客-北梦の博客](https://wpstatic.b52m.cn/wp-content/uploads/2025/04/图片26.png)
查验集群mgr节点状态(主节点执行)
ceph -s
![图片[32]-Ceph环境部署 – 北梦の博客-北梦の博客](https://wpstatic.b52m.cn/wp-content/uploads/2025/04/图片27.png)
修改Ceph配置(主节点执行)
ceph config set mon auth_allow_insecure_global_id_reclaim false
如果报错可能是因为/etc/ceph/ceph.conf
文件少了个换行
![图片[33]-Ceph环境部署 – 北梦の博客-北梦の博客](https://wpstatic.b52m.cn/wp-content/uploads/2025/04/图片281.png)
执行以下命令
echo "" >> /etc/ceph/ceph.conf
添加后保存重新运行命令
再次查验集群mgr节点状态(主节点执行)
ceph -s
![图片[34]-Ceph环境部署 – 北梦の博客-北梦の博客](https://wpstatic.b52m.cn/wp-content/uploads/2025/04/图片28.png)
运行后health
显示为HEALTH_OK
9.管理Ceph-RBD存储池
ceph osd pool create {poolName} {pgNum} [pgpNum]
- 创建存储池,pg数量与osd数量正相关,此处建议设为16-64;pgp数量通常与pg一致,可缺省
ceph osd pool create testpool 16
![图片[35]-Ceph环境部署 – 北梦の博客-北梦の博客](https://wpstatic.b52m.cn/wp-content/uploads/2025/04/图片29.png)
ceph osd pool ls [detail]
- 列出存储池,带上detail表示列出细节
ceph osd pool ls
![图片[36]-Ceph环境部署 – 北梦の博客-北梦の博客](https://wpstatic.b52m.cn/wp-content/uploads/2025/04/图片30.png)
10.利用rados命令直接使用存储池
rados put {oid} {fileName} -p {poolName}
- 指定oid并上传文件对象到存储池
rados put testfile /bin/rbd -p testpool
查询Ceph存储使用情况
ceph df
![图片[37]-Ceph环境部署 – 北梦の博客-北梦の博客](https://wpstatic.b52m.cn/wp-content/uploads/2025/04/图片31.png)
rados ls -p {poolName}
- 列出该存储池中的对象
rados ls -p testpool
![图片[38]-Ceph环境部署 – 北梦の博客-北梦の博客](https://wpstatic.b52m.cn/wp-content/uploads/2025/04/图片32.png)
ceph osd map {poolName} {oid}
- 查询存储池中指定对象的映射信息
ceph osd map testpool testfile
![图片[39]-Ceph环境部署 – 北梦の博客-北梦の博客](https://wpstatic.b52m.cn/wp-content/uploads/2025/04/图片33.png)
rados get {oid} -p {poolName} {fileName}
- 从存储池中获取对象并保存到本地文件系统
rados get testfile -p testpool ./newfile
![图片[40]-Ceph环境部署 – 北梦の博客-北梦の博客](https://wpstatic.b52m.cn/wp-content/uploads/2025/04/图片35.png)
rados rm {oid} -p {poolName}
- 从存储池中删除对象
rados rm testfile -p testpool
rados ls -p testpool
![图片[41]-Ceph环境部署 – 北梦の博客-北梦の博客](https://wpstatic.b52m.cn/wp-content/uploads/2025/04/图片36.png)
ceph osd pool delete –yes-i-really-really-mean-it
- 删除存储池
<pool-name>
: 要删除的存储池的名称。在命令中需要重复两次,这是为了确保你确实想要删除这个存储池。--yes-i-really-really-mean-it
: 这是一个确认标志,表示你确实想要删除这个存储池。Ceph要求你明确确认这个操作,以防止误操作。
ceph osd pool delete testpool testpool --yes-i-really-really-mean-it
使用ceph osd pool ls
查询存储池
如果出现以下错误可以尝试
![图片[42]-Ceph环境部署 – 北梦の博客-北梦の博客](https://wpstatic.b52m.cn/wp-content/uploads/2025/04/批注-2025-04-28-150027.png)
使用命令临时启用池删除功能
ceph tell mon.* injectargs --mon_allow_pool_delete=true
mon.*
:表示对所有 Monitor 节点生效。injectargs
:用于动态修改 Monitor 的配置。
执行完重新删除即可
恢复配置(可选)
ceph tell mon.* injectargs --mon_allow_pool_delete=false
永久修改配置(可选)
如果你希望永久允许池删除,可以修改 Ceph 的配置文件(ceph.conf
),在 [mon]
部分添加以下配置:
[mon]
mon_allow_pool_delete = true
然后重启 Monitor 服务以使配置生效:
sudo systemctl restart ceph-mon.target
11.RBD业务测试
创建Ceph-RBD存储池(在主节点工作目录下操作)
ceph osd pool create {poolName} {pgNum} {pgpNum}
- pg数量与osd数量正相关,此处建议设为16-64;pgp数量通常与pg一致,可缺省
ceph osd pool create rpdpool 16
使用ceph osd pool ls
查询存储池
将存储池关联为RBD应用类型
ceph osd pool application enable {poolName} {appName}
- 应用名可选cephfs、rbd、rgw,此处为rbd
ceph osd pool application enable rpdpool rbd
rbd pool init -p {poolName}
- 初始化存储池(只针对rbd类型)
rbd pool init -p rpdpool
在存储池中创建1G容量映像
rbd create {poolName/imgName} -s 1G
- 后续可用rbd resize扩容
rbd create rpdpool/sqldb -s 1G
rbd info {poolName/imgName}
- 查询映像信息
rbd info rpdpool/sqldb
![图片[43]-Ceph环境部署 – 北梦の博客-北梦の博客](https://wpstatic.b52m.cn/wp-content/uploads/2025/04/批注-2025-04-28-155629.png)
客户机测试
再次克隆一台虚拟机,做好环境准备,目前机器:
主机名 | NIC1(存储前端,要求能通外网)-ens32 | NIC2(存储后端)-ens33 |
zy-ceph01 | 192.168.110.101/24 | 172.18.1.101/24 |
zy-ceph02 | 192.168.110.102/24 | 172.18.1.102/24 |
zy-ceph03 | 192.168.110.103/24 | 172.18.1.103/24 |
kehu | 192.168.110.104/24 | 172.18.1.104/24 |
若要在客户端访问RBD,则需要安装ceph-common,客户端和集群块设备之间并非使用iSCSI协议沟通,而是通过Linux内核(所以客户端不能为Windows)
安装ceph-common(节点4执行)
yum install -y ceph-common.x86_64
在主节点复制集群配置文件到客户端,客户端利用其中的信息访问集群(主节点执行)
scp -p /etc/ceph/ceph.conf root@192.168.110.104:/etc/ceph/
复制密钥到客户端,生产环境下建议限制客户端访问密钥的权限(主节点执行)
scp -p /etc/ceph/ceph.client.admin.keyring root@192.168.110.104:/etc/ceph
![图片[44]-Ceph环境部署 – 北梦の博客-北梦の博客](https://wpstatic.b52m.cn/wp-content/uploads/2025/04/批注-2025-04-28-162727.png)
完成后在客户端可输入ceph -s
查询集群状态
![图片[45]-Ceph环境部署 – 北梦の博客-北梦の博客](https://wpstatic.b52m.cn/wp-content/uploads/2025/04/批注-2025-04-28-162819.png)
映射映像
rbd map rpdpool/sqldb
![图片[46]-Ceph环境部署 – 北梦の博客-北梦の博客](https://wpstatic.b52m.cn/wp-content/uploads/2025/04/批注-2025-04-28-163309.png)
执行以下命令
echo "" >> /etc/ceph/ceph.conf
![图片[47]-Ceph环境部署 – 北梦の博客-北梦の博客](https://wpstatic.b52m.cn/wp-content/uploads/2025/04/批注-2025-04-28-163817.png)
- 若客户端的Linux内核版本过旧,则需禁用存储池的部分功能,具体可参考报错回显内容
- rbd info {poolName/imgName} ##查询&确认映像的信息
- rbd feature disable {poolName/imgName} object-map fast-diff deep-flatten ##调整功能
- rbd info {poolName/imgName} ##再次查询&确认映像的信息,确认无误后重新映射
rbd info rpdpool/sqldb
rbd feature disable rpdpool/sqldb object-map fast-diff deep-flatten
rbd info rpdpool/sqldb
rbd map rpdpool/sqldb
![图片[48]-Ceph环境部署 – 北梦の博客-北梦の博客](https://wpstatic.b52m.cn/wp-content/uploads/2025/04/批注-2025-04-28-163949.png)
查询新块设备
lsblk
![图片[49]-Ceph环境部署 – 北梦の博客-北梦の博客](https://wpstatic.b52m.cn/wp-content/uploads/2025/04/批注-2025-04-28-164112.png)
初始化rbd0
mkfs.ext4 /dev/rbd0
![图片[50]-Ceph环境部署 – 北梦の博客-北梦の博客](https://wpstatic.b52m.cn/wp-content/uploads/2025/04/批注-2025-04-28-165027.png)
手动挂载到本地目录
mkdir /mnt/rbd
mount /dev/rbd0 /mnt/rbd
查询挂载状态
df -h
![图片[51]-Ceph环境部署 – 北梦の博客-北梦の博客](https://wpstatic.b52m.cn/wp-content/uploads/2025/04/批注-2025-04-28-165147.png)
自动挂载(可选)
echo "rpdpool/sqldb id=admin,keyring=/etc/ceph/ceph.client.admin.keyring" >> /etc/ceph/rbdmap
使用blkid
查询/dev/rbd0的uuid
![图片[52]-Ceph环境部署 – 北梦の博客-北梦の博客](https://wpstatic.b52m.cn/wp-content/uploads/2025/04/批注-2025-04-28-165549.png)
echo "UUID=db5317e8-8002-4e28-a3a8-a73363d750d3 /mnt/rbd ext4 defaults,_netdev 0 0" >> /etc/fstab
启用rbdmap服务:负责把RBD镜像映射为本地块设备
systemctl enable rbdmap
重启虚拟机查询是否自动挂载
df -h
![图片[53]-Ceph环境部署 – 北梦の博客-北梦の博客](https://wpstatic.b52m.cn/wp-content/uploads/2025/04/批注-2025-04-28-165847.png)
12.RGW业务测试
对象存储没有目录层级结构,而是采用唯一的全局标识符(如 bucket-name/object-key)访问数据,数据以“对象”形式存储,每个对象包含数据、元数据和唯一标识符(如UUID或哈希值)
RGW提供RESTful API,客户端可通过标准的 HTTP/HTTPS 接口完成数据的增删改查操作
部署RGW业务
安装radosgw服务(节点3执行)
yum install -y ceph-radosgw
ceph-deploy [–overwrite-conf] rgw create {hostname}
- 在主节点操作,填写安装了rgw的主机名;可选项–overwrite-conf:覆盖式生成新的配置文件
主节点执行
ceph-deploy rgw create zy-ceph03
![图片[54]-Ceph环境部署 – 北梦の博客-北梦の博客](https://wpstatic.b52m.cn/wp-content/uploads/2025/04/批注-2025-04-28-171814.png)
若节点是新部署的,则需要复制集群配置文件(主节点执行)
scp -p /etc/ceph/ceph.conf /etc/ceph/ceph.client.admin.keyring root@zy-ceph03:/etc/ceph/
查询集群状态(主节点执行)
ceph -s
- 也可在rgw节点查找带radosgw关键字的进程和其侦听的端口,访问rgw节点的该端口能得到对象存储API相关的xml配置信息
- 生产环境建议至少部署 3 个 RGW,并通过负载均衡器(如 Nginx、HAProxy)对外提供服务
![图片[55]-Ceph环境部署 – 北梦の博客-北梦の博客](https://wpstatic.b52m.cn/wp-content/uploads/2025/04/批注-2025-04-28-172046.png)
主节点创建 RADOSGW 用户(主节点执行)
radosgw-admin user create --uid="testuser" --display-name="Test User"
access_key
和 secret_key
"keys": [
{
"user": "testuser",
"access_key": "WXNHPPBGZJE7M3H7W60Q",
"secret_key": "jClXsbl06sDegwl6rc6akCjNG99c7D2JhqdADp6B"
}
],
客户端安装和配置awscli(节点3执行)
安装awscli,用于访问S3 API
yum install awscli -y
查询awscli版本,验证是否可用
aws –version
配置密钥ID(必填)
- aws configure set aws_access_key_id
<access_key>
aws configure set aws_access_key_id WXNHPPBGZJE7M3H7W60Q
配置密钥(必填)
- aws configure set aws_secret_access_key
<secret_key>
aws configure set aws_secret_access_key jClXsbl06sDegwl6rc6akCjNG99c7D2JhqdADp6B
配置默认区域名称
aws configure set default.region us-east-1
配置默认输出格式
aws configure set default.output_format json
也可以直接输入aws configure
命令,交互式地输入以上信息
使用 awscli 测试 S3 接口
设置环境变量
- export ENDPOINT=http://{RGW节点IP}:7480
export ENDPOINT=http://192.168.110.103:7480
创建 Bucket
aws --endpoint-url $ENDPOINT s3 mb s3://test
![图片[56]-Ceph环境部署 – 北梦の博客-北梦の博客](https://wpstatic.b52m.cn/wp-content/uploads/2025/04/批注-2025-04-28-173258.png)
上传文件
echo 'Hello Ceph RGW!' > test.txt
aws --endpoint-url $ENDPOINT s3 cp test.txt s3://test
![图片[57]-Ceph环境部署 – 北梦の博客-北梦の博客](https://wpstatic.b52m.cn/wp-content/uploads/2025/04/批注-2025-04-28-173357.png)
列出文件
aws --endpoint-url $ENDPOINT s3 ls s3://test
![图片[58]-Ceph环境部署 – 北梦の博客-北梦の博客](https://wpstatic.b52m.cn/wp-content/uploads/2025/04/批注-2025-04-28-173432.png)
下载文件
aws --endpoint-url $ENDPOINT s3 cp s3://test/test.txt ./123.txt
cat 123.txt
![图片[59]-Ceph环境部署 – 北梦の博客-北梦の博客](https://wpstatic.b52m.cn/wp-content/uploads/2025/04/批注-2025-04-28-173520.png)
如果 Bucket 是公共可读的,可直接用浏览器或 curl 访问
curl http://192.168.110.103:7480/test/test.txt
![图片[60]-Ceph环境部署 – 北梦の博客-北梦の博客](https://wpstatic.b52m.cn/wp-content/uploads/2025/04/批注-2025-04-28-173627.png)
设置Bucket为公共可读
aws --endpoint-url $ENDPOINT s3api put-bucket-acl \
--bucket test \
--acl public-read
设置单个Object为公共可读
aws --endpoint-url $ENDPOINT s3api put-object-acl \
--bucket test \
--key test.txt \
--acl public-read
以上操作可能需要等待一定的时间才能生效;访问对象时路径末尾不要加“/”
暂无评论内容