Como preencher um disco rígido no Linux

Como preencher um disco rígido no Linux

Estou testando um trecho de código e quero preencher um disco rígido com dados. Descobri que ddposso criar arquivos enormes em um instante, mas dfdiscordo. Aqui está o que eu tentei:

dd if=/dev/zero of=filename bs=1 count=1 seek=$((10*1024*1024*1024))

ls -lhmostra um arquivo 10G. No entanto, df -hmostra que a partição não diminuiu. Então, o que preciso fazer para dfreconhecer que os dados foram obtidos agora? Espero algo rápido que eu codifique em um teste de unidade.

Responder1

O problema com o seek=<big number>truque é que o sistema de arquivos é (geralmente) inteligente: se parte de um arquivo nunca foi gravada (e, portanto, é toda zero), ele não se preocupa em alocar espaço para ele - então, como você ' Como vimos, você pode ter um arquivo de 10 GB que não ocupa espaço (isso é conhecido como "arquivo esparso" e pode ser muito útil em alguns casos, por exemplo, certas implementações de banco de dados).

Você pode forçar a alocação do espaço com (por exemplo):

dd if=/dev/zero of=filename bs=$((1024*1024)) count=$((10*1024))

o que levará muito mais tempo, mas na verdade preencherá o disco. Eu recomendo deixar o tamanho do bloco muito maior que um, porque isso determinará quantas chamadas de sistema o ddprocesso fará - quanto menor o tamanho do bloco, mais syscalls e, portanto, mais lento ele será executado. (Embora além de 1 MB, provavelmente não fará muita diferença e pode até tornar as coisas mais lentas...)

Responder2

Como outra opção para isso, você pode usar sim junto com uma única string e é cerca de 10 vezes mais rápido do que executar dd if=/dev/urandom of=largefile. Assim

yes abcdefghijklmnopqrstuvwxyz0123456789 > largefile

Responder3

Você criou o que é conhecido como "arquivo esparso" - um arquivo que, porque a maior parte dele está vazio (ou seja, é lido como \0), não ocupa espaço no disco além do que está realmente escrito (1B, após 10GB de lacuna).

Não acredito que você possa criar arquivos enormes, ocupando espaço em disco em um instante - ocupar espaço físico significa que o sistema de arquivos precisa alocar blocos de disco para o seu arquivo.

Acho que você está preso ao antiquado "dd if=/dev/zero of=filename bs=100M count=100", que é limitado pela velocidade de gravação sequencial da sua unidade.

Responder4

Pare de usar seeke use um arquivo muito grande bse/ou count. Como é que você está fazendo umarquivo esparso, e obviamente você não precisa fazer isso.

informação relacionada