Lệnh iostat
trong Linux là công cụ dùng để theo dõi hiệu suất CPU và thống kê hoạt động I/O của các thiết bị lưu trữ. Việc sử dụng iostat
giúp bạn phân tích hiệu năng hệ thống, phát hiện sớm các vấn đề liên quan đến thiết bị lưu trữ hoặc quá tải CPU. Trong bài viết này, mình sẽ hướng dẫn bạn cách sử dụng lệnh iostat
Linux cùng với các ví dụ thực tế để dễ áp dụng trong công việc.
Những điểm chính
- Hiểu rõ lệnh
iostat
trong Linux: Biết đượciostat
là gì và vai trò của nó trong việc giám sát hiệu suất hệ thống. - Cách sử dụng lệnh
iostat
đúng cú pháp: Nắm vững cú pháp chuẩn để áp dụng hiệu quả trong thực tế. - Tùy chọn và ví dụ thực tế: Làm quen với các tùy chọn thông dụng của
iostat
và cách áp dụng qua các ví dụ cụ thể. - Biết thêm về Vietnix – Nhà cung cấp dịch vụ lưu trữ chất lượng.
- Giải đáp nhanh các câu hỏi thường gặp: Giúp bạn tháo gỡ thắc mắc phổ biến khi sử dụng lệnh
iostat
.
Lệnh iostat Linux là gì?
Lệnh iostat
Linux là lệnh được sử dụng để giám sát thống kê I/O (input/output) của hệ thống, bao gồm các thiết bị vật lý và phân vùng. Công cụ này giúp bạn theo dõi mức độ hoạt động của thiết bị lưu trữ so với tốc độ truyền tải trung bình, từ đó đánh giá hiệu suất hệ thống một cách trực quan.

iostat
thường được dùng để xác định các điểm nghẽn về I/O, hỗ trợ cân bằng tải giữa các đĩa vật lý, giúp tối ưu hóa cấu hình hệ thống. Lệnh này là một phần của gói sysstat
. Nếu hệ thống chưa có, bạn cần cài đặt thủ công theo lệnh dưới đây:
# Trên RedHat / CentOS / Fedora
yum install sysstat
# Trên Debian / Ubuntu / Linux Mint
apt-get install sysstat
Sau khi cài đặt, bạn có thể sử dụng nhiều biến thể của iostat
để thu thập các loại dữ liệu khác nhau:
iostat
: Hiển thị báo cáo tổng quan CPU và I/O.iostat -x
: Xem báo cáo chi tiết hơn về I/O.iostat -c
: Chỉ hiển thị thống kê CPU.iostat -d
: Chỉ hiển thị báo cáo thiết bị.iostat -xd
: Thống kê chi tiết I/O cho thiết bị.iostat -k
: Hiển thị thống kê theo đơn vị kilobyte hoặc megabyte.iostat -k 2 3
: Cập nhật thống kê theo chu kỳ với độ trễ.iostat -j ID mmcbkl0 sda6 -x -m 2 2
: Hiển thị thống kê theo tên thiết bị ổn định.iostat -p
: Hiển thị thống kê thiết bị khối và phân vùng.iostat -N
: Thống kê thiết bị sử dụng LVM2.
Cú pháp lệnh iostat Linux
Cú pháp cơ bản của lệnh iostat Linux như sau:
iostat
Ví dụ:

Khi chạy lệnh này, kết quả trả về gồm hai phần chính là: Báo cáo CPU và báo cáo thiết bị.
Báo cáo CPU: Phần đầu của kết quả hiển thị thống kê sử dụng CPU với các cột sau:
- %user: Tỷ lệ phần trăm CPU được sử dụng ở mức người dùng (user level).
- %nice: Tỷ lệ CPU sử dụng ở mức user với mức ưu tiên (nice) đã điều chỉnh.
- %system: Tỷ lệ CPU sử dụng ở mức hệ thống (kernel level).
- %iowait: Tỷ lệ thời gian CPU chờ đợi I/O từ thiết bị (ví dụ: ổ đĩa).
- %steal: Tỷ lệ thời gian CPU bị chiếm bởi các máy ảo khác trong môi trường ảo hóa.
- %idle: Tỷ lệ CPU không hoạt động và không có yêu cầu I/O nào đang chờ xử lý.
Báo cáo thiết bị: Phần tiếp theo hiển thị thống kê chi tiết cho từng thiết bị hoặc phân vùng lưu trữ:
- Device: Tên thiết bị hoặc phân vùng, ví dụ
/dev/sda
. - tps: Số lượng lần chuyển dữ liệu (transfer per second) đến thiết bị.
- Blk_read/s: Số block dữ liệu được đọc mỗi giây.
- Blk_wrtn/s: Số block dữ liệu được ghi mỗi giây.
- Blk_read: Tổng số block đã đọc kể từ lần khởi động hệ thống.
- Blk_wrtn: Tổng số block đã ghi kể từ khi khởi động.
Các nguồn dữ liệu hệ thống: Lệnh iostat
thu thập thông tin từ các file hệ thống sau để tổng hợp báo cáo:
/proc/stat
: Thống kê tổng quan hệ thống./proc/uptime
: Thời gian hoạt động của hệ thống./proc/diskstats
: Thống kê chi tiết về các ổ đĩa./sys
: Dữ liệu liên quan đến thiết bị block./proc/self/mountstats
: Thống kê hệ thống tệp mạng (NFS)./dev/disk
: Thông tin về tên thiết bị lưu trữ cố định.
Các tùy chọn trong lệnh iostat Linux và ví dụ cụ thể
Lệnh iostat
cung cấp nhiều tùy chọn để theo dõi hiệu suất CPU và thiết bị I/O một cách chi tiết. Dưới đây là các tùy chọn phổ biến và ví dụ minh họa giúp bạn hiểu rõ hơn cách sử dụng trong thực tế:
1. iostat -x
: Hiển thị thống kê I/O mở rộng
Tùy chọn -x
giúp hiển thị chi tiết hiệu suất của thiết bị lưu trữ, bao gồm các chỉ số như %util
, await
, svctm
… giúp phân tích chuyên sâu tình trạng hệ thống.
iostat -x
Ví dụ:

Một số trường thông dụng:
%util
: Tỷ lệ thời gian thiết bị bận xử lý I/O (cao nghĩa là thiết bị đang bị quá tải).svctm
: Thời gian trung bình xử lý một yêu cầu I/O (càng thấp càng tốt).await
: Thời gian trung bình chờ xử lý I/O.avgqu-sz
: Số lượng yêu cầu trong hàng đợi I/O trung bình.
2. iostat -c
: Chỉ hiển thị thống kê CPU
Hiển thị hiệu suất CPU mà không kèm theo thông tin thiết bị I/O, bạn sử dụng lệnh sau:
iostat -c
Ví dụ:

3. iostat -d
: Chỉ hiển thị thống kê thiết bị I/O
Tùy chọn này giúp xem nhanh hiệu suất của các thiết bị lưu trữ mà không kèm thống kê CPU.
iostat -d
Ví dụ:

4. iostat -xd
: Thống kê mở rộng chỉ cho thiết bị
Tùy chọn này kết hợp giữa -x
và -d
, chỉ hiển thị thông tin chi tiết cho thiết bị I/O.
iostat -xd
Ví dụ:

5. iostat -k
và iostat -m
: Đổi đơn vị sang KB hoặc MB
Mặc định iostat
dùng đơn vị byte. Bạn dùng -k
hoặc -m
để đổi sang kilobytes hoặc megabytes.
iostat -k # đơn vị KB
iostat -m # đơn vị MB
Ví dụ:


6. iostat -k 2 3
: Thống kê theo thời gian
Lệnh này chạy với khoảng cách 2 giây giữa mỗi báo cáo và lặp lại 3 lần, giúp bạn theo dõi xu hướng thay đổi trong thời gian thực.
iostat -k 2 3
Ví dụ:

7. iostat -c 2 2
: Chỉ thống kê CPU theo thời gian
Tùy chọn này hiển thị thông tin CPU mỗi 2 giây, lặp lại 2 lần.
iostat -c 2 2

8. iostat -d sda7 sda6 2 2
: Chỉ định thiết bị cần theo dõi
Tùy chọn này theo dõi riêng hai thiết bị sda6
và sda7
, với khoảng thời gian 2 giây và lặp 2 lần.
iostat -d sda7 sda6 2 2

9. iostat -j ID mmcbkl0 sda6 -x -m 2 2
: Sử dụng tên thiết bị cố định (persistent)
Bạn dùng tùy chọn -j ID
để theo dõi thiết bị bằng tên cố định, thay vì /dev/sdX
.
iostat -j ID mmcbkl0 sda6 -x -m 2 2
10. iostat -p
: Hiển thị thống kê cho thiết bị và phân vùng
Tùy chọn -p hiển thị chi tiết thống kê cho cả thiết bị và các phân vùng liên quan.
iostat -p

11. iostat -N
: Hiển thị thông tin thiết bị LVM
Tùy chọn này dùng để thống kê các thiết bị sử dụng LVM thông qua Device Mapper.
iostat -N

Với các tùy chọn trên, bạn có thể linh hoạt theo dõi và phân tích hiệu suất hệ thống một cách chi tiết và trực quan, hỗ trợ chẩn đoán và tối ưu tài nguyên hiệu quả hơn.
Vietnix – Nhà cung cấp dịch vụ lưu trữ tốc độ cao, support nhiệt tình
Vietnix là nhà cung cấp dịch vụ thuê VPS chuyên nghiệp với hạ tầng mạnh mẽ, 100% SSD giúp truy cập nhanh và ổn định. Dịch vụ VPS Linux tại Vietnix nổi bật với khả năng tùy chỉnh linh hoạt, hiệu suất cao và bảo mật tốt, phù hợp cho cả doanh nghiệp lẫn cá nhân. Đội ngũ kỹ thuật luôn hỗ trợ tận tâm 24/7, giúp bạn yên tâm vận hành hệ thống mà không lo gián đoạn. Liên hệ ngay để được tư vấn chi tiết!
Thông tin liên hệ:
- Hotline: 18001093
- Email: sales@vietnix.com.vn
- Địa chỉ: 265 Hồng Lạc, Phường 10, Quận Tân Bình, Thành Phố Hồ Chí Minh.
- Website: https://vietnix.vn/
Câu hỏi thường gặp
Sự thay đổi bất thường nào trong kết quả iostat có thể cảnh báo nguy cơ lỗi phần cứng hoặc quá tải dịch vụ?
Một số thay đổi bất thường trong kết quả iostat có thể cảnh báo nguy cơ lỗi phần cứng hoặc quá tải dịch vụ như:
– %util tăng liên tục lên gần hoặc đạt 100%: Thiết bị lưu trữ bị quá tải, có thể dẫn đến nghẽn I/O.
– await và avgqu-sz đột ngột tăng cao: Báo hiệu hàng đợi I/O dài, thời gian chờ xử lý lâu, có thể do lỗi phần cứng hoặc tắc nghẽn hệ thống.
– svctm bất thường hoặc tăng đột biến: Thiết bị phản hồi chậm hơn bình thường, cảnh báo lỗi phần cứng hoặc sự cố firmware.
– rrqm/s và wrqm/s giảm đột ngột: Có thể do mất khả năng ghép lệnh (merge requests), gây giảm hiệu suất I/O.
– Xuất hiện giá trị 0 hoặc lỗi trong các thông số đọc/ghi: Cảnh báo thiết bị bị lỗi hoặc mất kết nối.
Vì sao await cao nhưng %util lại thấp? Cách xác định vấn đề này từ dữ liệu iostat?
await
cao cho thấy thời gian chờ trung bình của các yêu cầu I/O lâu, trong khi %util
thấp nghĩa là thiết bị lưu trữ không bị quá tải. Điều này thường xảy ra khi hệ thống có nghẽn cổ chai ở tầng phần mềm hoặc hàng đợi I/O quá dài, khiến yêu cầu bị trì hoãn trước khi đến thiết bị. Nguyên nhân có thể do driver, bộ nhớ đệm, hoặc các tác vụ đồng thời gây chậm trễ xử lý I/O, không phải do thiết bị vật lý quá bận.
Cách xác định:
Xem thêm các chỉ số như avgqu-sz
(độ dài hàng đợi) và svctm
(thời gian phục vụ thực tế). Nếu avgqu-sz
lớn nhưng %util
thấp và svctm
thấp, tức là phần lớn thời gian là chờ trong hàng đợi, không phải thiết bị bận xử lý.
Lời kết
Hy vọng qua bài viết này, bạn đã nắm được cách sử dụng các tùy chọn phổ biến của lệnh iostat
Linux để đánh giá tải I/O, tốc độ phản hồi thiết bị, cũng như phát hiện sớm các vấn đề tiềm ẩn. Việc hiểu rõ và vận dụng thành thạo lệnh này sẽ giúp bạn tối ưu hiệu năng hệ thống, đảm bảo dịch vụ hoạt động ổn định và hiệu quả hơn. Nếu cần giải pháp lưu trữ tốc độ cao, đừng quên tham khảo các dịch vụ VPS Linux chất lượng tại Vietnix để được hỗ trợ tốt nhất. Cảm ơn bạn đã theo dõi!