Почему dd не перезаписывает существующие данные?

Почему dd не перезаписывает существующие данные?

Когда я записываю случайные данные на диск с помощью инструмента dd, я снова могу получить доступ к старым данным. Чтобы проверить это, я сначала добавил файл "text.txt" на диск и написал в нем "this is text". Мой диск смонтирован в каталог /mnt/backup.

$ cat /mnt/backup/text.txt
this is text
$

Я использовал dd:

$ dd if=/dev/urandom of=/dev/sdb1 #this is the disk mounted to the /mnt/backup directory
1025+0 records in
1024+0 records out
1073741824 bytes (1,1 GB, 1,0 GiB) copied, 14,4948 s, 74,1 MB/s
$

Если я попытаюсь вывести список содержимого диска, я не получу никаких результатов, но если ввести полное имя файла, я смогу распечатать его содержимое.

$ ls -l /mnt/backup/
total 0
$ cat /mnt/backup/text.txt
this is text

Почему это происходит? Я ожидал, что существующие данные также будут перезаписаны. Если я знаю полное имя файла, я все равно смогу получить доступ к данным. Что я упустил?

решение1

Данные, вероятно, перезаписаны, но часть их все еще кэшируется в памяти.

Когда вы пишете напрямую на устройство, как это, он обходит механизм кэширования файловой системы Linux и отправляется прямо на устройство. То, что находится в кэше в это время, по крайней мере временно не затрагивается. Если файловая система все еще смонтирована, операционная система может даже записать некоторые грязные страницы обратно на диск после того, как вы стерли его с помощью dd.

Однако Linux в конечном итоге может обнаружить, что файловая система повреждена, и это может вызвать панику ядра.

Для достижения наилучших результатов перед началом записи непосредственно на устройство следует размонтировать файловые системы.

Связанный контент