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個并發連接