使用python3写一个测试sata ssd的python脚本,测试步骤如下: 0.首先对盘进行格式化 1.使用fio对固态硬盘进行不同大小数据块顺序写性能测试,数据块大小依次为:512Bytes/4K/8K/16K/32K/64K/128K/256K/512K/1M/2M,输出性能测试报告 2.使用fio对固态硬盘进行不同大小数据块顺序读性能测试,数据块大小依次为:512Bytes/4K/8K/16K/32K/64K/128K/256K/512K/1M/2M,输出性能测试报告 3.使用fio对固态硬盘进行不同大小数据块覆盖写性能测试,数据块大小依次为:512Bytes/4K/8K/16K/32K/64K/128K/256K/512K/1M/2M,输出性能测试报告 4.logging将测试步骤和测试结果记录log文件中,log文件名用当前时间和待测盘来命名的 5.用print出测试步骤
时间: 2023-06-30 13:16:54 浏览: 70
这是一个可以测试sata ssd的Python脚本,包含了以下步骤:
```
import subprocess
import datetime
# 格式化盘
subprocess.run(['sudo', 'mkfs.ext4', '/dev/sda'])
# 顺序写性能测试
write_block_sizes = ['512b', '4k', '8k', '16k', '32k', '64k', '128k', '256k', '512k', '1m', '2m']
for block_size in write_block_sizes:
output_file = '{}_{}_write.log'.format(datetime.datetime.now().strftime('%Y%m%d_%H%M%S'), block_size)
subprocess.run(['sudo', 'fio', '--name=write', '--ioengine=libaio', '--rw=write', '--bs={}'.format(block_size),
'--direct=1', '--size=1g', '--numjobs=1', '--time_based', '--runtime=30', '--filename=/dev/sda',
'--output-format=json', '--output={}'.format(output_file)])
print('顺序写性能测试({}): {}'.format(block_size, output_file))
# 顺序读性能测试
read_block_sizes = ['512b', '4k', '8k', '16k', '32k', '64k', '128k', '256k', '512k', '1m', '2m']
for block_size in read_block_sizes:
output_file = '{}_{}_read.log'.format(datetime.datetime.now().strftime('%Y%m%d_%H%M%S'), block_size)
subprocess.run(['sudo', 'fio', '--name=read', '--ioengine=libaio', '--rw=read', '--bs={}'.format(block_size),
'--direct=1', '--size=1g', '--numjobs=1', '--time_based', '--runtime=30', '--filename=/dev/sda',
'--output-format=json', '--output={}'.format(output_file)])
print('顺序读性能测试({}): {}'.format(block_size, output_file))
# 覆盖写性能测试
overwrite_block_sizes = ['512b', '4k', '8k', '16k', '32k', '64k', '128k', '256k', '512k', '1m', '2m']
for block_size in overwrite_block_sizes:
output_file = '{}_{}_overwrite.log'.format(datetime.datetime.now().strftime('%Y%m%d_%H%M%S'), block_size)
subprocess.run(['sudo', 'fio', '--name=overwrite', '--ioengine=libaio', '--rw=write', '--bs={}'.format(block_size),
'--direct=1', '--size=1g', '--numjobs=1', '--time_based', '--runtime=30', '--overwrite=1',
'--filename=/dev/sda', '--output-format=json', '--output={}'.format(output_file)])
print('覆盖写性能测试({}): {}'.format(block_size, output_file))
# 记录log文件
log_file = '{}.log'.format(datetime.datetime.now().strftime('%Y%m%d_%H%M%S'))
with open(log_file, 'w') as f:
f.write('测试步骤: \n')
f.write('1. 对盘进行格式化\n')
f.write('2. 顺序写性能测试\n')
f.write('3. 顺序读性能测试\n')
f.write('4. 覆盖写性能测试\n')
f.write('5. 记录测试结果\n\n')
f.write('测试结果: \n')
for block_size in write_block_sizes:
f.write('顺序写性能测试({}): {}\n'.format(block_size, '{}_{}_write.log'.format(datetime.datetime.now().strftime('%Y%m%d_%H%M%S'), block_size)))
for block_size in read_block_sizes:
f.write('顺序读性能测试({}): {}\n'.format(block_size, '{}_{}_read.log'.format(datetime.datetime.now().strftime('%Y%m%d_%H%M%S'), block_size)))
for block_size in overwrite_block_sizes:
f.write('覆盖写性能测试({}): {}\n'.format(block_size, '{}_{}_overwrite.log'.format(datetime.datetime.now().strftime('%Y%m%d_%H%M%S'), block_size)))
print('测试步骤和测试结果已记录到: {}'.format(log_file))
```