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.
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
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
- 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
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
- Wikipedia Squashfs
- Cara mksquashfs
- Homem destrói
- wikipedia iso 9960
- Wikipedia UDF
- Wikipedia VFS
- loop wikipedia
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 🙁
Interessante experimentar o squashfs
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.
Muito bom saber, obrigado pela dica.
Você sempre aprende algo novo. Excelente!
É engraçado, eu conhecia o squashfs e para que eles servem, mas nunca me ocorreu compactar minhas imagens. Obrigado pela dica.
Impressionante, vamos experimentar para ver o que está acontecendo, dica muito boa
excelente tuto !!! =)… Dica muito boa !!!
Olá roader. Artigo muito interessante, obrigado por compartilhar.
No Gentoo, você precisa habilitar o suporte a SquashFS no kernel antes de compilá-lo, vou testá-lo para ver como funciona. Obrigado.
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