Existe uma maneira mais rápida de ocupar apenas o espaço em disco que o dd [duplicado]?

2

Para testar se nossos sistemas detectam corretamente que estão ficando sem espaço, só precisamos de arquivos grandes no disco em que não nos importamos com o conteúdo deles. No momento, usamos dd if=/dev/zero [...] para criá-los, o que é muito demorado, especialmente ao gravar várias centenas de gigabytes em discos SATA de nível comercial.

Existe uma maneira de acelerar isso? Estou pensando em apenas escrever as informações que o arquivo existe na tabela do sistema de arquivos sem escrever o conteúdo do arquivo, terminando com um arquivo enorme contendo o que estava escrito no disco antes.

    
por Hurzelchen 05.03.2015 / 10:07

2 respostas

2

Acho que a limitação será o escrever o BW dos seus discos . De qualquer forma, é importante também escolher o tamanho certo de blocos:

⌂89% [romano:~/tmp] % time dd if=/dev/zero of=test1.tmp count=2M
2097152+0 records in
2097152+0 records out
1073741824 bytes (1,1 GB) copied, 12,6078 s, 85,2 MB/s
dd if=/dev/zero of=test1.tmp count=2M  0,37s user 3,18s system 27% cpu 12,721 total
⌂86% [romano:~/tmp] % time dd bs=1M if=/dev/zero of=test1.tmp count=1k
1024+0 records in
1024+0 records out
1073741824 bytes (1,1 GB) copied, 11,671 s, 92,0 MB/s
dd bs=1M if=/dev/zero of=test1.tmp count=1k  0,00s user 1,10s system 9% cpu 11,783 total
⌂64% [romano:~/tmp] % time dd bs=100M if=/dev/zero of=test1.tmp count=10
10+0 records in
10+0 records out
1048576000 bytes (1,0 GB) copied, 10,3397 s, 101 MB/s
dd bs=100M if=/dev/zero of=test1.tmp count=10  0,00s user 1,16s system 11% cpu 10,457 total

... como você pode ver, a velocidade é mais ou menos limitada a cerca de 100 MB / s, mas o uso da CPU varia muito (o tamanho padrão de dd é 512 bytes).

A solução correta é fallocate , como no arquivo duplicado vinculado .

    
por Rmano 05.03.2015 / 10:53
-1

Se você usar o BTRFS, poderá diminuir facilmente o tamanho do seu sistema de arquivos:

btrfs filesystem resize <size> <mount point>

Talvez você deva configurar uma instância de teste em um contêiner LXC ou executar um chroot com espaço limitado no sistema de arquivos, assim você pode testar a falta de espaço e outras condições.

Se você realmente quer seguir o caminho para criar um arquivo grande, eu não conheço uma maneira mais rápida que o dd, apesar de, teoricamente, poder-se atribuir blocos livres a um arquivo sem realmente escrever para esses blocos. Embora isso precisaria de algum hacking no nível do sistema de arquivos - talvez o fallocate faz isso, embora Eu nunca usei isso.

    
por MegaBrutal 05.03.2015 / 12:11