Linux分卷怎样进行测试
小樊
31
2025-12-31 16:26:43
Linux分卷测试实操指南
一 明确测试目标与准备
- 明确对象:是对磁盘的分区/逻辑卷LV,还是对tar分卷压缩包进行测试。
- 准备环境:在非生产环境进行,确保分卷内无重要数据,提前备份。
- 安装工具:性能类建议准备fio、dd、hdparm、iostat(sysstat);LVM场景可用lvm2相关命令;若是压缩包测试则准备tar、split。
- 基本检查:确认设备名(如**/dev/sdX、/dev/mapper/vg-lv**)、挂载点(如**/mnt/test**)与可用空间。
二 块设备与LVM分卷的性能测试方法
- 挂载与空间校验
- 查看与挂载:使用lsblk/fdisk -l确认设备;创建挂载点并挂载;用df -h查看可用空间与挂载状态。
- 顺序与随机I/O测试(推荐用fio,绕过缓存获取真实设备性能)
- 顺序写:fio --name=seqwrite --ioengine=libaio --rw=write --bs=1M --size=1G --numjobs=1 --direct=1 --filename=/dev/sdX --runtime=30
- 顺序读:fio --name=seqread --ioengine=libaio --rw=read --bs=1M --size=1G --numjobs=1 --direct=1 --filename=/dev/sdX --runtime=30
- 4K随机写:fio --name=randwrite --ioengine=libaio --rw=randwrite --bs=4k --size=1G --numjobs=1 --direct=1 --filename=/dev/sdX --runtime=30
- 4K随机读:fio --name=randread --ioengine=libaio --rw=randread --bs=4k --size=1G --numjobs=1 --direct=1 --filename=/dev/sdX --runtime=30
- 说明:将**/dev/sdX替换为实际分卷(如/dev/sda1或/dev/mapper/vg-lv**);测试文件大小与运行时长可按设备容量调整。
- 快速校验与对比(可选)
- 顺序写:dd if=/dev/zero of=/mnt/testfile bs=1M count=1024 oflag=direct
- 顺序读:dd if=/mnt/testfile of=/dev/null bs=1M count=1024 iflag=direct
- 综合场景与实时监控
- 配置文件test.fio:
- [global] ioengine=libaio direct=1 runtime=60
- [seq_read] rw=read bs=1M size=1G
- [rand_write] rw=randwrite bs=4k size=1G
- 运行:fio test.fio
- 监控:iostat -dx 1(观察带宽MB/s、IOPS、延迟ms等关键指标)。
三 结果判读与优化要点
- 关键指标
- 带宽(BW,MB/s):顺序读写能力;IOPS:随机小I/O能力;延迟(latency,ms):响应时间,越低越好。
- 初步判断
- 顺序写/读带宽明显偏低:检查设备类型(SSD/HDD)、控制器/驱动、挂载选项、是否有其他负载。
- 随机4K性能差:关注队列深度(可适度增加numjobs)、是否启用direct I/O、文件系统挂载选项(如noatime)、是否开启合适的I/O调度策略。
- 性能优化提示
- LVM本身不直接提升速度;若需提升,可考虑条带化(striping)跨多盘、结合写回缓存/SSD缓存等方案,并充分评估数据安全与一致性要求。
四 针对tar分卷压缩包的测试与校验
- 制作分卷压缩包
- 示例:tar czf - filedir | split -d -b 10M - dirname.tar.gz
- 说明:将目录打包并用split按10MB切分,生成如dirname.tar.gz00、dirname.tar.gz01…。
- 解压与完整性校验
- 合并校验:cat dirname.tar.gz.* | tar -tzv(仅列出内容校验)
- 解压:cat dirname.tar.gz.* | tar -xzv
- 常见问题与处理
- 报错“no space left on device”:目标盘空间不足,清理或更换到更大磁盘后重试。
- 报错“gzip: stdin: not in gzip format / tar: Child returned status 1”:通常因压缩/切分链路异常或文件损坏。可先尝试去掉解压参数中的z(改为tar -xvf)验证归档是否真为gzip;若仍失败,重新获取或重新打包。