Por que renomear no btrfs é tão lento?

Esses vídeos talvez expliquem melhor:

Olá!

Não sei se você se expressou bem, mas no título você diz renomear, mas o comando que usou (shred) é para sobrescrever e/ou remover.

Poderia confirmar a sua solicitação?

sim, a princípio o shred é pra isso, porém na última etapa ele renomeia o arquivo com vários zeros, vai diminuindo até chegar em 1 zero e deleta o arquivo
essa parte é que eu quero entender do porque ser tão lento
aaa e nessa mesma parte ele fala “000000000 renomeado para 00000000”

Poderia explicar qual é o objetivo de usar esse comando para renomear? Acho que seria mais interessante usar um comando dedicado para isso, por exemplo o mv como: mv antigo.txt novo.txt. Você pode comparar o desempenho de um comando para o outro, se houver diferença, aí o problema está no uso de um comando que não simplesmente renomeia.

Fora da questão de renomear, o Btrfs pode apresentar diferenças em desempenho se comparado ao EXT4, deviado a diferença no funcionamento do sistema de arquivos, não sei se esse é o caso, você teria que comparar esse comando no mesmo dispositivo usando os dois sistemas de arquivo, caso haja diferença, aí sim é culpa do sistema de arquivos.

não sei, eu só passo -u e ele faz essa renomeação
no man tá isso:
-u , –remove
truncar e remover o arquivo após a substituição

quanto a parte de renomear, vc tem algum shellscript pra fazer isso? um loopzinho que seja

Adicional, esse renomear não que dizer que você está mudando o nome do arquivo para algo diferente, a fim de armazenamento, mas sim para eliminar os rastros dele, é uma tarefa para remover os dados.

Você passou os parâmentros -f para forçar a alteração, -u para remover, -v para ver o que acontece durante a execução e -z que sim renomeia adicionando zeros no final, para eliminar os rastros.

Você pode encontrar mais detalhes no manual da ferramenta.

Se quiser somente renomear, é só usar o comando que citei acima, mv NomeAntigo.txt NomeNovo.txt. se quiser fazer isso em massa, aí é só pôr em um loop.

eu não quero renomear, eu quero entender o porque o shred renomeia tão devagar no btrfs

Você tem base de comparação com o Ext4? quanto de diferença ocorre?

Como comente anteriormente, o Btrfs é um sistema de arquivos diferente, com objetivos diferentes. Um dos motivos pode ser as tarefas que os sistema de arquivo precisa realizar além do que o próprio comando executa, uma destas tarefas pode ser o data scrubbing, ou outras tarefas relacionadas a integridade de dados do disco.

Eu recomendo fazer a leitura da documentação do Btrfs para entender como ele funciona, ou aguardar alguém que tenha esse conhecimento e te resuma essa parte, pois eu não tenho tal conhecimento deste sistema de arquivos.

1 Curtida

O Btrfs é um filesystem Copy-On-write primeiro ele copia depois ele sobrescreve.
Seja lá o que você quer fazer o Btrfs faz isso para você sem precisar dessa gambiarra.
O Btrfs esta fazendo a copia antes de sobrescrever e ai o software shred esta repetindo o que o Btrfs fez.
É esta fazendo 2x a mesma coisa.
Mais lendo o shred diz que é para dificultar a recuperação dos dados o uso dele.
Já o Btrfs faz isso para que seja mais fácil a recuperação.
O Btrfs foi o primeiro FS a ser B-Tree e Copy-On-Write.
Antes dele ou o FS era B-Tree ou ele era Copy-On-Write.
Ext4 não copia antes de sobrescrever.
Não pensa que Copy-On-Write é uma coisa ruim pelo contrario, veja o que diz a wikipedia do Btrfs em engles "Mostly self-healing in some configurations due to the nature of copy-on-write".
Ele consegue se auto recuperar de danos e perda de dados durante a montagem sem uso de fsck.

1 Curtida

sim, dessa parte eu sei
tem um pequeno problema
eu desativei o copy on write

Já tento com o COW ativo?
Vai precisar reiniciar.
Você usa snapshot?
Desativar o space_cache?
Olha o que eu achei:
On very large filesystems (many terabytes) and certain workloads, the performance of the *v1* space cache may degrade drastically.
https://btrfs.wiki.kernel.org/index.php/Manpage/btrfs(5)
Em sistemas de arquivos muito grandes (muitos terabytes) e certas cargas de trabalho, o desempenho do cache de espaço v1 pode degradar drasticamente.