Operação de leitura no sistema de arquivos

0

Eu tenho uma pergunta muito idiota. Quando uma operação de leitura é feita, estou escrevendo também? Estou pensando em escrever na área de periódicos porque meus metadados são alterados, como o mac time. Meu pensamento está errado? Quero concluir se uma barreira de gravação ativada em meu sistema de arquivos ext4 não pode fazer uma diferença significativa no desempenho das operações de leitura.

    
por eightShirt 29.06.2016 / 08:04

2 respostas

1

Você está certo, uma operação de gravação é frequentemente associada a uma leitura. Existem algumas diferenças no entanto. Não há gravações se a atualização do tempo de acesso estiver desativada e, obviamente, não será gravada se o sistema de arquivos for somente leitura. Além disso, essas gravações são assíncronas sendo armazenadas em buffer na memória e, na verdade, são descarregadas no disco periodicamente, reduzindo o impacto no desempenho.

Dependendo da carga de trabalho, você pode aumentar o desempenho de suas E / Ss usando a opção noatime mount ou a relatime , sendo esta última a padrão com os kernels modernos.

    
por 29.06.2016 / 08:27
2

Por padrão, o Linux usa a opção de montagem "relatime" para todos os sistemas de arquivos, que atualiza apenas o campo atime se ele for mais de 24 horas obsoleto ou se atime < mtime (uma vez que alguns leitores de e-mail usam isso para determinar se três é um e-mail não lido em um arquivo / var / mail / XXXX). Isso reduz significativamente o número de gravações de metadados. Há também a opção de montagem "noatime", que desativa completamente as gravações. Os campos relatime e noatime quebram tecnicamente a conformidade com POSIX, embora a maioria das pessoas não se importe com a conformidade estrita do POSIX atualmente.

No Linux 4.2 e nos kernels mais recentes, há também a opção de montagem "lazytime", que atualizará todo o campo de campos de registro de data e hora na memória (para que seja sempre preciso) enquanto o sistema estiver em execução. Os timestamps no disco são atualizados (a) quando o sistema de arquivos é desmontado, (b) se os timestamps são mais que 24 horas obsoletos, (c) se algum outro campo inode nesse inode precisa ser atualizado --- por exemplo, i_size , i_blocks, i_mode, i_uid, etc ----, ou (d) (apenas uma otimização ext4), há um inode adjacente no mesmo bloco de tabela de inode que está sendo atualizado no disco.

Portanto, a vantagem do preguiçoso é que você recupera sua conformidade POSIX e também suprime as atualizações mtime para não alocar gravações aleatórias em um arquivo (por exemplo, no caso de um arquivo de espaço de tabela do banco de dados corporativo, como Oracle ou DB2 pode usar). No entanto, com o tempo de inatividade, é possível ter um valor de registro de data e hora enquanto o sistema está em execução e, se você falhar (ao contrário de desmontar corretamente o sistema de arquivos), obterá um valor de registro de data e hora diferente após a reinicialização. Isso é permitido pelo POSIX, que apenas garante a consistência após um fsync (2) ou um umount (2), mas é possível que isso possa surpreender alguns aplicativos.

    
por 29.06.2016 / 15:59