部署CephFS文件存储
针对 3 台机器(每台 24 块 7.62TB NVMe SSD)部署 CephFS 的场景,以下是包含下载安装包在内的完整详细步骤,基于 Ceph Quincy(稳定版)和 Ubuntu 22.04 系统:
一、环境规划
- 节点角色:3 个节点均作为
admin
、monitor
、osd
节点(小型集群合并部署),同时选择 1 个节点作为mds
(元数据服务器) - 节点信息:
- node1: 192.168.1.101
- node2: 192.168.1.102
- node3: 192.168.1.103
- 存储配置:每台 24 块 NVMe SSD(设备路径
/dev/nvme0n1
至/dev/nvme23n1
)
二、前期准备(所有节点执行)
1. 系统基础配置
# 更新系统
sudo apt update && sudo apt upgrade -y# 关闭防火墙(生产环境建议配置规则)
sudo ufw disable# 禁用SELinux(Ubuntu默认无SELinux,可跳过)
sudo setenforce 0 2>/dev/null# 配置主机名解析
sudo tee -a /etc/hosts <<EOF
192.168.1.101 node1
192.168.1.102 node2
192.168.1.103 node3
EOF# 配置免密登录(在node1执行,分发密钥到其他节点)
ssh-keygen -t ed25519 -N "" -f ~/.ssh/id_ed25519
for node in node2 node3; dossh-copy-id $node
done
2. 安装依赖与 Ceph 仓库
# 安装依赖工具
sudo apt install -y chrony python3-pip lvm2# 添加Ceph官方仓库
sudo curl --silent --remote-name --location https://github.com/ceph/ceph/releases/download/v17.2.6/ceph-deploy_17.2.6_all.deb
sudo dpkg -i ceph-deploy_17.2.6_all.deb
sudo apt install -f -y # 修复依赖# 添加Ceph源
echo "deb https://download.ceph.com/debian-quincy/ $(lsb_release -sc) main" | sudo tee /etc/apt/sources.list.d/ceph.list
wget -q -O- 'https://download.ceph.com/keys/release.asc' | sudo apt-key add -
sudo apt update
三、初始化 Ceph 集群(在 node1 执行)
1. 创建集群工作目录
mkdir -p ~/ceph-cluster && cd ~/ceph-cluster
2. 初始化集群并部署 Monitor
# 初始化集群
ceph-deploy new node1 node2 node3# 调整集群配置(启用NVMe优化)
sudo tee -a ceph.conf <<EOF
osd_pool_default_size = 3 # 3副本(与节点数一致)
osd_pool_default_min_size = 2
osd_max_object_size = 1073741824 # 1GB
bluestore_cache_size_hdd = 0 # 禁用HDD缓存(全NVMe环境)
bluestore_cache_size_ssd = 4294967296 # 4GB SSD缓存
EOF# 部署Monitor并收集密钥
ceph-deploy mon create-initial
3. 部署 Admin 节点
# 分发配置文件和密钥到所有节点
ceph-deploy admin node1 node2 node3# 设置权限
for node in node1 node2 node3; dossh $node "sudo chmod +r /etc/ceph/ceph.client.admin.keyring"
done
四、配置 NVMe SSD 存储(所有节点执行)
1. 准备 NVMe 设备(每块盘单独作为 OSD)
# 清除磁盘分区表(谨慎操作!会清空数据)
for i in {0..23}; dosudo wipefs -a /dev/nvme${i}n1
done# 创建LVM物理卷(可选,推荐使用LVM便于管理)
for i in {0..23}; dosudo pvcreate /dev/nvme${i}n1
done
2. 在 node1 部署 OSD
cd ~/ceph-cluster# 为每个节点创建OSD(每块盘对应1个OSD)
for i in {0..23}; doceph-deploy osd create --data /dev/nvme${i}n1 node1ceph-deploy osd create --data /dev/nvme${i}n1 node2ceph-deploy osd create --data /dev/nvme${i}n1 node3
done# 验证OSD状态(共3×24=72个OSD)
ceph osd tree
五、部署 CephFS(在 node1 执行)
1. 创建 CephFS 存储池
# 计算PG数量:(72 OSD × 100) / 3副本 = 2400 → 向上取整为2560
ceph osd pool create cephfs-metadata 256 # 元数据池(PG数较小)
ceph osd pool create cephfs-data 2560 # 数据池(PG数较大)# 启用池的应用标记
ceph osd pool application enable cephfs-metadata cephfs
ceph osd pool application enable cephfs-data cephfs
2. 创建 CephFS 文件系统
ceph fs new mycephfs cephfs-metadata cephfs-data# 验证文件系统
ceph fs ls
3. 部署 MDS(元数据服务器)
# 在node1部署主MDS,node2/node3部署备用MDS
ceph-deploy mds create node1 node2 node3# 激活MDS(设置最大活跃MDS数量)
ceph fs set mycephfs max_mds 1# 验证MDS状态
ceph mds stat
六、客户端挂载 CephFS
1. 创建客户端访问密钥(在 node1 执行)
# 创建客户端用户
ceph auth get-or-create client.cephfs mon 'allow r' mds 'allow rw' osd 'allow rw pool=cephfs-data, allow rw pool=cephfs-metadata' -o /etc/ceph/ceph.client.cephfs.keyring# 提取密钥
ceph auth get-key client.cephfs > /etc/ceph/ceph.client.cephfs.key
2. 在客户端节点挂载(以 node1 为例)
# 安装客户端工具
sudo apt install -y ceph-fuse# 创建挂载点
sudo mkdir -p /mnt/cephfs# 临时挂载(使用ceph-fuse)
sudo ceph-fuse -n client.cephfs -k /etc/ceph/ceph.client.cephfs.key /mnt/cephfs# 或使用内核挂载(性能更好)
sudo mount.ceph node1:6789,node2:6789,node3:6789:/ /mnt/cephfs -o name=cephfs,secretfile=/etc/ceph/ceph.client.cephfs.key
3. 配置永久挂载
# 编辑fstab
sudo tee -a /etc/fstab <<EOF
node1:6789,node2:6789,node3:6789:/ /mnt/cephfs ceph name=cephfs,secretfile=/etc/ceph/ceph.client.cephfs.key,_netdev 0 0
EOF# 验证挂载
sudo mount -a
df -h | grep /mnt/cephfs
七、性能优化(所有节点执行)
1. NVMe SSD 优化
# 启用TRIM
for i in {0..23}; dosudo systemctl enable fstrim.timersudo fstrim /var/lib/ceph/osd/ceph-* # 对OSD目录执行TRIM
done# 调整NVMe队列深度
echo "options nvme_core io_queue_size=1024" | sudo tee /etc/modprobe.d/nvme.conf
sudo update-initramfs -u
2. Ceph 参数优化
# 调整OSD性能参数
ceph config set osd osd_op_threads 16
ceph config set osd osd_disk_threads 4
ceph config set osd bluestore_throttle_bytes 10737418240 # 10GB# 调整MDS缓存(根据节点内存设置,建议16GB以上)
ceph config set mds mds_cache_size 16384 # 16GB
八、验证与监控
# 查看集群健康状态
ceph -s# 查看CephFS状态
ceph fs status# 性能测试(在挂载点执行)
dd if=/dev/zero of=/mnt/cephfs/test bs=1G count=10 oflag=direct # 测试写性能