Linux分卷测试指南:完整性验证与性能评估
完整性测试是分卷操作后的基础检查,用于确认分卷结构及数据未因操作损坏,主要针对文件系统和RAID阵列(若使用):
使用fsck(文件系统检查工具)扫描并修复分卷错误。操作前必须卸载分卷(若分卷为系统根分区,需进入单用户模式或Live CD环境)。
示例命令:
# 卸载目标分卷(假设为/dev/sdb1)
sudo umount /dev/sdb1
# 运行fsck检查(自动修复错误)
sudo fsck -y /dev/sdb1
# 重新挂载分卷
sudo mount /dev/sdb1 /mnt
若分卷基于mdadm创建的RAID阵列,需通过以下命令验证阵列状态及数据一致性:
# 查看RAID设备详情(如/dev/md0)
sudo mdadm --detail /dev/md0
# 启动阵列完整性检查(耗时较长,需等待完成)
sudo mdadm --misc --action=check /dev/md0
# 查看检查结果(同步进度及错误数)
cat /sys/block/md0/md/mismatch_cnt
通过dd命令复制分卷数据并生成校验和,对比原始数据确认完整性(适用于怀疑底层数据损坏的场景):
# 创建分卷的镜像文件(如/dev/sdc1)
sudo dd if=/dev/sdc1 of=/tmp/volume_checksum.img bs=1M status=progress
# 计算镜像文件的MD5校验和
md5sum /tmp/volume_checksum.img
# 对比原始数据的MD5(若有备份)
md5sum /path/to/original_backup.img
性能测试需覆盖基础磁盘I/O、应用层负载及网络传输(若涉及分布式分卷),常用工具及方法如下:
dd是Linux内置工具,适合快速测试磁盘的顺序读写速度(不适用于随机I/O场景):
# 测试写入速度(创建1GB测试文件,块大小64KB)
dd if=/dev/zero of=/mnt/testfile bs=64k count=16k conv=fdatasync
# 测试读取速度(删除测试文件前执行)
dd if=/mnt/testfile of=/dev/null bs=64k count=16k
# 清理测试文件
rm -f /mnt/testfile
fio是业界推荐的专业I/O测试工具,支持随机/顺序读写、多线程并发、不同块大小等复杂场景,结果更贴近实际应用。
示例(随机读测试,4线程,1GB文件,运行60秒):
# 安装fio(CentOS/RHEL)
sudo yum install -y fio
# 运行测试(直接指定参数)
fio --name=random_read --ioengine=libaio --rw=randread --bs=4k --numjobs=4 --size=1G --runtime=60 --time_based --filename=/mnt/testfile
# 或通过配置文件(推荐,便于复用)
# 创建fio_test.conf文件:
"""
[global]
ioengine=libaio
direct=1
runtime=60
time_based
size=1G
[random_read]
rw=randread
bs=4k
numjobs=4
filename=/mnt/testfile
"""
# 执行测试
fio fio_test.conf
关键指标解读:
sysbench可测试CPU、内存、磁盘I/O等多维度性能,帮助定位分卷性能瓶颈:
# 安装sysbench
sudo yum install -y sysbench
# CPU性能测试(4线程,10秒)
sysbench cpu --cpu-max=4 --threads=4 run
# 磁盘I/O性能测试(1GB文件,随机读写)
sysbench fileio --file-total-size=1G --file-test-mode=randrw --init-rng=on --max-time=300 --max-requests=0 run
# 清理测试文件
sysbench fileio --file-total-size=1G cleanup
stress用于模拟高负载场景,测试分卷在极端条件下的稳定性(如CPU满载、内存耗尽、磁盘狂写):
# 安装stress
sudo yum install -y stress
# CPU压力测试(4线程,持续10分钟)
stress --cpu 4 --timeout=600
# 内存压力测试(4个进程,每个分配50MB内存,持续10分钟)
stress --vm 4 --vm-bytes=50M --timeout=600
# 磁盘写入压力测试(1个进程,持续写入/tmp目录)
stress --hdd 1 --hdd-opts=wd=1,ddir=/tmp --timeout=600
若分卷为网络存储(如NFS、iSCSI),需使用iperf测试网络带宽,确保网络不会成为性能瓶颈:
# 服务器端(运行在存储设备所在机器)
iperf -s
# 客户端(运行在需要访问分卷的机器)
iperf -c <服务器IP> -t 30 -P 4 # 测试30秒,4个并发连接