Caminho mais fácil
btrfs-zero-log /dev/sda5
Você está recebendo esse problema porque uma transação (gravação ou exclusão) está presa no log do diário e o disco não corresponde.
Como funciona:
Portanto, quando os dados são gravados primeiro, eles são gravados no diário e depois no disco (ou ao mesmo tempo, mas o diário salva apenas metadados sobre a próxima gravação - não tenho certeza ... preciso de mais pesquisas nessa parte) ...
De qualquer forma, se você desligar o sistema no meio desta gravação / exclusão ou fazer algo hickups o sistema (desmontar o USB que contém seus btrfs ponto de montagem), então quando ele retorna que montar não vai funcionar ele irá falhar ( dmesg e btrfsck vontade mostrar os erros com mais detalhes) ...
Olhando para o dmesg, você verá essas mesmas mensagens transitórias.
Você verá algo assim:
parent transid verify failed on 109973766144 wanted 1823 found 1821
Isso significa que os btrfs queriam o transif 1826 (que estava no diário), mas no disco viu 1821. Portanto, o disco estava a duas transações de estar em sincronia com o diário. Pessoalmente, arriscaria um log de brtfs-zero aqui apenas porque são apenas duas transações. Mas, para ser 100% seguro, se esses são seus únicos dados (a propósito, se você tiver dados críticos, NUNCA NUNCA terá apenas uma cópia, sempre tenha uma cópia / backup em outro local seguro - culpar os criadores de btrfs não justificar contra a falta de responsabilidade das pessoas de não ter um backup - o btrfs não é uma solução de backup, é um sistema de arquivos - nada é uma solução de backup verdadeira além de ter uma cópia dela em outro lugar onde - nem mesmo paridade ou unidades espelhadas, um backup verdadeiro é sentado em algum lugar subterrâneo nos Alpes enquanto sua cópia ativa estiver em seu escritório no Texas)
parent transid verify failed on 31302336512 wanted 62455 found 62456
Aqui, o diário está querendo 62455, mas o disco está à frente em 62456, portanto, no seu caso, eu simplesmente apagaria o diário. O diário não atualizou desta vez. Mais uma vez, eu lhe disse sobre ser uma coisa segura, se são seus únicos dados e sua mega crítica (que vergonha), e eu faria as operações abaixo primeiro para ser seguro.
A execução de um btrfsck / dev / sda5 (que, a propósito, faz uma verificação somente leitura, para que seja completamente seguro, são as únicas opções de btrfsck com as quais você precisa se preocupar) também mostrará essas mensagens.
Mas cuidado, se esses dados forem críticos, primeiro o faria (como disseram os outros senhores)
mount -t btrfs -o rootflags=recovery,nospace_cache /dev/sda3 /mnt/sda3
mount -t btrfs -o rootflags=recovery,nospace_cache,clear_cache /dev/sda3 /mnt/sda3
mount -t btrfs -o recovery,nospace_cache,nospace_cache /dev/sda3 /mnt/sda3
Em seguida, cp ou rsync todos os seus arquivos para um local seguro; quando for seguro, faça o btrfs-zero-log; se for uma operação bem-sucedida, você gastará muito tempo fazendo backup do sistema (mas, se não for bem-sucedida, você apenas salvou o arquivo). bunda)
Então, se as montagens falharem, faça uma restauração btrfs (despejo do sistema, como eu entendo que é uma operação retomada, no entanto, ele continua pedindo Y ou y de vez em quando para assistir a saída)
btrfs restore /dev/sda5 /USB
Então, quando estiver seguro (quando a restauração do btrfs for concluída), faça o btrfs-zero-log, se for uma operação bem-sucedida, você gastará muito tempo fazendo backup do seu sistema (mas se não for bem-sucedida, você apenas salvou sua bunda)
Você pode executar a tela primeiro
screen /bin/bash
btrfs restore /dev/sda5 /USB
NOTA LATERAL DA TELA
Para desanexar (o comando ainda será executado): CONTROL-a, digite ": desanexar" sem as aspas e pressione ENTER
Outra maneira de desanexar: Em seguida, feche a massa ou o seu terminal e ele será desconectado (o comando / restauração ainda será executado).
Para verificar, basta voltar a tela:
screen -x
a tela -x será anexada às sessões, mesmo se desanexada, e, ao contrário de -h diz, será anexada mesmo que já esteja anexada)
Se você tiver várias telas, a tela -x indicará que você precisa ser mais específico para anexar à sessão:
screen -ls
É para listar todas as sessões, é fácil lembrar disso.
para ver o PID, você também pode fazer isso:
ps aux | grep screen
Depois de descobrir seu PID, execute a tela assim:
screen -x PID
Isso será anexado a uma sessão específica. Você pode ter várias sessões / massas anexadas à mesma tela (elas produzirão o mesmo texto, você pode digitar comandos em uma e serão espelhadas na outra massa)
nospace_cache
?