Puedes hacerlo así:
# sync # (move data, modified through FS -> HDD cache) + flush HDD cache
# echo 3 > /proc/sys/vm/drop_caches # (slab + pagecache) -> HDD (https://www.kernel.org/doc/Documentation/sysctl/vm.txt)
# blockdev --flushbufs /dev/sda
# hdparm -F /dev/sda
# NEXT COMMAND IS NOT FOR BENCHMARKING:
# should be run before unplug, flushes everything possible guaranteed.
# echo 1 > /sys/block/sdX/device/delete
Puede usar strace para ver que se trata de tres llamadas al sistema diferentes
Además, puede ser conveniente desactivar la memoria caché del disco duro usando hdparm, no estoy seguro de qué está comparando.
De ninguna manera, no puede evitar que HDD almacene en caché los últimos 64/32/16 MB de datos usados recientemente. Para matar ese caché, simplemente escriba una cierta cantidad de ceros (y vacíe) + lea algún lugar no relacionado de HDD. Esto es necesario ya que la memoria caché se puede dividir en parte de lectura y parte de escritura. Después de eso, puede comparar HDD.
Parece que desea el comando de sincronización o la función sync().
Si desea vaciar la memoria caché del disco:echo 3 | sudo tee /proc/sys/vm/drop_caches