Red Hat 8.5.0-18 部署ceph文件系统 - 实践

news/2025/9/20 15:58:25/文章来源:https://www.cnblogs.com/yxysuanfa/p/19102527

# 一、环境准备(所有节点执行)

## 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

部署说明

关键注意事项

  1. Red Hat 特殊配置

    • 使用 dnf 替代 yum 作为包管理器
    • 需确保系统已注册到 Red Hat Subscription Manager 或配置了本地源
    • SELinux 必须禁用,否则会导致 Ceph 服务权限困难
  2. 存储池规划

    • 元数据池(cephfs-metadata)使用较小的 PG 数量(256)
    • 数据池(cephfs-data)根据 OSD 数量计算 PG 数量,确保数据均匀分布
  3. 服务验证

    • 执行 ceph -s 确保集群状态为 HEALTH_OK
    • 执行 ceph fs status mycephfs 验证文件系统状态
    • 测试挂载后创建文件验证读写功能
  4. 防火墙配置

    • 生产环境建议不要完全关闭防火墙,而是开放必要端口:

      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 用户登录。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/908421.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

kettle从入门到精通 第108课 ETL之kettle 国产麒麟系统安装kettle教程

场景:最近vip群小伙伴在国产麒麟系统安装kettle时遇到无法正常启动的问题,今天周末远程连麦小伙伴一起解决此问题,梳理成章,方便后续小伙伴。 1、报错信息 国产麒麟系统安装kettle时遇到无法正常启动,提示错误信息…

部署 Squid 代理服务

安装 Squid: sudo apt install squid编辑配置文件: sudoedit /etc/squid/squid.confhttp_port 3128启动 Squid 服务 sudo systemctl start squid sudo systemctl enable squid

k8s--etcd - 详解

k8s--etcd - 详解pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Cou…

HBase 的自带命令行工具 hbase shell 的基本使用

1. 进入 HBase Shell 首先,通过以下命令连接到您的 HBase 集群命令行界面: hbase shell 连接成功后,提示符会变为 hbase(main):001:0>,表示您已经可以在里面执行 HBase 专属命令了。 2. 查看集群状态和表列表(…

市场交易反心理特征之一:太过完美而不敢买入

市场交易的最大特点就是“反心理”性。经常盘后看起来非常简单的事情,在盘前、盘中都会变得莫名复杂。明明盘前根据自己的交易策略可以轻松选出的牛股,开盘后没买,买了另一个,结果牛股涨停,买的票要么下跌,要么不…

3peak DCDC转换芯片选型列表

Part Number Subcategory VIN (V) Output (V) Max Output Current (A) PackageTPE15017 以太网供电 24~57 / / QFN3X4-19TPM1525 功率级DrMOS 7~140 / 1 SOP8TPM6501 隔离电源 2.5~25 / 1 SOT23-5TPM6501Q 隔离电源 2.…

重塑公司绩效管理的 6 种方法

有远见的公司开始了解绩效管理的真正潜力。通过将传统绩效管理转变为持续绩效管理——建立在定期签到、持续反馈和认可时刻的基础上——公司可以通过让员工发挥最大潜力来优化绩效。 1、通过真实和积极的文化建立信任基…

详细介绍:从“下山”到AI引擎:全面理解梯度下降(上)

详细介绍:从“下山”到AI引擎:全面理解梯度下降(上)pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas&…

flask下的MySQL增删改查

flask下的MySQL增删配置 添加数据 @app.route(/add) def add_data():u = UserInfo()new_user1 = UserInfo(nickname=flask_test1, mobile=13888888888, signature=理想, create_time=datetime.now(), role_id=1)new_us…

tips图解数组名与指针的关系

在图解前需要先了解一下数组退化为指针的相关内容,下面先陈述数组退化为指针的概念、本质、以及什么情况下数组会退化为指针,什么情况下不会 概念定义 "数组名退化为指针"是C/C++语言中的一个重要特性,指…

Confluent-Kafka-go 发布超过 1M 消息失败困难克服

Confluent-Kafka-go 发布超过 1M 消息失败困难克服2025-09-20 15:34 tlnshuju 阅读(0) 评论(0) 收藏 举报pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; displ…

mysql查看数据库大小,可以通过查询系统表来实现

要查看 MySQL 数据库的大小,可以通过查询系统表 information_schema.tables 来实现,以下是具体方法:查看所有数据库的大小 sql SELECT table_schema AS 数据库名, ROUND(SUM(data_length + index_length) / 1024 / …

TPP21206替代MPQ8633,12A电流同步降压DCDC

TPP21206是2.7V至16V输入,集成远端反馈和精确电流保护的同步降压变换器,稳态可持续输出12A的负载电流,广泛应用于服务器、交换机和光模块等应用中。TPP21206采用了思瑞浦自主研发的定频COT控制架构,在实现传统自适应…

组件重新装载时 useSWR 会发起请求

默认情况下,组件重新装载时 useSWR 会发起请求。这是 SWR "stale-while-revalidate" 设计哲学的一部分。 重新装载时的行为 function MyComponent() {const { data } = useSWR(/api/data, fetcher)// 组件卸…

kettle插件-kettle数据清洗插件,轻松处理脏数据

前面我们已经介绍了很多kettle插件,每个kettle插件都它的使用场景,我们在做数据同步ETL的过程中,势必要处理一些脏数据,把数据质量提高。今天我们一起来学习这这款数据清洗插件。 1、转换设计 1)生成记录 模拟数据…

Java 如何在 Excel 中添加超链接?使用 Spire.XLS for Java 轻松实现 - 教程

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

中二

以下内容由 Gemini 2.5 Pro 生成好的,我们来对这个“核心引擎”进行详细的规格说明和功能解构。 “观察-推断-建模”引擎 (ODM Engine) 技术规格书 1. 核心架构 (Core Architecture) 该引擎并非一个单一功能的处理器,…

RocketMQ vs RabbitMQ vs Kafka - 教程

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

实用指南:设计模式概述

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …