linux 磁盘监控
在 Linux 中,可以通过多种方式查询硬盘的读写性能或实时读写情况。以下是几种常见的工具和命令:
see https://chatgpt.com/c/67825239-1c84-800b-9b7d-1cf05a46c1c1
1. 实时监控硬盘读写 (使用 iostat
)
安装 sysstat
工具包后,使用 iostat
查看硬盘读写情况:
iostat -dx 1
解释:
-d
: 显示设备统计。-x
: 显示扩展统计信息(如队列长度)。1
: 每秒刷新一次。
需要先安装:
sudo apt install sysstat # Debian/Ubuntu
sudo yum install sysstat # RHEL/CentOS
2. 查看实时 I/O 读写 (使用 iotop
)
iotop
可显示实时的进程硬盘 I/O 消耗:
sudo iotop
需要安装:
sudo apt install iotop # Debian/Ubuntu
sudo yum install iotop # RHEL/CentOS
3. 监控具体磁盘活动 (使用 dstat
)
dstat
是一个通用监控工具,可以监控磁盘读写:
dstat -d
需要安装:
sudo apt install dstat # Debian/Ubuntu
sudo yum install dstat # RHEL/CentOS
4. 性能测试 (使用 dd
或 fio
)
使用 dd
测试读写速度:
写测试:
dd if=/dev/zero of=/tmp/testfile bs=1G count=1 oflag=direct
读测试:
dd if=/tmp/testfile of=/dev/null bs=1G count=1 iflag=direct
解释:
bs
: 每次读写块的大小。count
: 执行多少次读写。oflag=direct
: 直接写入设备,避免缓存。
使用 fio
进行专业测试:
安装 fio
:
sudo apt install fio # Debian/Ubuntu
sudo yum install fio # RHEL/CentOS
运行测试:
fio --name=write_test --filename=/tmp/testfile --size=1G --time_based --runtime=30 --rw=write --bs=4k --ioengine=libaio --direct=1
参数解释:
--name
: 测试名称。--filename
: 测试文件路径。--size
: 测试文件大小。--runtime
: 测试运行时间(秒)。--rw
: 读写模式。--bs
: 块大小(4k)。--direct=1
: 直接 I/O,避免缓存。
5. 使用 cat
读取 /proc/diskstats
查看系统内核记录的磁盘 I/O 统计:
cat /proc/diskstats
每行的字段:
- 主设备号和次设备号。
- 设备名。
- 读取完成次数。
- 合并读请求次数。
- 读取的扇区数。
- 读花费的时间(毫秒)。
- 写完成次数。
- 合并写请求次数。
- 写入的扇区数。
- 写花费的时间(毫秒)。
6. 图形化工具
gnome-disks
: 可视化工具(适用于 GUI 环境)。KDiskMark
: 磁盘性能测试工具(类似 Windows 的 CrystalDiskMark)。
安装 gnome-disks
:
sudo apt install gnome-disk-utility
7. 总结
- 如果需要实时监控:推荐
iostat
或iotop
。 - 如果需要性能测试:推荐
fio
或dd
。 - 如果需要快速统计:直接读取
/proc/diskstats
或使用dstat
。
根据需求选择适合的工具即可。