Por que o ZFS é armazenado em uma estrutura de árvore?

1

Aparentemente, no ZFS (sistema de arquivos), existe um uberblock que aponta para a raiz de uma árvore zpool. Alguém sabe por que essa árvore torna as coisas mais eficientes / confiáveis e onde a própria árvore é armazenada?

    
por Kaitlyn Mcmordie 27.10.2011 / 09:08

1 resposta

4

O objetivo da árvore é melhorar a integridade dos dados, em parte, armazenando somas de verificação fora dos blocos de dados que os checksums protegem . A hierarquia inteira do sistema de arquivos forma uma árvore hash de autorrecuperação ou uma árvore merkle. Aqui está uma descrição simplificada Eu fiz anteriormente :

ZFS data integrity example

Going from left to right, directory 1 contains a pointer to file A, file A's checksum, and some other meta-data. But dir 1 is just another data block, which is pointed to by the uberblock. The uberblock therefore contains a checksum of dir 1, and so on. This does mean that every write to a file involves recalculating several checksums, all the way back to the root node (the uberblock). But ZFS's copy-on-write policy and transactional nature mitigate the performance penalty. Furthermore, ZFS is designed to take advantage of Moore's law: CPU cycles are cheap, but hard drives are slow.

O ZFS também usa blocos de ditto para replicar as partes mais importantes da árvore (ou seja, as partes mais próximas de a raiz), para proteger ainda mais contra a corrupção.

    
por 27.10.2011 / 20:39