fstab (Português)

From ArchWiki
Jump to navigation Jump to search

Status de tradução: Esse artigo é uma tradução de fstab. Data da última tradução: 2020-04-13. Você pode ajudar a sincronizar a tradução, se houver alterações na versão em inglês.

O arquivo fstab(5) pode ser usado para definir como partições do disco, vários outros dispositivos de bloco, ou sistemas de arquivos remotos devem ser montados no sistema.

Cada sistema de arquivos é descrito em uma linha separada. Estas definições serão convertidas dinamicamente em units de montagem do systemd durante a inicialização, e quando a configuração do gerenciador do sistema é recarregada. A configuração padrão vai automaticamente executar fsck e montar os sistemas de arquivos antes de iniciar serviços que precisam deles montados. Por exemplo, systemd automaticamente garante que a montagem de sistemas de arquivos remotos como NFS ou Samba é somente realizada depois da rede estar configurada. Portanto, a montagem de sistemas de arquivos locais e remotos especificados no /etc/fstab deve funcionar normalmente. Veja {{man|5|systemd.mount} para detalhes.

O comando mount usará o fstab, se somente o diretório ou dispositivo é dado, para preencher o valor do outro parâmetro. Ao fazer isso, as opções de montagem que estão listadas no fstab também serão usadas.

Uso

Um simples /etc/fstab, usando UUIDs do sistema de arquivos:

/etc/fstab
# <device>                                <dir> <type> <options> <dump> <fsck>
UUID=0a3407de-014b-458b-b5c1-848e92a327a3 /     ext4   noatime   0      1
UUID=f9fe0b69-a280-415d-a03a-a32752370dee none  swap   defaults  0      0
UUID=b411dc99-f0a0-4c87-9e05-184977be8539 /home ext4   noatime   0      2
  • <device>, dispositivo, descreve o dispositivo de bloco especial ou sistema de arquivos remoto a ser montado; veja #Identificando sistemas de arquivos.
  • <dir>, diretório, descreve o ponto de montagem.
  • <type>, o tipo do sistema de arquivos.
  • <options>, as opções de montagem associadas; veja mount(8) e ext4(5).
  • <dump> é verificado pelo utilitário dump(8). Este campo é normalmente definido para 0, que desabilita a verificação.
  • <fsck> define a ordem de execução do fsck do sistema de arquivos na iniciliazação; veja fsck(8). Para o dispositivo raiz isto deve ser 1. Para outras partições deve ser 2, ou 0 para desabilitar a verificação.
Tip:
  • O tipo auto deixa o comando de montagem supor que tipo de sistema de arquivos é usado. Isto é útil para mídias óticas (CD/DVD/Blu-ray).
  • Se o sistema de arquivos raiz é btrfs, a ordem do fsck deve ser definida para 0 ao invês de 1. veja fsck.btrfs(8).

Todos os dispositivos especificados dentro do /etc/fstab serão automaticamente montados na inicialização e quando o parâmetro -a é usado com mount(8) a menos que a opção noauto é especificada. Dispositivos que são listados e não estão presentes resultarão em um erro a menos que a opção nofail é usada.

Veja fstab(5) para detalhes.

Identificando sistemas de arquivos

Existem diferentes maneiras de identificar sistemas de arquivos que serão montados no /etc/fstab: o descritor de nomes do kernel, rótulo e UUID do sistema de arquivos, e rótulo e UUID da partição GPT. UUID ou PARTUUID devem ser preferidos sobre o descritor de nomes do kernel e rótulos. Veja nomeação persistente de dispositivo de bloco para mais explicações. É recomendado a leitura dele antes de continuar lendo este.

Neste seção, será descrito como montar sistemas de arquivos usando todos os métodos de montagem disponíveis por meio de exemplos. A saída dos comandos lsblk -f e blkid usados nos seguintes exemplos estão disponíveis no artigo Nomeação persistente de dispositivo de bloco.

Para usar descritores de nomes do kernel, use /dev/sdxy na primeira coluna.

Descritores de nomes do kernel

Execute lsblk -f para listar as partições e prefixar os valores na coluna NAME com /dev/.

/etc/fstab
# <device>        <dir>        <type>        <options>        <dump> <fsck>
/dev/sda1         /boot        vfat          defaults         0      2
/dev/sda2         /            ext4          defaults         0      1
/dev/sda3         /home        ext4          defaults         0      2
/dev/sda4         none         swap          defaults         0      0
Atenção: Descritores de nomes do kernel não são persistentes e podem mudar a cada inicialização, eles não devem ser usados em arquivos de configuração.

Rótulos do sistema de arquivos

Execute lsblk -f para listar as partições, e prefixe os valore na coluna LABEL (rótulo em português) com LABEL= ou alternativamente execute blkid e use os valores LABEL sem aspas:

/etc/fstab
# <device>        <dir>        <type>        <options>        <dump> <fsck>
LABEL=EFI         /boot        vfat          defaults         0      2
LABEL=SYSTEM      /            ext4          defaults         0      1
LABEL=DATA        /home        ext4          defaults         0      2
LABEL=SWAP        none         swap          defaults         0      0
Nota: Se qualquer um dos seus campos conter espaços, veja #Espaços no caminho do arquivo.

UUIDs do sistema de arquivos

Execute lsblk -f para listar as partições, e prefixe os valores na coluna UUID com UUID= ou alternativamente execute blkid e use os valores UUID sem as aspas:

/etc/fstab
# <device>                                <dir> <type> <options> <dump> <fsck>
UUID=CBB6-24F2                            /boot vfat   defaults  0      2
UUID=0a3407de-014b-458b-b5c1-848e92a327a3 /     ext4   defaults  0      1
UUID=b411dc99-f0a0-4c87-9e05-184977be8539 /home ext4   defaults  0      2
UUID=f9fe0b69-a280-415d-a03a-a32752370dee none  swap   defaults  0      0

Rótulos de partição GPT

Execute blkid para listar as partições, e use os valores PARTLABEL sem as aspas:

/etc/fstab
# <device>                           <dir> <type> <options> <dump> <fsck>
PARTLABEL=EFI\040SYSTEM\040PARTITION /boot vfat   defaults  0      2
PARTLABEL=GNU/LINUX                  /     ext4   defaults  0      1
PARTLABEL=HOME                       /home ext4   defaults  0      2
PARTLABEL=SWAP                       none  swap   defaults  0      0
Nota: Se qualquer dos campos contém espaços, veja #Espaços no caminho do arquivo.

UUIDs de partição GPT

Execute blkid para listar as partições, e use os valores PARTUUID sem as aspas:

/etc/fstab
# <device>                                    <dir> <type> <options> <dump> <fsck>
PARTUUID=d0d0d110-0a71-4ed6-936a-304969ea36af /boot vfat   defaults  0      2
PARTUUID=98a81274-10f7-40db-872a-03df048df366 /     ext4   defaults  0      1
PARTUUID=7280201c-fc5d-40f2-a9b2-466611d3d49e /home ext4   defaults  0      2
PARTUUID=039b6c1c-7553-4455-9537-1befbc9fbc5b none  swap   defaults  0      0

Dicas e truques

Automontagem com systemd

Veja systemd.mount(5) para todas as opções de montagem.

Partição local

No caso de uma grande partição, pode ser mais eficiente permitir serviços que não dependem dela para iniciar enquanto o fsck é executado nela. Para fazer isso adicione as seguintes opções na entrada do fstab da partição:

noauto,x-systemd.automount

Assim o fsck e a montagem vão ser somente executados quando ela é primeiro acessada, e o kernel colocará no buffer todo o acesso a arquivos dela até que esteja pronta. Este método pode ser relevante se ter, por exemplo, uma partição /home significantemente grande.

Nota: Isto vai fazer o tipo de sistema de arquivo autofs que é ignorado pelo mlocate por padrão.

Sistema de arquivos remoto

O mesmo se aplica para a montagem de sistema de arquivos remoto. Se você quer que eles sejam montados somente no acesso, você precisa usar os parâmetros noauto,x-systemd.automount. Adicionalmente, você pode usar a opção x-systemd.mount-timeout= para especificar quanto o systemd deve esperar para o comando de montagem terminar. Também, a opção _netdev garante que o systemd entende que a montagem depende da rede e que faça ela depois que a rede está conectada.

noauto,x-systemd.automount,x-systemd.mount-timeout=30,_netdev
Nota: Se você planeja usar o parâmetro exec com automontagem, você deve remover o parâmetro user para que funcione ela apropriadamente como descoberto no percorrer de uma reportagem de bug do Fedora

Sistema de arquivos criptografado

Se você tem sistemas de arquivos criptografados com keyfiles, você pode também adicionar o parâmetro noauto para a entrada correspondente no /etc/crypttab. systemd não irá então abrir o dispositivo criptografado na inicialização, ao invês disso vai esperar até que ele seja acessado e então automaticamente abrí-lo com a keyfile especificada antes de montar. Isto pode salvar alguns segundos na inicialização se você está usando um dispositivo RAID criptografado por exemplo, porquê o systemd não precisa esperar pelo dispositivo se tornar disponível. Por exemplo:

/etc/crypttab
data /dev/md0 /root/key noauto

Desmontar automaticamente

Você pode também especificar um periodo máximo de ociosidade para um dispositivo montado com o parâmetro x-systemd.idle-timeout. Por exemplo:

noauto,x-systemd.automount,x-systemd.idle-timeout=1min

Isto vai fazer o systemd desmontar o dispositivo depois dele ficar ocioso por 1 minuto.

Dispositivos externos

Dispositivos externos que são montados quando presentes mas ignorados quando não, podem precisar da opção nofail. Isto previne erros sendo reportados na inicialização. Por exemplo:

/etc/fstab
/dev/sdg1        /media/backup    jfs    nofail,x-systemd.device-timeout=1ms    0  2

A opção nofail é melhor combinada com a opção x-systemd.device-timeout. Devido ao tempo máximo de espera padrão de um dispositivo ser 90 segundos, então um dispositivo externo desconectado com somente nofail vai fazer sua inicialização 90 segundos mais longa, a menos que você reconfigure o tempo máximo de espera como mostrado. Tenha a certeza de não definí-lo como 0, já que isto é traduzido para o infinito.

Se seu dispositivo externo precisa que outra unit do systemd seja carregada (por exemplo a rede para um compartilhamento de rede) você pode usar o x-systemd.requires=x combinado com x-systemd.automount para adiar a automontagem até que a unit esteja disponível. Por exemplo:

/etc/fstab
//host/share    /net/share        cifs   noauto,nofail,x-systemd.automount,x-systemd.requires=network-online.target,x-systemd.device-timeout=10,workgroup=workgroup,credentials=/foo/credentials    0 0
Nota: Isto é uma alternativa ao NetworkManager-wait-online ou systemd-networkd-wait-online e não paraliza a inicialização.

Espaços no caminho do arquivo

Desde que espaços são usados no fstab para delimitar campos, se qualquer campo (PARTLABEL, LABEL ou o ponto de montagem) contém espaços, estes espaços devem ser trocados pelo caractere \ seguido pelo código octal de 3 dígitos 040:

/etc/fstab
UUID=47FA-4071     /home/usuario/Fotos\040da\040camera       vfat  noatime       0  0
/dev/sda7          /media/100\040GB\040(Armazenamento)       ext4  noatime,user  0  2

Opções atime

Abaixo opções atime que podem ter impacto no desempenho do dispositivo de armazenamento.

  • A opção strictatime atualiza o tempo de acesso dos arquivos toda vez que eles são acessados. Isto é útil quando o Linux é usado para servidores; não tem muito valor para usuários comuns. A desvantagem da opção strictatime é que até mesmo ler de um arquivo do page cache (ler da memória ao invês do dispositivo de armazenamento) vai resultar em uma escrita.
  • A opção noatime totalmente desabilita a escrita do tempo de acesso do arquivo para o dispositivo de armazenamento toda vez que ele é acessado. Funciona bem para quase todos as aplicações, exceto as que precisam saber se um arquivo foi lido desde a última vez que foi modificado. A informação do tempo de escrita do arquivo continuará a ser atualizada em qualquer momento que o arquivo é modificado com esta opção habilitada.
  • A opção nodiratime desabilita a escrita do tempo de acesso de um arquivo somente para diretórios enquanto outros arquivos vão ainda ter seu tempo de acesso escrito.
    Nota: noatime implica nodiratime. Você não precisa especificar ambos.
  • relatime atualiza o tempo de acesso somente se o tempo de acesso anterior for anterior ao tempo atual de modificação ou alteração. Adicionalmente, desde o Linux 2.6.30, o tempo de acesso é sempre atualizado se desde a última modificação tiver passado mais de 24 horas. Esta opção é usada quando a opção defaults, atime (que significa que o kernel vai usar o padrão, que é relatime; veja mount(8) e wikipedia:Stat (system call)#Criticism of atime) ou nenhuma opção é especificada.

Quando usar Mutt ou outra aplicação que precisa saber se um arquivo foi lido desde a última vez que foi modificado, a opção noatime não deve ser usada; usar a opção relatime é aceitável e ainda oferece uma melhora de desempenho.

Desde o kernel 4.0 existe outra opção relacionada:

  • lazytime reduz escrita para o disco ao manter as mudanças no timestamp do nó-i (tempo de acesso, modificação e criação) somente em memória. Os timestamps no disco são atualizados somente quando (1) o nó-i do arquivo precisa ser atualizado por alguma mudança não relacionada ao timestamp do arquivo, (2) uma sincronização para o disco ocorre, (3) um nó-i não deletado é expulso da memória ou (4) se mais que 24 horas passaram desde a última vez que a cópia em memória foi escrita no disco.
Atenção: Caso ocorra uma falha de sistema, o tempo de acesso e modificação no disco podem estar desatualizadas em até 24 horas.

Note que a opção lazytime funciona em conjunto com as opção *atime acima mencionadas, não como uma alternativa. Que é relatime por padrão, mas pode ser até mesmo strictatime com o mesmo ou menor custo da escrita no disco como a opção relatime sozinha.

Remontar a partição raiz

Se por alguma razão a partição raiz foi inapropriadamente montada como somente leitura, remontar a partição raiz com acesso a leitura-escrita pode ser feito com o seguinte comando:

# mount -o remount,rw /

Automontagem de partição GPT

Em um disco particionado com GPT é possível omitir as partições /, /home, /srv e swap do /etc/fstab ao particionar de acordo com a Discoverable Partitions Specification. Veja systemd#Automontagem de partição GPT.

Veja também