Já faz um tempo desde que usei o NetApp e, portanto, não posso responder com absoluta autoridade, mas posso fornecer uma explicação para esse tipo de comportamento.
Isso soa como se estivesse operando de maneira muito semelhante a como o LVM do Linux opera. Vamos dizer que você tem um disco físico de 1TB com 100% dele mapeado para um grupo de volumes LVM. Agora você cria um volume lógico de 100 GB nesse grupo de volumes. Você faz algumas coisas, coloca alguns arquivos, etc. Então você cria um instantâneo desse volume lógico. Agora, todos os arquivos (blocos realmente) que são modificados no volume lógico são copiados para que o instantâneo tenha acesso aos dados originais. Mas você também pode tirar esse instantâneo e montá-lo como um volume normal. Se você montá-lo, agora você tem 2 sistemas de arquivos de 100GB montados. Mas os dois sistemas de arquivos compartilham os mesmos dados (blocos de volume físico) até que os dados sejam alterados em um deles.
O que a NetApp provavelmente está fazendo é permitir o acesso a esses instantâneos por meio do diretório /backup/.snapshot
. Quando analisado, cada instantâneo tem o mesmo tamanho do volume original.
Isto pode parecer uma esquisitice, mas é perfeitamente legal (em termos de NFS, kernel, etc). Quando você executa df
, seu sistema faz uma chamada NFS para dizer "qual é o tamanho deste sistema de arquivos", no qual o sistema remoto pode responder da maneira que desejar. Então, quando você faz um du
, seu sistema faz uma chamada NFS para dizer "quão grande é esse arquivo", sobre o qual o sistema remoto pode responder da maneira que quiser.
Você também pode fazer coisas semelhantes (mas não as mesmas) com arquivos esparsos. Dizem que o arquivo ocupa mais espaço do que realmente é.
Atualmente, existem várias maneiras avançadas de economizar espaço em sistemas de arquivos. As questões de "quanto espaço eu tenho" ou "quanto espaço esse arquivo ocupa" nem sempre têm respostas simples. Você pode ter coisas como snapshot, desduplicação, compressão transparente, etc.