Linux 如何使用fio擦除驱动器?

Linux 如何使用fio擦除驱动器?,linux,multithreading,dd,Linux,Multithreading,Dd,我想使用fio(灵活I/O测试仪)而不是dd擦除驱动器。由于fio是多线程的,我相信它可以更快地擦除/随机数据 sudo fio --filename=/dev/sdb1 --rw=randwrite --bs=4k --iodepth=32 --ioengin=libaio --direct=1 --name=randdrive 这不起作用,它需要比dd更长的时间,我不知道为什么 简单的答案是:这没有意义 擦除驱动器时的限制不是向驱动器发送字节的线程数 相反:假设有5个线程并行发送请求,将数

我想使用fio(灵活I/O测试仪)而不是dd擦除驱动器。由于fio是多线程的,我相信它可以更快地擦除/随机数据

sudo fio --filename=/dev/sdb1 --rw=randwrite --bs=4k --iodepth=32 --ioengin=libaio --direct=1 --name=randdrive
这不起作用,它需要比dd更长的时间,我不知道为什么


简单的答案是:这没有意义

擦除驱动器时的限制不是向驱动器发送字节的线程数

相反:假设有5个线程并行发送请求,将数据放入驱动器的不同位置。这意味着你的驱动头一直在移动。将其与连续的字节流进行比较,所有字节“一个接一个”。或许SSD的情况有所不同;但见鬼;使用SSD时,您根本无法控制设备的操作


换句话说:想象你在某个坡道上从卡车上卸下箱子;还有一个人负责把卸下的箱子运到大楼里。当你让5个人把箱子放在坡道的两端时,整个过程会变得更快吗?不;因为仍然只有一个人捡起箱子,现在他需要走更多的路才能到达他应该搬进大楼的所有箱子。

简单的答案是:这没有意义

擦除驱动器时的限制不是向驱动器发送字节的线程数

相反:假设有5个线程并行发送请求,将数据放入驱动器的不同位置。这意味着你的驱动头一直在移动。将其与连续的字节流进行比较,所有字节“一个接一个”。或许SSD的情况有所不同;但见鬼;使用SSD时,您根本无法控制设备的操作


换句话说:想象你在某个坡道上从卡车上卸下箱子;还有一个人负责把卸下的箱子运到大楼里。当你让5个人把箱子放在坡道的两端时,整个过程会变得更快吗?不;因为仍然只有一个人捡起箱子,而现在他需要走更多的路才能到达他应该搬进大楼的所有箱子。

擦拭驱动器是所有IO限制操作之母。为什么您认为向它投入更多的CPU会有所帮助?强制fio随机提交微小的I/O(与顺序缓冲dd可以做的相比)将削弱其最高速度。还要记住,fio在每个I/O上都做了额外的工作。比如--rw=write--bs=64k--iodepth=32--ioengine=libaio--direct=1--gtod_reduce=1应该在速度上更接近dd。此外,如果oflag=direct bs=1M,您可能会发现dd的速度更快。无论如何,如果您想安全地擦除磁盘,fio不是正确的工具……擦除驱动器是所有IO受限操作的基础。为什么您认为向它投入更多的CPU会有所帮助?强制fio随机提交微小的I/O(与顺序缓冲dd可以做的相比)将削弱其最高速度。还要记住,fio在每个I/O上都做了额外的工作。比如--rw=write--bs=64k--iodepth=32--ioengine=libaio--direct=1--gtod_reduce=1应该在速度上更接近dd。此外,如果oflag=direct bs=1M,您可能会发现dd的速度更快。无论如何,如果你想安全地擦除磁盘,fio不是正确的工具。。。