Tommy 碎碎念

Tommy Wu's blog

« 上一篇 | 下一篇 »

SATA 硬碟在 smartmontools 與 hddtemp 下的使用
post by tommy @ 07 元月, 2007 13:56
上個月底買了一個 Hitachi 500G 的 SATA 硬碟 (HDT725050VLA360) 來使用. 安裝上去後, 在我原本的 2.6.19 上頭, hddtemp 可以正確的抓到該硬碟的型號, 並正確顯示出硬碟的溫度, 不過, 就在我升級我的 kernel 到 2.6.20-rc2 或 2.6.20-rc3 之後, 就一直認不出這個硬碟了.

今天試著裝上 smartmontools , 結果發現一樣認為這個硬碟的 SMART 資訊. 查了一下 google, 發現可以在 smartctl 指令上頭加上 -data 參數, 使用一般 ATA 的方式來讀取資料. 果然, 利用這個參數, 可以正確的使用 smartctl 讀出或設定這台硬碟. 不過... smartd 還是沒抓到.

後來看了一下 /etc/smartd.conf 的設定, 發現只要有 DEVICESCAN 這個設定時, 就會忽略其他的設定, 所以我單獨使用的

/dev/sda -a -d ata 

就沒有作用了.

把 DEVICESCAN 設定取消, 然後自己加上我用前所有的 device 如下:

/dev/hda -a -o on -S on -s (S/../.././02|L/../../6/03) -m root
#/dev/hdb -a -o on -S on -s (S/../.././02|L/../../6/03) -m root
/dev/hdc -a -o on -S on -s (S/../.././02|L/../../6/03) -m root
/dev/hdd -a -o on -S on -s (S/../.././02|L/../../6/03) -m root
/dev/sda -a -d ata -o on -S on -s (S/../.././02|L/../../6/03) -m root 

這樣子在 smartd 載入時, 果然可以正確的抓到我目前所有的硬碟資料了.

利用類似的方式, 我發現在使用 hddtemp 時, 也可以指定 device 的 type, 有 PATA, SATA, SCSI 可以設定, 如果沒有指定, 就由 hddtemp 自行偵測. 所以我就在 /etc/default/hddtemp 中, 把 DISKS_NOPROBE 設定如下:

# List of devices you want to use with hddtemp, but that would not be
# probed for a working sensor.
DISKS_NOPROBE="PATA:/dev/sda" 

這樣子, hddtemp 就會把 /dev/sda 也當成是一般的 ATA 使用, 果然可以正確的抓到這台硬碟的溫度了. (不過, 這樣子在抓硬碟的型號時, 會變成 unknown, 而不是抓出正確的型號. 如果不加上 PATA, 是可以抓到型號, 但是抓不到溫度)

這樣子處理之後, 我的主機上頭的 phpsysinfo 就可以抓到這台硬碟的溫度 (只是名稱是 unknown), 而 CACTI 也可以正確的抓到溫度 (因為名稱可以指定, 所以不會是 unknown).

PS. 後來寫個小程式, 把 hddtemp 改到 port 7635, 然後該程式 listen 7634, 取代原本的 hddtemp, 將結果取出後, 把 unknown 換成正確的名稱.

#!/usr/bin/php -Cq
<?php

$fp = fsockopen('localhost', 7635);
if ($fp != 0) {
$msg = '';
while (!feof($fp))
$msg .= fgets($fp, 2048);
fclose($fp);
echo str_replace('|/dev/sda|unknown|', '|/dev/sda|HDT725050VLA360|', $msg);
}

?> 
Del.icio.us Furl HEMiDEMi Technorati MyShare
迴響
暱稱:
標題:
個人網頁:
電子郵件:
authimage

迴響

  

Bad Behavior 已經阻擋了 57 個過去 7 天試圖闖關的垃圾迴響與引用。
Power by LifeType. Template design by JamesHuang. Valid XHTML and CSS