Ceph删除/添加故障OSD(ceph-deploy)

本文介绍了一种解决Ceph集群中OSD(osd.5)因硬盘故障导致无法启动的方法。通过删除故障OSD并重新准备及激活新的OSD,最终使Ceph集群恢复正常运行。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

今天osd.5起不来,发现是硬盘的问题

[root@ceph-osd-1 ceph-cluster]# ceph osd tree
# id    weight  type name       up/down reweight
-1      11.63   root default
-2      5.26            host ceph-osd-1
0       5.26                    osd.0   up      1
-3      2.73            host ceph-osd-2
1       0.91                    osd.1   up      1
2       0.91                    osd.2   up      1
3       0.91                    osd.3   up      1
-4      3.64            host ceph-osd-3
4       1.82                    osd.4   up      1
5       0.91                    osd.5   down    1
6       0.91                    osd.6   up      1

更换磁盘后,将osd.5删除,然后通过ceph-deploy重新添加

[root@ceph-osd-1 ceph-cluster]# ceph osd rm 5
[root@ceph-osd-1 ceph-cluster]# ceph-deploy osd prepare 10.10.200.165:/osd5
[root@ceph-osd-1 ceph-cluster]# ceph-deploy osd activate 10.10.200.165:/osd5

在执行activate的时候,提示以下错误

[10.10.200.165][WARNIN] Error EINVAL: entity osd.5 exists but key does not match
[10.10.200.165][WARNIN] Traceback (most recent call last):
[10.10.200.165][WARNIN]   File "/usr/sbin/ceph-disk", line 2591, in <module>
[10.10.200.165][WARNIN]     main()
[10.10.200.165][WARNIN]   File "/usr/sbin/ceph-disk", line 2569, in main
[10.10.200.165][WARNIN]     args.func(args)
[10.10.200.165][WARNIN]   File "/usr/sbin/ceph-disk", line 1929, in main_activate
[10.10.200.165][WARNIN]     init=args.mark_init,
[10.10.200.165][WARNIN]   File "/usr/sbin/ceph-disk", line 1761, in activate_dir
[10.10.200.165][WARNIN]     (osd_id, cluster) = activate(path, activate_key_template, init)
[10.10.200.165][WARNIN]   File "/usr/sbin/ceph-disk", line 1897, in activate
[10.10.200.165][WARNIN]     keyring=keyring,
[10.10.200.165][WARNIN]   File "/usr/sbin/ceph-disk", line 1520, in auth_key
[10.10.200.165][WARNIN]     'mon', 'allow profile osd',
[10.10.200.165][WARNIN]   File "/usr/sbin/ceph-disk", line 304, in command_check_call
[10.10.200.165][WARNIN]     return subprocess.check_call(arguments)
[10.10.200.165][WARNIN]   File "/usr/lib64/python2.6/subprocess.py", line 505, in check_call
[10.10.200.165][WARNIN]     raise CalledProcessError(retcode, cmd)
[10.10.200.165][WARNIN] subprocess.CalledProcessError: Command '['/usr/bin/ceph', '--cluster', 'ceph', '--name', 'client.bootstrap-osd', '--keyring', '/var/lib/ceph/bootstrap-osd/ceph.keyring', 'auth', 'add', 'osd.5', '-i', '/osd5/keyring', 'osd', 'allow *', 'mon', 'allow profile osd']' returned non-zero exit status 22
[10.10.200.165][ERROR ] RuntimeError: command returned non-zero exit status: 1
[ceph_deploy][ERROR ] RuntimeError: Failed to execute command: ceph-disk -v activate --mark-init sysvinit --mount /osd5

解决办法:

在删除故障OSD的时候,执行以下操作

[root@ceph-osd-1 ceph-cluster]# ceph auth del osd.5
updated
[root@ceph-osd-1 ceph-cluster]# ceph osd rm 5
removed osd.5

而后在执行

[root@ceph-osd-1 ceph-cluster]# ceph-deploy prepare 10.10.200.165:/osd5
[root@ceph-osd-1 ceph-cluster]# ceph-deploy activate 10.10.200.165:/osd5

查看osd状态

[root@ceph-osd-1 ceph-cluster]# ceph osd tree
# id    weight  type name       up/down reweight
-1      11.63   root default
-2      5.26            host ceph-osd-1
0       5.26                    osd.0   up      1
-3      2.73            host ceph-osd-2
1       0.91                    osd.1   up      1
2       0.91                    osd.2   up      1
3       0.91                    osd.3   up      1
-4      3.64            host ceph-osd-3
4       1.82                    osd.4   up      1
5       0.91                    osd.5   up      1
6       0.91                    osd.6   up      1

查看ceph状态,已经开始recovery操作

[root@ceph-osd-1 ceph-cluster]# ceph -s
    cluster 374b8b6b-8b47-4d14-af47-f383d42af2ba
     health HEALTH_WARN 7 pgs backfill; 8 pgs backfilling; 1 pgs degraded; 6 pgs recovering; 34 pgs recovery_wait; 55 pgs stuck unclean; recovery 15753/191906 objects degraded (8.209%)
     monmap e1: 1 mons at {ceph-osd-1=10.10.200.163:6789/0}, election epoch 1, quorum 0 ceph-osd-1
     osdmap e371: 7 osds: 7 up, 7 in
      pgmap v52585: 704 pgs, 7 pools, 251 GB data, 61957 objects
            800 GB used, 11105 GB / 11905 GB avail
            15753/191906 objects degraded (8.209%)
                  34 active+recovery_wait
                 649 active+clean
                   7 active+remapped+wait_backfill
                   1 active+degraded+remapped+backfilling
                   6 active+recovering
                   7 active+remapped+backfilling
recovery io 8150 kB/s, 1 objects/s
  client io 2037 B/s wr, 0 op/s


<think>好的,用户的问题是关于ceph-deploy初始化集群的命令语法和使用方法,涉及三个节点ceph01、ceph02、ceph03。首先,我需要确认ceph-deploy的基本用法,特别是初始化新集群的步骤。用户可能遇到了命令语法错误,所以需要详细说明正确的命令结构。ceph-deploynew命令用于创建初始配置,通常需要在管理节点执行,指定集群节点的名称。例如,ceph-deploy newceph01 ceph02ceph03,这会生成一个ceph.conf文件。但需要提醒用户,这一步可能只需指定第一个mon节点,如ceph01,其他节点可能在后续步骤中添加。 接下来,用户可能需要安装Ceph软件包,使用ceph-deploy install命令,将节点列表包括进去。然后,部署初始Monitor和管理器,这一步需要确认节点名称是否正确,以及网络配置是否合适,比如public network的设置。 之后是OSD的创建,用户需要准备磁盘,并确保路径正确。这里要注意磁盘设备的选择,避免覆盖重要数据。最后是部署MetadataServer(如果使用CephFS),但用户的问题可能集中在初始化阶段,所以这部分可能作为补充信息。用户可能还遇到一些常见问题,比如权限问题、SSH无密码登录配置、防火墙设置等。需要提醒用户检查这些方面。此外,引用中的内容涉及分区和文件系统创建,可能与OSD准备相关,需要确保磁盘正确分区并初始化。 需要确保回答结构清晰,分步骤说明,并给出示例命令,同时指出可能需要注意的配置项,如public_network。还要生成相关问题,帮助用户深入后续步骤和故障排除。</think>### ceph-deploy集群初始化步骤 1. **创建集群配置** 在管理节点执行以下命令生成初始配置文件: ```bash ceph-deploy new ceph01 ceph02 ceph03 ``` 这会创建包含MON节点的`ceph.conf`文件,建议添加public网络配置: ```bash echo "public_network = 10.10.10.0/24" >> ceph.conf ``` 2. **安装Ceph软件包** ```bash ceph-deploy install --no-adjust-repos ceph01 ceph02 ceph03 ``` 3. **部署初始Monitor** ```bash ceph-deploy mon create-initial ``` 4. **部署OSD存储** 需先准备干净磁盘(如/dev/sdb): ```bash ceph-deploy osd create ceph01 --data /dev/sdb ceph-deploy osd create ceph02 --data /dev/sdb ceph-deploy osd create ceph03 --data /dev/sdb ``` 5. **部署MGR监控服务** ```bash ceph-deploy mgr create ceph01 ceph02 ceph03 ``` [^1]: 引用中的磁盘分区操作与OSD初始化过程相关,需确保目标磁盘无重要数据
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值