Um guia para iniciantes. Arquivos esparsos em sistemas de arquivos Windows, Linux e MacOS, NTFS, REFS, Ext3, Ext4, BTRFS e APFS

Este artigo se concentrará em arquivos esparsos. Vamos falar sobre suas vantagens e desvantagens, quais sistemas de arquivos suportam tais arquivos. E também como criá-los ou transformá-los a partir dos normais. Um artigo para iniciantes.



imagem







Arquivos esparsos são arquivos especiais que usam o sistema de arquivos com mais eficiência, eles não permitem que o sistema de arquivos ocupe espaço livre em disco na mídia quando as partições não estão cheias. Ou seja, o “espaço vazio” será utilizado apenas quando necessário. As informações vazias na forma de zeros serão armazenadas no bloco de metadados FS. Portanto, arquivos esparsos inicialmente ocupam menos espaço de mídia do que seu tamanho real.



imagem



Este tipo suporta a maioria dos sistemas de arquivos: BTRFS, NILFS, ZFS, NTFS, ext2, ext3, ext4, XFS, JFS, ReiserFS, Reiser4, UFS, Rock Ridge, UDF, ReFS, APFS, F2FS.



Este tipo suporta a maioria dos sistemas de arquivos: BTRFS, NILFS, ZFS, NTFS, ext2, ext3, ext4, XFS, JFS, ReiserFS, Reiser4, UFS, Rock Ridge, UDF, ReFS, APFS, F2FS.



Todos esses FS suportam totalmente esse tipo, mas ao mesmo tempo não fornecem acesso direto às suas funções por meio de sua interface padrão. Suas propriedades podem ser controladas apenas por meio de comandos de linha de comando.



Diferença entre compressão e arquivos esparsos



Todos os sistemas de arquivos que mencionei acima também oferecem suporte ao recurso de compactação padrão. Ambas as ferramentas oferecem a vantagem de economizar espaço em disco, mas alcançam esse objetivo de maneiras diferentes. A principal desvantagem de usar a compactação é que ela pode diminuir o desempenho de leitura / gravação do sistema. Uma vez que recursos adicionais serão usados ​​para descompactar ou compactar os dados. No entanto, alguns produtos de software não oferecem suporte à compactação.



Vantagens e desvantagens



A maior vantagem dos arquivos esparsos é que o usuário pode criar arquivos grandes que ocupam muito pouco espaço de armazenamento. O espaço de armazenamento é alocado automaticamente conforme os dados são gravados nele. Arquivos esparsos grandes são criados em um tempo relativamente curto porque o sistema de arquivos não precisa pré-alocar espaço em disco para gravar zeros.



Os benefícios são limitados apenas pelos aplicativos que os suportam. Se o programa não tiver a capacidade de reconhecê-los ou usá-los, ele os manterá em seu estado original - descompactado, o que não trará nenhum benefício. Você também precisa ter cuidado com eles, pois um arquivo esparso de apenas alguns megabytes pode crescer repentinamente para vários gigabytes quando aplicativos sem suporte o copiam para seu destino.



Outra desvantagem é que você não pode copiar ou criar esse arquivo se seu tamanho nominal exceder o espaço livre disponível (ou os limites de cota impostos às contas de usuário). Por exemplo, se o tamanho original (com todos os bytes zero) for 500 MB e houver um limite de cota de 400 MB para a conta de usuário usada para criá-lo. Isso gerará um erro mesmo se o espaço em disco real que ocupa for de apenas 50 MB de espaço em disco.



Quanto às unidades que armazenam esses dados, elas também estão sujeitas à fragmentação, uma vez que o sistema de arquivos gravará dados em arquivos esparsos conforme necessário. Com o tempo, isso pode levar à degradação do desempenho. Além disso, alguns utilitários de gerenciamento de disco podem não exibir com precisão a quantidade de espaço livre disponível. Quando o sistema de arquivos está quase cheio, isso pode levar a resultados inesperados. Por exemplo, erros de disco cheio podem ocorrer quando os dados são copiados sobre uma parte existente que foi marcada como esparsa.



Como criar um arquivo esparso no Windows



Para fazer isso, no sistema operacional Windows usaremos a linha de comando. Na pesquisa, escrevemos cmd e o executamos como administrador.



O Windows usa o programa fsutil (um utilitário do sistema de arquivos) para gerenciar esses dados. Quando a criação é executada, por padrão, o arquivo é criado normalmente. Vá até a pasta onde deseja criá-lo e digite:



fsutil file createnew sparse-file 1000000000







Onde sparse-file é o nome, e no final seu tamanho é indicado em bytes.



imagem



Para atribuir o valor "sparse" ao arquivo, digite:



fsutil sparse setflag sparse-file







imagem



Para remover este sinalizador, execute o seguinte comando:



fsutil sparse setflag sparse-file 0







imagem



E para atribuir o atributo novamente:



fsutil sparse setflag sparse-file







Verifique:



fsutil sparse queryflag sparse-file







imagem



Por si só, o atributo ainda não economiza espaço em disco. Para fazer isso, você precisa marcar uma área vazia que será liberada dentro.



Para marcar uma área em branco, digite:



fsutil sparse setrange sparse-file 0 1000000000







imagem



No final, o deslocamento e o comprimento são especificados em bytes. No meu caso, de zero a 1GB.



Para instalar um arquivo completamente esparso, especifique o tamanho total. Se necessário, você pode expandir o arquivo especificando um valor maior aqui.



Para ter certeza de que o atributo dado é atribuído ao arquivo, vamos executar o layout.



fsutil file layout sparse-file







imagem



Esse atributo pode ser definido para qualquer arquivo. Basta executar este comando com seu nome e definir o tamanho desejado.



Nas propriedades do arquivo criado anteriormente, você pode ver isso com um tamanho de 1 GB. o arquivo ocupa 0 bytes no disco.



Este conjunto de comandos é adequado para todos os sistemas de arquivos do Windows que suportam este tipo de dados (NTFS, ReFS, etc.).



Como criar um arquivo esparso no Linux



No Linux, o processo de criação desses tipos de dados é um pouco mais fácil, pois existem vários comandos para criá-los. Este conjunto caberá em todos os sistemas de arquivos Linux.



Aqui você pode usar o comando dd ou truncate.



O primeiro comando se parece com isto:



dd if=/dev/zero of=file-sparse bs=1 count=0 seek=2G







Onde file-sparse é um nome e seu tamanho é indicado no final, pode ser especificado em bytes, megabytes, etc.



imagem



O segundo comando é mais simples, tem a seguinte aparência:



truncate -s2G file-sparse







Onde o valor s indica o tamanho, seguido do nome.



imagem



Comparado ao Windows, no Linux, quando esse arquivo é criado por um dos comandos, ele será "esparso" por padrão.



Para converter normal em esparso, há um comando separado:



cp --sparse=always ./025.jpg ./0251.jpg







Onde 025.jpg é o primeiro nome regular.



0251.jpg - e o nome do meio do esparso.



imagem



Como aumentar



Se você precisar ampliar um arquivo existente, use o primeiro comando, substitua aqui o nome e especifique o tamanho desejado.



dd if=/dev/zero of=025.jpg bs=1 count=0 seek=2G







Isso aumentará seu tamanho para 2 GB.



imagem



Para verificar o tamanho, execute o seguinte comando:



du -h --apparent-size 025.jpg







imagem



Arquivos esparsos ApFS



Na verdade, esse conjunto de comandos também é adequado para o sistema de arquivos apple - ApFS, uma vez que o Linux e o MacOS são baseados na arquitetura do kernel Unix, ambos fornecem acesso aos comandos Unix e ao shell Bash.



Abra um terminal e execute qualquer um dos comandos que usei no Linux.



No macOS Catalina, apenas o primeiro comando funciona e o tamanho deve ser especificado em bytes, caso contrário, o comando resultará em um erro.



sudo dd if=/dev/zero of=sparse_APFS bs=1 count=0 seek=1000000000







imagem



O sistema de arquivos ApFS, sujeito a certas condições, cria arquivos esparsos por padrão, então para aumentar qualquer arquivo, você pode usar o comando:



dd if=/dev/zero of=187.jpg bs=1 count=0 seek=500000000







Vamos definir o tamanho, por exemplo, 500 MB, no MacOS o tamanho deve ser especificado em bytes.



Nas propriedades você pode ver que seu tamanho aumentou para 500 Mb.



Conclusão



Antes de utilizar esta funcionalidade em qualquer SO, é extremamente importante que você conheça todas as suas vantagens e desvantagens. Conhecer esses recursos ajudará a evitar possíveis problemas futuros.



Veja a fonte do artigo completo com todos os tutoriais em vídeo adicionais . E vá também ao nosso canal no Youtube , são mais de 400 vídeos de treinamento.



All Articles