Português do Brasil English
Devin no Facebook  Devin no Twitter  RSS do Site 
Linux    

Partições em Arquivos


Comentários  7
Visualizações  
12,353

Um pequeno tutorial sobre como mapear arquivos para se tornarem, transparentemente, partições no Linux afim de poder utilizar para estudos ou outros casos no resto do sistema.

1. Introdução

Imagine que você está tentando aprender sobre como particionar um disco, ou então como gerenciar LVM e/ou RAID, só que não tem os recursos necessários (leia-se HDs) para ficar testando na prática? Afinal, do que adianta aprendermos se também não praticamos pra fixar as coisas na cabeça (e nos dedos!)?

Com o Linux existe uma maneira muito prática de se poder testar todos os tipos de ferramentas que trabalham com dispositivos de bloco, como se fossem, por exemplo, uma partição de um HD instalado na máquina. Com alguns poucos passos, é possível (e de forma transparente), utilizar arquivos como se fossem partições. Este pequeno tutorial ensina como fazer exatamente isso.

O recurso que torna isto possível é o dispositivo de loop. O dispositivo de loop é um dispositivo especial que mapeia um arquivo “comum” para um arquivo de bloco (no /dev) e torna possível utilizar este arquivo em todos os programas que precisam destes dispositivos para funcionar, como por exemplo: mount, fsck, mkfs, ferramentas do lvm, ferramentas de raid, entre outros. Não sei se é o caso, mas por exemplo, se algum dia você se deparou em ter que montar uma imagem ISO no HD sem precisar queimar para CD/DVD, você provavelmente utilizou um dispositivo de loop! Você deve ter usado um comando parecido com este:

# mount -o loop /root/imagem_do_cd_radical.iso /mnt/cdrom

Notou a opção -o loop? Pois é, esta opção diz para o comando mount utilizar a imagem iso mapeando com o dispositivo de loop para se tornar um dispositivo de bloco, assim podendo ser montado no diretório /mnt/cdrom. As vezes sem sabermos, acabamos de utilizar este recurso que nem todo mundo conhece.

Mas o comando acima apenas montou algo que já existia… Como eu poderia criar “partições em arquivos”?

2. Criando os arquivos

Antes de mapear os arquivos como dispositivos de bloco, temos que primeiro criar estes arquivos. O que faremos aqui será apenas criar arquivos vazios (e de espaço contínuo, ou seja, espaço já alocado, porém vazio). Para fazer isso utilizamos o comando dd, da seguinte forma:

# dd if=/dev/zero of=/root/arq-particao1 bs=1M count=150

O comando acima vai criar um arquivo vazio chamado /root/arq-particao1 utilizando um espaço contínup com o tamanho de 150MB (bs = bytes, count = quantidade, 1MB vezes 150). Ok, agora vamos criar mais dois arquivos destes:

# dd if=/dev/zero of=/root/arq-particao2 bs=1M count=500
# dd if=/dev/zero of=/root/arq-particao3 bs=1M count=300

(Agora criamos um de 500MB e outro e 300MB).

3. Mapeando os arquivos para ser dispositivos de bloco

Criado os arquivos, está na hora de transformá-los para dispositivos de bloco! O comando losetup faz isso. A sintaxe é bem simples e por isso já mapearemos os três arquivos que criamos anteriormente:

# losetup /dev/loop0 /root/arq-particao1
# losetup /dev/loop1 /root/arq-particao2
# losetup /dev/loop2 /root/arq-particao3
# losetup -a
 /dev/loop0: [fd00]:618350 (/root/arq-particao1)
 /dev/loop1: [fd00]:618351 (/root/arq-particao2)
 /dev/loop2: [fd00]:618352 (/root/arq-particao3)

Pronto, agora os arquivos estarão funcionando como dispositivos de bloco através do /dev/loop0, /dev/loop1 e /dev/loop2 (note que eu usei a opção -a do comando losetup para mostrar o que há mapeado no momento). Agora eu posso simplesmente fazer o que bem quiser com esses dispositivos, que na verdade estarei mexendo nos arquivos. Vamos supor que eu queira formatar um destes “arquivos-partições” com o ext3:

# mkfs.ext3 /dev/loop0

Posso também montar:

# mkdir -p /mnt/arq-particao1
# mount /dev/loop0 /mnt/arq-particao1

Posso desmontar, posso escrever arquivos lá dentro, posso fazer qualquer coisa como se fosse uma partição de um HD comum. Posso, nas ferramentas de RAID/LVM, utilizar estes arquivos, entre outros.

4. Desfazendo-se dos mapeamentos

Uma vez que eu usei estes arquivos, se eu quiser parar de usá-los, basta desmontar os dispositivos do sistema para que eles não fiquem mais em uso, e desmapeá-los com o parâmetro -d do comando losetup:

# losetup -a
 /dev/loop0: [fd00]:618350 (/root/arq-particao1)
 /dev/loop1: [fd00]:618351 (/root/arq-particao2)
 /dev/loop2: [fd00]:618352 (/root/arq-particao3)
# losetup -d /dev/loop0
# losetup -d /dev/loop1
# losetup -d /dev/loop2

E pronto, pode remover os arquivos, movê-los, criar outros, experimentar. Espero que a dica tenha sido útil para os estudos futuros ;)


Comentários  7
Visualizações  
12,353


TagsLeia também

Apaixonado por Linux e administração de sistemas. Viciado em Internet, servidores, e em passar conhecimento. Idealizador do Devin, tem como meta aprender e ensinar muito Linux, o que ele vem fazendo desde 1997 :-)


Leia também



Comentários

7 respostas para “Partições em Arquivos”

  1. Kim disse:

    DEVELOPERS, DEVELOPERS, DEVELOPERS, DEVELOPERS, DEVELOPERS, DEVELOPERS, DEVELOPERS, DEVELOPERS, DEVELOPERS, DEVELOPERS, DEVELOPERS, DEVELOPERS, DEVELOPERS, DEVELOPERS, DEVELOPERS,

  2. Mardem Barbosa disse:

    Sensacional o seu artigo sobre o artifício de usar partições como arquivos. Muito útil. Bela contribuição.

  3. Anderson disse:

    Novamente um excelente artigo.

  4. Wellington disse:

    Tem coisas aí no seu site que não tem nem em livros!!! Show de bola!!!!!!!!!!!!!!!

  5. sergio disse:

    Simples, direto, claro, muito bom mesmo.

    Acompanho seus textos desde a decada 90 com The Linux Manual "se nao me engano Red Hat 3.0" sempre gostei da sua forma de escrever. Parabens!!!!

  6. Marcelo disse:

    Excelente dica! Realmente ótima para testes!

    Tava querendo testar um esquema de RAID aqui, mas não tenho disponível HDs pra isso… e essa solução vai servir como uma luva!

Deixe uma resposta