原文地址:https://www.jianshu.com/p/232168a9821c
簡書上看到這個案例,確切說,只是一個確定盤位,更換盤的過程。
文章內容對於HDD 損壞分析是沒有的,故障日誌分析的乾貨也是沒有的。
為什麼要轉發呢?
進入網際網路同學的思維習慣,理解一下 Open Source(Ceph) 存儲下的維護場景,說大一點,這個世界觀和專業存儲SAN設備有很大不同。網際網路,SDS的世界都基本上在用戶態,SCSI中層Error handle 信息都沒有,對標準內核這部分處理,應該也沒有任何改進。僅僅處理壞盤,換盤。
其實也對,盤壞了,就換唄。又不是專業存儲容錯設計,上層業務(多副本)不中斷就是工作目標的全部。只是,剩下的壞盤拿到廠家,問題分析,估計難以「下口「!
看看。學習一下作者的實踐。理解一下場景。
----
原文如下:
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 的目錄裡。
再來查看 PVS 信息。
. 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 Slot 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 Slot
接下來執行下面的命令點亮對應硬碟的指示燈:
sudo ./sas3ircu 0 locate 2:0 on
另外更換完畢後,自然還要執行該命令關掉指示燈:
sudo ./sas3ircu 0 locate 2:0 off
原文學習結束-
是的,開源存儲系統沒有設計深入分析硬碟損壞過程的日誌系統。就是換盤唄!但,還是希望未來做分布式存儲的廠家專業起來,加入SAN存儲的經驗和積累。
內核SCSI日誌收集,復位容錯應該加入分布式存儲,SDS存儲。畢竟對於HDD,shit happenis !
另外,Ceph的設計要深入學習學習,一個分布式集群為重投入的存儲設計,底層打磨雖然不好,但它是PB級廉價私有雲的首選建設start point。遊戲,金融,電信的私有雲團隊都在用它。