Trong thế giới quản trị hệ thống Linux, giao diện dòng lệnh (CLI) không chỉ là một công cụ mà còn là một nghệ thuật. Đối với việc quản lý và chẩn đoán ổ cứng, CLI tỏ ra vượt trội hơn hẳn các công cụ đồ họa (GUI) về tốc độ, khả năng tự động hóa và hiệu quả khi làm việc từ xa. Tuy nhiên, kho tàng lệnh của Linux rất phong phú, và việc biết chính xác nên dùng công cụ nào cho từng tình huống là chìa khóa để làm việc hiệu quả.
Bài viết này sẽ là kim chỉ nam của bạn, phân tích tổng quan các công cụ CLI phổ biến và mạnh mẽ nhất để đọc, kiểm tra và phân tích ổ cứng trên Linux. Chúng ta sẽ đi từ các lệnh cơ bản để xem dung lượng, cho đến các công cụ chuyên sâu để chẩn đoán “sức khỏe” và đo lường hiệu năng I/O, giúp bạn từ một người dùng thông thường trở thành một sysadmin tự tin làm chủ hệ thống lưu trữ của mình.
Tại Sao Dùng Command Line (CLI) Để Quản Lý Ổ Cứng?
Trong khi các môi trường desktop như GNOME hay KDE cung cấp các trình quản lý đĩa trực quan, việc dựa vào CLI mang lại những lợi ích không thể chối cãi, đặc biệt trong môi trường máy chủ. Đầu tiên và quan trọng nhất là khả năng truy cập từ xa. Hầu hết các máy chủ Linux đều không có giao diện đồ họa, và việc quản trị được thực hiện hoàn toàn qua SSH. Trong bối cảnh này, CLI là phương thức duy nhất để tương tác với hệ thống.
Thứ hai, CLI cho phép tự động hóa một cách mạnh mẽ. Bạn có thể viết các kịch bản (script) để tự động kiểm tra dung lượng ổ đĩa mỗi sáng, cảnh báo khi một phân vùng sắp đầy, hoặc định kỳ kiểm tra trạng thái S.M.A.R.T. của ổ cứng. Khả năng kết hợp nhiều lệnh với nhau qua pipe (|
) cũng tạo ra những quy trình làm việc linh hoạt mà GUI khó lòng sánh được. Cuối cùng, các công cụ CLI thường tiêu thụ rất ít tài nguyên hệ thống, đảm bảo không làm ảnh hưởng đến hiệu năng của các ứng dụng quan trọng đang chạy trên máy chủ.
Các Lệnh Cơ Bản: Kiểm Tra Dung Lượng và Phân Vùng
Đây là nhóm lệnh mà bất kỳ người dùng Linux nào cũng nên nắm vững. Chúng cung cấp cái nhìn nhanh chóng và chính xác về tình hình sử dụng không gian lưu trữ và cấu trúc của các thiết bị khối.
df – Báo cáo dung lượng hệ thống tập tin
Lệnh df
(disk free) là công cụ đầu tiên bạn nghĩ đến khi muốn biết “ổ cứng còn trống bao nhiêu?”. Nó không hiển thị dung lượng của ổ đĩa vật lý, mà là dung lượng của các hệ thống tập tin (filesystem) đã được mount. Đây là một điểm khác biệt quan trọng.
Để có kết quả dễ đọc nhất, hãy luôn dùng tùy chọn -h
(human-readable). Nó sẽ hiển thị dung lượng dưới dạng K (Kilobytes), M (Megabytes), G (Gigabytes) thay vì các khối byte khó hiểu.
$ df -h
Filesystem Size Used Avail Use% Mounted on
tmpfs 1.6G 2.3M 1.6G 1% /run
/dev/sda1 97G 25G 68G 27% /
tmpfs 7.8G 0 7.8G 0% /dev/shm
tmpfs 5.0M 4.0K 5.0M 1% /run/lock
/dev/sdb1 458G 112G 323G 26% /data
tmpfs 1.6G 180K 1.6G 1% /run/user/1000
Trong ví dụ trên, bạn có thể nhanh chóng thấy rằng hệ thống tập tin gốc (/
) trên phân vùng /dev/sda1
đã sử dụng 25GB (27%), và phân vùng dữ liệu /data
trên /dev/sdb1
còn trống 323GB.
du – Ước tính dung lượng file/thư mục
Nếu df
cho bạn bức tranh tổng thể, thì du
(disk usage) giúp bạn đi sâu vào chi tiết. Khi df
báo một phân vùng sắp đầy, du
chính là công cụ để bạn tìm ra “thủ phạm” – thư mục hoặc file nào đang chiếm nhiều dung lượng nhất.
Một cách dùng phổ biến là kết hợp du
với các tùy chọn -s
(summarize – chỉ hiển thị tổng dung lượng) và -h
(human-readable) trên một thư mục cụ thể. Để tìm các thư mục lớn nhất trong /var
, bạn có thể làm như sau:
$ sudo du -sh /var/* | sort -rh | head -n 5
2.1G /var/log
1.5G /var/cache
512M /var/lib
12M /var/spool
4.0K /var/mail
Lệnh này tính tổng dung lượng của mỗi mục trong /var
, sau đó dùng sort -rh
để sắp xếp theo dung lượng từ cao đến thấp, và head -n 5
để lấy ra 5 kết quả đầu tiên. Ngay lập tức, bạn biết rằng thư mục /var/log
đang là nơi cần “dọn dẹp” đầu tiên.
lsblk – Liệt kê các thiết bị khối
lsblk
(list block devices) cung cấp một cái nhìn dạng cây rất trực quan về tất cả các thiết bị khối (ổ cứng, SSD, USB…) và các phân vùng bên trong chúng. Nó cho bạn biết mối quan hệ giữa ổ đĩa vật lý, phân vùng, và điểm mount (nếu có).
$ lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 931.5G 0 disk
├─sda1 8:1 0 512M 0 part /boot/efi
└─sda2 8:2 0 931G 0 part /
sdb 8:16 0 1.8T 0 disk
└─sdb1 8:17 0 1.8T 0 part /mnt/data
sr0 11:0 1 1024M 0 rom
Kết quả trên cho thấy hệ thống có 2 ổ đĩa vật lý là sda
(931.5G) và sdb
(1.8T). Ổ sda
có hai phân vùng, trong đó sda2
được mount tại thư mục gốc /
. Lệnh này cực kỳ hữu ích để xác định nhanh tên thiết bị (ví dụ /dev/sda
) trước khi dùng các lệnh khác như fdisk
hay smartctl
.
fdisk – Công cụ quản lý bảng phân vùng
Mặc dù fdisk
là công cụ mạnh mẽ để thay đổi bảng phân vùng, nó cũng là một công cụ tuyệt vời để đọc thông tin chi tiết về cấu trúc phân vùng của một ổ đĩa. Sử dụng với cờ -l
(list), nó sẽ hiển thị bảng phân vùng mà không thực hiện bất kỳ thay đổi nào.
$ sudo fdisk -l /dev/sda
Disk /dev/sda: 931.51 GiB, 1000204886016 bytes, 1953525168 sectors
Disk model: WDC WD10EZEX-00B
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Disklabel type: gpt
Disk identifier: A1B2C3D4-E5F6-G7H8-I9J0-K1L2M3N4O5P6
Device Start End Sectors Size Type
/dev/sda1 2048 1050623 1048576 512M EFI System
/dev/sda2 1050624 1953523711 1952473088 931G Linux filesystem
fdisk -l
cung cấp các thông tin quan trọng như model ổ đĩa, kích thước sector, loại bảng phân vùng (ở đây là gpt
), và chi tiết từng phân vùng bao gồm điểm bắt đầu, kết thúc, kích thước và loại (Type).
Công Cụ Nâng Cao: Phân Tích Sâu và Theo Dõi Hiệu Năng
Khi các lệnh cơ bản là chưa đủ, bạn cần đến những công cụ chuyên dụng hơn để “soi” sâu vào bên trong ổ cứng, từ tình trạng vật lý đến hiệu suất đọc/ghi theo thời gian thực.
smartctl – Kiểm tra “sức khỏe” ổ cứng (S.M.A.R.T.)
Hầu hết các ổ cứng hiện đại (cả HDD và SSD) đều tích hợp công nghệ S.M.A.R.T. (Self-Monitoring, Analysis, and Reporting Technology). Công nghệ này liên tục theo dõi các thông số hoạt động của ổ đĩa để dự đoán các lỗi tiềm tàng. smartctl
là công cụ dòng lệnh để truy cập và đọc các dữ liệu này.
Để sử dụng, bạn cần cài đặt gói smartmontools
. Sau đó, chạy lệnh với cờ -a
(all) để xem tất cả thông tin.
$ sudo smartctl -a /dev/sda
Kết quả trả về sẽ rất dài, nhưng hãy chú ý đến các mục quan trọng:
- SMART overall-health self-assessment test result: PASSED. Nếu không phải là “PASSED”, ổ cứng của bạn chắc chắn có vấn đề.
- Reallocated_Sector_Ct: Số lượng sector bị hỏng đã được di chuyển đến vùng dự phòng. Nếu giá trị
RAW_VALUE
lớn hơn 0 và đang tăng, đây là dấu hiệu ổ cứng sắp hỏng. - Power_On_Hours: Tổng số giờ ổ đĩa đã hoạt động.
- Temperature_Celsius: Nhiệt độ hiện tại của ổ đĩa.
- Đối với SSD, các chỉ số như Percentage_Used hoặc Wear_Leveling_Count cho biết mức độ “mòn” của các ô nhớ.
Việc định kỳ kiểm tra S.M.A.R.T. là một phương pháp phòng ngừa cực kỳ hiệu quả để tránh mất dữ liệu do lỗi phần cứng đột ngột.
iostat – Giám sát hiệu suất I/O
iostat
(input/output statistics) là một phần của gói sysstat
, chuyên dùng để theo dõi hiệu suất của các thiết bị lưu trữ và CPU. Nó cho bạn biết ổ cứng đang bận rộn đến mức nào, tốc độ đọc/ghi ra sao theo thời gian thực.
Một lệnh iostat
hữu ích là:
$ iostat -d -x 2
Device r/s w/s rkB/s wkB/s rrqm/s wrqm/s %rrqm %wrqm r_await w_await aqu-sz rareq-sz wareq-sz svctm %util
sda 1.20 3.40 60.00 120.00 0.00 0.50 0.00 12.82 1.50 4.50 0.02 50.00 35.29 0.87 0.40
sdb 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
...
Tùy chọn -d
chỉ hiển thị thông tin thiết bị, -x
cho kết quả mở rộng, và 2
có nghĩa là làm mới dữ liệu sau mỗi 2 giây. Các cột quan trọng cần theo dõi là:
- r/s và w/s: Số lượng yêu cầu đọc và ghi mỗi giây (IOPS).
- rkB/s và wkB/s: Tốc độ đọc và ghi (throughput) tính bằng Kilobyte mỗi giây.
- await: Thời gian chờ trung bình (tính bằng mili giây) cho mỗi yêu cầu I/O. Nếu chỉ số này quá cao, ứng dụng của bạn có thể đang bị nghẽn cổ chai ở tầng lưu trữ.
- %util: Phần trăm thời gian mà thiết bị bận rộn xử lý các yêu cầu I/O. Nếu chỉ số này tiệm cận 100%, ổ đĩa của bạn đang hoạt động ở mức tối đa.
hdparm – Tinh chỉnh và đo lường thông số ổ đĩa
hdparm
là một công cụ cấp thấp cho phép đọc và thậm chí thay đổi các thông số phần cứng của ổ đĩa. Mặc dù việc thay đổi cần hết sức cẩn thận, khả năng đọc thông tin và đo hiệu năng của nó rất giá trị.
Để lấy thông tin nhận dạng chi tiết của ổ đĩa, bao gồm model, serial number, phiên bản firmware, và các tính năng được hỗ trợ:
$ sudo hdparm -I /dev/sda
hdparm
cũng có thể thực hiện một bài kiểm tra tốc độ đọc nhanh chóng. Tùy chọn -t
kiểm tra tốc độ đọc từ bộ đệm của hệ điều hành, còn -T
kiểm tra tốc độ đọc từ bộ đệm của chính ổ đĩa. Chạy cả hai sẽ cho bạn một con số tham khảo về hiệu năng đọc tuần tự của ổ cứng.
$ sudo hdparm -tT /dev/sda
/dev/sda:
Timing cached reads: 18564 MB in 2.00 seconds = 9294.13 MB/sec
Timing buffered disk reads: 554 MB in 3.01 seconds = 184.21 MB/sec
Kết quả trên cho thấy tốc độ đọc từ bộ đệm (RAM) rất nhanh, trong khi tốc độ đọc thực tế từ đĩa cứng vật lý là khoảng 184 MB/giây, một con số điển hình cho ổ HDD 7200 RPM.
Bảng so sánh nhanh các công cụ
Để giúp bạn dễ dàng lựa chọn, đây là bảng tổng hợp các công cụ đã đề cập và trường hợp sử dụng chính của chúng.
Công cụ | Mục đích chính | Khi nào dùng? |
---|---|---|
df |
Kiểm tra dung lượng trống của các hệ thống tập tin đã mount. | Khi cần cái nhìn tổng quan: “Phân vùng /home còn trống bao nhiêu?”. |
du |
Ước tính dung lượng sử dụng của các file và thư mục cụ thể. | Khi cần tìm chi tiết: “Thư mục nào trong /var đang chiếm nhiều dung lượng nhất?”. |
lsblk |
Hiển thị cấu trúc cây của các thiết bị khối và phân vùng. | Khi cần xác định tên thiết bị (/dev/sdb1 ) và điểm mount của nó. |
fdisk -l |
Đọc chi tiết bảng phân vùng (loại, kích thước, sector). | Khi cần xem cấu trúc phân vùng cấp thấp của một ổ đĩa. |
smartctl |
Đọc dữ liệu S.M.A.R.T. để chẩn đoán “sức khỏe” ổ đĩa. | Khi nghi ngờ ổ cứng sắp hỏng hoặc cần kiểm tra định kỳ. |
iostat |
Theo dõi hiệu suất I/O (IOPS, throughput, latency) theo thời gian thực. | Khi ứng dụng chạy chậm và bạn nghi ngờ do nghẽn cổ chai ở ổ cứng. |
hdparm |
Đọc thông số phần cứng và đo hiệu năng đọc cơ bản. | Khi cần benchmark nhanh tốc độ đọc hoặc xem thông tin model/serial. |
Tóm tắt nhanh
Để làm chủ việc quản lý ổ cứng qua CLI trên Linux, hãy ghi nhớ các điểm chính sau:
- Dùng
df -h
để có cái nhìn tổng quan về dung lượng trống trên các phân vùng đã mount. - Sử dụng
du -sh <thư-mục>
để tìm ra các file hoặc thư mục chiếm dụng nhiều không gian nhất. - Lệnh
lsblk
là cách tốt nhất để xem cấu trúc và mối quan hệ giữa các ổ đĩa, phân vùng và điểm mount. - Khi cần chẩn đoán “sức khỏe” vật lý của ổ đĩa,
smartctl -a
là công cụ không thể thiếu để đọc dữ liệu S.M.A.R.T. - Để theo dõi hiệu suất I/O theo thời gian thực và phát hiện nghẽn cổ chai, hãy dùng
iostat -d -x
. - Các lệnh như
fdisk -l
vàhdparm
cung cấp thông tin cấp thấp hơn về cấu trúc phân vùng và thông số phần cứng.
Lời kết
Việc thành thạo các công cụ dòng lệnh để đọc và phân tích ổ cứng là một kỹ năng nền tảng của bất kỳ quản trị viên hệ thống Linux nào. Mỗi công cụ đều có một vai trò riêng, từ việc kiểm tra dung lượng hàng ngày với df
và du
, cho đến việc chẩn đoán các vấn đề phức tạp về hiệu năng với iostat
hay dự đoán lỗi phần cứng với smartctl
. Bằng cách hiểu rõ và kết hợp chúng một cách linh hoạt, bạn có thể giám sát, khắc phục sự cố và tối ưu hóa hệ thống lưu trữ của mình một cách hiệu quả.
Đừng ngần ngại mở terminal và thực hành ngay hôm nay. Sức mạnh thực sự của Linux nằm trong khả năng kiểm soát hệ thống đến từng chi tiết nhỏ nhất, và những công cụ này chính là chìa khóa giúp bạn mở ra cánh cửa đó.