ติดตั้ง smartmontools บน ubuntu
- ทดสอบใช้กับ ubuntu 10.04, 8.04
- ต้นฉบับจาก http://smartmontools.sourceforge.net/
- ใช้สำหรับอ่านค่าคุณสมบัติต่างๆของ hard disk
- ต้องตั้งค่า BIOS ของ PC ให้รองรับคุณสัมบัติ S.M.A.R.T hard disk ด้วย
- ติดตั้งด้วยคำสั่ง sudo apt-get install smartmontools
- ในขั้นต้นให้ตรวจสอบว่าใน PC มี hard disk กี่ลูก ด้วยคำสั่ง sudo fdisk -l
ตัวอย่างนี้เป็นแบบง่ายๆ มี hard disk ลูกเดียว
Disk /dev/hda: 20.4 GB, 20404101120 bytes
255 heads, 63 sectors/track, 2480 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Device Boot Start End Blocks Id System
/dev/hda1 * 1 13 104391 83 Linux
/dev/hda2 14 2480 19816177+ 8e Linux LVM
ตัวอย่างต่อไปมี hard disk 2 ลูก ต่อกันแบบ software raid
Disk /dev/hda: 80.0 GB, 80026361856 bytes
255 heads, 63 sectors/track, 9729 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Device Boot Start End Blocks Id System
/dev/hda1 * 1 13 104391 fd Linux raid autodetect
/dev/hda2 14 9447 75778605 fd Linux raid autodetect
/dev/hda3 9448 9708 2096482+ fd Linux raid autodetect
Disk /dev/hdc: 80.0 GB, 80026361856 bytes
255 heads, 63 sectors/track, 9729 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Device Boot Start End Blocks Id System
/dev/hdc1 * 1 13 104391 fd Linux raid autodetect
/dev/hdc2 14 9447 75778605 fd Linux raid autodetect
/dev/hdc3 9448 9708 2096482+ fd Linux raid autodetect
- ตรวจสอบชนิด hard disk /dev/hda ด้วยตัวอย่างคำสั่ง sudo smartctl -i /dev/hda
หากเป็น hard disk แบบ SATA อาจต้องเพิ่ม option ว่า -d ata ด้วย ตัวอย่างคำสั่ง sudo smartctl -i /dev/sda -d ata ได้ผลดังตัวอย่าง
=== START OF INFORMATION SECTION ===
Device Model: ST320413A
Serial Number: 7ED2J419
Firmware Version: 3.39
User Capacity: 20,404,101,120 bytes
Device is: In smartctl database [for details use: -P show]
ATA Version is: 4
ATA Standard is: Exact ATA specification draft version not indicated
Local Time is: Mon Oct 16 12:55:11 2006 ICT
SMART support is: Available - device has SMART capability.
SMART support is: Enabled
- ตรวจสอบสุขภาพ hard disk /dev/hda ด้วยตัวอย่างคำสั่ง sudo smartctl -Hc /dev/hda
หากเป็น hard disk แบบ SATA อาจต้องเพิ่ม option ว่า -d ata ด้วย ตัวอย่างคำสั่ง sudo smartctl -Hc /dev/sda -d ata ได้ผลดังตัวอย่าง
*** บรรทัดที่มีคำว่า PASSED แสดงว่าปรกติดี ถ้าเสียจะเป็น FAILED
=== START OF READ SMART DATA SECTION ===
SMART overall-health self-assessment test result: PASSED
General SMART Values:
Offline data collection status: (0x82) Offline data collection activity
was completed without error.
Auto Offline Data Collection: Enabled.
Self-test execution status: ( 0) The previous self-test routine completed without error or no self-test has ever
been run.
Total time to complete Offline
data collection: ( 422) seconds.
Offline data collection
capabilities: (0x1b) SMART execute Offline immediate.
Auto Offline data collection on/off support.
Suspend Offline collection upon new
command.
Offline surface scan supported.
Self-test supported.
No Conveyance Self-test supported.
No Selective Self-test supported.
SMART capabilities: (0x0003) Saves SMART data before entering
power-saving mode.
Supports SMART auto save timer.
Error logging capability: (0x01) Error logging supported.
No General Purpose Logging support.
Short self-test routine
recommended polling time: ( 1) minutes.
Extended self-test routine
recommended polling time: ( 23) minutes.
- ทดสอบแบบเร็ว hard disk /dev/hda ด้วยตัวอย่างคำสั่ง sudo smartctl -t short /dev/hda
หากเป็น hard disk แบบ SATA อาจต้องเพิ่ม option ว่า -d ata ด้วย ตัวอย่างคำสั่ง sudo smartctl -t short /dev/sda -d ata ได้ผลดังตัวอย่าง
=== START OF OFFLINE IMMEDIATE AND SELF-TEST SECTION ===
Sending command: "Execute SMART Short self-test routine immediately in off-line mode".
Drive command "Execute SMART Short self-test routine immediately in off-line mode" successful.
Testing has begun.
Please wait 1 minutes for test to complete.
Test will complete after Mon Oct 16 15:01:20 2006
Use smartctl -X to abort test.
ให้รอสัก 1 นาที จะได้ผลลัพธ์ออกมา
ตรวจสอบดูด้วยคำสั่งว่า sudo smartctl -l selftest /dev/hda
หากเป็น hard disk แบบ SATA ต้องเพิ่ม option ว่า -d ata ด้วย
ตัวอย่างคำสั่ง smartctl -l selftest /dev/sda -d ata
ได้ผลตัวอย่าง
=== START OF READ SMART DATA SECTION ===
SMART Self-test log structure revision number 1
Num Test_Description Status Remaining LifeTime(hours) LBA_of_first_error
# 1 Short offline Completed without error 00% 19789 -
# 2 Short offline Completed without error 00% 19788 -
หมายความว่าเคยทดสอบมา 2 ครั้งแล้ว และสภาพดีไม่มีปัญหา
- ดูรายงาน error ของ hard disk /dev/hda ด้วยตัวอย่างคำสั่ง sudo smartctl -l error /dev/hda
หากเป็น hard disk แบบ SATA อาจต้องเพิ่ม option ว่า -d ata ด้วย ตัวอย่างคำสั่ง sudo smartctl -l error /dev/sda -d ata
ตัวอย่างผลที่ได้แสดงว่าเป็นปรกติดี
=== START OF READ SMART DATA SECTION ===
SMART Error Log Version: 1
No Errors Logged
ตัวอย่างผลที่ได้ ว่าเคยมี error เกิดขึ้น แต่ก็ยังคงใช้งานได้
=== START OF READ SMART DATA SECTION ===
SMART Error Log Version: 1
ATA Error Count: 5
CR = Command Register [HEX]
FR = Features Register [HEX]
SC = Sector Count Register [HEX]
SN = Sector Number Register [HEX]
CL = Cylinder Low Register [HEX]
CH = Cylinder High Register [HEX]
DH = Device/Head Register [HEX]
DC = Device Command Register [HEX]
ER = Error register [HEX]
ST = Status register [HEX]
Powered_Up_Time is measured from power on, and printed as
DDd+hh:mm:SS.sss where DD=days, hh=hours, mm=minutes,
SS=sec, and sss=millisec. It "wraps" after 49.710 days.
Error 5 occurred at disk power-on lifetime: 13636 hours (568 days + 4 hours)
When the command that caused the error occurred, the device was active or idle.
After command completion occurred, registers were:
.......... มีต่อมากมาย
- หากต้องการให้มีการตรวจสภาพโดยอัตโนมัติ แล้วส่งอีเมล์แจ้งผู้ดูแลระบบด้วย
ให้แก้ไขแฟ้ม /etc/smard.conf ให้มีข้อความตัวอย่างว่า
/dev/sda -H -m myemail@domain.com
หากเจอปัญหาสุขภาพไม่ค่อยดี ก็จะส่งอีเมล์มาให้แก่ myemail@domain.com
- หากต้องการให้ระบบตรวจสอบอัตโนมัติทุกครั้งที่บูทเครื่อง ให้แก้ไขแฟ้ม /etc/default/smartmontools
ปรับตั้งค่าตัวแปรประมาณตัวอย่างดังนี้
start_smartd=yes
enable_smart="/dev/sda"
สั่งให้ระบบเริ่มทำงานด้วยคำสั่ง sudo /etc/init.d/smartmontools start
- ตัวอย่างคำสั่งในการอ่านเฉพาะค่าอุณหภูมิของ hard disk คือ
sudo smartctl -A /dev/sda|grep "Temperature_Celsius"