ceph 手工部署osd
### ceph 手工部署 OSD 具体步骤详解 Ceph 是一个分布式存储系统,能够提供块存储、对象存储和文件系统服务,并且具有高可用性、可扩展性和自我修复的特点。OSD(Object Storage Daemon)是 Ceph 中的一个重要组成部分,主要负责处理数据的读写操作,并将数据切分为对象存储在硬盘上。本文将详细介绍如何在 Ceph 集群中手工部署 OSD 的过程。 #### 创建 OSD 序号 首先需要确定要部署的 OSD 序号。这一步是为了确保每个 OSD 在集群中的唯一性。可以使用 `ceph osd create` 命令来完成: ```bash ceph osd create 6 ``` 这里假设创建的是序号为 6 的 OSD。 #### 创建目录 接下来,在系统中为即将部署的 OSD 创建对应的目录: ```bash sudo mkdir /var/lib/ceph/osd/ceph-6 ``` 该目录用于存放 OSD 的数据、日志等相关文件。 #### 格式化磁盘 选择一块磁盘进行格式化。在这个例子中,我们选择了 `/dev/sdd` 这块磁盘。为了满足 Ceph 的需求,需要先清除磁盘上的 MBR(Master Boot Record),并创建分区表: ```bash sgdisk --zap-all --clear --mbrtogpt /dev/sdd ``` #### 创建分区 磁盘被格式化后,需要创建两个分区:一个是较小的日志分区(约 5GB),另一个是用于存储数据的大分区。创建日志分区: ```bash sudo sgdisk --new=2:0:+5120M --change-name=2:"cephjournal" --partition-guid=2:819f8d11-edf1-4c14-b165-4b4dc2b18924 --typecode=2:45b0969e-9b03-4f30-b4c6-b4b80ceff106 --mbrtogpt -- /dev/sdd ``` 创建数据分区: ```bash sudo sgdisk --largest-new=1 --change-name=1:"cephdata" --partition-guid=1:9150d3d2-7532-4bd0-a2cf-06d6da8512a9 --typecode=1:89c57f98-2fe5-4dc0-89c1-f3ad0ceff2be --mbrtogpt -- /dev/sdd ``` #### 文件系统创建与挂载 为数据分区创建 XFS 文件系统: ```bash sudo mkfs -t xfs -f -i size=2048 -- /dev/sdd1 ``` 接着,挂载数据分区到之前创建的目录: ```bash sudo mount /dev/sdd1 /var/lib/ceph/osd/ceph-6 ``` #### 配置 OSD 在 `/var/lib/ceph/osd/ceph-6` 目录下创建必要的目录和密钥文件: ```bash ceph-osd -i 6 --mkfs --mkkey --setuser ceph --setgroup ceph ``` #### 添加认证 将新创建的 OSD 认证信息添加到集群中: ```bash sudo ceph auth add osd.6 osd 'allow *' mon 'allow profile osd' -i /var/lib/ceph/osd/ceph-6/keyring ``` #### 创建 sysvinit 文件 创建 sysvinit 文件,以便后续管理 OSD 的启动和停止: ```bash sudo touch /var/lib/ceph/osd/ceph-6/sysvinit ``` #### 日志分区配置 删除默认的日志文件,并根据磁盘 UUID 创建软链接: ```bash rm -rf /var/lib/ceph/osd/ceph-6/journal ln -s /dev/disk/by-partuuid/819f8d11-edf1-4c14-b165-4b4dc2b18924 /var/lib/ceph/osd/ceph-6/journal ``` #### 修改 journal_uuid 编辑 journal_uuid 文件,以确保其值与实际使用的日志分区 UUID 相匹配: ```bash vim /var/lib/ceph/osd/ceph-6/journal_uuid cat journal_uuid 819f8d11-edf1-4c14-b165-4b4dc2b18924 ``` #### 创建 journal 创建 journal 文件,以供 OSD 使用: ```bash ceph-osd -i 6 --mkjournal ``` #### 更改权限 设置 OSD 目录的权限,确保 Ceph 用户组拥有正确的访问权限: ```bash sudo chown -R ceph:ceph /var/lib/ceph/osd/ceph-6 ``` #### 添加到 crush map 将新的 OSD 添加到 crush map 中: ```bash sudo ceph osd crush add osd.6 0.0146 host=node1 ``` 这里的 `node1` 应替换为实际节点的名称。 #### 启动 OSD 启动新部署的 OSD: ```bash sudo systemctl start ceph-osd@6.service ``` 至此,手工部署 OSD 的整个过程就完成了。通过上述步骤,可以在 Ceph 集群中成功部署一个新的 OSD,并使其成为集群的一部分。需要注意的是,这些命令和步骤需要根据实际情况进行调整,比如磁盘的选择、分区大小等参数都需要根据具体环境来决定。此外,为了保证集群的稳定性和安全性,建议在实际操作前对所有步骤进行详细的规划和测试。