Guia de administração do ZFS Oracle Solaris

Contabilidade de espaço em disco do ZFS

O ZFS tem base no conceito de armazenamento por conjunto. Ao contrário dos típicos sistemas de arquivos, que são mapeados para armazenamentos físicos, todos os sistemas de arquivos ZFS de um pool compartilham o armazenamento disponível no pool. Desse modo, o espaço disponível relatado por utilitários como o df pode alterar mesmo quando o sistema de arquivos está inativo, já que outros sistemas de arquivos do conjunto consomem e liberam espaço.

Observe que o tamanho máximo do sistema de arquivos pode ser limitado pelo uso de cotas. Para obter mais informações sobre as cotas, consulte Definindo cotas em sistemas de arquivos ZFS. Uma quantidade especificada de espaço em disco pode ser garantida para um sistema de arquivos utilizando as reservas. Para obter mais informações sobre as reservas, consulte Definindo reservas nos sistemas de arquivos ZFS. Esse modelo é semelhante ao modelo de NFS, no qual vários diretórios são montados a partir do mesmo sistema de arquivos (considerar /home).

Todos os metadados no ZFS estão alocados dinamicamente. A maioria dos outros sistemas de arquivos pré-alocam muitos de seus metadados. Como resultado, na hora da criação do sistema de arquivos, há um custo imediato de espaço para esses metadados. Esse comportamento denota também que o número total de arquivos suportado pelos sistemas de arquivos é predeterminado. Por alocar seus metadados conforme precisa deles, o ZFS não requer quantidade de espaço inicial, e o número de arquivos está limitado somente pelo espaço em disco disponível. A saída do comando df -g não deve ser interpretada da mesma forma para o ZFS e para outros sistemas de arquivos. Os arquivos totais relatados são somente uma estimativa baseada na quantidade de armazenamento disponível no pool.

O ZFS é um sistema de arquivos transacional. A maioria das modificações do sistema de arquivos é incorporada dentro de grupos transacionais e é enviada ao disco assincronicamente. Antes de estarem comprometidas com o disco, essas modificações são denominadas alterações pendentes. A quantidade de espaço utilizado, disponível e referenciada pelo arquivo ou sistema de arquivos não considera as alterações pendentes. As alterações pendentes são consideradas em geral depois de alguns segundos. Mesmo comprometendo uma alteração no disco utilizando fsync(3c) ou O_SYNC, isso não garante necessariamente que as informações sobre o uso do espaço em disco sejam atualizadas imediatamente.

Para detalhes adicionais sobre o consumo de espaço em disco do ZFS reportado pelos comandos du e df, consulte:

http://hub.opensolaris.org/bin/view/Community+Group+zfs/faq/#whydusize

Comportamento por espaço excedido

Os instantâneos de sistemas de arquivos são baratos e fáceis de criar no ZFS. Os instantâneos são comuns na maioria dos ambientes do ZFS. Para obter informações sobre os instantâneos do ZFS, consulte o Capítulo 7Trabalhando com instantâneos e clones do ZFS do Oracle Solaris.

A presença de instantâneos pode provocar alguns comportamentos inesperados ao tentar liberar espaço em disco. Normalmente, com as permissões apropriadas, é possível remover um arquivo de todo um sistema de arquivos, e esta ação resulta em mais espaço em disco disponível no sistema de arquivos. No entanto, se o arquivo a ser removido existir no instantâneo do sistema de arquivos, então nenhum espaço em disco é liberado com a exclusão do arquivo. Os blocos usados pelo arquivo continuam a ser referenciados a partir do instantâneo.

Como resultado, a exclusão do arquivo pode consumir mais espaço em disco, pois uma nova versão do diretório precisa ser criada para refletir o novo estado do espaço de nome. Este comportamento significa que é possível receber um erro ENOSPC ou EDQUOT inesperado ao tentar remover o arquivo.