Quais operações de metadados do sistema de arquivos são realmente registradas em diário no ext4 & xfs?


9

Não consigo encontrar uma resposta simples e direta sobre quais operações de metadados do sistema de arquivos são realmente mantidas nos diários do sistema de arquivos ext4 & xfs. Note que estou não perguntando sobre o que POSIX declara ser "atômica". Estou mais preocupado com o subconjunto de operações do sistema de arquivos atômicos que são efetivamente duráveis ​​devido à execução com um diário ativado sem ter que se inclinar para trás e fsync(2)o tempo todo.

Operações que eu tenho bastante certeza de contar:

  • creat(2)
  • link(2)
  • unlink(2)
  • rename(2)
  • mkdir(2)
  • rmdir(2)

Operações das quais não tenho muita certeza:

  • symlink(2)

O symlink(2)caso é o mais preocupante, pois não parece haver uma maneira direta fsync(2)ou de fdatasync(2)blocos de dados subjacentes que armazenam o conteúdo de um link simbólico. Saber que o diário cuida disso para mim seria um alívio.

Respostas:


1

Por motivos de desempenho, o ext4, por padrão, grava apenas os metadados do sistema de arquivos no diário.

Acredito que o XFS também publique todas as transações de metadados, a menos que você tenha alterado o sistema de arquivos.


Sim, mas o que são "metadados" especificamente? Blocos de um diretório: claro. Os próprios inodes: sim. Links simbólicos com um alvo pequeno o suficiente para caber no próprio inode: provavelmente? Links simbólicos onde o alvo se espalha em blocos auxiliares: ??????

link ajudaria
asdmin 30/01

1

Estou mais preocupado com o subconjunto de operações do sistema de arquivos atômico que é efetivamente durável em virtude de rodar com um diário habilitado sem ter que se inclinar para trás e fsync (2) o tempo todo.

Nenhum. Se você quiser ter certeza de que as alterações persistem após uma falha, fsync, period. O registro no diário garante apenas que, no caso de uma falha, nenhuma das operações listadas será concluída pela metade .


Sei que, se me importa, preciso fsync arquivos e diretórios para saber com certeza se os blocos atingiram a ferrugem, mas não há um método que eu possa encontrar que me permita sincronizar os blocos que contêm um link simbólico se derramar o inode. Nesse ponto, meu único recurso é confiar no diário ou nunca mais usar links simbólicos novamente para qualquer coisa que importa.
Rboyer

@naelyn, um fsync () liberará todos os blocos relacionados a um arquivo, incluindo um link simbólico não rápido.
Psusi

1
como faço para abrir um descritor de arquivo apropriado para uso em um fsync que liberaria os blocos de links simbólicos não rápidos?
Rboyer

@naelyn, oh sim ... bom ponto ... talvez seja necessário perguntar sobre isso na lista de discussão linux-fsdevel ... com links físicos Eu acredito que você abre e sincroniza o diretório que o contém, talvez os links simbólicos funcionem da mesma maneira?
Psusi 11/05

0

Você está ciente de que o diário ext4 opera pelo número do bloco e não pela operação, correto? "Metadados" seria outra coisa senão os blocos de dados reais para o inode fornecido, independentemente da operação usada para modificar o bloco em questão.


0

O xfstests parece alegar que o fsync () em um diretório deve persistir com quaisquer links simbólicos que ele contém.

Eu não verifiquei isso. É possível que eu tenha perdido alguma coisa.

O xfstests é usado por muitos desenvolvedores de sistemas de arquivos Linux. Este teste está no diretório "genérico". Isso implica que deve se aplicar a todos os sistemas de arquivos Linux. (Ou pelo menos, todos os sistemas de arquivos do dispositivo de bloco. O teste funciona usando um dispositivo de bloco virtual especial).

https://github.com/kdave/xfstests/blob/master/tests/generic/348

# Test creating a symlink, fsync its parent directory, power fail and mount
# again the filesystem. After these steps the symlink should exist and its
# content must match what we specified when we created it (must not be empty
# or point to something else).
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.