Capítulo 7. Sistemas de Arquivos

Leia este capítulo para obter uma visão geral dos sistemas de arquivos suportados para uso com o Red Hat Enterprise Linux, e como otimizar seus desempenhos.

7.1. Considerações de ajustes para Sistemas de Arquivo

Existem diversas considerações de ajustes comuns a todos os sistemas de arquivo: formatar e montar opções selecionadas em seu sistema, e ações disponíveis para aplicativos que podem aprimorar seu desempenho em um sistema específico.

7.1.1. Formatando Opções

Tamanho de bloco de sistema de arquivo

O tamanho do bloco pode ser selecionado no tempo mkfs. A classe de tamanhos válidos depende do sistema: o limite acima é o tamanho máximo da página do sistema host, equanto o limite mais baixo depende do sistema de arquivo utilizado. O tamanho do bloco padrão é adequado para a maioria dos casos de uso.

Se você espera criar muitos arquivos menores do que o tamanho do bloco padrão, você pode definir o tamanho do bloco menor para minimizar a quantia de espaço disperdiçada no disco. Note que no entanto, ao configurar um tamanho de bloco menor você poderá limitar o tamanho máximo do sistema de arquivo, e pode causar cabeçalho de tempo de execução adicional, especialmente para arquivos maiores do que o tamanho de bloco selecionado.
Geometria de Sistema de Arquivo

Se seu sistema utiliza armazenamento em faixas tal qual o RAID, você poderá aprimorar o desempenho, alinhando os dados e metadados com a geometria de armazenamento adjacente no tempo mkfs. Para o RAID software (LVM ou MD) e alguns armazenamentos de hardware corporativos, esta informação é enfileirada e definida automaticamente, mas em muitos casos o administrador precisa especificar esta geometria manualmente com o mkfs na linha de comando.

Consulte o Storage Administration Guide para mais informações sobre criar e manter estes sistemas de arquivo.
Diários externos

Cargas de trabalho de metadados intensivos significa que a seção de log de um sistema de arquivo de agendamento (como o ext4 e XFS) é atualizado muito frequentemente. Para minimizar o tempo de busca do sistema de arquivos do diário, você pode colocar o diário no armazenamento dedicado. Note, no entanto, que a colocação do diário em armazenamento externo é mais lenta que o sistema de arquivos primário possa anular qualquer vantagem potencial associado com o uso de armazenamento externo.

Atenção

Certifique-se de que o diário externo é confiável. A perda de um dispositivo de diário externo causará danos no sistema de arquivo.
Diários externos são criados no tempo mkfs, com os dispositivos de diário sendo especificados no tempo de montagem. Consulte as páginas man mke2fs(8), mkfs.xfs(8), e mount(8) para maiores informações.

7.1.2. Opções de montagem

Barreiras

Uma barreira de gravação é um mecanismo do kernel usado para assegurar que os metadados do sistema de arquivos foi gravado corretamente e ordenado em armazenamento persistente, mesmo quando os dispositivos de armazenamento com gravações de caches voláteis perdem o poder. Os sistemas de arquivos com barreiras de gravação ativadas também garantem que todos os dados transmitidos via fsync () persistem através de uma queda de energia. O Red Hat Enterprise Linux permite barreiras por padrão em todos os hardwares que as suportam.

No entanto, permitir que as barreiras de gravação diminui significativamente algumas aplicações, especificamente, aplicativos que usam fsync () pesadamente, ou que cria e apaga muitos arquivos pequenos. Para o armazenamento, sem o cache de gravação volátil, ou no caso raro onde as inconsistências do sistema de arquivos e perda de dados após uma perda de potência é aceitável, barreiras podem ser desativadas usando a opção de montagem nobarrier. Para mais informações, consulte o Guia de Administração de Armazenamento .
Tempo de Acesso (noatime)

HIstóricamente, quando um arquivo é lido, o tempo de acesso (atime) para aquele arquivo deve ser atualizado no metadado inode, que involve E/S de gravações adicionais. Se os metadados forem precisos atime não forem necessários, monte o sistema de arquivo com a opção noatime para eliminar estas atualizações de metadados. Na maioria dos casos, no entanto, o atime não é um cabeçalho grande devido ao comportamento do atime relativo padrão (ou relatime) no kernel do Red Hat Enterprise Linux 6. O comportamente do relatime atualiza somente o atime se o atime for mais vejo do que o tempo de modificação (mtime) ou tempo de mudança de status (ctime).

Nota

Habilitar a opção noatime também habilita o comportamento do nodiratime; não há necessidade de definir ambos noatimee nodiratime.
Aumento de suporte do read-ahead (leitura antecipada)

O Read-ahead acelera acesso de arquivo buscando antecipadamente dados e carregando-os no cache de página para que possa estar disponível antes na memória ao invés de vir do disco. Algumas cargas de trabalho, tais como aquelas que envolvem transmissão contínua pesada de E/S sequencial, se beneficiam de valores altos de read-ahead.

A ferramenta tuned e o uso da faixa de LVM eleva o valor da leitura antecipada, mas isso nem sempre é suficiente para algumas cargas de trabalho. Além disso, o Red Hat Enterprise Linux nem sempre é capaz de definir um valor de leitura antecipada correto baseado no que ele pode detectar do seu sistema de arquivos. Por exemplo, se uma matriz de armazenamento poderosa se apresenta para o Red Hat Enterprise Linux como um único LUN potente, o sistema operacional não irá tratá-lo como uma matriz LUN potente, e, portanto por padrão, não fará pleno uso das vantagens de leitura antecipada disponíveis para o armazenamento.
Use o comando blockdev para visualizar e editar o valor read-ahead. Para visualizar o valor read-ahead atual para um dispositivo de bloco particular, execute:
# blockdev -getra device
Para modificar o valor read-ahead para aquele dispositivo de bloco, execute o comando a seguir. N representa o número de setores de 512 bites.
# blockdev -setra N device
Note que o valor selecionado com o comando blockdev não persistirá entre as inicializações. Nós recomendados criar um nível de execução do script init.d para definir este valor durante a inicialização.

7.1.3. Manutenção de sistema de arquivo.

Descartar blocos não utilizados

Operações de descarte em Lote e online são recursos de sistemas de arquivos montados que descartam blocos que não estão sendo utilizados pelo sistema de arquivo. Estas operações são úteis para ambos drives de estado sólido e armazenamento finalmente provisionado.

Operações de Discard em Lote são executadas pelo usuário com o comando fstrim. Este comando descarta todos os blocos não usados em um sistema de arquivo que coincida com os critérios de usuário. Ambos os tipos de operação são suportados para uso com o XFS e os sistemas de arquivo ext4 no Red Hat Enterprise Linux 6.2 e posteriores, desde que o dispositivo de bloco adjacente ao sistema de arquivo suporte as operações de discard físicas. As operações de Discard Físico são suportadas se o valor de /sys/block/device/queue/discard_max_bytes não for zero.
O Operações de Discard online são especificadas no tempo de montagem com a opção -o discard (tanto no /etc/fstabquanto como parte do comando mount), e executados em tempo real sem a intervenção do usuário. As operações de discard somente descartam blocos que esteja transitando de um usado para um livre. As operações discard são suportadas nos sistemas de arquivo ext4 no Red Hat Enterprise Linux 6.2 e posteriores, e nos sistemas de arquivo XFS no Red Hat Enterprise Linux 6.4 e posteriores.
A Red Hat recomenda as operações de discard em lote a não ser que a carga de trabalho do sistema seja tanta que o discard em lote não seja possível, ou se as operações de discard online forem necessárias para manter o desempenho.

7.1.4. Considerações de Aplicativos

Pré-alocação

Os sistemas de arquivo ext4, XFS, e GFS2 apoiam a pré-alocação eficiente do espaço através da chamada glibc fallocate (2). Nos casos em que os arquivos possam tornar-se muito fragmentados devido aos padrões de gravação, levando a má performance de leitura, a pré-alocação de espaço pode ser uma técnica útil. Pré-alocação marca de espaço em disco como se tivesse sido alocado para um arquivo, sem gravar nenhum dado naquele espaço. Até que os dados reais sejam gravados em um bloco pré-alocado, as operações de leitura retornarão como zeros.