4.8. Diário de Dados
Geralmente, o GFS2 edita somente os metadados em seu diário. O conteúdo do arquivo é subsequentemente editado no disco pela sincronização periódica do kernel, a qual libera buffers de sistema de arquivo. Uma chamada
fsync()
em um arquivo, faz com que os dados do arquivo sejam editados no disco imediatamente. A chamada retorna quando o disco informa que todos os dados estão editados de maneira segura.
O diário de dados pode resultar em uma redução de tempo do
fsync()
, especialmente para arquivos pequenos, pois os dados do arquivo são editados no diário além dos metadados. Esta vantagem é inversamente proporcional ao tamanho do arquivo, sendo que a edição em arquivos médios e grandes levará mais tempo com o diário de dados acionado.
Os aplicativos que contam com o
fsync()
para sincronizar os dados do arquivo, podem melhorar o desempenho usando o diário de dados. 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 possuem diário de dados ativados ou desativados.
A ativação do diário de dados num diretório modifica o diretório para "inherit jdata", que indica que todos os arquivos e diretórios criados subsequentemente neste diretório passarão pelo diário. Você pode ativar e desativar o diário de dados num arquivo com o comando
chattr
.
Os comandos a seguir ativam o diário de dados no arquivo
/mnt/gfs2/gfs2_dir/newfile
e depois verifica se o sinalizador foi ajustado adequadamente.
[root@roth-01 ~]#chattr +j /mnt/gfs2/gfs2_dir/newfile
[root@roth-01 ~]#lsattr /mnt/gfs2/gfs2_dir
---------j--- /mnt/gfs2/gfs2_dir/newfile
Os comandos a seguir desativam o diário de dados no arquivo
/mnt/gfs2/gfs2_dir/newfile
e depois verifica se o sinalizador foi ajustado adequadamente.
[root@roth-01 ~]#chattr -j /mnt/gfs2/gfs2_dir/newfile
[root@roth-01 ~]#lsattr /mnt/gfs2/gfs2_dir
------------- /mnt/gfs2/gfs2_dir/newfile
Você pode usar o comando
chattr
para ajustar o sinalizador num diretório. Quando isto acontecer, todos os arquivos e diretórios criados subsequentemente naquele diretório passarão pelo diário. O seguinte conjunto de comandos ajusta o sinalizador j
no diretório gfs2_dir
e verifica se o sinalizador foi ajustado corretamente. Em seguida, os comandos criam um novo arquivo chamado newfile
no diretório /mnt/gfs2/gfs2_dir
e verifica se o sinalizador foi ajustado para o arquivo. Como o sinalizador jdata
é estabelecido para o diretório, então o newfile
também deve ter o diário ativado.
[root@roth-01 ~]#chattr -j /mnt/gfs2/gfs2_dir
[root@roth-01 ~]#lsattr /mnt/gfs2
---------j--- /mnt/gfs2/gfs2_dir [root@roth-01 ~]#touch /mnt/gfs2/gfs2_dir/newfile
[root@roth-01 ~]#lsattr /mnt/gfs2/gfs2_dir
---------j--- /mnt/gfs2/gfs2_dir/newfile