简短的好答案:(复制粘贴友好)
DISK=/dev/sdX # <===ADJUST THIS===
sync
echo 3 > /proc/sys/vm/drop_caches
blockdev --flushbufs $DISK
hdparm -F $DISK
说明:
blockdev:在手册页中:刷新文件系统缓冲区。 将更改的块强制插入磁盘,更新超级块。
blockdev:来自内核文档,这将导致内核删除干净的缓存
blockdev:从手册页:调用块设备ioctl [以]刷新缓冲区。
blockdev:从手册页:刷新驱动器上的写缓存缓冲区(旧驱动器可能无法实现)
尽管根据上面的回答,blockdev和hdparm命令看起来相似,但是它们向设备发出不同的ioctl。
长的更好的方法:
(我假设您已经格式化了磁盘,但是如果您想直接写入磁盘,则可以修改这些命令)
在第一个基准测试之前仅运行一次:
MOUNT=/mnt/test # <===ADJUST THIS===
# create a file with psuedo-random data. We will read it
# to fill the read cache of the HDD with garbage
dd if=/dev/urandom of=$MOUNT/temp-hddread.tmp bs=64M count