No Linux, como posso criar um arquivo thin-provisioned para que possa ser montado e criado um sistema de arquivos?

5

Estou construindo um sistema que fornece aos usuários certa quantidade de espaço em disco. O jeito que estou fazendo é:

  • crie um arquivo com dd
  • crie um sistema de arquivos ext4 dentro do arquivo
  • monte o arquivo e diga ao programa do usuário para usar o ponto de montagem como seu diretório de trabalho

Eu não quero usar o sistema de cotas do Linux, pois não quero que os usuários sejam usuários do sistema local.

O acima funciona bem, mas desperdiça espaço, pois os usuários não estão usando todo o seu subsídio, mas todo o subsídio já foi alocado.

Existe um comando que pode fazer o mesmo que dd, mas não alocar todo o arquivo de uma só vez? Então, eu poderia fazer um arquivo de 20gb e, quando montado, ele relataria 20gb de espaço, mas só ocuparia fisicamente o que foi gravado nele?

    
por Erin Drummond 27.12.2011 / 23:45

3 respostas

8

Você pode usar o parâmetro seek de dd para criar um arquivo esparso :

dd if=/dev/zero of=filesystem.img  bs=1k seek=1024M count=1

criaria um arquivo que pode ter até 1G de tamanho, mas ocupará apenas o espaço necessário.

    
por 27.12.2011 / 23:53
3

Dê uma olhada no arquivo esparso s.

dd if=/dev/zero of=file.img bs=1 count=0 seek=1024M

cria um arquivo esparso de 1024Mb que pode ser formatado e montado como um sistema de arquivos. Há mais informações sobre arquivos esparsos e usá-los aqui .

    
por 27.12.2011 / 23:57
-1

No CentOS, você pode usar as ferramentas qemu conforme abaixo:

qemu-img create -f raw the_filename 5G

    
por 05.10.2017 / 13:54