Red Hat Training
A Red Hat training course is available for Red Hat Ceph Storage
5.4. 替换 OSD 驱动器
Ceph 专为容错设计,这意味着它可以在 degraded
状态下运行,而不丢失数据。因此,即使数据存储驱动器失败,Ceph 也能运行。在故障驱动器的上下文中,degraded
状态意味着存储在其他 OSD 上的数据的额外副本将自动回填到集群中的其他 OSD。不过,如果发生这种情况,请替换失败的 OSD 驱动器,并手动重新创建 OSD。
当驱动器失败时,Ceph 会将该 OSD 报告为 down
:
HEALTH_WARN 1/3 in osds are down osd.0 is down since epoch 23, last address 192.168.106.220:6800/11080
Ceph 也可以因为网络或权限问题将 OSD 标记为 down
。详情请查看 第 5.1.3 节 “个或更多 OSD 发生故障”。
现代服务器通常使用热插拔驱动器进行部署,以便您可以将失败的驱动器替换为新的驱动器,而无需关闭节点。整个流程包括这些步骤:
- 从 Ceph 集群移除 OSD。详情请参阅 从 Ceph 集群删除 OSD 过程。
- 替换驱动器。详情请查看 替换 Physical Drive 部分。
- 将 OSD 添加到集群。详情请参阅 在 Ceph 集群中添加 OSD。
开始前
确定哪个 OSD 为
down
:# ceph osd tree | grep -i down ID WEIGHT TYPE NAME UP/DOWN REWEIGHT PRIMARY-AFFINITY 0 0.00999 osd.0 down 1.00000 1.00000
确保 OSD 进程已经停止。从 OSD 节点运行以下命令:
# systemctl status ceph-osd@<OSD-number>
使用标记为
down
的 OSD 的 ID 替换<OSD-number>
,例如:# systemctl status ceph-osd@osd.0 ... Active: inactive (dead)
如果
ceph-osd
守护进程正在运行。如需有关对标记为down
的 OSD 进行故障排除(它们对应的ceph-osd
守护进程正在运行)的更多详细信息,请参阅 第 5.1.3 节 “个或更多 OSD 发生故障”。
步骤:从 Ceph 集群中删除 OSD
将 OSD 标记为
out
:# ceph osd out osd.<OSD-number>
使用标记为
down
的 OSD 的 ID 替换<OSD-number>
,例如:# ceph osd out osd.0 marked out osd.0.
注意如果 OSD 是
down
,当它没有从 OSD 接收任何心跳数据包时,Ceph 会在 600 秒后自动将其标记为out
。发生这种情况时,具有故障 OSD 数据副本的其他 OSD 开始回填,以确保集群中存在所需的副本数。当集群回填时,集群将处于degraded
状态。确保故障 OSD 正在回填。输出将包含类似如下的信息:
# ceph -w | grep backfill 2017-06-02 04:48:03.403872 mon.0 [INF] pgmap v10293282: 431 pgs: 1 active+undersized+degraded+remapped+backfilling, 28 active+undersized+degraded, 49 active+undersized+degraded+remapped+wait_backfill, 59 stale+active+clean, 294 active+clean; 72347 MB data, 101302 MB used, 1624 GB / 1722 GB avail; 227 kB/s rd, 1358 B/s wr, 12 op/s; 10626/35917 objects degraded (29.585%); 6757/35917 objects misplaced (18.813%); 63500 kB/s, 15 objects/s recovering 2017-06-02 04:48:04.414397 mon.0 [INF] pgmap v10293283: 431 pgs: 2 active+undersized+degraded+remapped+backfilling, 75 active+undersized+degraded+remapped+wait_backfill, 59 stale+active+clean, 295 active+clean; 72347 MB data, 101398 MB used, 1623 GB / 1722 GB avail; 969 kB/s rd, 6778 B/s wr, 32 op/s; 10626/35917 objects degraded (29.585%); 10580/35917 objects misplaced (29.457%); 125 MB/s, 31 objects/s recovering 2017-06-02 04:48:00.380063 osd.1 [INF] 0.6f starting backfill to osd.0 from (0'0,0'0] MAX to 2521'166639 2017-06-02 04:48:00.380139 osd.1 [INF] 0.48 starting backfill to osd.0 from (0'0,0'0] MAX to 2513'43079 2017-06-02 04:48:00.380260 osd.1 [INF] 0.d starting backfill to osd.0 from (0'0,0'0] MAX to 2513'136847 2017-06-02 04:48:00.380849 osd.1 [INF] 0.71 starting backfill to osd.0 from (0'0,0'0] MAX to 2331'28496 2017-06-02 04:48:00.381027 osd.1 [INF] 0.51 starting backfill to osd.0 from (0'0,0'0] MAX to 2513'87544
从 CRUSH map 移除 OSD:
# ceph osd crush remove osd.<OSD-number>
使用标记为
down
的 OSD 的 ID 替换<OSD-number>
,例如:# ceph osd crush remove osd.0 removed item id 0 name 'osd.0' from crush map
移除与 OSD 相关的身份验证密钥:
# ceph auth del osd.<OSD-number>
使用标记为
down
的 OSD 的 ID 替换<OSD-number>
,例如:# ceph auth del osd.0 updated
从 Ceph 存储集群中移除 OSD:
# ceph osd rm osd.<OSD-number>
使用标记为
down
的 OSD 的 ID 替换<OSD-number>
,例如:# ceph osd rm osd.0 removed osd.0
如果您已成功删除了 OSD,以下命令的输出中不存在它:
# ceph osd tree
卸载失败的驱动器:
# umount /var/lib/ceph/osd/<cluster-name>-<OSD-number>
指定集群的名称和 OSD 的 ID,例如:
# umount /var/lib/ceph/osd/ceph-0/
如果您成功卸载了驱动器,以下命令输出中不存在该驱动器:
# df -h
步骤: 替换物理驱动器
有关替换物理驱动器的详情,请查看硬件节点的文档。
- 如果驱动器热插拔,请将失败的驱动器替换为新驱动器。
- 如果驱动器不可热插拔并且节点包含多个 OSD,您可能需要关闭整个节点并替换物理驱动器。考虑阻止集群回填。详情请查看 第 5.2 节 “停止并启动重新平衡”。
-
当驱动器显示在
/dev/
目录中时,记录驱动器路径。 - 如果要手动添加 OSD,找到 OSD 驱动器并格式化磁盘。
步骤:将 OSD 添加到 Ceph 集群
再次添加 OSD。
如果您使用 Ansible 部署集群,请从 Ceph 管理服务器再次运行
ceph-ansible
playbook:# ansible-playbook /usr/share/ceph-ansible site.yml
- 如果您手动添加 OSD,请参阅 Red Hat Ceph Storage 3 的 _Administration Guide_e 中的使用命令行界面添加 OSD 部分。
确保 CRUSH 层次结构准确:
# ceph osd tree
如果您对 CRUSH 层次结构中的 OSD 的位置不满意,请将 OSD 移到所需的位置:
ceph osd crush move <bucket-to-move> <bucket-type>=<parent-bucket>
例如,将位于
sdd:row1
的存储桶移动到根存储桶:# ceph osd crush move ssd:row1 root=ssd:root
另请参阅
- 第 5.1.3 节 “个或更多 OSD 发生故障”
- 《红帽 Ceph 存储 3 管理指南 》中的 管理集群大小 章节
- Red Hat Enterprise Linux 的 Red Hat Ceph Storage 3 安装指南或Ubuntu 的安装指南