Por que todos os meus diretórios de instantâneos do ZFS estão vazios?

13

Estou executando um Oracle 11 box como um dispositivo de armazenamento ZFS e tirando instantâneos regulares dos sistemas de arquivos ZFS via cron.

No passado, eu sei que se eu quisesse pegar um arquivo específico de uma captura instantânea, uma cópia somente leitura era mantida .zfs/snapshot/{name}/e eu poderia navegar até lá e retirar o arquivo. Isso está documentado no site da Oracle .

No entanto, eu fiz isso outro dia e notei que os diretórios ZFS nos diretórios de instantâneos estão todos vazios. zfs list -t snapshotmostra corretamente a lista de capturas instantâneas que devem estar presentes e .zfs/snapshotscontém corretamente um diretório para cada captura instantânea, e em cada captura instantânea há um diretório presente para cada sistema de arquivos ZFS. No entanto, esses diretórios parecem estar vazios.

Acabei de testar uma restauração tocando em um arquivo em um compartilhamento pouco usado e revertendo para o último instantâneo por hora, e isso parece ter funcionado bem. Portanto, a funcionalidade de reversão está lá.

O Oracle mudou a maneira como os instantâneos são feitos? Ou há algo seriamente errado aqui?

crescer
fonte
E também github.com/zfsonlinux/zfs/issues/3030 . Embora você use a árvore do Oracle ZFS, eles provavelmente foram desviados o suficiente para não serem mais diretamente comparáveis.
Perseids

Respostas:

5

Se você possui um sistema de arquivos ZFS descendente, por exemplo tank/newfs. Então você não vai encontrar arquivos em tank/newfsna /tank/.zfs/mysnapshotpasta, apenas o ponto de montagem newfsvai existir. Se você quiser acessar os arquivos, precisará procurá-los na /tank/newfs/.zfs/mysnapshotpasta.

Olav Grønås Gjerde
fonte
0

Os instantâneos listados em .zfs/snapshot/são montados automaticamente sob demanda, à medida que estão sendo pesquisados, e são desmontados automaticamente quando não estão mais em uso.

Fazer um simples lsem um diretório aparentemente não é suficiente para ser considerado 'demanda'. Você precisará cdentrar no diretório em questão e ENTÃO emitir o lscomando.

Você também pode precisar definir snapdir=visiblepara o sistema de arquivos.

Daniel
fonte