Pela primeira vez vou ousar formatar um disco de 18TB no meu NAS, como btrfs. Portanto, tenho algumas perguntas e receios que gostaria que nossa comunidade respondesse.
O sistema de arquivos estará disponível com smbd nos computadores clientes. Isso perde algum recurso importante do btrfs? (aparentemente o root tem acesso ssh ao NAS para operações no sistema de arquivos btrfs).
Ouvi dizer que é um sistema de arquivos de controle de versão. Git vem à mente. Se eu excluir um arquivo, posso encontrá-lo novamente com 100% de sucesso?
Ouvi dizer que mesmo que o tamanho cumulativo de todos os arquivos seja de 5 TB, o espaço livre de 18 TB acabará em breve devido ao controle de versão e que comandos de root são necessários para liberá-lo (provavelmente uma compactação com exclusão de instantâneos anteriores, se bem entendi ). Isso se aplica? Além dos dados reais nos arquivos NOW, o que mais está ocupando muito espaço? Que informações essa coisa extra contém? É fácil, em algum momento de espaço limitado, excluir completamente qualquer informação que não diga respeito aos dados reais dos arquivos AGORA?
Por padrão, o Btrfs funcionará como qualquer outro sistema de arquivos. Ele possui recursos que um servidor SMB pode querer usar, mas são opcionais.
Por exemplo, com o Samba, você pode querer ativar o módulo 'btrfs' para
vfs objects =
obter suporte para cópia do lado do servidor usando reflinks (ou seja, os clientes podem pedir ao servidor para copiar arquivos remotos de uma pasta para outra sem precisar baixá-los e carregá-los novamente).O Samba também possui os módulos VFS 'snapper' e 'shadow_copy' para integração com snapshots Btrfs feitos pelo Snapper; ele pode torná-los visíveis como "versões anteriores" em clientes Windows (como cópias de sombra de volume em um servidor de arquivos baseado em Windows).
É semelhante em alguns aspectos, mas não exatamente o mesmo.
O Btrfs suporta instantâneos semelhantes aos commits do Git, mas não pretende manter um registro permanente de todas as versões – os instantâneos anteriores sempre podem ser excluídos para recuperar espaço. (Por exemplo, ferramentas como o Snapper podem ser configuradas para manter instantâneos diários por um mês, mas para começar a removê-los à medida que envelhecem.)
Somente se você ainda tiver um instantâneo anterior feito antes de o arquivo ser excluído.
Se não houver mais referências a um arquivo, ele se foi - seu espaço em disco é "liberado" e torna-se elegível para reutilização, assim como em qualquer outro sistema de arquivos.
Isso é semelhante ao comportamento do Git, onde os objetos são coletados como lixo se nada mais os referenciar (por exemplo, quando você altera um commit, o antigo se torna elegível para GC; quando você exclui um branch, todos os commits e arquivos que eram exclusivos daquele ramo são eventualmente GC'd e desaparecem).
Por padrão, não. Versões antigas de arquivos não são mantidas, a menos que você crie um instantâneo deliberadamente .
Embora o Btrfs seja um sistema de arquivos "cópia na gravação" em que cada alteração em um arquivo aloca um novo espaço (em vez de sobrescrever o arquivo no local), isso é muito temporário - assim que a nova gravação é confirmada, a versão antiga desses setores é esquecido e a mesma quantidade de espaço é recuperada (a menos que um instantâneo anterior ainda contenha uma referência a ele).
Portanto, você só ficaria sem espaço se 1) criasse instantâneos frequentes e 2) tivesse arquivos grandes que mudam frequentemente entre os instantâneos (por exemplo, bancos de dados ou VMs altamente ativos ou downloads que permanecem em instantâneos antigos após serem excluídos). Os instantâneos de arquivos inalterados consomem pouco ou nenhum espaço adicional, enquanto as atualizações de arquivos não instantâneos liberam o espaço em disco usado anteriormente assim que a nova versão é armazenada.
Observe que o Btrfs por si só não cria instantâneos automaticamente - você precisa executar
btrfs fi snap
ou configurar deliberadamente ferramentas como Snapper ou Timeshift para que isso aconteça, para que essas ferramentas também se tornem responsáveis por excluir automaticamente instantâneos antigos (de acordo com suas regras definidas) .Dito isto, a natureza "copy-on-write" do Btrfs depende de haver uma certa quantidade de espaço livre para processar até exclusões (já que elas exigem a gravação de novos metadados). Normalmente, o Btrfs mantém uma certa quantidade de espaço livre em reserva para que você ainda possa excluir coisas mesmo com 100% da capacidade e, com o tempo, melhorou em lidar com situações de "sem espaço", mas historicamente era conhecido por sua tendência ficar preso em um estado difícil de consertar depois de atingir o ENOSPC.
Além disso, embora o COW não consuma espaço, ele tem a desvantagem de aumentar a fragmentação de arquivos (e metadados) atualizados com frequência. Em outras palavras, sim, "desfragmentação de disco" existe no Linux.