File systems (Português)

From ArchWiki
(Redirected from Sistemas de arquivos)
Jump to navigation Jump to search

Tango-preferences-desktop-locale.pngEsse artigo ou seção precisa de tradução.Tango-preferences-desktop-locale.png

Notas: Este artigo está sendo traduzido (Discuta na Talk:File systems (Portuguê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] Notas
Btrfs mkfs.btrfs(8) btrfs-progs Sim btrfs.txt status de estabilidade
VFAT mkfs.fat(8) dosfstools Sim vfat.txt
exFAT mkexfatfs(8) exfat-utils Sim N/A (baseado no FUSE)
F2FS mkfs.f2fs(8) f2fs-tools Sim f2fs.txt Dispositivos baseados no Flash
ext3 mke2fs(8) e2fsprogs Sim ext3.txt
ext4 mke2fs(8) e2fsprogs Sim ext4.txt
HFS mkfs.hfsplus(8) hfsprogsAUR Não hfs.txt sistema de arquivos do Mac OS Clássico
HFS+ mkfs.hfsplus(8) hfsprogsAUR Não hfsplus.txt sistema de arquivos do macOS
JFS mkfs.jfs(8) jfsutils Sim jfs.txt
NILFS2 mkfs.nilfs2(8) nilfs-utils Sim nilfs2.txt
NTFS mkfs.ntfs(8) ntfs-3g Sim N/A (baseado no FUSE) sistema de arquivos do Windows
ReiserFS mkfs.reiserfs(8) reiserfsprogs Sim
UDF mkfs.udf(8) udftools opcional udf.txt
XFS mkfs.xfs(8) xfsprogs Sim

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

Nota: O kernel tem sua própria implementação do driver do NTFS (veja ntfs.txt), 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 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) linux-ck-reiser4AUR[link quebrado: package not found] reiser4progsAUR
ZFS zfs-linuxAUR, zfs-dkmsAUR zfs-utilsAUR porte, OpenZFS

Journaling

All the above filesystems with the exception of ext2, FAT16/32, Reiser4 (optional), Btrfs and ZFS, use journaling. Journaling provides fault-resilience by logging changes before they are committed to the filesystem. In the event of a system crash or power failure, such file systems are faster to bring back online and less likely to become corrupted. The logging takes place in a dedicated area of the filesystem.

Not all journaling techniques are the same. Ext3 and ext4 offer data-mode journaling, which logs both data and meta-data, as well as possibility to journal only meta-data changes. Data-mode journaling comes with a speed penalty and is not enabled by default. In the same vein, Reiser4 offers so-called "transaction models" which not only change the features it provides, but in its journaling mode. It uses a different journaling techniques: a special model called wandering logs which eliminates the need to write to the disk twice, write-anywhere—a pure copy-on-write approach (mostly equivalent to btrfs' default but with a fundamentally different "tree" design) and a combined approach called hybrid which heuristically alternates between the two former.

Note: Reiser4 does provide an almost equivalent to ext4's default journaling behavior (meta-data only) with the use of the node41 plugin which also features meta-data and inline checksums, optionally combined with the wandering logs behaviour it provides depending on what transaction model is chosen at mount time.

The other filesystems provide ordered-mode journaling, which only logs meta-data. While all journaling will return a filesystem to a valid state after a crash, data-mode journaling offers the greatest protection against corruption and data loss. There is a compromise in system performance, however, because data-mode journaling does two write operations: first to the journal and then to the disk (which Reiser4 avoids with its "wandering logs" feature. The trade-off between system speed and data safety should be considered when choosing the filesystem type. Reiser4 is the only filesystem that by design operates on full atomicity and also provides checksums for both meta-data and inline data (operations entirely occur, or they entirely do not and does not corrupt or destroy data due to operations half-occurring) and by design is therefor much less prone to data loss than other file systems like Btrfs.

Filesystems based on copy-on-write (also known as write-anywhere), such as Reiser4, Btrfs and ZFS, have no need to use traditional journal to protect metadata, because they are never updated in-place. Although Btrfs still has a journal-like log tree, it is only used to speed-up fdatasync/fsync.

Sistema de arquivos baseados em FUSE

Veja FUSE.

Sistemas de arquivos empilháveis

  • aufs — Advanced Multi-layered Unification Filesystem, a FUSE based union filesystem, a complete rewrite of Unionfs, was rejected from Linux mainline and instead OverlayFS was merged into the Linux Kernel.
http://aufs.sourceforge.net || aufsAUR[link quebrado: package not found]
  • eCryptfs — The Enterprise Cryptographic Filesystem is a package of disk encryption software for Linux. It is implemented as a POSIX-compliant filesystem-level encryption layer, aiming to offer functionality similar to that of GnuPG at the operating system level.
http://ecryptfs.org || ecryptfs-utils
  • mergerfs — a FUSE based union filesystem.
https://github.com/trapexit/mergerfs || mergerfsAUR
  • mhddfs — Multi-HDD FUSE filesystem, a FUSE based union filesystem.
http://mhddfs.uvw.ru || mhddfsAUR
  • overlayfs — OverlayFS is a filesystem service for Linux which implements a union mount for other file systems.
https://www.kernel.org/doc/Documentation/filesystems/overlayfs.txt || linux
  • Unionfs — Unionfs is a filesystem service for Linux, FreeBSD and NetBSD which implements a union mount for other file systems.
http://unionfs.filesystems.org/ || not packaged? search in AUR
  • unionfs-fuse — A user space Unionfs implementation.
https://github.com/rpodgorny/unionfs-fuse || unionfs-fuse

Sistema de arquivos somente leitura

  • SquashFS — SquashFS is a compressed read only filesystem. SquashFS compresses files, inodes and directories, and supports block sizes up to 1 MB for greater compression.
http://squashfs.sourceforge.net/ || squashfs-tools

Sistemas de arquivos em cluster

  • Ceph — Unified, distributed storage system designed for excellent performance, reliability and scalability.
https://ceph.com/ || ceph
  • Glusterfs — Cluster file system capable of scaling to several peta-bytes.
https://www.gluster.org/ || glusterfs
  • IPFS — A peer-to-peer hypermedia protocol to make the web faster, safer, and more open. IPFS aims replace HTTP and build a better web for all of us. Uses blocks to store parts of a file, each network node stores only content it is interested, provides deduplication, distribution, scalable system limited only by users. (currently in aplha)
https://ipfs.io/ || go-ipfs
  • MooseFS — MooseFS is a fault tolerant, highly available and high performance scale-out network distributed file system.
https://moosefs.com || moosefs
  • OpenAFS — Open source implementation of the AFS distributed file system
http://www.openafs.org || openafsAUR
  • OrangeFS — OrangeFS is a scale-out network file system designed for transparently accessing multi-server-based disk storage, in parallel. Has optimized MPI-IO support for parallel and distributed applications. Simplifies the use of parallel storage not only for Linux clients, but also for Windows, Hadoop, and WebDAV. POSIX-compatible. Part of Linux kernel since version 4.6.
http://www.orangefs.org/ || not packaged? search in AUR
  • Sheepdog — Distributed object storage system for volume and container services and manages the disks and nodes intelligently.
https://sheepdog.github.io/sheepdog/ || not packaged? search in AUR
  • Tahoe-LAFS — Tahoe Least-Authority Filesystem is a free and open, secure, decentralized, fault-tolerant, peer-to-peer distributed data store and distributed file system.
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