Red Hat 8.5.0-18 部署ceph文件系统
# 一、环境准备(所有节点执行)
## 1. 系统初始化
# 关闭 SELinux
sudo sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
sudo setenforce 0
# 关闭防火墙
sudo systemctl stop firewalld
sudo systemctl disable firewalld
# 禁用 Swap
sudo swapoff -a
sudo sed -i '/swap/s/^/#/' /etc/fstab
# 配置主机名(每个节点分别设置)
sudo hostnamectl set-hostname node1 # 在 node2/node3 分别改为 node2/node3
# 配置 hosts 文件
sudo tee -a /etc/hosts <<EOF
192.168.1.101 node1
192.168.1.102 node2
192.168.1.103 node3
EOF
## 2. 配置网络(所有节点)
# 配置静态 IP(以 node1 为例)
sudo nmcli connection modify eth0 ipv4.addresses 192.168.1.101/24
sudo nmcli connection modify eth0 ipv4.gateway 192.168.1.1
sudo nmcli connection modify eth0 ipv4.dns "8.8.8.8 8.8.4.4"
sudo nmcli connection modify eth0 ipv4.method manual
sudo nmcli connection up eth0
## 3. 安装依赖包
sudo dnf install -y chrony python3-pip lvm2 openssh-server
sudo systemctl enable --now chronyd sshd
# 配置时钟同步
sudo chronyc sources
## 4. 配置免密登录(在 node1 执行)
ssh-keygen -t ed25519 -N "" -f ~/.ssh/id_ed25519
for node in node1 node2 node3; do
ssh-copy-id -o StrictHostKeyChecking=no $node
done
## 5. 磁盘准备(所有节点)
# 查看 NVMe 设备
ls /dev/nvme*n1
# 清除磁盘分区信息
for i in {0..23}; do
sudo wipefs -a /dev/nvme${i}n1
done
# 创建 LVM 卷组和逻辑卷
sudo pvcreate /dev/nvme[0-23]n1
sudo vgcreate ceph-vg /dev/nvme[0-23]n1
sudo lvcreate -l 100%VG -n ceph-lv ceph-vg
# 二、部署 Ceph 集群(在 node1 执行)
## 1. 添加 Ceph 仓库
sudo tee /etc/yum.repos.d/ceph.repo <<EOF
[ceph]
name=Ceph packages for \$basearch
baseurl=https://download.ceph.com/rpm-quincy/el8/\$basearch
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://download.ceph.com/rpm-quincy/el8/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://download.ceph.com/rpm-quincy/el8/SRPMS
enabled=0
gpgcheck=1
type=rpm-md
gpgkey=https://download.ceph.com/keys/release.asc
priority=1
EOF
## 2. 安装 ceph-deploy
sudo dnf install -y ceph-deploy
## 3. 初始化集群
mkdir -p ~/ceph-cluster && cd ~/ceph-cluster
ceph-deploy new node1 node2 node3
## 4. 配置 Ceph
cat <<EOF | tee -a ceph.conf
public_network = 192.168.1.0/24
cluster_network = 192.168.1.0/24
osd_pool_default_size = 3
osd_pool_default_min_size = 2
osd_objectstore = bluestore
bluestore_cache_size_ssd = 4294967296
bluestore_cache_kv_ratio = 0.05
bluestore_cache_meta_ratio = 0.05
EOF
## 5. 安装 Ceph 组件
ceph-deploy install --release quincy node1 node2 node3
## 6. 部署 Monitor 节点
ceph-deploy mon create-initial
## 7. 部署 Admin 节点
ceph-deploy admin node1 node2 node3
for node in node1 node2 node3; do
ssh $node "sudo chmod +r /etc/ceph/ceph.client.admin.keyring"
done
# 三、部署 OSD(在 node1 执行)
for node in node1 node2 node3; do
ssh $node "sudo lvchange -ay ceph-vg/ceph-lv"
ceph-deploy osd create --data /dev/ceph-vg/ceph-lv $node
done
# 验证 OSD 状态
ceph osd tree
# 四、部署 MGR(在 node1 执行)
ceph-deploy mgr create node1 node2 node3
# 启用 Dashboard
ceph mgr module enable dashboard
ceph dashboard create-self-signed-cert
ceph config set mgr mgr/dashboard/server_addr 0.0.0.0
# 创建管理员用户
ceph dashboard ac-user-create admin admin administrator
# 五、部署 CephFS(在 node1 执行)
## 1. 创建存储池
ceph osd pool create cephfs-metadata 256 256 replicated
ceph osd pool create cephfs-data 2560 2560 replicated
## 2. 启用存储池应用
ceph osd pool application enable cephfs-metadata cephfs
ceph osd pool application enable cephfs-data cephfs
## 3. 创建文件系统
ceph fs new mycephfs cephfs-metadata cephfs-data
## 4. 部署 MDS
ceph-deploy mds create node1 node2 node3
# 设置活跃 MDS 数量
ceph fs set mycephfs max_mds 1
# 验证 MDS 状态
ceph mds stat
# 六、性能优化(所有节点)
## 1. 配置 NVMe
sudo tee /etc/modprobe.d/nvme.conf <<EOF
options nvme_core io_queue_size=1024
EOF
sudo dracut -f
## 2. 配置系统参数
sudo tee /etc/sysctl.d/99-ceph.conf <<EOF
net.ipv4.tcp_fin_timeout = 30
net.ipv4.tcp_window_scaling = 1
net.ipv4.tcp_tw_reuse = 1
net.core.rmem_max = 16777216
net.core.wmem_max = 16777216
EOF
sudo sysctl --system
## 3. Ceph 性能调优
ceph config set osd osd_op_threads 16
ceph config set osd osd_disk_threads 4
ceph config set mds mds_cache_size 16384
# 重启服务
for node in node1 node2 node3; do
ssh $node "sudo systemctl restart ceph-osd.target ceph-mds.target"
done
# 七、验证部署
ceph -s
ceph fs status mycephfs
# 测试挂载
sudo mkdir -p /mnt/cephfs-test
sudo mount.ceph node1:6789,node2:6789,node3:6789:/ /mnt/cephfs-test -o name=admin,secretfile=/etc/ceph/ceph.client.admin.keyring
df -h /mnt/cephfs-test
部署说明
关键注意事项
Red Hat 特殊配置:
- 使用
dnf
替代yum
作为包管理器 - 需确保系统已注册到 Red Hat Subscription Manager 或配置了本地源
- SELinux 必须禁用,否则会导致 Ceph 服务权限问题
- 使用
存储池规划:
- 元数据池(cephfs-metadata)使用较小的 PG 数量(256)
- 数据池(cephfs-data)根据 OSD 数量计算 PG 数量,确保数据均匀分布
服务验证:
- 执行
ceph -s
确保集群状态为HEALTH_OK
- 执行
ceph fs status mycephfs
验证文件系统状态 - 测试挂载后创建文件验证读写功能
- 执行
防火墙配置:
- 生产环境建议不要完全关闭防火墙,而是开放必要端口:
bash
sudo firewall-cmd --permanent --add-port=6789/tcp # Monitor sudo firewall-cmd --permanent --add-port=6800-7300/tcp # OSD sudo firewall-cmd --reload
- 生产环境建议不要完全关闭防火墙,而是开放必要端口:
故障排查
- 集群健康问题:使用
ceph health detail
查看具体错误 - OSD 启动失败:检查磁盘权限和 LVM 卷状态
- MDS 状态异常:查看
/var/log/ceph/ceph-mds-node1.log
日志文件
完成部署后,你可以通过 Ceph Dashboard 监控集群状态,默认访问地址为 https://node1:8443
,使用创建的 admin 用户登录。