在Ubuntu系统中查看不同挂载区的I/O读写速度

一、快速定位挂载点

# 查看所有挂载点及文件系统类型
lsblk -o NAME,MOUNTPOINT,FSTYPE,SIZE,TYPE,ROTA

输出示例:

NAME   MOUNTPOINT FSTYPE  SIZE TYPE ROTA
sda               ext4    1.8T disk    1
├─sda1 /          ext4    512G part    1
└─sda2 /data      xfs     1.3T part    1
nvme0n1           ext4    500G disk    0
└─nvme0n1p1 /ssd  ext4    500G part    0

关键列解释:
• ROTA=1:机械硬盘(HDD)

• ROTA=0:固态硬盘(SSD/NVMe)

• FSTYPE:文件系统类型(ext4/xfs/nfs等)


二、实时I/O监控

  1. 使用iostat(推荐)
# 安装sysstat
sudo apt install sysstat

# 监控所有设备I/O(每秒刷新)
iostat -dxz 1

关键指标:
%util > 90% 表示设备饱和

await > 10ms 表明I/O延迟过高

svctm 显示设备实际响应时间

  1. 按挂载点细分
# 使用iotop(需root)
sudo iotop -oPa --sort=DISK_READ

三、精准测速方法

  1. 顺序读写测试(适合机械硬盘)
# 测试写入速度(1GB文件)
sudo dd if=/dev/zero of=/挂载点/testfile bs=1G count=1 oflag=direct conv=fdatasync

# 测试读取速度
sudo dd if=/挂载点/testfile of=/dev/null bs=1G count=1 iflag=direct

# 清除测试文件
sudo rm -f /挂载点/testfile && sync
  1. 随机I/O测试(适合SSD/数据库场景)
# 安装fio
sudo apt install fio

# 混合读写测试(4K随机)
sudo fio --name=test --filename=/挂载点/fio_test \
--size=1G --runtime=60 --ioengine=libaio \
--rw=randrw --bs=4k --iodepth=64 \
--direct=1 --numjobs=4 --group_reporting
  1. 网络存储测试(NFS/SMB)
# NFS性能测试(带元数据操作)
sudo apt install nfs-common
sudo nfsiostat -s 1

# SMB/CIFS测试
sudo smbstatus -S

四、高级诊断技巧

  1. 查看块设备队列深度
cat /sys/block/sda/queue/nr_requests
# NVMe设备查看
nvme get-feature /dev/nvme0n1 -f 0x4 -H
  1. 检测磁盘调度算法
cat /sys/block/sda/queue/scheduler
# 修改为deadline(适用于HDD)
echo deadline | sudo tee /sys/block/sda/queue/scheduler
  1. 查看物理设备健康度
# HDD健康检测
sudo smartctl -A /dev/sda

# NVMe健康检测
sudo nvme smart-log /dev/nvme0n1

五、性能对比表格

测试场景HDD (SATA)SSD (SATA)NVMe SSDNFS (10GbE)
顺序读 (MB/s)80-160450-5503000-7000800-1000
顺序写 (MB/s)60-120400-5002000-5000600-800
4K随机读 (IOPS)80-15080k-100k500k-1M5k-10k
延迟 (ms)5-100.1-0.30.01-0.10.5-2

六、性能瓶颈判断

  1. CPU瓶颈:当 iostat 显示 %iowait > 30% 且 %idle < 20%
  2. 设备瓶颈:iostat%util 接近100% 且 await 显著增加
  3. 网络瓶颈:iftop 显示网络带宽饱和

七、自动监控脚本

#!/bin/bash
# 实时记录各挂载点IO
while true; do
    timestamp=$(date "+%Y-%m-%d %H:%M:%S")
    echo "===== $timestamp =====" >> iostat.log
    iostat -dxz 1 3 >> iostat.log
    echo "===== Mount Points =====" >> iostat.log
    df -h | grep -v tmpfs >> iostat.log
    sleep 60
done

通过以上方法,可以精准定位不同挂载区的I/O性能特征。对于关键业务系统,建议定期执行压力测试并建立性能基线。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值