Tutorial: Loop File Systems

O que é um sistema de arquivos em loop?

O GNU / Linux (e a grande maioria dos sistemas unix) possui um mecanismo que permite montar um arquivo (previamente formatado) como se fosse um disco rígido, geralmente sem uma tabela de partição. Este diagrama de baixa qualidade (feito por mim) explica como esse mecanismo funciona.

Fluxograma que explica (aproximadamente) como os arquivos de loops funcionam no GNU / linux.

** Não representa totalmente a operação real.

Usos de arquivos de loop

1- Arquivos Mount.iso

Os arquivos .iso, o padrão por excelência em CDs e DVDs, nada mais é do que um arquivo de loop cujo sistema de arquivos pode ser ISO 9960 (mais comum em CDs) ou UDF (mais comum em DVDs). Para montá-lo, usaremos o comando mount.

mkdir iso # cria o diretório chmod -R 666 iso # concede a todos os usuários permissão de leitura mount image.iso iso / # montar a imagem iso (requer root)

A limitação que você tem é que, por razões óbvias, ambos os sistemas de arquivos são somente leitura.

2- squashfs somente leitura

Suponha que temos uma pasta de imagens e / ou vídeos organizada de acordo com o ano em que foi feita. Obviamente, é bastante improvável que queiramos modificar os dados contidos nas pastas dos anos anteriores. É aí que entra o Squashfs. Squashfs é um sistema de arquivos compactado somente leitura, então, uma vez que a imagem é feita, não poderemos modificar os dados em.

Assim, não só vamos economizar muito espaço, mas também o efeito curioso de que a leitura dos arquivos será mais rápida, por ter que ler arquivos menores, já que hoje em dia descompactar um arquivo é um esforço mínimo para a maioria das CPUs.

Saindo dos preâmbulos, para criar a imagem squashfs devemos usar o comando mksquashfs, cuja sintaxe é simples:

mksquashfs directorio 1 [directorio 2 directorio 3...] imagen.sqsfs -comp [algoritmo de compresión] -b [tamaño del bloque ]

E aqui está um exemplo prático:

mksquashfs fotos-2009 fotos-2010 fotos-2011 fotos-2012 fotos-2013 fotos_2009-2013.sqsfs -comp xz -bs 1M

Bem, o algoritmo escolhido é xz, pois é aquele que maior taxa de compressão ofertas (das disponíveis), enquanto o tamanho do bloco escolhido é o máximo. o que permite melhores resultados de compressão (por padrão, eles têm 64 KiB).

Agora devemos ser capazes de montá-lo com um simples;

mount fotos_2009-2013.sqsfs fotos_2009-2013/

Depois de verificar se tudo está correto, podemos excluir os arquivos originais ou deixar o arquivo como backup.

Caso desejemos que ele seja montado quando o sistema operacional iniciar, devemos adicionar uma linha deste estilo ao / etc / fstab:

/dir/loop.sqsh /dir/mountdir squashfs ro,defaults 0 0

A inserção de dados incorretos no arquivo / etc / fstab fará com que o sistema pare de inicializar. Para ter certeza de que tudo funciona corretamente, podemos usar o comando montar -a

Agora, o que acontece quando queremos adicionar ou excluir arquivos, ou simplesmente extrair esses instantâneos? Bem, temos o comando o comando unquashfs.

unsquashfs [opciones] snapshot.sqfs [Directorios o archivos que extraer]

Por padrão, ele usará "squashfs-root" como o diretório de extração. pode ser alterado com a opção -d

Além deste exemplo, o squashfs também é usado em:

  • livecds
  • Sistemas embarcados
  • Servidores
  • Em geral, qualquer sistema somente leitura

3- «Troca de emergência»

Imagine que por qualquer motivo (hibernação, compilações massivas ...) você precise de uma troca extra. É aqui que o arquivo de loop entra em jogo, o primeiro passo é fazer um arquivo vazio de um certo tamanho, com um certo tamanho de bloco, fazemos isso com o comando dd:

dd if=/dev/zero of=loop bs=1M count=512

dd nas mãos erradas é pior do que um macaco com uma espingarda. Pense antes de pressionar enter

Nesse caso, o bloco é de um MiB e o tamanho do arquivo é de 512 MiB. Não tem que ser assim.

Nós criamos e ativamos a troca com este comando

mkswap loop && swapon loop

Lembre-se de que o desempenho de um arquivo de loop é sempre um pouco inferior ao de um físico real.

4-faça o que quiser

Estes são apenas alguns dos exemplos mais característicos, sinta-se à vontade para experimentar com chroots, sistemas de criptografia, loops aninhados ... Suas possibilidades são ilimitadas. Mas, tome cuidado com os comandos que você executa, pense bem antes de pressionar enter.

Links de interesse


Deixe um comentário

Seu endereço de email não será publicado. Campos obrigatórios são marcados com *

*

*

  1. Responsável pelos dados: Miguel Ángel Gatón
  2. Finalidade dos dados: Controle de SPAM, gerenciamento de comentários.
  3. Legitimação: Seu consentimento
  4. Comunicação de dados: Os dados não serão comunicados a terceiros, exceto por obrigação legal.
  5. Armazenamento de dados: banco de dados hospedado pela Occentus Networks (UE)
  6. Direitos: A qualquer momento você pode limitar, recuperar e excluir suas informações.

  1.   Illukki dito

    Bom post che !! Tenho backups gigantescos por aí e nunca me ocorreu compactá-los. Vou usar isso e, a propósito, criptografo meu externo para preenchê-lo e então me lembrei que iria criptografá-lo 🙁

  2.   sieg84 dito

    Interessante experimentar o squashfs

  3.   Manoel R. dito

    Bom tutorial, eu tinha lido como criar arquivos img com dd e montá-los, mas não conhecia o uso do Squashfs e sua compressão; Embora não permita modificar seu conteúdo, seu uso pode ser útil em situações como as que você comenta. Obrigado por compartilhar, saudações.

  4.   demonstração dito

    Muito bom saber, obrigado pela dica.

  5.   Joaquin dito

    Você sempre aprende algo novo. Excelente!

  6.   não do Brooklyn dito

    É engraçado, eu conhecia o squashfs e para que eles servem, mas nunca me ocorreu compactar minhas imagens. Obrigado pela dica.

  7.   HO2Gi dito

    Impressionante, vamos experimentar para ver o que está acontecendo, dica muito boa

  8.   Robert dito

    excelente tuto !!! =)… Dica muito boa !!!

  9.   Fórico dito

    Olá roader. Artigo muito interessante, obrigado por compartilhar.

  10.   Essau dito

    No Gentoo, você precisa habilitar o suporte a SquashFS no kernel antes de compilá-lo, vou testá-lo para ver como funciona. Obrigado.

    1.    Essau dito

      testado no Gentoo compilando o kernel para ele e excelente.
      Apenas corrija um pequeno erro de digitação, roader.

      No exemplo:

      mksquashfs photos-2009 photos-2010 photos-2011 photos-2012 photos-2013 photos_2009-2013.sqsfs -comp xz -bs 1M

      poupe os s em "-bs" (que determina o tamanho do bloco), deve ser assim:

      mksquashfs photos-2009 photos-2010 photos-2011 photos-2012 photos-2013 photos_2009-2013.sqsfs -comp xz -b 1M