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

如何在Linux上配置高可用的虚拟化存储(如Ceph)

Ceph sudo 配置 bash 655    来源:    2025-04-15

在Linux上配置高可用的Ceph虚拟化存储

Ceph是一个开源的分布式存储系统,提供高性能、高可靠性和可扩展性。以下是配置高可用Ceph集群的详细步骤:

1. 准备工作

系统要求

  • 至少3台物理服务器(推荐5台或更多)
  • 每台服务器:
    • 最小4核CPU
    • 8GB RAM(生产环境推荐32GB+)
    • 至少1块SSD用于OSD(生产环境推荐多块)
    • 10Gbps网络(生产环境推荐)

操作系统

  • 推荐使用Ubuntu LTS或CentOS/RHEL

2. 安装前配置

# 在所有节点上执行
sudo apt update && sudo apt upgrade -y  # Ubuntu
# 或
sudo yum update -y  # CentOS/RHEL

# 安装必要工具
sudo apt install -y python3 python3-pip ntp chrony  # Ubuntu
sudo yum install -y python3 python3-pip ntp chrony  # CentOS/RHEL

# 配置NTP时间同步
sudo timedatectl set-ntp true
sudo systemctl enable --now chronyd  # 或 ntpd

3. 安装Ceph

方法一:使用cephadm(推荐)

# 在第一个管理节点上执行
curl --silent --remote-name --location https://github.com/ceph/ceph/raw/octopus/src/cephadm/cephadm
chmod +x cephadm
sudo ./cephadm add-repo --release octopus
sudo ./cephadm install
sudo cephadm install ceph-common

方法二:传统安装(Ubuntu)

wget -q -O- 'https://download.ceph.com/keys/release.asc' | sudo apt-key add -
echo "deb https://download.ceph.com/debian-octopus/ $(lsb_release -sc) main" | sudo tee /etc/apt/sources.list.d/ceph.list
sudo apt update
sudo apt install ceph ceph-common

4. 部署Ceph集群

使用cephadm引导集群

sudo cephadm bootstrap --mon-ip <MONITOR_IP>

传统部署方式

  1. 创建集群配置文件 /etc/ceph/ceph.conf
[global]
fsid = $(uuidgen)
mon initial members = node1,node2,node3
mon host = 10.0.0.1,10.0.0.2,10.0.0.3
public network = 10.0.0.0/24
cluster network = 10.1.0.0/24
auth cluster required = cephx
auth service required = cephx
auth client required = cephx
osd journal size = 1024
osd pool default size = 3
osd pool default min size = 2
osd pool default pg num = 128
osd pool default pgp num = 128
osd crush chooseleaf type = 1
  1. 初始化monitor节点:
sudo mkdir /var/lib/ceph/mon/ceph-$(hostname -s)
sudo ceph-mon --mkfs -i $(hostname -s) --cluster ceph --keyring /etc/ceph/ceph.mon.keyring
sudo systemctl start ceph-mon@$(hostname -s)
sudo systemctl enable ceph-mon@$(hostname -s)

5. 添加OSD(对象存储守护进程)

# 列出可用磁盘
sudo ceph-volume inventory

# 为每个磁盘创建OSD
sudo ceph-volume lvm create --data /dev/sdX

# 或传统方式
sudo ceph-disk prepare --cluster ceph --cluster-uuid $(uuidgen) --fs-type xfs /dev/sdX
sudo ceph-disk activate /dev/sdX1

6. 配置高可用

配置多个MON(监控节点)

# 在其他节点上添加monitor
sudo ceph-deploy mon add node2
sudo ceph-deploy mon add node3

配置MDS(CephFS元数据服务器,可选)

sudo ceph-deploy mds create node1 node2 node3

配置RGW(对象网关,可选)

sudo ceph-deploy rgw create node1

7. 验证集群状态

sudo ceph -s
sudo ceph health
sudo ceph osd tree

8. 创建存储池

# 创建复制池
sudo ceph osd pool create mypool 128 128 replicated

# 或创建纠删码池
sudo ceph osd pool create ecpool 128 128 erasure
sudo ceph osd pool set ecpool allow_ec_overwrites true

9. 配置客户端访问

安装客户端工具

sudo apt install ceph-common  # Ubuntu
sudo yum install ceph-common  # CentOS/RHEL

复制配置文件和管理密钥

sudo scp root@<ceph-admin-node>:/etc/ceph/ceph.conf /etc/ceph/
sudo scp root@<ceph-admin-node>:/etc/ceph/ceph.client.admin.keyring /etc/ceph/

10. 高级配置

配置CRUSH map优化数据分布

sudo ceph osd getcrushmap -o crushmap.txt
# 编辑crushmap.txt
sudo ceph osd setcrushmap -i crushmap.txt

配置自动扩展

sudo ceph mgr module enable pg_autoscaler
sudo ceph osd pool set mypool pg_autoscale_mode on

11. 监控和维护

安装Ceph Dashboard

sudo ceph mgr module enable dashboard
sudo ceph dashboard create-self-signed-cert
sudo ceph dashboard set-login-credentials admin <password>

设置告警

sudo ceph mgr module enable alerts

故障排除

  1. 节点无法加入集群

    • 检查网络连接和防火墙设置
    • 验证时间同步
    • 检查/etc/ceph/ceph.conf配置
  2. OSD状态不正常

    sudo ceph osd repair <osd-id>
    sudo systemctl restart ceph-osd@<osd-id>
    
  3. 监控节点问题

    sudo ceph mon remove <mon-name>
    sudo ceph mon add <mon-name> <ip>
    

最佳实践

  1. 使用专用网络进行集群通信
  2. 为OSD使用SSD或NVMe存储
  3. 保持奇数个MON节点(3或5)
  4. 定期检查集群健康状况
  5. 设置适当的pg_num和pgp_num值
  6. 实施定期备份策略

通过以上步骤,您可以在Linux上建立一个高可用的Ceph虚拟化存储集群,为虚拟化环境提供可靠的存储后端。