O Linux suporta vários sistemas de arquivos, como EXT4, F2FS, Btrfs e XFS. Esses sistemas de arquivos tradicionais lidam principalmente com um dispositivo de armazenamento contendo vários diretórios. Entretanto, quando se trata de manipular dispositivos de loopback, o sistema de arquivos atual pode ser difícil para processar a montagem.
Tendo isso em mente, Christian Brauner, desenvolvedor Linux e engenheiro sênior da Canonical (fabricante do Ubuntu), propôs um novo sistema de arquivos de dispositivos de loop, chamado loopfs. Este sistema de arquivos é amplamente influenciado pelo BinderFS do Android, que ele implementou cerca de dois anos atrás. Então, vamos nos aprofundar nos loopfs para saber mais sobre isso.
Contudo, antes de começarmos, vamos entender o que é um dispositivo de loop.
O que é um dispositivo de loop?
Um dispositivo de loop é semelhante a um dispositivo de bloco, mas mais como um arquivo comum que é montado como um sistema de arquivos. Em vez de mapear seu bloco de dados para dispositivos físicos como disco rígido, o dispositivo de loop mapeia os dados para blocos de um arquivo comum. Portanto, o kernel o trata como um dispositivo de bloco.
Por exemplo, um arquivo ISO é um único arquivo, mas contém internamente vários arquivos e diretórios. O kernel do sistema operacional pode assumi-lo como uma partição física do disco e montá-lo como um dispositivo de loop. Portanto, se você deseja anexar um arquivo (xyz.iso) a uma árvore de diretórios Linux, pode usar um loop para montá-lo como um sistema de arquivos inteiro.
Loopfs: um sistema de arquivos de dispositivo de loop
De acordo com Christian,
loopfs permite alocar dinamicamente dispositivos de loop em cargas de trabalho em área restrita, sem expor /dev ou /dev /loop-control à carga de trabalho em questão e sem ter que implementar um protocolo complexo e atrevido para enviar descritores de arquivo para dispositivos de loop.
Sempre que um dispositivo de loop é montado, o loopfs cria uma nova instância que é independente de outras instâncias do loopfs. Dessa forma, as ferramentas privilegiadas obtêm seu próprio estoque particular de instâncias de dispositivos de loop.
Além disso, você também pode limitar o número de dispositivos de loop disponíveis para uma instância de loopfs, configurando a opção de montagem “max” como um número inteiro positivo.
Você pode montar o sistema de arquivos loopfs pela raiz do namespace do usuário para usá-lo em contêineres. A montagem de imagens em dispositivos de loop também é segura devido à intercepção do syscall, que lida com o syscall de montagem final e executa a montagem por um processo suficientemente privilegiado.
Atualmente, o loopfs é um sistema de arquivos proposto que ainda não recebeu a aprovação final da comunidade Linux Kernel.
Para detalhes completos, confira os conjuntos de patches aqui e todo o código do conjunto de patches aqui.