插件窝 干货文章 如何在Linux上配置虚拟化存储(如Ceph)

如何在Linux上配置虚拟化存储(如Ceph)

Ceph sudo 节点 集群 873    来源:    2025-04-15

Linux上配置Ceph分布式存储指南

Ceph是一个开源的、统一的分布式存储系统,提供对象存储、块存储和文件系统存储功能。以下是配置Ceph存储集群的详细步骤:

1. 系统准备

硬件要求

  • 至少3个节点(推荐5个以上用于生产环境)
  • 每个节点建议:
    • 4核CPU或更多
    • 8GB内存或更多
    • 至少1块SSD用于OSD(数据盘)
    • 1块SSD用于日志(推荐但不必须)

软件要求

  • 支持的操作系统: CentOS/RHEL 7+, Ubuntu 16.04+, Debian 9+
  • 确保所有节点:
    • 有固定IP地址
    • 主机名已正确配置
    • 可以互相通过主机名通信(建议配置/etc/hosts或DNS)

2. 安装Ceph

在CentOS/RHEL上安装

# 添加Ceph仓库
sudo rpm -Uvh https://download.ceph.com/rpm-luminous/el7/noarch/ceph-release-1-1.el7.noarch.rpm

# 安装Ceph部署工具
sudo yum install -y ceph-deploy

# 在管理节点安装Ceph软件包
sudo yum install -y ceph ceph-radosgw

在Ubuntu/Debian上安装

# 添加Ceph仓库密钥
wget -q -O- 'https://download.ceph.com/keys/release.asc' | sudo apt-key add -

# 添加Ceph仓库
echo deb https://download.ceph.com/debian-luminous/ $(lsb_release -sc) main | sudo tee /etc/apt/sources.list.d/ceph.list

# 更新并安装
sudo apt update
sudo apt install -y ceph-deploy ceph ceph-common

3. 配置Ceph集群

创建集群配置

# 创建集群目录
mkdir my-cluster
cd my-cluster

# 初始化集群(将node1,node2,node3替换为你的节点主机名)
ceph-deploy new node1 node2 node3

# 编辑ceph.conf配置文件
vi ceph.conf

[global]部分添加/修改以下内容:

osd pool default size = 3
osd pool default min size = 2
public network = {你的公共网络CIDR,如192.168.1.0/24}
cluster network = {你的集群网络CIDR,如192.168.2.0/24}

安装Ceph软件到所有节点

ceph-deploy install node1 node2 node3

初始化monitor节点

ceph-deploy mon create-initial
ceph-deploy admin node1 node2 node3

创建OSD(存储设备)

# 列出每个节点上的磁盘
ceph-deploy disk list node1

# 在每个节点上准备OSD(假设sdb是数据盘)
ceph-deploy osd create --data /dev/sdb node1
ceph-deploy osd create --data /dev/sdb node2
ceph-deploy osd create --data /dev/sdb node3

# 如果有日志盘(如sdc)
ceph-deploy osd create --data /dev/sdb --journal /dev/sdc node1

4. 验证集群状态

# 在任一节点上执行
sudo ceph -s

健康状态应显示HEALTH_OK。如果显示HEALTH_WARN,可能需要等待PG(placement groups)达到active+clean状态。

5. 创建存储池

创建RADOS块设备(RBD)池

# 创建存储池
sudo ceph osd pool create rbd 128

# 初始化池用于RBD
sudo rbd pool init rbd

创建CephFS(需要两个池)

# 创建数据池
sudo ceph osd pool create cephfs_data 128

# 创建元数据池
sudo ceph osd pool create cephfs_metadata 64

# 创建文件系统
sudo ceph fs new cephfs cephfs_metadata cephfs_data

6. 客户端访问配置

RBD块设备使用

# 在客户端安装Ceph客户端
sudo apt install -y ceph-common  # Ubuntu/Debian
sudo yum install -y ceph-common  # CentOS/RHEL

# 复制配置文件和管理密钥
sudo scp node1:/etc/ceph/ceph.conf /etc/ceph/
sudo scp node1:/etc/ceph/ceph.client.admin.keyring /etc/ceph/

# 创建RBD镜像
sudo rbd create myimage --size 1024 --pool rbd

# 映射RBD设备
sudo rbd map myimage --pool rbd

CephFS挂载

# 创建挂载点
sudo mkdir /mnt/cephfs

# 获取密钥
sudo ceph auth get-key client.admin > /etc/ceph/admin.secret

# 挂载CephFS
sudo mount -t ceph node1:6789:/ /mnt/cephfs -o name=admin,secretfile=/etc/ceph/admin.secret

7. 管理命令

常用管理命令

# 集群状态
ceph -s

# OSD状态
ceph osd stat

# 监控状态
ceph mon stat

# 添加新的OSD
ceph-deploy osd create --data /dev/sdX nodeX

# 删除OSD
ceph osd out osd.X
ceph osd crush remove osd.X
ceph auth del osd.X
ceph osd rm osd.X

8. 性能优化建议

  1. 网络分离: 使用独立的集群网络(后端流量)和公共网络(客户端流量)
  2. 日志分离: 将OSD日志放在单独的SSD上
  3. CRUSH调优: 根据硬件配置调整CRUSH map
  4. 缓存层: 考虑为冷热数据配置缓存层
  5. PG数量: 根据集群规模调整PG数量,使用ceph pg calc计算

9. 故障排除

如果遇到问题: - 检查/var/log/ceph/下的日志文件 - 使用ceph health detail获取详细健康信息 - 确保所有节点的NTP服务同步时间 - 确保防火墙允许Ceph端口通信(默认6789, 6800-7300)

以上是Ceph集群的基本配置过程。根据实际环境和需求,可能需要进行更多定制化配置。