Eu entendo totalmente que --dig-holes
cria um arquivo esparso no local. Ou seja, se o arquivo tiver furos --dig-holes
options remove esses furos:
Vamos analisar de forma bem simplificada, digamos que temos um arquivo enorme chamado não-esparso:
não esparso:
aaaaaaaaaaaaaaaaaaaaaaaaaaaa
\x00\x00\x00\x00\x00\x00\x00
\x00\x00\x00\x00\x00\x00\x00
\x00\x00\x00\x00\x00\x00\x00
bbbbbbbbbbbbbbbbbbbbbbbbbbbb
\x00\x00\x00\x00\x00\x00\x00
\x00\x00\x00\x00\x00\x00\x00
cccccccccccccccccccccccccccc
não esparsa tem muitos zeros, supondo que os zeros de intercalação estejam em Gigabytes. fallocate --dig-holes
de-aloca o espaço disponível para os zeros (furos) onde o tamanho real do arquivo permanece o mesmo (preservado).
Agora, há --punch-hole
o que isso realmente faz? Eu li a man page, ainda não entendi:
-p, --punch-hole
Deallocates space (i.e., creates a hole) in the byte range
starting at offset and continuing for length bytes. Within
the specified range, partial filesystem blocks are zeroed,
and whole filesystem blocks are removed from the file.
After a successful call, subsequent reads from this range
will return zeroes.
Criando buraco, é o oposto da opção --dig-hole
, parece que, e por que cavar um buraco não é o mesmo que criar um buraco ?! Socorro! precisamos de um lógico:).
A nomenclatura das duas opções é sinônimo linguisticamente, o que talvez cause confusão.
Qual é a diferença entre --dig-holes
e --punch-holes
operacionalmente (não logicamente ou linguisticamente, por favor!)?