Liên hệProfile
Danh mục

Mục Lục

    Hướng dẫn dùng lệnh iotop để giám sát I/O trong Linux

    Nguyễn Hưng

    Ngày đăng:

    10/01/2026

    Cập nhật lần cuối:

    10/01/2026

    Lượt xem:
    Chia sẻ
    Đánh giá
    5/5 - (1 bình chọn)

    Nguyễn Hưng

    Lượt xem:
    Ngày đăng:

    10/01/2026

    Cập nhật lần cuối:

    10/01/2026

    Mục lục

    iotop là một lệnh dòng trong hệ điều hành Linux được dùng để giám sát, hiển thị hoạt động đọc/ghi dữ liệu (I/O) trên ổ đĩa của hệ thống theo thời gian thực. Trong bài viết này, mình sẽ hướng dẫn bạn cách sử dụng lệnh iotop để giám sát I/O trong Linux, từ đó tối ưu hiệu năng tổng thể cho server hoặc VPS của mình.

    Những điểm chính

    • Khái niệm lệnh iotop: Hiểu rõ khái niệm và chức năng của iotop, công cụ dòng lệnh chuyên dụng để giám sát hoạt động I/O đĩa theo thời gian thực.
    • Cú pháp và tùy chọn: Nắm vững cấu trúc lệnh cơ bản và các tùy chọn phổ biến như -o, -b, -p để tùy chỉnh việc giám sát.
    • Hướng dẫn cài đặt: Biết cách kiểm tra yêu cầu hệ thống và cài đặt iotop nhanh chóng trên các bản phân phối Linux khác nhau, từ Ubuntu đến CentOS.
    • Các ví dụ sử dụng thực tế: Thành thạo các cách dùng iotop trong thực tế, như chỉ hiển thị tiến trình đang hoạt động I/O, theo dõi tiến trình cụ thể và ghi log.
    • Kịch bản chẩn đoán: Học quy trình chẩn đoán chuyên nghiệp để xác định nguyên nhân gây chậm hệ thống, từ việc dùng top đến khoanh vùng bằng iotop.
    • Giải đáp thắc mắc (FAQ): Có được câu trả lời cho các vấn đề thực tế như giới hạn kernel, cách xem tổng lượng dữ liệu và xử lý khi swapin tăng cao.

    Lệnh iotop là gì?

    iotop là một tiện ích dòng lệnh mã nguồn mở miễn phí trong Linux, được thiết kế chuyên biệt để giám sát hoạt động I/O (Input/Output) của ổ đĩa cứng theo thời gian thực. Tuy nhiên, thay vì tập trung vào việc sử dụng CPU hay bộ nhớ RAM, iotop tập trung hiển thị danh sách các tiến trình (process) hoặc luồng (thread) đang tiêu thụ băng thông ổ cứng nhiều nhất. Công cụ này đặc biệt hữu ích khi hệ thống hoạt động chậm chạp và người quản trị cần xác định xem chương trình nào đang ghi hoặc đọc dữ liệu quá mức.

    iotop là một tiện ích dòng lệnh mã nguồn mở miễn phí
    iotop là một tiện ích dòng lệnh mã nguồn mở miễn phí

    Công cụ iotop trình bày thông tin thông qua một giao diện dạng bảng, giúp người dùng dễ dàng nắm bắt tình hình hệ thống với các tính năng nổi bật sau:

    • Hiển thị tốc độ đọc và ghi dữ liệu chi tiết theo từng tiến trình hoặc luồng.
    • Cung cấp thông tin về phần trăm thời gian mà một tiến trình phải chờ đợi hoạt động I/O hoặc swap.
    • Hỗ trợ nhiều tùy chọn dòng lệnh linh hoạt để lọc, sắp xếp và tùy biến cách hiển thị dữ liệu theo nhu cầu giám sát cụ thể.

    Cú pháp cơ bản

    Để chạy iotop, người dùng bắt buộc phải có quyền quản trị (root) hoặc sử dụng sudo, vì lệnh này cần truy cập vào thông tin hạt nhân của hệ thống.

    sudo iotop [TÙY_CHỌN]

    Sau khi chạy, màn hình sẽ hiển thị danh sách các tiến trình được sắp xếp theo mức độ sử dụng I/O.

    Danh sách các tiến trình được sắp xếp theo mức độ sử dụng I/O
    Danh sách các tiến trình được sắp xếp theo mức độ sử dụng I/O

    Dưới đây là phân tích các cột quan trọng:

    • TID/PID: ID của Thread hoặc Process đang gây ra I/O.
    • PRIO: Độ ưu tiên của tiến trình đối với I/O (Class/Level).
    • USER: Người dùng sở hữu tiến trình đó.
    • DISK READ / DISK WRITE: Tốc độ đọc/ghi dữ liệu hiện tại của tiến trình xuống ổ cứng (ví dụ: B/s, K/s, M/s). Đây là hai cột trực quan nhất để xác định tiến trình nào đang hoạt động.
    • SWAPIN: Phần trăm thời gian mà tiến trình dùng để “swap in” (đọc dữ liệu từ swap trên ổ cứng vào RAM). Nếu con số này cao, đó là dấu hiệu server của bạn đang thiếu RAM trầm trọng.
    • IO%: Phần trăm thời gian mà tiến trình đã phải chờ đợi để thực hiện thao tác I/O. ((Chỉ số này cao chứng tỏ tiến trình đang chiếm dụng ổ cứng lớn).

    Tùy chọn phổ biến của lệnh iotop

    Tùy chọnChức năng
    -o, --onlyChỉ hiển thị các tiến trình đang thực sự hoạt động I/O (thay vì hiện tất cả).
    -b, --batchChế độ không tương tác, hữu ích để ghi log hoặc chạy script.
    -n NUM, --iter=NUMSố lần cập nhật dữ liệu trước khi thoát chương trình.
    -d SEC, --delay=SECThiết lập khoảng thời gian (giây) giữa các lần làm mới dữ liệu.
    -p PID, --pid=PIDChỉ giám sát (filter) theo mã ID của một tiến trình cụ thể.
    -u USER, --user=USERChỉ hiển thị các tiến trình được thực hiện bởi người dùng cụ thể.
    -P, --processesChỉ hiển thị các tiến trình (processes), thay vì hiển thị tất cả các luồng (threads).
    -a, --accumulatedHiển thị tổng lượng I/O tích lũy từ khi chạy lệnh thay vì tốc độ tức thời (băng thông).
    -k, --kilobytesHiển thị đơn vị đo là Kilobytes (KB) thay vì Bytes.
    -t, --timeThêm nhãn thời gian (timestamp) vào mỗi dòng khi in ra màn hình (hữu ích cho chế độ batch).

    Các phím tắt tương tác nhanh

    Trong khi giao diện iotop đang chạy, người dùng có thể sử dụng bàn phím để điều khiển:

    • Phím o: Bật/tắt chế độ chỉ hiển thị các tiến trình đang có hoạt động I/O (tương tự cờ -o).
    • Phím p: Chuyển đổi giữa chế độ xem theo Process (Tiến trình) hoặc Thread (Luồng).
    • Phím a: Bật/tắt chế độ “accumulated”, hiển thị tổng dung lượng đã đọc/ghi từ đầu thay vì tốc độ hiện tại, rất hữu ích để tìm các process hoạt động theo từng đợt ngắn.
    • Phím r: Đảo ngược thứ tự sắp xếp (từ cao đến thấp và ngược lại).
    • Phím q: Thoát khỏi chương trình.
    • Phím Mũi tên trái/phải: Thay đổi cột dùng để sắp xếp dữ liệu (ví dụ: sắp xếp theo DISK WRITE hoặc DISK READ).

    Yêu cầu trước khi cài đặt

    Để có thể vận hành một cách chính xác, iotop đòi hỏi môi trường hệ thống phải đáp ứng một số yêu cầu kỹ thuật cụ thể sau:

    • Phiên bản Linux Kernel: Yêu cầu từ phiên bản 2.6.20 trở lên, vì công cụ cần các chức năng liên quan đến taskstats có trong các phiên bản kernel này.
    • Phiên bản Python: Yêu cầu từ phiên bản 2.7 trở lên.
    • Quyền thực thi: Công cụ cần được chạy với quyền root (thông qua lệnh sudo) để có thể truy cập và thu thập đầy đủ dữ liệu I/O từ tất cả các tiến trình trên hệ thống.

    Kiểm tra phiên bản hệ thống hiện tại

    Trước khi tiến hành cài đặt, việc kiểm tra và đảm bảo hệ thống đáp ứng các yêu cầu tối thiểu là một bước quan trọng giúp tránh các lỗi không tương thích. Người dùng có thể dễ dàng xác minh phiên bản Kernel và Python đang được sử dụng thông qua các câu lệnh đơn giản sau:

    • Kiểm tra phiên bản Kernel:
    $uname -r
    Kiểm tra phiên bản Kernel
    Kiểm tra phiên bản Kernel
    • Kiểm tra phiên bản Python:
    $python3 -V hoặc $python3 --version
    Kiểm tra phiên bản Python
    Kiểm tra phiên bản Python

    Nếu kết quả trả về cho thấy phiên bản Kernel lớn hơn hoặc bằng 2.6.20 và phiên bản Python lớn hơn hoặc bằng 2.7, hệ thống đã sẵn sàng để cài đặt iotop.

    Cài đặt iotop

    Cách 1 – Cài đặt qua trình quản lý gói

    Để đảm bảo tính ổn định, người dùng nên cập nhật kho phần mềm của hệ thống trước khi cài đặt. Sau đó, tùy thuộc vào bản phân phối Linux đang vận hành, hãy sử dụng lệnh tương ứng:

    • Trên Debian/Ubuntu/Linux Mint:
    $sudo apt update
    $sudo apt install iotop
    • Trên CentOS/RHEL 7:
    $sudo yum update -y
    $sudo yum install iotop
    • Trên RHEL 8+, Fedora và các phiên bản tương tự:
    $sudo dnf update -y
    $sudo dnf install iotop
    • Trên Arch Linux/Manjaro:
    $sudo pacman -Syu
    $sudo pacman -S iotop
    • Trên OpenSUSE/SUSE Linux Enterprise:
    $sudo zypper refresh
    $sudo zypper install iotop

    Cách 2 – Cài đặt iotop từ mã nguồn

    Trong trường hợp iotop không có sẵn trong kho phần mềm hoặc người dùng muốn cài đặt một phiên bản cụ thể (ví dụ: phiên bản 0.6), việc cài đặt từ mã nguồn là một giải pháp thay thế hiệu quả. Quy trình bao gồm các bước sau:

    Tải gói mã nguồn: Bạn sử dụng lệnh wget để tải về tệp lưu trữ.

    $wget http://guichaz.free.fr/iotop/files/iotop-0.6.tar.bz2

    Giải nén tệp:

    $tar -xjvf iotop-0.6.tar.bz2

    Di chuyển vào thư mục vừa giải nén:

    $cd iotop-0.6/

    Thực thi cài đặt: Chạy tệp setup.py với quyền root để hoàn tất quá trình.

    $sudo ./setup.py install
    • Trên Debian/Ubuntu:
    sudo apt-get update && sudo apt-get install iotop
    • Trên CentOS/RHEL/Fedora:
    sudo yum install iotop 
    # Hoặc
    sudo dnf install iotop

    Ví dụ sử dụng lệnh iotop thực tế

    Mặc định, iotop sẽ liệt kê tất cả các tiến trình, điều này có thể gây nhiễu và khó quan sát. Bạn hãy áp dụng các ví dụ sau để tập trung vào đúng đối tượng cần giám sát.

    Chỉ hiển thị các tiến trình đang có hoạt động I/O

    Bạn chạy lệnh sau để lọc bỏ các dòng trống và chỉ liệt kê những chương trình đang thực sự đọc hoặc ghi vào ổ cứng tại thời điểm đó.

    sudo iotop -o
    Liệt kê những chương trình đang thực sự đọc hoặc ghi vào ổ cứng
    Liệt kê những chương trình đang thực sự đọc hoặc ghi vào ổ cứng

    Theo dõi một tiến trình cụ thể

    Khi bạn nghi ngờ một ứng dụng cụ thể đang làm chậm hệ thống và đã biết PID của tiến trình, bạn hãy sử dụng tùy chọn -p để theo dõi riêng tiến trình đó.

    sudo iotop -p 1234
    Theo dõi một tiến trình cụ thể
    Theo dõi một tiến trình cụ thể

    Ghi lại lịch sử hoạt động I/O ra file

    Nếu bạn muốn lưu lại trạng thái hệ thống để phân tích sau hoặc gửi báo cáo, hãy sử dụng chế độ không tương tác (-b) kết hợp với số lần lặp (-n). Ví dụ dưới đây sẽ ghi lại 5 lần cập nhật trạng thái vào file văn bản.

    sudo iotop -b -n 5 > /tmp/io_log.txt # Ghi lại 5 lần cập nhật rồi thoát

    Kịch bản chẩn đoán thực tế

    Đây là một quy trình chẩn đoán hoàn chỉnh và hiệu quả giúp bạn giải quyết tình trạng server chậm do I/O:

    1. Phát hiện vấn đề với top: Sau khi chạy top và thấy chỉ số %wa cao bất thường, bạn có thể xác nhận vấn đề đến từ I/O.
    2. Khoanh vùng thủ phạm với iotop: Bạn mở một cửa sổ terminal khác, chạy lệnh sudo iotop -o và bạn sẽ thấy tiến trình đang đứng đầu danh sách về DISK WRITE hoặc có IO% cao nhất.
    3. Phân tích và hành động:
      • Nếu là mysqld hoặc postgres: Vấn đề có thể đến từ các câu lệnh query không được tối ưu, buộc cơ sở dữ liệu phải quét (scan) quá nhiều dữ liệu trên đĩa. Khi đó, bạn hãy kiểm tra slow query log, tối ưu lại chỉ mục (index).
      • Nếu là rsync, tar, cp: Một tác vụ backup, sao chép file lớn đang chạy, bạn cần kiểm tra cron job, có thể điều chỉnh lại lịch chạy vào giờ thấp điểm hoặc dùng ionice để giảm độ ưu tiên I/O của tiến trình.
      • Nếu là jbd2/sda1-8 hoặc kworker: Là các tiến trình của kernel Linux liên quan đến hệ thống file (journaling), cho thấy có một lượng lớn các thao tác ghi file nhỏ đang diễn ra, thường do một ứng dụng nào đó ghi log liên tục. Khi đó, bạn hãy dùng các công cụ khác như lsof để xem ứng dụng nào đang mở nhiều file và ghi liên tục.
    Quy trình các bước chẩn đoán hoàn chỉnh và hiệu quả
    Quy trình các bước chẩn đoán hoàn chỉnh và hiệu quả

    Câu hỏi thường gặp

    iotop có thể chạy trên mọi bản phân phối Linux không, hay bị giới hạn kernel?

    iotop chỉ chạy ổn định trên các hệ thống có kernel Linux từ phiên bản 2.6.20 trở lên, vì các bản kernel cũ không có module taskstats cần thiết. Hầu hết các bản phân phối hiện đại đều đáp ứng tiêu chí này.

    Có thể theo dõi tổng lượng dữ liệu đã đọc/ghi từ đầu phiên không?

    Có thể. Khi đang chạy iotop, bạn bấm phím a để chuyển sang chế độ “accumulated”, ngay lập tức công cụ sẽ hiển thị tổng dung lượng đã đọc/ghi của từng process từ đầu phiên giám sát.

    Làm sao xuất dữ liệu iotop ra file log để phân tích về sau?

    Bạn chỉ cần dùng chế độ batch (-b) kèm tham số số lần cập nhật (-n), ví dụ:
    sudo iotop -b -n 10 > /tmp/io_log.txt
    Dữ liệu sẽ được ghi ra file nhật ký để xem lại hoặc xử lý bằng script.

    iotop có hỗ trợ lọc hoặc chỉ hiển thị các tiến trình thực sự gây I/O không?

    iotop có hỗ trợ bằng tùy chọn -o (only). Lệnh sudo iotop -o chỉ liệt kê những process/luồng đang thực sự đọc hoặc ghi dữ liệu vào ổ cứng, giúp bạn tập trung xử lý các thủ phạm gây nghẽn.

    Nếu lượng swapin trong iotop tăng cao thì xử lý thế nào?

    Swapin cao cho thấy RAM hệ thống đang thiếu, tiến trình phải chuyển dữ liệu liên tục từ swap vào RAM, làm giảm hiệu năng tổng thể. Giải pháp là nâng cấp RAM hoặc tối ưu lại các tiến trình/ngừng ứng dụng chiếm dụng bộ nhớ nhiều nhất để giảm nhu cầu dùng swap.

    iotop là tiện ích giám sát I/O đĩa cứng mạnh mẽ, giúp kiểm soát, phân tích và xử lý sự cố thực tế trên server Linux. Nhờ tích hợp nhiều tính năng hữu ích như lọc theo tiến trình I/O, ghi log phân tích, hiển thị tổng lượng đọc/ghi và tùy chỉnh giao diện, người dùng dễ dàng tối ưu trải nghiệm và hiệu suất hệ thống. Việc ứng dụng iotop một cách bài bản sẽ giúp hệ thống giảm nguy bị cơ nghẽn cổ chai, nâng cao độ ổn định và chủ động trong mọi quyết định quản lý hạ tầng công nghệ thông tin.

    5/5 - (1 bình chọn)
    Nguyễn Hưng
    Tôi là Nguyễn Hưng hay còn được biết đến với nickname là Bo, chuyên gia về hệ thống, mạng và bảo mật. Tôi là Co-Founder của Vietnix và Co-Founder của dự án Chống Lừa Đảo.
    0 0 đánh giá
    Đánh giá bài viết
    Theo dõi
    Thông báo của
    guest
    0 Góp ý
    Cũ nhất
    Mới nhất Được bỏ phiếu nhiều nhất
    Phản hồi nội tuyến
    Xem tất cả bình luận

    BÀI VIẾT LIÊN QUAN

    Cách dùng dmidecode trên Linux để xem thông tin phần cứng chính xác và nhanh chóng
    Cách dùng dmidecode trên Linux để xem thông tin phần cứng chính xác và nhanh chóng

    dmidecode là một công cụ dòng lệnh trên Linux dùng để đọc và hiển thị thông tin phần cứng máy tính từ bảng DMI hoặc SMBIOS cung cấp bởi BIOS, giúp kiểm tra chi tiết như nhà sản xuất, model, số serial, BIOS, CPU, RAM mà không cần mở máy. Trong bài viết này, mình…

    27/02/2026

    Lệnh partx Linux là gì? 7 ví dụ ứng dụng thực tế của lệnh partx
    Lệnh partx Linux là gì? 7 ví dụ ứng dụng thực tế của lệnh partx

    Lệnh partx Linux là một công cụ dòng lệnh thuộc gói util-linux, được sử dụng để thêm, xóa hoặc liệt kê các phân vùng của thiết bị đĩa vào bảng phân vùng của hệ thống mà không cần khởi động lại hoặc gắn lại thiết bị. Trong bài viết này, mình sẽ hướng dẫn bạn…

    27/02/2026

    Hướng dẫn 7 cách kiểm tra CPU trên Linux chính xác và nhanh chóng
    Hướng dẫn 7 cách kiểm tra CPU trên Linux chính xác và nhanh chóng

    Trong môi trường quản trị Linux, việc kiểm tra tốc độ xung nhịp CPU là một thao tác cần thiết giúp người dùng đánh giá khả năng chịu tải, phát hiện các điểm nghẽn hiệu suất  và hỗ trợ tối ưu trong quá trình tối ưu hóa hoặc khắc phục sự cố phần cứng. Trong…

    27/02/2026

    Hướng dẫn xóa bộ nhớ Cache, bộ đệm và Swap trong Linux nhanh chóng, chi tiết
    Hướng dẫn xóa bộ nhớ Cache, bộ đệm và Swap trong Linux nhanh chóng, chi tiết

    Trong Linux, bộ nhớ cache là nơi lưu trữ tạm thời dữ liệu và các file đã truy cập gần đây để giảm thời gian truy xuất ở lần tiếp theo. Tuy nhiên, theo thời gian, bộ nhớ cache có thể chiếm dụng quá nhiều RAM, đặc biệt trên các máy chủ có uptime dài…

    27/02/2026

    linux

    lenh

    text