Ceph 磁盘损坏现象和解决方法

Ceph 磁盘损坏现象和解决方法
Damaged disks

对于存储系统,磁盘是消耗品,损坏是很常见的,所以这篇文章记录一下 Ceph 中出现磁盘损坏时的现象,以及如何定位和更换损坏的磁盘。

1. 磁盘损坏

1.1 现象

工作环境中出现问题的 Ceph 的数据是双备份的,OSD 35 所在的磁盘出现了坏道,表现出来的现象是 ceph 经常会报出存储在 OSD 35 上的 pg 数据不一致,以及报出 scrub error,以下是 ceph health detail 命令输出新相关信息。

$ ceph health detail......OSD_SCRUB_ERRORS 31 scrub errorsPG_DAMAGED Possible data damage: 5 pgs inconsistent    pg 41.33 is active+clean+inconsistent, acting [35,33]    pg 41.42 is active+clean+inconsistent, acting [29,35]    pg 51.24 is active+clean+inconsistent, acting [35,43]    pg 51.77 is active+clean+inconsistent, acting [28,35]    pg 51.7b is active+clean+inconsistent, acting [35,46]......

1.2 数据状态

因为数据只有双备份,ceph 无法确定哪个备份中的数据是可用的,所以此时虽然显示 pg 状态是 active+clean,但有问题的数据其实是不可用的。

1.3 临时解决方法

作为临时的解决方案,可以执行 ceph pg repair 解决,此时由于磁盘坏道造成不可读的数据会拷贝到其他位置。但这不能从根本上解决问题,磁盘损坏会持续报出类似的错误。

$ ceph pg repair 41.33$ ceph pg repair 41.42$ ceph pg repair 51.24$ ceph pg repair 51.77$ ceph pg repair 51.7b

2. 定位并检查故障磁盘

知道 OSD 35 有问题,但我们现在还不知道对应的是具体哪块磁盘。我们可以登录到对应到 OSD 服务器上查看 OSD 35 的目录名称,并查看 PVS 的对应关系来解决。

$ ceph osd treeID CLASS WEIGHT    TYPE NAME      STATUS REWEIGHT PRI-AFF -1       127.09767 root default                           -5       127.09767     host osd7                          ......33   hdd   5.52599         osd.35     up  1.00000 1.00000 ......

通过这个命令,我们可以知道 OSD.35 是位于 OSD7 这台服务器上。接下来,我们登录到 OSD7 上,并切换为 root 权限。

$ ssh osd7$ sudo -i

然后进入到 OSD.35 的目录里。

# cd /var/lib/ceph/osd/ceph-35

再来查看 PVS 信息。

# pvs -o+pv_used......  PV         VG                                        Fmt  Attr PSize   PFree Used     /dev/sda5  ubuntu-vg                                 lvm2 a--  446.65g    0  446.65g  /dev/sdc   ceph-320de131-5f26-48a7-aa64-c7f08f87cd85 lvm2 a--    5.46t    0    5.46t  ......

好,现在我们终于知道,/dev/sdc 就是 OSD.35

3. 获取磁盘错误信息

我们已经知道是哪个磁盘出错,接下来就要向磁盘的提供商报修,或者联系购买新磁盘了。如果是报修,对方必然要求提供磁盘出错信息,接下来咱们就看一下如何拿到这些信息,这里我们要用到的命令好工具是 SMART monitor tool,Debian 系的系统可以通过 APT 安装:

$ sudo apt install -y smartmontools

RedHat 系的系统用 yum 安装:

$ sudo yum install -y smartmontools

安装完成后用如下命令获取输出信息即可,这里需要注意一下输出中序列号这项信息,这次磁盘的唯一标识,后面会用到:Serial Number: 57J6KA41F6CD

$ sudo smartctl -a /dev/sdcsmartctl 6.5 2016-01-24 r4214 [x86_64-linux-4.4.0-121-generic] (local build)Copyright (C) 2002-16, Bruce Allen, Christian Franke, www.smartmontools.org=== START OF INFORMATION SECTION ===Device Model:     TOSHIBA MG04ACA600ESerial Number:    57J6KA41F6CDLU WWN Device Id: 5 000039 7cb9822beFirmware Version: FS1KUser Capacity:    6,001,175,126,016 bytes [6.00 TB]Sector Sizes:     512 bytes logical, 4096 bytes physicalRotation Rate:    7200 rpmForm Factor:      3.5 inchesDevice is:        Not in smartctl database [for details use: -P showall]ATA Version is:   ATA8-ACS (minor revision not indicated)SATA Version is:  SATA 3.0, 6.0 Gb/s (current: 6.0 Gb/s)Local Time is:    Tue Aug  7 14:46:45 2018 CSTSMART support is: Available - device has SMART capability.SMART support is: Enabled...

4. 点亮硬盘指示灯

最后,存储厂商同意保修,或者购买新硬盘进行更换,都需要知道磁盘具体插在哪个 PCIe 口上。虽然我们已经知道是哪个设备了,本例中是 /dev/sdc,但这依旧不够直观,如果能让坏掉的硬盘的指示灯亮起,那么就非常方便维修人员查找和更换了。这就需要用到 SAS-x integrated RAID configuration utility 了。

该文件没有提供 APT 和 YUM 源的下载方式,只能从网上找到 RPM 或可执行文件,以下链接是该文件的百度云盘地址:
sas3ircu

下载好后,先执行 display 命令,查找全部磁盘信息。

$ sudo ./sas3ircu 0 display......Device is a Hard disk  Enclosure #                             : 2  Slot #                                  : 0  SAS Address                             : 5003048-0-1867-f140  State                                   : Ready (RDY)  Size (in MB)/(in sectors)               : 5723166/11721045167  Manufacturer                            : ATA       Model Number                            : TOSHIBA MG04ACA6  Firmware Revision                       : FS1K  Serial No                               : 57J6KA41F6CD  Unit Serial No(VPD)                     : 57J6KA41F6CD  GUID                                    : 50000397cb9822be  Protocol                                : SATA  Drive Type                              : SATA_HDD......

从输出结果来看,Serial No : 57J6KA41F6CD,和之前 smartctl 查询到的结果一致,那么我们就知道这次磁盘的位置是

  Enclosure #                             : 2  Slot #                                  : 0

接下来执行下面的命令点亮对应硬盘的指示灯:

sudo ./sas3ircu 0 locate 2:0 on

另外更换完毕后,自然还要执行该命令关掉指示灯:

sudo ./sas3ircu 0 locate 2:0 off
文章链接:https://www.sbkko.com/ganhuo-450.html
文章标题:Ceph 磁盘损坏现象和解决方法
文章版权:SBKKO 所发布的内容,部分为原创文章,转载请注明来源,网络转载文章如有侵权请联系我们!

给TA打赏
共{{data.count}}人
人已打赏
干货分享

想通过社交学习外语?这款APP轻松让你和世界各地的母语者交谈

2018-8-9 15:13:00

干货分享

想找免费学术资源?有它就足够了。

2018-8-9 16:32:00

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索