linux dd 测试硬盘读写性能的脚本
时间: 2023-07-31 20:08:48 浏览: 148
以下是一个简单的脚本,使用dd命令在Linux中测试硬盘的读写性能:
```bash
#!/bin/bash
# 测试写入性能
echo "Testing write performance..."
dd if=/dev/zero of=testfile bs=1G count=1 oflag=direct
# 清除缓存
echo "Clearing cache..."
sync
echo 3 > /proc/sys/vm/drop_caches
# 测试读取性能
echo "Testing read performance..."
dd if=testfile of=/dev/null bs=1G count=1 iflag=direct
# 删除测试文件
rm testfile
echo "Test complete."
```
请注意,这个脚本将会在当前目录下创建一个名为testfile的文件,并使用1GB的数据进行写入和读取测试。测试完成后会删除这个文件。运行脚本需要具有适当的权限。
你可以根据需要修改脚本中的参数,如文件大小(bs)和读写次数(count)来进行定制化的测试。
相关问题
linux服务器有24块硬盘,如何使用 dd命令测试每块硬盘读写性能的脚本
以下是一个脚本示例,可以使用dd命令测试每块硬盘的读写性能:
```bash
#!/bin/bash
# 获取所有硬盘设备列表
devices=$(lsblk -o NAME -dn -e 7,11)
# 遍历每个硬盘设备进行测试
for device in $devices; do
echo "Testing $device..."
# 测试写入性能
echo "Testing write performance..."
dd if=/dev/zero of=$device bs=1G count=1 oflag=direct
# 清除缓存
echo "Clearing cache..."
sync
echo 3 > /proc/sys/vm/drop_caches
# 测试读取性能
echo "Testing read performance..."
dd if=$device of=/dev/null bs=1G count=1 iflag=direct
echo "Test complete for $device."
done
```
这个脚本会使用lsblk命令获取所有硬盘设备的列表,然后逐个设备进行读写性能测试。在每个设备上,先进行写入性能测试,然后清除缓存,最后进行读取性能测试。你可以根据需要修改脚本来满足你的具体需求。
请注意,这个脚本会对每个硬盘设备进行读写测试,可能会对硬盘的数据产生影响,请确保在测试之前备份重要数据。运行脚本需要具有适当的权限。
帮我写一个测试emmc读写速度的脚本,将emmc读写速度打印出来
在Linux环境下,你可以使用dd命令来测量EMMC存储设备的读写速度。以下是一个简单的bash脚本示例,它会创建一个大文件并删除,然后计算时间和数据量来估算读写速度:
```bash
#!/bin/bash
# 设定测试文件大小 (这里以GB为单位)
FILE_SIZE=10
# 计算字节数(1GB = 1073741824 bytes)
BYTES=$(( FILE_SIZE * 1073741824 ))
# 指定EMMC设备(例如sda1代表第一个MMC设备的第一个分区)
DEVICE=/dev/sdb1 # 请替换为你实际的设备路径
# 清除旧的数据(如果有的话)
if [ -e "$DEVICE" ]; then
rm $DEVICE
fi
# 开始时间
START=$(date +%s.%N)
# 写入文件
echo "Writing..."
dd if=/dev/zero of=$DEVICE bs=1M count=$BYTES status=progress
# 获取写入结束时间
END=$(date +%s.%N)
# 计算写入所需时间
WRITE_TIME=$(( $END - $START ))
# 删除文件(只用于验证写入操作)
rm $DEVICE
# 阅读回写
echo "Reading back..."
dd if=$DEVICE of=/dev/null bs=1M count=$BYTES status=progress
# 获取读取结束时间
END2=$(date +%s.%N)
# 计算读取所需时间
READ_TIME=$(( $END2 - $START ))
# 计算平均速度(MB/s)
WRITE_SPEED=$(( $(bc <<< "scale=2; $BYTES / $WRITE_TIME / 1024 / 1024") ))
READ_SPEED=$(( $(bc <<< "scale=2; $BYTES / $READ_TIME / 1024 / 1024") ))
echo "Write Speed: ${WRITE_SPEED} MB/s"
echo "Read Speed: ${READ_SPEED} MB/s"
# 提供的信息可能受多种因素影响,如硬盘速度、系统负载等,仅作参考
阅读全文