Отверстия в файле вообще не имеют никакого связанного с ними блока. Файл, созданный с помощью fallocate
, может оказаться без блоков, связанных с ним, только с размером. Чтение из нераспределенных блоков всегда возвращает все нули; запись в нераспределенный блок приводит к тому, что файловая система выделяет блок (, заполняющий дыру, по крайней мере, частично )перед записью.
Файлы с дырами нельзя использовать для свопинга, поскольку ядро ожидает получить доступ к блокам файла без помощи файловой системы (после определения списка блоков ). Любой файл, который не полностью выделен (, содержащий дыры, или копия -на -запись ), не может использоваться для подкачки, поскольку некоторые операции записи будут затрагивать файловую систему.
Вы можете увидеть, сколько блоков действительно используется файлом сstat
:
$ truncate -s 16K holes
$ stat holes
File: holes
Size: 16384 Blocks: 0 IO Block: 4096 regular file
Device: fd13h/64787d Inode: 36708573 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 1000/ steve) Gid: ( 1000/ steve)
Access: 2019-05-12 20:04:22.498258356 +0200
Modify: 2019-05-12 20:04:22.498258356 +0200
Change: 2019-05-12 20:04:22.498258356 +0200
Birth: -
filefrag
сообщит вам, что выделено:
$ /usr/sbin/filefrag holes
holes: 0 extents found
Принудительное частичное выделение файла уменьшит дыру:
$ fallocate -z -l 8K holes
$ stat holes
File: holes
Size: 16384 Blocks: 16 IO Block: 4096 regular file
Device: fd13h/64787d Inode: 36708573 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 1000/ steve) Gid: ( 1000/ steve)
Access: 2019-05-12 20:04:22.498258356 +0200
Modify: 2019-05-12 20:10:12.520380272 +0200
Change: 2019-05-12 20:10:12.520380272 +0200
Birth: -
$ /usr/sbin/filefrag -e holes
Filesystem type is: ef53
File size of holes is 16384 (4 blocks of 4096 bytes)
ext: logical_offset: physical_offset: length: expected: flags:
0: 0.. 1: 116741448.. 116741449: 2: last,unwritten
holes: 1 extent found
Если вы можете вытащить диск из внешнего корпуса и подключить непосредственно к материнской плате SATA, попробуйте MHDD. Это даст вам полную низкоуровневую диагностику всего диска. Вы можете использовать любой старый компьютер, который будет хотя бы публиковаться и загружаться. Вы можете получить различные загрузочные версии здесь.
https://hddguru.com/software/2005.10.02-MHDD/
Раньше я всегда использовал версию Magic Boot Disk.