6.6. Permitindo o diário de dados
Normalmente, o GFS2 escreve apenas metadados para sua revista. O conteúdo do arquivo é posteriormente escrito em disco pela sincronização periódica do kernel que descarrega os buffers do sistema de arquivos. Uma chamada ao arquivo fsync()
faz com que os dados do arquivo sejam imediatamente gravados em disco. A chamada retorna quando o disco informa que todos os dados estão gravados com segurança.
O diário de dados pode resultar em uma redução do tempo fsync()
para arquivos muito pequenos porque os dados do arquivo são escritos no diário, além dos metadados. Esta vantagem se reduz rapidamente à medida que o tamanho do arquivo aumenta. A escrita em arquivos médios e grandes será muito mais lenta com o diário de dados ligado.
As aplicações que dependem do fsync()
para sincronizar dados de arquivos podem ver um melhor desempenho ao usar o data journaling. O diário de dados pode ser ativado automaticamente para qualquer arquivo GFS2 criado em um diretório sinalizado (e todos os seus subdiretórios). Os arquivos existentes com comprimento zero também podem ter o diário de dados ligado ou desligado.
A ativação do diário de dados em um diretório define o diretório como "herdar jdata", o que indica que todos os arquivos e diretórios criados subseqüentemente nesse diretório são diários. Você pode ativar e desativar o diário de dados em um arquivo com o comando chattr
.
Os comandos a seguir permitem o diário de dados no arquivo /mnt/gfs2/gfs2_dir/newfile
e, em seguida, verificar se a bandeira foi colocada corretamente.
#chattr +j /mnt/gfs2/gfs2_dir/newfile
#lsattr /mnt/gfs2/gfs2_dir
---------j--- /mnt/gfs2/gfs2_dir/newfile
Os seguintes comandos desativam o diário de dados no arquivo /mnt/gfs2/gfs2_dir/newfile
e depois verificam se a bandeira foi colocada corretamente.
#chattr -j /mnt/gfs2/gfs2_dir/newfile
#lsattr /mnt/gfs2/gfs2_dir
------------- /mnt/gfs2/gfs2_dir/newfile
Você também pode usar o comando chattr
para colocar a bandeira j
em um diretório. Quando você configura esta bandeira para um diretório, todos os arquivos e diretórios criados subseqüentemente nesse diretório são registrados no diário. O conjunto de comandos a seguir coloca a bandeira j
no diretório gfs2_dir
e, em seguida, verifica se a bandeira foi colocada corretamente. Depois disso, os comandos criam um novo arquivo chamado newfile
no diretório /mnt/gfs2/gfs2_dir
e então verificam se o sinalizador j
foi definido para o arquivo. Como a bandeira j
está configurada para o diretório, então newfile
também deve ter o journaling habilitado.
#chattr -j /mnt/gfs2/gfs2_dir
#lsattr /mnt/gfs2
---------j--- /mnt/gfs2/gfs2_dir #touch /mnt/gfs2/gfs2_dir/newfile
#lsattr /mnt/gfs2/gfs2_dir
---------j--- /mnt/gfs2/gfs2_dir/newfile