6. 存储池配置与CephFS创建 ceph version 14.2.22

说明:配置Ceph存储池和创建CephFS文件系统。创建专用的CRUSH规则,为SSD和HDD设备分别优化数据放置策略,并使用纠删码技术提高存储效率。

6.1 CRUSH规则管理

说明:CRUSH(Controlled Replication Under Scalable Hashing)是Ceph的核心算法,它决定了数据如何在集群中分布。CRUSH规则定义了数据的放置策略,影响数据的可靠性和性能。

# 查看现有CRUSH规则
ceph osd crush rule ls

该命令列出集群中所有已定义的CRUSH规则。默认情况下,Ceph会有一个名为replicated_rule的规则。

# 查看规则详情
ceph osd crush rule dump replicated_rule

此命令显示指定规则(这里是replicated_rule)的详细配置,包括规则ID、名称、类型、最小/最大副本数以及数据放置步骤。

# 删除规则(如需要)
# ceph osd crush rule rm <rule-name>

用于删除不再需要的CRUSH规则。注意:不能删除正在被存储池使用的规则。

6.2 纠删码配置

说明:纠删码(Erasure Coding,EC)是一种数据保护技术,比传统的多副本复制更节省存储空间。它将数据分割成多个数据块(k),并计算额外的校验块(m),只要有k个块可用,就能恢复完整数据。

# 查看现有纠删码配置
ceph osd erasure-code-profile ls

列出所有已定义的纠删码配置文件。默认会有一个名为default的配置。

# 查看默认纠删码配置详情
ceph osd erasure-code-profile get default

显示默认纠删码配置的详细参数。通常默认配置为k=2, m=1,意味着数据分成2块,加1块校验块。

# 创建自定义纠删码配置
ceph osd erasure-code-profile set ec_profile_8_2_host_4096 \
  k=8 \
  m=2 \
  plugin=jerasure \
  technique=reed_sol_van \
  crush-failure-domain=host \
  crush-device-class=hdd \
  crush-root=default \
  stripe_unit=4096 \
  --force

创建名为ec_profile_8_2_host_4096的纠删码配置,各参数说明:

  • k=8:数据分成8块
  • m=2:生成2个校验块
  • plugin=jerasure:使用jerasure编码库
  • technique=reed_sol_van:使用Reed-Solomon编码算法
  • crush-failure-domain=host:确保数据和校验块分布在不同主机上,提高容错性
  • crush-device-class=hdd:只使用HDD设备存储这些数据
  • crush-root=default:在默认CRUSH树中选择设备
  • stripe_unit=4096:条带单元大小为4096字节
  • --force:强制创建,即使有些参数可能不是最优的

这个8+2的配置意味着数据存储效率提高了约20%,同时可以承受任意两个分片的丢失。

# 查看创建的纠删码配置
ceph osd erasure-code-profile get ec_profile_8_2_host_4096

验证新创建的纠删码配置参数是否符合预期。

6.3 为SSD和HDD创建专用CRUSH规则

说明:为了优化性能,通常会根据存储介质类型(SSD/HDD)创建不同的CRUSH规则,以便将不同类型的数据放置在最合适的设备上。

# 创建SSD专用CRUSH规则
ceph osd crush rule create-replicated ssd_rule default host ssd

创建名为ssd_rule的复制规则,参数说明:

  • default:使用默认CRUSH树
  • host:副本将分布在不同的主机上
  • ssd:只选择SSD类型的设备

这个规则将用于元数据池,确保元数据存储在高速的SSD上,提高元数据操作的性能。

# 创建HDD纠删码CRUSH规则
ceph osd crush rule create-erasure hdd_ec_rule ec_profile_8_2_host_4096

创建名为hdd_ec_rule的纠删码规则,使用前面定义的ec_profile_8_2_host_4096纠删码配置。这个规则会将数据分布在HDD设备上,因为纠删码配置中指定了crush-device-class=hdd

这个规则将用于数据池,利用纠删码提高存储效率,同时将数据存储在成本较低的HDD上。

# 验证规则创建
ceph osd crush rule dump ssd_rule
ceph osd crush rule dump hdd_ec_rule

查看创建的规则详情,确保配置正确。在输出中,应该能看到ssd_rule使用default~ssd作为数据源,而hdd_ec_rule使用default~hdd作为数据源。

6.4 创建CephFS存储池

说明:CephFS需要两个存储池:一个用于存储元数据,一个用于存储文件数据。通常元数据池使用SSD以提高性能,数据池使用HDD以降低成本。

# 创建元数据池(使用SSD)
ceph osd pool create cephfs_metadata 512 512 replicated

创建名为cephfs_metadata的复制池,用于存储文件系统元数据。

  • 512 512:分别指定PG(放置组)和PGP(放置组伙伴)的数量
  • replicated:使用复制模式而非纠删码
ceph osd pool set cephfs_metadata size 3

设置元数据池的副本数为3,提高数据安全性。元数据对文件系统至关重要,因此使用更高的冗余度。

ceph osd pool set cephfs_metadata crush_rule ssd_rule

将元数据池绑定到前面创建的ssd_rule,确保元数据存储在SSD上,提高元数据操作性能。

ceph osd pool application enable cephfs_metadata cephfs

将池标记为CephFS应用使用,这是Luminous版本后的要求,用于标识池的用途。

# 验证元数据池配置
ceph osd pool get cephfs_metadata crush_rule

确认元数据池使用了正确的CRUSH规则(应该是ssd_rule)。

# 创建数据池(使用HDD,纠删码)
ceph osd pool create cephfs_data_ec 4096 4096 erasure ec_profile_8_2_host_4096 hdd_ec_rule

创建名为cephfs_data_ec的纠删码池,用于存储文件数据。

  • 4096 4096:指定PG和PGP数量,数据池通常需要更多的PG
  • erasure:使用纠删码模式,节省存储空间
  • ec_profile_8_2_host_4096:使用前面创建的纠删码配置
  • hdd_ec_rule:使用前面创建的HDD专用CRUSH规则
# 允许EC池覆盖写
ceph osd pool set cephfs_data_ec allow_ec_overwrites true

默认情况下,纠删码池不支持部分对象修改(覆盖写),这个设置启用了该功能。这对CephFS是必需的,因为文件系统需要能够修改文件的部分内容。

# 创建CephFS文件系统
ceph fs new cephfs_ec cephfs_metadata cephfs_data_ec --force

创建名为cephfs_ec的文件系统:

  • cephfs_metadata:指定元数据池
  • cephfs_data_ec:指定数据池
  • --force:强制创建,即使有些配置可能不是最优的
# 验证文件系统创建
ceph fs ls

列出所有创建的文件系统,确认cephfs_ec已成功创建。

6.5 验证存储池配置

说明:创建完成后,需要验证配置是否符合预期,确保元数据和数据分别存储在正确的设备类型上。

# 验证元数据池使用SSD
ceph osd pool get cephfs_metadata crush_rule

确认元数据池使用了正确的CRUSH规则(应该返回ssd_rule)。

ceph osd crush rule dump ssd_rule

查看SSD规则的详细配置,确认它使用了default~ssd作为数据源。

# 验证数据池使用HDD
ceph osd pool get cephfs_data_ec crush_rule

确认数据池使用了正确的CRUSH规则(应该返回hdd_ec_rule)。

ceph osd crush rule dump hdd_ec_rule

查看HDD规则的详细配置,确认它使用了default~hdd作为数据源。

# 查看集群状态
ceph -s

检查整个集群状态,包括新创建的文件系统、存储池和PG状态。应该能看到所有PG处于active+clean状态,表示数据分布正常。

记录OSD盘符 所有节点都执行

ceph-volume lvm list > lvm.list

7. 客户端挂载CephFS

说明:创建好CephFS后,需要在客户端上挂载使用。这里以Ubuntu客户端为例,挂载CephFS文件系统。

7.1 Ubuntu客户端配置

# 安装ceph-common包
apt-get install -y ceph-common

安装Ceph客户端工具包,提供挂载CephFS所需的命令和库。

# 创建挂载点
mkdir -p /mnt/cephfs

创建本地挂载点目录,CephFS文件系统将挂载到这个目录。

# 从Ceph管理节点复制密钥
# 在Ceph管理节点上执行
ceph auth get-key client.admin > admin.secret

在Ceph管理节点上导出admin用户的密钥,用于客户端认证。admin用户拥有对文件系统的完全访问权限。在生产环境中,应该为不同的客户端创建权限更受限的用户。

# 将密钥文件复制到客户端
# scp admin.secret ubuntu-client:/etc/ceph/
# scp ceph.conf ubuntu-client:/etc/ceph/

将密钥文件和Ceph配置文件复制到客户端的/etc/ceph/目录。客户端需要这些文件来连接Ceph集群。

# 在客户端上设置密钥文件权限
chmod 600 /etc/ceph/admin.secret

限制密钥文件的权限,只允许文件所有者读写,提高安全性。

7.2 使用内核驱动挂载

说明:挂载CephFS文件系统。

# 挂载CephFS
sudo mount -t ceph 192.168.1.100:6789,192.168.1.101:6789,192.168.1.102:6789,192.168.1.103:6789,192.168.1.104:6789,192.168.1.105:6789,192.168.1.106:6789:/ /mnt/cephfs -o name=admin,secretfile=/etc/ceph/admin.secret

使用Linux内核的Ceph客户端挂载文件系统:

  • -t ceph:指定文件系统类型为ceph
  • 192.168.1.100:6789,...:指定所有MON节点的IP和端口,提供冗余连接
  • /:挂载CephFS的根目录
  • -o name=admin,secretfile=/etc/ceph/admin.secret:指定认证信息,使用admin用户和密钥文件
# 验证挂载
df -h /mnt/cephfs

显示挂载点的磁盘使用情况,确认挂载成功。应该能看到CephFS的总容量和可用空间。

7.3 设置开机自动挂载

说明:为了确保系统重启后CephFS能自动挂载,需要将挂载配置添加到/etc/fstab文件中。

# 编辑/etc/fstab
echo "192.168.1.100:6789,192.168.1.101:6789,192.168.1.102:6789,192.168.1.103:6789,192.168.1.104:6789,192.168.1.105:6789,192.168.1.106:6789:/ /mnt/cephfs ceph name=admin,secretfile=/etc/ceph/admin.secret,_netdev,noatime 0 0" >> /etc/fstab

将挂载配置添加到fstab,实现开机自动挂载:

  • 192.168.1.100:6789,...:/:指定MON节点和CephFS路径
  • /mnt/cephfs:本地挂载点
  • ceph:文件系统类型
  • name=admin,secretfile=/etc/ceph/admin.secret:认证信息
  • _netdev:标记为网络设备,确保网络准备好后再挂载
  • noatime:不更新文件访问时间,提高性能
  • 0 0:不进行备份和fsck检查

这种配置实现了高效的存储分层:

  • 元数据(如目录结构、文件属性)存储在SSD上,提供快速访问
  • 实际文件数据存储在HDD上,以8+2的纠删码方式节省约20%的存储空间
  • 整个系统仍然保持了高可用性,任何两个节点故障都不会导致数据丢失
<think>好的,我需要帮用户找到在OpenEuler 22.03 SP3系统上安装Ceph 14.2.10版本的详细流程。首先,用户提到的系统版本和Ceph版本比较旧,可能官方文档或社区资源中的最新指南可能不再直接支持,因此需要考虑适配和兼容性问题。 首先,我需要查看提供的引用内容。引用[3]提到在OpenEuler 22.03使用cephadm安装时出现版本不支持的错误,这说明官方cephadm可能不直接兼容OpenEuler 22.03,特别是对于较旧的Ceph版本如14.2.10。引用[5]则提到在OpenEuler 22.03 SP4上使用cephadm bootstrap成功初始化,但用户需要的是SP3和14.2.10版本,可能需要调整步骤。 接下来,我需要考虑用户可能需要的步骤。通常,Ceph的安装流程包括系统准备、安装依赖、配置仓库、部署集群等。由于用户使用的是较旧的Ceph版本,可能需要手动编译或寻找适配的RPM包。引用[4]中提到了源码编译安装OpenStack,或许类似的步骤可以用于Ceph,但需要确认依赖是否满足。 然后,检查用户提供的引用中有无相关步骤。引用[5]提到使用cephadm bootstrap命令,但Ceph 14.2.10可能对应的是Nautilus版本,而cephadm是在较新的Ceph版本(如Octopus 15.2.0之后)引入的。因此,用户可能需要使用传统的ceph-deploy工具,而不是cephadm,这可能需要调整安装方法。 另外,系统依赖方面,需要确保OpenEuler 22.03 SP3的软件包满足Ceph 14.2.10的要求。可能涉及的依赖包括Python版本、库文件等,需参考Ceph官方文档的依赖列表,并针对OpenEuler进行适配,可能需要从源码编译或寻找第三方提供的RPM包。 网络配置也是关键,尤其是防火墙和SELinux设置。引用[5]中提到重启系统使配置生效,这可能涉及内核参数调整或服务启用,需要指导用户进行相应的系统配置。 此外,用户可能需要处理内网或离线环境的问题,如引用[2]提到的内网离线部署,这可能需要预先下载所有依赖包,或者配置本地仓库,确保安装过程中所有组件都能正确获取。 最后,验证安装后的集群状态,包括MON、OSD节点的健康检查,以及功能测试。用户可能还需要解决安装过程中出现的特定错误,如引用[1]中的mon节点添加问题,需要提供相应的故障排除步骤。 总结下来,安装步骤可能包括:系统准备依赖安装、获取Ceph软件包、部署初始Mon节点、添加OSD、配置集群等。需要注意版本适配和可能的源码编译,同时处理依赖和系统配置问题。需要提醒用户注意版本兼容性,并提供替代方案,如使用较新的Ceph版本或调整安装工具。</think>在OpenEuler 22.03 SP3系统上安装Ceph 14.2.10版本的步骤如下: --- ### **1. 系统准备** - **环境要求** 所有节点需满足: - 系统时间同步(使用`chronyd`或`ntpd`) - 主机名解析配置(`/etc/hosts`或DNS) - 关闭防火墙或开放Ceph端口(如6789、6800-7300)[^5] - SELinux设置为`permissive`模式 ```bash sudo setenforce 0 sudo sed -i 's/SELINUX=enforcing/SELINUX=permissive/g' /etc/selinux/config ``` --- ### **2. 安装依赖** Ceph 14.2.10依赖Python 2.7,但OpenEuler 22.03默认使用Python 3,需手动适配: ```bash # 安装基础依赖 sudo dnf install -y gcc-c++ make cmake librados2 librbd1 libuuid-devel \ python3-devel openssl-devel leveldb-devel libblkid-devel ``` --- ### **3. 获取Ceph软件包** 由于官方仓库可能不提供旧版本,需手动编译或使用兼容包: ```bash # 下载Ceph 14.2.10源码 git clone --branch v14.2.10 https://github.com/ceph/ceph.git cd ceph git submodule update --init --recursive # 编译安装(需安装devtoolset-9或更高版本) ./install-deps.sh ./do_cmake.sh make -j$(nproc) sudo make install ``` --- ### **4. 部署Mon节点** 初始化第一个Mon节点: ```bash # 创建Mon目录 sudo mkdir -p /var/lib/ceph/mon/ceph-$(hostname -s) sudo chown -R ceph:ceph /var/lib/ceph # 生成集群密钥 ceph-authtool --create-keyring /tmp/ceph.mon.keyring --gen-key -n mon. --cap mon 'allow *' # 初始化Mon ceph-mon --mkfs -i $(hostname -s) --monmap /tmp/monmap --keyring /tmp/ceph.mon.keyring systemctl start ceph-mon@$(hostname -s) ``` --- ### **5. 添加OSD节点** ```bash # 创建OSD ceph-volume lvm create --data /dev/sdb # 验证OSD状态 ceph osd tree ``` --- ### **6. 验证集群状态** ```bash ceph -s ceph health detail ``` --- ### **注意事项** 1. **版本兼容性**:Ceph 14.2.10未官方支持OpenEuler 22.03,可能需手动解决依赖冲突[^3]。 2. **替代方案**:建议使用更高版本Ceph(如Octopus 15.2.0+)配合`cephadm`工具简化部署[^5]。 3. **离线部署**:若为内网环境,需预先下载所有依赖包并配置本地仓库[^2]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值