File systems (Português)

From ArchWiki
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.
Status de tradução: Esse artigo é uma tradução de File systems. Data da última tradução: 2020-09-13. Você pode ajudar a sincronizar a tradução, se houver alterações na versão em inglês.

Do Wikipédia:

Na computação, um sistema de arquivos (em inglês, "file system" or "filesystem") controla como os dados são armazenados e recuperados. Sem um sistema de arquivos, as informações colocadas em uma mídia de armazenamento seriam um grande corpo de dados, sem nenhuma maneira de saber onde uma informação é interrompida e a próxima começa. Ao separar os dados em partes e dar um nome a cada parte, as informações são facilmente isoladas e identificadas. Tomando seu nome da maneira como os sistemas de informação em papel são nomeados, cada grupo de dados é chamado de "arquivo". A estrutura e as regras lógicas usadas para gerenciar os grupos de informações e seus nomes são chamadas de "sistema de arquivos".

Partições de unidades individuais podem ser configuradas usando um dos muitos sistemas de arquivos disponíveis diferentes. Cada um tem suas próprias vantagens, desvantagens e idiossincrasias únicas. Uma breve visão geral dos sistemas de arquivos suportados segue; os links são para páginas da Wikipédia que fornecem muito mais informações.

Tipos de sistemas de arquivos

Tango-inaccurate.pngThe factual accuracy of this article or section is disputed.Tango-inaccurate.png

Reason: /proc/filesystems somente lista os sistemas de arquivos cujo os módulos estão carregados. Desde que os kernels do Arch tem a maioria dos sistemas de arquivos colocados como módulos carregaveis, /proc/filesystems mostrará poucos, se qualquer, sistemas de arquivos usáveis. (Discuss in Talk:File_systems)

Veja filesystems(5) para uma visão geral e Wikipedia:Comparison of file systems para uma comparação detalhada das funcionalidades. Sistemas de arquivos suportados pelo kernel estão listados em /proc/filesystems.

Sistemas de arquivos FUSE e inclusos no kernel
Sistema de arquivos Comando de criação Utilitários do userspace Archiso [1] Documentação do kernel [2][3] Notas
Btrfs mkfs.btrfs(8) btrfs-progs Sim btrfs.html status de estabilidade
VFAT mkfs.fat(8) dosfstools Sim vfat.html Sistema de arquivos do Windows 9x
exFAT mkfs.exfat(8) exfatprogs Sim Sistema de arquivos nativo no Linux 5.4. [4]
mkexfatfs(8) exfat-utils Não N/A (baseado no FUSE)
F2FS mkfs.f2fs(8) f2fs-tools Sim f2fs.html Dispositivos baseados no Flash
ext3 mke2fs(8) e2fsprogs Sim ext3.html
ext4 mke2fs(8) e2fsprogs Sim ext4.html
HFS mkfs.hfsplus(8) hfsprogsAUR Não hfs.html sistema de arquivos do Mac OS Clássico
HFS+ mkfs.hfsplus(8) hfsprogsAUR Não hfsplus.html sistema de arquivos do macOS
JFS mkfs.jfs(8) jfsutils Sim jfs.html
NILFS2 mkfs.nilfs2(8) nilfs-utils Sim nilfs2.html
NTFS mkfs.ntfs(8) ntfs-3g Sim N/A (baseado no FUSE) sistema de arquivos do Windows NT
ReiserFS mkfs.reiserfs(8) reiserfsprogs Sim
UDF mkfs.udf(8) udftools opcional udf.html
XFS mkfs.xfs(8) xfsprogs Sim

xfs.html
xfs-delayed-logging-design.html
xfs-self-describing-metadata.html

Nota: O kernel tem sua própria implementação do driver do NTFS (veja ntfs.html), mas tem suporte limitado a escrever arquivos.
Sistemas de arquivos não inclusos no kernel
Sistema de arquivos Comando de criação Conjunto de patches para o kernel Utilitários do userspace Notas
APFS mkapfs(8) linux-apfs-dkms-gitAUR[link quebrado: package not found] apfsprogs-gitAUR sistema de arquivos do macOS (10.13 e posterior). Somente leitura, experimental.
Bcachefs bcachefs(8) linux-bcachefs-gitAUR bcachefs-tools-gitAUR
Reiser4 mkfs.reiser4(8) reiser4progsAUR
ZFS zfs-linuxAUR, zfs-dkmsAUR zfs-utilsAUR porte, OpenZFS

Journaling

Todos os sistemas de arquivos acima, com exceção do exFAT, ext2, FAT16/32, Reiser4 (opcional), Btrfs e ZFS, usam journaling. O journaling fornece resiliência a falhas registrando as alterações antes que elas sejam confirmadas no sistema de arquivos. No caso de uma falha no sistema ou falha de energia, esses sistemas de arquivos são mais rápidos para voltar a ficar online e menos propensos a serem corrompidos. O registro ocorre em uma área dedicada do sistema de arquivos.

Nem todas as técnicas de journaling são iguais. Ext3 e ext4 oferecem journaling de modo de dados, que registra dados e metadados, além da possibilidade de registrar apenas alterações de metadados. O journaling em modo de dados tem uma penalidade de velocidade e não é ativado por padrão. Na mesma linha, o Reiser4 oferece os chamados "modelos de transação" que não apenas alteram os recursos que oferecem, mas também em seu modo de journaling. Ele usa diferentes técnicas de journaling: um modelo especial chamado logs errantes que elimina a necessidade de gravar no disco duas vezes write-anywhere—uma abordagem pura de copiar-ao-gravar (principalmente equivalente ao padrão do btrfs, mas com um design de "árvore" fundamentalmente diferente) e uma abordagem combinada chamada hybrid que alterna heuristicamente entre as duas anteriores.

Note: O Reiser4 fornece quase o equivalente ao comportamento padrão de journaling do ext4 (somente metadados) com o uso do plug-in node41, que também apresenta somas de verificação de metadados e de verificação em linha, opcionalmente combinado com o comportamento dos logs errantes que ele fornece dependendo em qual modelo de transação é escolhido no momento da montagem.

Os outros sistemas de arquivos fornecem journaling em modo ordenado, que registra apenas metadados. Embora todo o journaling retorne um sistema de arquivos a um estado válido após uma falha, o journaling no modo de dados oferece a maior proteção contra corrupção e perda de dados. Há um comprometimento no desempenho do sistema, no entanto, porque o journaling no modo de dados realiza duas operações de gravação: primeiro no journal e depois no disco (que o Reiser4 evita com o recurso "registros errantes"). A troca entre velocidade e dados do sistema segurança deve ser considerada ao escolher o tipo de sistema de arquivos Reiser4 é o único sistema de arquivos que, por padrão, opera com atomicidade total e também fornece somas de verificação para metadados e dados em linha (as operações ocorrem inteiramente, ou não e não corrompem ou destroem completamente) dados devido a operações que ocorrem pela metade) e, por design, são muito menos propensos à perda de dados do que outros sistemas de arquivos como Btrfs.

Os sistemas de arquivos baseados na cópia na gravação (também conhecidos como gravação em qualquer lugar), como Reiser4, Btrfs e ZFS, não precisam usar o journal tradicional para proteger os metadados, porque eles nunca são atualizados no local. Embora o Btrfs ainda tenha uma árvore de logs semelhante a um diário, ele é usado apenas para acelerar o fdatasync/fsync.

Sistema de arquivos baseados em FUSE

Veja FUSE.

Sistemas de arquivos empilháveis

  • aufs — Sistema de arquivos avançado de multíplas camadas de unificação, baseado no FUSE, uma completa reescrita do Unionfs, foi rejeitada no mainline do Linux e o OverlayFS foi escolhido para o kernel Linux.
http://aufs.sourceforge.net || linux-aufsAUR
  • eCryptfs — O sistema de arquivos empresárial criptográfico é um pacote de encriptação de disco para Linux. É implementado com uma camada de encriptação no nível do sistema de arquivos e compátivel com POSIX, propondo funcionalidade similar ao GnuPG a nível do sistema operacional.
https://ecryptfs.org || ecryptfs-utils
  • mergerfs — Um sistema de arquivos de união baseado no FUSE.
https://github.com/trapexit/mergerfs || mergerfsAUR
  • mhddfs — Sistema de arquivos de união FUSE para múltiplos HDDs.
http://mhddfs.uvw.ru || mhddfsAUR
  • overlayfs — OverlayFS é um serviço de sistema de arquivos que implementa uma montagem de união para outros sistemas de arquivos.
https://www.kernel.org/doc/html/latest/filesystems/overlayfs.html || linux
  • Unionfs — Unionfs é um serviço de sistema de arquivos para Linux, FreeBSD e NetBSD que implementa uma união para outros sistemas de arquivos.
https://unionfs.filesystems.org/ || not packaged? search in AUR
  • unionfs-fuse — Uma implementação do Unionfs para o userspace.
https://github.com/rpodgorny/unionfs-fuse || unionfs-fuse

Sistema de arquivos somente leitura

  • EROFS — O Enhanced Read-Only File System é um sistema de arquivos somente leitura leve, que visa melhorar o desempenho e compactar a capacidade de armazenamento.
https://www.kernel.org/doc/html/latest/filesystems/erofs.html || erofs-utils
  • SquashFS — SquashFS é um sistema de arquivos compactado somente leitura. SquashFS compacta arquivos, inodes e diretórios, suporta tamanhos de blocos até 1 MB para maior compactação.
http://squashfs.sourceforge.net/ || squashfs-tools

Sistemas de arquivos em cluster

  • Ceph — Unificado, distribuído sistema de armazenamento feito para excelente desempenho, confiabilidade e escabilidade.
https://ceph.com/ || ceph
  • Glusterfs — Sistema de arquivos de cluster capaz de ecalar para vários peta-bytes.
https://www.gluster.org/ || glusterfs
  • IPFS — Um protocolo de hipermídia ponto a ponto para fazer a web mais rápida, segura e aberta. IPFS aims replace HTTP and build a better web for all of us. Usa blocos para guardar partes de um arquivos, cada célula de rede guarda somente o conteúdo que é do seu interesse, oferece desduplicação, distribuição, sistema escalável limitado somente pelos usuários. (atualmente em alpha)
https://ipfs.io/ || go-ipfs
  • MooseFS — MooseFS é sistema de arquivos tolerante a falhas, alta disponibilidade e de alto desempenho distribuído em rede.
https://moosefs.com || moosefs
  • OpenAFS — Implementação de código aberto do sistema de arquivos distribuído AFS
https://www.openafs.org || openafsAUR
  • OrangeFS — OrangeFS é um sistema de arquivos de rede em expansão feito para transparentemente acessar discos de armazenamento baseado em multiplos servidores, em paralelo. Tem suporte otimizado MPI-IO para aplicações paralelas e distribuídas. Simplifica o uso de armazenamento paraleo não somente para clientes Linux como também para Windows, Hadoop, e WebHAV. Compátivel com POSIX. Parte do Linux desde a versão 4.6.
https://www.orangefs.org/ || not packaged? search in AUR
  • Sheepdog — Sistema de armazenamento de objetos distribuído para serviços de volume e container e gerencia os discos e células de forma inteligente.
https://sheepdog.github.io/sheepdog/ || sheepdogAUR
  • Tahoe-LAFS — Tahoe Least-Authority Filesystem é um sistema de arquivos distribuído grátis e aberto, seguro, descentralizado, tolerante a falhas e banco de dados ponto a ponto.
https://tahoe-lafs.org/ || tahoe-lafsAUR

Identificando sistemas de arquivos existentes

Para identificar sistemas de arquivos existentes, você pode usar o lsblk:

$ lsblk -f
NAME   FSTYPE LABEL     UUID                                 MOUNTPOINT
sdb
└─sdb1 vfat   Transcend 4A3C-A9E9

Um sistema de arquivos existente, se presente, vai ser mostrado na coluna FSTYPE. Se montado, vai aparecer na coluna MOUNTPOINT.

Criar um sistema de arquivos

Sistemas de arquivo são normalmente criados em uma partição, dentro de containers lógicos como LVM, RAID e dm-crypt, ou em um arquivo normal (veja Wikipedia:Loop device). Esta seção descreve o caso da partição.

Nota: Sistemas de arquivos podem ser escritos diretamente para o disco, isto é conhecido como superfloppy ou disco sem partição. Existem certas limitações neste método, particularmente se inicializar por tal unidade de armazenamento. Veja Btrfs#Partitionless Btrfs disk para um exemplo.
Atenção:
  • Depois de criar o novo sistema de arquivos, dados antes presentes nesta partição podem não ser mais recuperados. faça um backup de quaisquer dados que você deseja manter.
  • O propósito de dada partição pode restringir a escolha do sistema de arquivos. Por exemplo, uma partição de sistema EFI deve ter um sistema de arquivos FAT32, e o sistema de arquivo do diretório /boot deve ser suportado pelo gerenciador de boot.

Antes de continuar, identifique o dispositivo onde o sistema de arquivos vai ser criado e se ele está ou não montado. Por exemplo:

$ lsblk -f
NAME   FSTYPE   LABEL       UUID                                 MOUNTPOINT
sda
├─sda1                      C4DA-2C4D
├─sda2 ext4                 5b1564b2-2e2c-452c-bcfa-d1f572ae99f2 /mnt
└─sda3                      56adc99b-a61e-46af-aab7-a6d07e504652

Sistemas de arquivos montados devem ser desmontados antes de proceder. No exemplo acima um sistema de arquivo existente no /dev/sda2 está montado em /mnt. Este deve ser desmontado com:

# umount /dev/sda2

Para achar somente os sistemas de arquivos montados, veja #Listar sistemas de arquivos montados.

Para criar um novo sistema de arquivos, use o mkfs(8). Veja #Tipos de sistemas de arquivos para o exato tipo, e também os utilitários do userspace que você pode instalar para um sistema de arquivos particular.

Por exemplo, para criar um novo sistema de arquivos do tipo ext4 (comum para partições de dados no Linux) no /dev/sda1, rode:

# mkfs.ext4 /dev/sda1
Dica:
  • Use a opção -L do mkfs.ext4 para especificar um rotúlo (label) sistema de arquivos. e2label pode ser usado para mudar o rotúlo de um sistema de arquivos existente.
  • Sistemas de arquivos podem ser redimensionados depois da criação, no entanto, podem existir com certas limitações. Por exemplo, o tamanho do sistema de arquivos XFS pode ser aumentado, mas não reduzido. Veja Wikipedia:Comparison of file systems#Resize capabilities e a documentação do respectivo sistema de arquivos para detalhes.

O novo sistema de arquivos pode ser montado para um diretório de escolha.

Montar um sistema de arquivos

Para manualmente montar um sistema de arquivos localizado em um dispositivo (exemplo, uma partição) para um diretório, use mount(8). Este exemplo monta /dev/sda1 no /mnt.

# mount /dev/sda1 /mnt

Isto liga o sistema de arquivos em /dev/sda1 para o diretório /mnt, fazendo seu conteúdo visível. Quaisquer dados que existiam no /mnt antes desta ação ficam invisíveis até que o dispositivo seja desmontado.

O fstab contém informações de como dispositivos devem ser automaticamente montados, se presentes. Veja o artigo do fstab para mais informações de como modificar este comportamento.

Se um dispositivo é especificado no /etc/fstab e somente o dispositivo ou ponto de montagem é dado na linha de comando, a informação presente no fstab vai ser usada para a montagem. Por exemplo, se o /etc/fstab contém uma linha indicando que /dev/sda1 deveria ser montado para /mnt, então o seguinte vai automaticamente montar o dispositivo para este diretório:

# mount /dev/sda1

Ou

# mount /mnt

mount contém algumas opções, muitas destas dependem do sistema de arquivos especificado. As opções podem ser mudadas, ao:

  • usar opções na linha de comando com mount
  • editando o fstab
  • criando regras do udev
  • compilando o kernel você mesmo
  • ou usando scripts para montagem de um sistema de arquivos específico (localizado em /usr/bin/mount.*).

Veja estes artigos relacionados e o artigo do sistema de arquivos de interesse para mais informações.

Dica: Sistemas de arquivos também podem ser montados com systemd-mount ao invês do mount. Se o ponto de montagem não é especificado, o sistema de arquivos vai ser montado automaticamente em /run/media/system/identificador_do_dispositivo/. Isto permite facilmente montar um sistema de arquivos sem ter de decidir onde montá-lo. Veja systemd-mount(1) para modo de uso e mais detalhes.

Listar sistemas de arquivos montados

Para listar todos os sistemas de arquivos montados, use findmnt(8):

$ findmnt

findmnt recebe uma variedade de argumentos que podem filtrar a saída e mostra informações adicionais. Por exemplo, é possível receber um dispositivo ou ponto de montagem como um argumento para somente mostrar informações sobre ele:

$ findmnt /dev/sda1

findmnt coleta informações do /etc/fstab, /etc/mtab, e /proc/self/mounts.

Desmontar um sistema de arquivos

Para desmontar um sistema de arquivos, use umount(8). O dispositivo que contém o sistema de arquivos (exemplo, /dev/sda1) ou o ponto de montagem (exemplo, /mnt) deve ser especificado:

# umount /dev/sda1

ou

# umount /mnt

Veja também