天天看點

[轉載] 磁盤硬體問題(壞塊)檢測

标簽

PostgreSQL , Linux , Windows , SSD , smartctl , smartmontools , badblocks , hdparm , HD Tune

https://github.com/digoal/blog/blob/master/201803/20180331_01.md#%E8%83%8C%E6%99%AF 背景

Linux下面可以使用smartctl , badblocks檢查是否有壞塊。

Win下面可以使用HD Tune。

https://github.com/digoal/blog/blob/master/201803/20180331_01.md#1-smartmontools 1 smartmontools

apt install smartmontools           
https://www.aliyun.com/jiaocheng/120499.html
smartctl -t long /dev/sda           
3.1.5          SMART 離線測試、自測試 參數       -t  TEST      立刻執行測試,可以和-C參數一起使用。                            TEST可以有以下幾個選擇:                            offline  離線測試。可以在挂載檔案系統的磁盤上使用                            short   短時間測試。可以在挂載檔案系統的磁盤上使用。                            long   長時間測試。可以在挂載檔案系統的磁盤上使用。                            conveyance  [ATA only]傳輸zi測試。可以在挂載檔案系統的磁盤上使用。                            select,N-M           select, N+SIZE  [ATA only]有選擇性測試,測試磁盤的部分LBA。N表示       LBA編号,M表示結束LBA編号,SIZE表示測試的LBA       範圍。           

檢視健康狀态

smartctl -s on /dev/sda       smartctl -a /dev/sda       smartctl -H /dev/sda           

https://github.com/digoal/blog/blob/master/201803/20180331_01.md#2-badblocks 2 badblocks

讓我們從壞道和壞塊的定義開始說起,它們是一塊磁盤或閃存上不再能夠被讀寫的部分,一般是由于磁盤表面特定的

實體損壞

或閃存半導體失效導緻的。

随着壞道的繼續積累,它們會對你的磁盤或閃存容量産生令人不快或破壞性的影響,甚至可能會導緻硬體失效。

同時還需要注意的是壞塊的存在警示你應該開始考慮買塊新磁盤了,或者簡單地将壞塊标記為不可用。

是以,在這篇文章中,我們通過幾個必要的步驟,使用特定的

磁盤掃描工具

讓你能夠判斷 Linux 磁盤或閃存是否存在壞道。

以下就是步驟:

https://github.com/digoal/blog/blob/master/201803/20180331_01.md#%E5%9C%A8-linux-%E4%B8%8A%E4%BD%BF%E7%94%A8%E5%9D%8F%E5%9D%97%E5%B7%A5%E5%85%B7%E6%A3%80%E6%9F%A5%E5%9D%8F%E9%81%93 在 Linux 上使用壞塊工具檢查壞道

壞塊工具可以讓使用者掃描裝置檢查壞道或壞塊。裝置可以是一個磁盤或外置磁盤,由一個如 

/dev/sdc

 這樣的檔案代表。

首先,通過超級使用者權限執行 

fdisk

 指令來顯示你的所有磁盤或閃存的資訊以及它們的分區資訊:

$ sudo fdisk -l           

列出 Linux 檔案系統分區

[轉載] 磁盤硬體問題(壞塊)檢測

然後用如下指令檢查你的 Linux 硬碟上的壞道/壞塊:

$ sudo badblocks -v /dev/sda10 > badsectors.txt           

在 Linux 上掃描硬碟壞道

[轉載] 磁盤硬體問題(壞塊)檢測

上面的指令中,

badblocks

 掃描裝置 

/dev/sda10

(記得指定你的實際裝置),

-v

 選項讓它顯示操作的詳情。另外,這裡使用了輸出重定向将操作結果重定向到了檔案 

badsectors.txt

如果你在你的磁盤上發現任何壞道,解除安裝磁盤并像下面這樣讓系統不要将資料寫入回報的扇區中。

你需要執行 

e2fsck

(針對 

ext2/ext3/ext4

 檔案系統)或 

fsck

 指令,指令中還需要用到 

badsectors.txt

 檔案和裝置檔案。

-l

 選項告訴指令将在指定的檔案 

badsectors.txt

 中列出的扇區号碼加入壞塊清單。

------------ 針對 for ext2/ext3/ext4 檔案系統 ------------       $ sudo e2fsck -l badsectors.txt /dev/sda10       或       ------------ 針對其它檔案系統 ------------       $ sudo fsck -l badsectors.txt /dev/sda10           

如果你使用的是ZFS,不需要FSCK來修複。ZFS是事務型檔案系統,任何時刻視角都是 一緻的。

https://github.com/digoal/blog/blob/master/201803/20180331_01.md#%E5%9C%A8-linux-%E4%B8%8A%E4%BD%BF%E7%94%A8-smartmontools-%E5%B7%A5%E5%85%B7%E6%89%AB%E6%8F%8F%E5%9D%8F%E9%81%93 在 Linux 上使用 Smartmontools 工具掃描壞道

這個方法對帶有 

S.M.A.R.T

(自我監控分析報告技術

Self-Monitoring, Analysis and Reporting Technology

)系統的現代磁盤(

ATA/SATA

 和 

SCSI/SAS

 硬碟以及固态硬碟)更加的可靠和高效。

S.M.A.R.T

 系統能夠幫助檢測,報告,以及可能記錄它們的健康狀況,這樣你就可以找出任何可能出現的硬體失效。

你可以使用以下指令安裝 

smartmontools

------------ 在基于 Debian/Ubuntu 的系統上 ------------       $ sudo apt-get install smartmontools       ------------ 在基于 RHEL/CentOS 的系統上 ------------       $ sudo yum install smartmontools           

安裝完成之後,使用 

smartctl

 控制磁盤內建的 

S.M.A.R.T

 系統。你可以這樣檢視它的手冊或幫助:

$ man smartctl       $ smartctl -h           

然後執行 

smartctrl

 指令并在指令中指定你的裝置作為參數,以下指令包含了參數 

-H

 或 

--health

 以顯示 

SMART

 整體健康自我評估測試結果。

$ sudo smartctl -H /dev/sda10           

檢查 Linux 硬碟健康

[轉載] 磁盤硬體問題(壞塊)檢測

上面的結果指出你的硬碟很健康,近期内不大可能發生硬體失效。

要擷取磁盤資訊總覽,使用 

-a

--all

 選項來顯示關于磁盤所有的 

SMART

 資訊,

-x

--xall

 來顯示所有關于磁盤的 SMART 資訊以及非 SMART 資訊。

在這個教程中,我們涉及了有關

磁盤健康診斷

的重要話題,你可以下面的回報區來分享你的想法或提問,并且記得多回來看看。

via: 

http://www.tecmint.com/check-linux-hard-disk-bad-sectors-bad-blocks/

https://github.com/digoal/blog/blob/master/201803/20180331_01.md#3-hdparm 3 hdparm

檢測硬碟I/O相對來說還是一個比較抽象的概念,但是對系統性能的影響還是至關重要的。

使用hdparm指令檢測讀取速度:

hdparm指令提供了一個指令行的接口用于讀取和設定IDE和SCSI硬碟參數。       安裝:           
yum install hdparm           
文法:           
hdparm(選項)(參數)           
常用選項:           
-f: 将記憶體緩沖區的資料寫入硬碟,并清除緩沖區;               -g: 顯示硬碟的磁軌,磁頭,磁區等參數;               -i: 顯示硬碟的硬體規格資訊,這些資訊是在開機時由硬碟本身所提供;               -I: 直接讀取硬碟所提供的硬體規格資訊;               -t: 評估硬碟的讀取效率;               -T: 評估硬碟快取的讀取效率;           
參數:           裝置檔案:指定id驅動對應的裝置檔案名       執行個體:           使用方法很簡單,```hdparm -Tt /dev/sda```           
[root@super python]# hdparm -Tt /dev/sda       /dev/sda:        Timing cached reads:   8470 MB in  2.00 seconds = 4235.83 MB/sec                # 硬碟的快取讀取速度,2.00秒讀取了8470 MB,平均每秒讀取:4235.83 MB/sec        Timing buffered disk reads: 722 MB in  3.22 seconds = 224.28 MB/sec            # 硬碟的讀取速度:3.22秒讀取了722 MB,平均每秒讀取:224.28 MB/sec           

https://github.com/digoal/blog/blob/master/201803/20180331_01.md#4-fio 4 fio

《fio測試IO性能》

https://github.com/digoal/blog/blob/master/201803/20180331_01.md#5-hd-tune 5 HD Tune

https://github.com/digoal/blog/blob/master/201803/20180331_01.md#6-dd 6 dd

使用dd指令測試寫入速度:

dd指令是一個不太專業的測速工具,如果要求的不是很嚴格,還是可以進行多次測試來得到一個近似值的。       安裝:           
yum install coreutils           
執行個體:           
[root@super python]# dd if=/dev/zero of=test bs=1M count=2048        # 寫入一個檔案名test, bytes 為1M,共2048 blocks 的檔案,總共大小為:1M * 2048 = 2G               記錄了2048+0 的讀入               記錄了2048+0 的寫出               2147483648位元組(2.1 GB)已複制,88.8786 秒,24.2 MB/秒               88.8786 秒寫入了2.1 GB資料,平均:24.2 MB/秒           

https://github.com/digoal/blog/blob/master/201803/20180331_01.md#%E5%8F%82%E8%80%83 參考

https://www.cnblogs.com/hukey/p/5226670.html https://linux.cn/article-7961-1.html https://www.smartmontools.org/wiki/FAQ

繼續閱讀