Isso pode ser um efeito colateral do seu comando dd
desvinculando e criando um novo disk_test em cada iteração.
Tente primeiro criar um arquivo de destino com um único comando dd if=/dev/zero of=/data/disk_test bs=1M count=2000
e, em seguida, execute seu loop com o comando dd if=/dev/zero of=/data/disk_test bs=1M count=2000 conv=notrunc,nocreat
.
Expansão: notrunc
faz diferença porque, no passado, alguma heurística foi adicionada para evitar que os aplicativos substituíssem por renomear e substituíssem por truncar e falhassem para corromper seus dados. Essa heurística basicamente força a liberação de dados pertencentes a arquivos truncados abertos > escritos & gt ;.
Na página de manual do mount :
auto_da_alloc|noauto_da_alloc
Many broken applications don't use fsync() when noauto_da_alloc replacing existing files via patterns such as
fd = open("foo.new")/write(fd,..)/close(fd)/ rename("foo.new", "foo")
or worse yet
fd = open("foo", O_TRUNC)/write(fd,..)/close(fd).
If auto_da_alloc is enabled, ext4 will detect the replace-via-rename and replace-via-truncate patterns and force that any delayed allocation blocks are allocated such that at the next journal commit, in the default data=ordered mode, the data blocks of the new file are forced to disk before the rename() operation is commited. This provides roughly the same level of guarantees as ext3, and avoids the "zero-length" problem that can happen when a system crashes before the delayed allocation blocks are forced to disk.
Dê também um saque em FAQ do XFS