Sử dụng smartctl để kiểm tra sức khỏe ổ cứng

  • Tuesday 27/02/2024

Bài viết này mình tổng hợp lại với mục đích: cung cấp cho bạn cách dựa vào thông số từ smartctl để chuẩn đoán tình trạng sức khỏe của ổ cứng, cũng như một số lệnh mình sử dụng và thấy hữu ích trong quá trình kiểm tra ổ cứng.

I. Giới thiệu về S.M.A.R.T

Từ SMART trong trường hợp này, là viết tắt của Self-Monitoring, Analysis and Reporting Technology. Đây hệ thống giám sát sức khỏe được tích hợp sẵn trong các ổ cứng (cả SSD lẫn HDD), các thông số được controller giám sát và thu thập lại từ nhiều cảm biến khác nhau và giúp quản trị viên có thể dựa vào những kết quả này để nhận biết được ổ cứng vật lý đang sử dụng có bị lỗi hay không.

Mình cũng xin lưu ý thêm: Mỗi nhà sản xuất có thể sẽ có tham số (Atrribute) khác nhau, có hãng có tham số này, hãng khác lại không. Hay, cùng ID là vậy, nhưng bên hãng A có Attribute_Name khác hãng B. Vậy nên, sau khi tham khảo thông số từ smartctl. Bạn nên đọc thêm các tài liệu liên quan từ nhà sản xuất ổ cứng để biết thêm các thông tin quan trọng (vd keyword: hãng sản xuất + smart attributes) hoặc tham khảo https://en.wikipedia.org/wiki/S.M.A.R.T.#Known_ATA_S.M.A.R.T._attributes.

II. Cài đặt

1.Almalinux

Để cài đặt smartctl trên AlmaLinux, bạn cần sử dụng trình quản lý gói Yum. Đầu tiên, mở một thiết bị đầu cuối. Sau đó, chạy lệnh sau để cài đặt smartctl:

yum install smartmontools

Sau khi cài đặt smartmontools, cần phải kích hoạt và khởi động dịch vụ smartd – daemon SMART. Bây giờ Smartctl đã được cài đặt, hãy khởi động nó và đảm bảo rằng nó luôn khởi động khi máy chủ được khởi động lại. Chúng ta có thể thực hiện điều này bằng cách chạy các lệnh màn hình sau trong Linux.

Sau khi được bật, bạn cần khởi động dịch vụ bằng lệnh bên dưới. Lệnh này sẽ đảm bảo rằng daemon smartctl được thiết lập và chạy mỗi khi khởi động hệ thống. Sẽ không có đầu ra nào được hiển thị khi bạn sử dụng lệnh này:

systemctl enable smartd
Lệnh tiếp theo này sẽ khởi động smartctl và lệnh này cũng sẽ không cung cấp bất kỳ đầu ra nào. Bạn có thể sử dụng cờ trạng thái thay vì cờ bắt đầu để xem dịch vụ smartctl có chạy hay không:
systemctl start smartd
Kiểm tra trạng thái của smartd bằng lệnh sau:
systemctl status smartd
Bạn sẽ thấy dịch vụ đang hoạt động (đang chạy), như hiển thị bên dưới:
smartd.service – Self Monitoring and Reporting Technology (SMART) Daemon
Loaded: loaded (/usr/lib/systemd/system/smartd.service; enabled; vendor preset: enabled)
Active: active (running) since Wed 2023-05-31 12:28:58 EDT; 1s ago
Docs: man:smartd(8)
           man:smartd.conf(5)
 

2.Ubuntu

Việc cài đặt smartctl trên Ubuntu hầu hết giống như trên AlmaLinux. Các chi tiết bắt đầu hơi khác một chút.
 
Cập nhật gói hệ thống
Trước khi đưa bất kỳ phần mềm mới nào vào hệ thống của bạn, bạn nên cập nhật danh sách gói của hệ thống. Chạy lệnh cập nhật apt-get sau để làm như vậy:
sudo apt-get update
Và cài đặt smartmontools:
sudo apt-get install smartmontools
Phần còn lại của quy trình kích hoạt smartctl và các lệnh của người dùng cũng giống như trên AlmaLinux.
Xác minh smartctl đã được cài đặt
Sau khi cài đặt hoàn tất, bạn có thể xác minh xem smartctl đã được cài đặt thành công hay chưa bằng cách chạy lệnh sau:
smartctl --version
Bây giờ, smartctl sẽ được cài đặt. Tiếp theo, chúng ta hãy xem qua một số ví dụ sử dụng cơ bản trong đó Smartctl có ích.
 

Công cụ smartctl được thiết kế để thực hiện các tác vụ SMART. Bạn có thể sử dụng nó để in nhật ký lỗi và tự kiểm tra SMART, bật và tắt kiểm tra tự động SMART cũng như bắt đầu tự kiểm tra thiết bị. Để sử dụng smartctl, trước tiên bạn cần mở một thiết bị đầu cuối.

Cú pháp chung cho lệnh smartctl như sau:

smartctl [options] device
Ở đây, các tùy chọn đề cập đến các lệnh và tham số khác nhau mà bạn có thể chuyển tới smartctl và thiết bị đề cập đến ổ cứng hoặc SSD mà bạn muốn kiểm tra. Dưới đây là một số tùy chọn chính bạn có thể sử dụng:
Short Option Long Option Description
-i –info Tùy chọn này hiển thị thông tin ổ cứng.
-t –test Tùy chọn này chạy tự kiểm tra trên ổ cứng.
-x –xall Tùy chọn này hiển thị thông tin SMART toàn diện mở rộng.
-a –-all Tùy chọn này hiển thị tất cả thông tin SMART cho ổ cứng.
-H –health Tùy chọn này tóm tắt tình trạng của ổ cứng.

Ví dụ: nếu bạn muốn hiển thị tất cả thông tin SMART cho ổ đĩa /dev/sda, bạn sẽ sử dụng lệnh sau:

smartctl -a /dev/sda
Hãy nhớ thay thế dev/sda bằng đường dẫn của thiết bị của bạn. Nếu bạn không chắc chắn đường dẫn của thiết bị là gì, bạn có thể sử dụng lệnh df -h và lsblk

III. Nội dung chính

Dưới đây là một ví dụ output từ smartctl của một ổ cứng – có tên là sda, sẽ gồm các cột như sau.

root@sv01:~# smartctl -A /dev/sda

SMART Attributes Data Structure revision number: 1  
Vendor Specific SMART Attributes with Thresholds:  
ID# ATTRIBUTE_NAME          FLAG     VALUE WORST THRESH TYPE      UPDATED  WHEN_FAILED RAW_VALUE  
 5 Reallocated_Sector_Ct   0x0033   100   100   010    Pre-fail  Always       -       0  
 9 Power_On_Hours          0x0032   093   093   000    Old_age   Always       -       31950  
12 Power_Cycle_Count       0x0032   099   099   000    Old_age   Always       -       56  
177 Wear_Leveling_Count     0x0013   082   082   000    Pre-fail  Always       -       263  
179 Used_Rsvd_Blk_Cnt_Tot   0x0013   100   100   010    Pre-fail  Always       -       0  
181 Program_Fail_Cnt_Total  0x0032   100   100   010    Old_age   Always       -       0  
182 Erase_Fail_Count_Total  0x0032   100   100   010    Old_age   Always       -       0  
183 Runtime_Bad_Block       0x0013   100   100   010    Pre-fail  Always       -       0  
187 Uncorrectable_Error_Cnt 0x0032   100   100   000    Old_age   Always       -       0  
190 Airflow_Temperature_Cel 0x0032   083   057   000    Old_age   Always       -       17  
195 ECC_Error_Rate          0x001a   200   200   000    Old_age   Always       -       0  
199 CRC_Error_Count         0x003e   099   099   000    Old_age   Always       -       7  
235 POR_Recovery_Count      0x0012   099   099   000    Old_age   Always       -       43  
241 Total_LBAs_Written      0x0032   099   099   000    Old_age   Always       -       144313306552
  • Identifier:
    • Mã định danh của tham số, bắt đầu từ 1 đến 250. Các phần mềm đọc SMART như crystaldiskInfo hay smartctl sẽ hiển thị Attribute_Name từ mã định danh này
  • Attribute_Name:
    • Tên tham số/thuộc tính của bản ghi.
  • Thresh:
    • Giá trị tối thiểu của tham số mà nhà sản xuất cung cấp
    • Nếu Value bằng hoặc thấp hơn tham số này, có nghĩa ổ cứng bị lỗi.
  • Value:
    • Giá trị hiện tại, được tính dựa vào kết quả của Raw Value.
    • Giá trị bắt đầu từ 100, 200, hoặc 253 – tùy vào nhà sản xuất. Và sẽ giảm dần theo thời gian.
    • Giá trị nên lớn hơn Thresh.
    • Giá trị càng cao càng tốt.
  • Worst:
    • Giá trị thấp nhất hiện tại mà cảm biến/controller ghi lại.
    • Giống với Value, giá trị càng cao và lớn hơn Thresh càng tốt.
  • Raw Value:
    • Giá trị thực tế mà cảm biến ghi lại được, vd: Power_On_Hours: 31950 ứng với 31950 giờ…
  • Type:
    • Pre-fail: Ám chỉ thuộc tính quan trọng, phản ánh trực tiếp sức khỏe ổ cứng. Khi test SMART health, sẽ dựa theo điều kiện: nếu Worst < Threshold, kết quả trả về Fail.
    • Old_age: các thuộc tính ít quan trọng hơn Pre-fail, thường sẽ chỉ đến các tham số sử dụng theo thời gian, hao mòn cell nhớ, VD: Power_On_HoursTotal_LBAs_Written
    • Tùy vào nhà sản xuất sẽ quy định kiểu Type cho từng Tham số.
  • Updated:
    • Always: Liên tục tự động cập nhật giá trị
    • Offline: Chỉ cập nhật lại tham số trong trường hợp chạy SMART test.
  • When_Failed:
    • - : Tham số bình thường
    • FAILING_NOW: giá trị lỗi (WORST < THRESH)
  • Flags: (không quan trọng) Được biểu diễn ở giá trị Hex, có thể xem thêm ý nghĩa của flag với lệnh smartctl -A /dev/sdX -f brief

IV. Lệnh bổ trợ khác

  • Kiểm tra tổng quan sức khỏe smartctl -H /dev/sda
smartctl 7.2 2020-12-30 r5155 [aarch64-linux-5.15.0-1011-raspi] (local build)
Copyright (C) 2002-20, Bruce Allen, Christian Franke, www.smartmontools.org

=== START OF READ SMART DATA SECTION ===
SMART overall-health self-assessment test result: PASSED
  • Liệt kê các lỗi trên mà controller ghi lại, nếu có smartctl -l error /dev/sda
  • Self-test Thông thường, sẽ sử dụng short/long test smartctl --test=short /dev/sda Hoặc smartctl --test=long /dev/sda
  • Xem lại danh sách selftest trước đó smartctl -l selftest /dev/sda

——————————————————————————————————————————————————–

P.A Việt Nam tiên phong trong thị trường Internet & Web.
Là nhà đăng ký tên miền lớn nhất Việt Nam. Chuyên nghiệp trong lĩnh vực Tên miền, Website, Email, Server, Thiết kế Web.

Thông tin kiến thức vps-dedicated-colocation tại: https://kb.pavietnam.vn/category/vps-dedicated-colocation
Đăng ký dịch vụ P.A Việt Nam: https://www.pavietnam.vn/
P.A Việt Nam cung cấp đa dạng cấu hình VPS và Dedicated tại: Cloud Server –  Cloud Server Pro  –  Máy Chủ Riêng
Tham khảo các Ưu đãi hiện có tại: https://www.pavietnam.vn/vn/tin-khuyen-mai/
Facebook: https://www.facebook.com/pavietnam.com.vn

Rate this post