概述
在生產環境中,經常需要對ceph集羣進行一些調優,維護,設備替換等操作,爲了簡化和方便操作,陸續寫過一些簡單的小腳本工具,現整理出來。
共同PG檢測工具
使用場景
在一個雙副本環境中,已經有部分osd離線(down and in)的狀態,此時集羣部分pg處於單副本狀態,此時有另外一些osd設備(硬盤原因,機器原因)需要替換或者離線,預估受影響的pg;或者想查詢出某些osd共同承載了哪些pg。
腳本
在腳本所在目錄要查詢的osd編號寫入warnosdlist中,執行腳本,返回對應的pg編號。
root@mon0:/opt/pgtools# cat warnosdlist
10
15
29
40
66
78
root@mon0:/opt/pgtools# cat check_warnosd_pg
#!/usr/bin/env python
# -*- coding: UTF-8 -*-
import re,os
osd=[]
os.system("""ceph pg dump|grep 2019|grep "]" > pgmap""")
with open ('warnosdlist') as f:
for i in f:
osd.append(i.strip())
with open ('pgmap') as pg:
for p in pg:
info=p.strip()
p1="\d+,\d+"
pa=re.compile(p1)
oid=pa.findall(info)[0]
q="\d+"
qa=re.compile(q)
s=qa.findall(oid)
if s[0] in osd and s[1] in osd:
print p
硬盤溫度/告警級別查詢
原理
本質是利用smartctl工具檢測硬盤相關的幾個參數,直接將命令粘貼到交互界面執行即可。
溫度異常檢測
root@mon0:~# cat hotdisk.sh
#!/bin/bash
lsblk | awk '/disk/{print "/dev/"$1}' | while read dev; do echo -n "$dev : "; smartctl -A $dev | grep Tem|grep 190;echo "";done
告警級別
root@mon0:~# cat hddcheck.sh
#!/bin/bash
lsblk | awk '/disk/{print "/dev/"$1}' | while read dev; do echo -n "$dev : "; smartctl -A $dev | awk '/^ *(5|187|188|197|198)/{if($NF > 0) count++} END {if(count>=4) print "err"; else if(count>=3) print "warning"; else if(count>0) print "some wrong"; else print "ok"}'; done
smartctl相關參數
網上有更詳細的說明信息,感興趣的可以看一下。根據相關的資料和實際經驗,將5,187,188,197,198作爲關鍵檢測項,其餘的作爲參考,作爲硬盤的損壞程度。
屬性ID | 屬性名稱 | 屬性含義 |
---|---|---|
1 | Raw Read Error Rate | 底層數據讀取錯誤率 |
2 | Throughput Performance | 磁盤讀寫通量性能 |
3 | Spin Up Time | 主軸起旋時間 |
4 | Start/Stop Count | 啓停次數 |
5 | Reallocated_Sector_Ct | 重映射扇區數 |
10 | Spin_Retry_Count | 主軸起旋重試次數 |
11 | Calibration_Retry_Count | 磁盤校準重試次數 |
12 | Power_Cycle_Count | 磁盤通電次數 |
187 | Reported Uncorrectable Errors | 無法校正的錯誤 |
188 | Command Timeout | 命令超時 |
194 | Temperature_Celsius | 溫度 |
197 | Current Pending Sector Count | 當前待映射扇區計數 |
198 | Offline Uncorrectable Sector Count | 脫機無法校正的扇區計數 |
199 | UDMA_CRC_Error_Count | 奇偶校驗錯誤率 |
200 | Write_Error_Rate | 寫錯誤率 |
241 | Total_LBAs_Written | 磁盤自出廠總共寫入的的數據,單位是LBAS=512Byte |
242 | Total_LBAs_Read | 磁盤自出廠總共讀取的數據,單位是LBAS=512Byte |
(未完)