Найпростіший спосіб
btrfs-zero-log /dev/sda5
Ви отримуєте цю проблему, оскільки транзакція (запис або видалення) застрягла в журналі журналу і диск не відповідає їй.
Як це працює:
Отже, коли дані записуються першими, вони записуються в журнал, потім на диск (або в той же час, але журнал просто зберігає метадані про майбутнє записування - не впевнений ... потрібні додаткові дослідження в цій частині) ...
У всякому разі , якщо відключити систему в середині цього запис / видалення або зробити що - то hickups системи (демонтувати USB , який тримає ваш Btrfs точки монтування), а потім , коли він повертається , що кріплення не будуть працювати вона НЕ буде виконана ( dmesg і btrfsck буде покажіть вам помилки більш докладно) ...
Дивлячись на dmesg, ви побачите ті самі транзитні повідомлення.
Ви побачите щось подібне:
parent transid verify failed on 109973766144 wanted 1823 found 1821
Це означає, що btrfs хотів передати 1826 р. (Це було в журналі), але на диску він побачив 1821 р. Отже, диск був за 2 транзакції від синхронізації з журналом. Я особисто ризикнув би тут brtfs-zero-log тільки тому, що це лише 2 транзакції. Але щоб бути на 100% безпечним, якщо це ваші єдині дані (до речі, якщо у вас є критичні дані, ви НІКОЛИ НІКОЛИ не матимете лише 1 копії, завжди майте копію / резервну копію в безпечному іншому місці - звинувачуйте творців btrfs не хочу Виправдайте проти власного безвідповідальності не мати резервної копії - btrfs не є резервним рішенням, його файлова система - ніщо не є справжнім рішенням резервного копіювання, крім того, щоб мати копію іншого місця, де - навіть парність чи дзеркальні диски, справжня резервна копія - це сидячи десь під землею в Альпах, поки його активна копія знаходиться у вашому офісі в Техасі)
parent transid verify failed on 31302336512 wanted 62455 found 62456
Тут журнал хоче 62455, але диск випереджає 62456, тож у вашому випадку я просто очистить журнал. Журнал цього разу не оновлювався. Знову я сказав вам, що це безпечна річ, якщо це ваші єдині дані та її мегакритичний (ганьба на вас), і я б зробив нижчезазначені операції, щоб спочатку бути в безпеці.
Запуск btrfsck / dev / sda5 (який, до речі, просто перевіряє читання таким чином, що він повністю безпечний, його єдині варіанти btrfsck, про які вам доведеться турбуватися), також покажуть вам ці повідомлення.
Але будьте обережні, якщо ці дані є критичними, я б спершу зробив це (як казали інші представники)
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
Потім cp або rsync всі ваші файли перейдіть до безпечного місця, тоді, коли безпечно робити btrfs-zero-log, якщо його успішна операція ви просто витратили багато часу на резервну копію вашої системи (але якщо її не вдалося, ви просто зберегли свій дупа)
Тоді якщо кріплення не вдалося відновити btrfs (скидання системи, як я розумію, її поновлювана операція, однак вона постійно запитує Y або y, тому слідкуйте за результатами)
btrfs restore /dev/sda5 /USB
Тоді, коли безпечно (коли буде відновлено btrfs) зробіть btrfs-zero-log, якщо його успішна операція ви просто витрачала багато часу на резервну копію вашої системи (але якщо її не вдалося, ви просто зберегли свою дупу)
Ви можете запустити екран першим
screen /bin/bash
btrfs restore /dev/sda5 /USB
ЕКРАННА БІЛОТКА
Щоб від'єднатись (команда все одно буде запущена): CONTROL-a тоді введіть ": detach" без лапок, а потім натисніть клавішу ENTER
Інший спосіб від'єднати: Потім закрийте шпаклівку або ваш термінал, і він від'єднається (команда / відновлення все ще буде виконуватися).
Щоб перевірити його, просто поверніться до екрана:
screen -x
екран -x буде приєднаний до сеансів, навіть якщо від'єднаний, і на відміну від -h каже, він буде додаватись, навіть якщо його вже додано)
Якщо у вас кілька екранів, екран -x скаже, що вам потрібно бути більш конкретними, щоб додати сеанс:
screen -ls
Я перераховую всі сеанси, легко це запам'ятати.
щоб побачити PID, ви також можете зробити це:
ps aux | grep screen
Виявивши PID, запустіть екран так:
screen -x PID
Це буде приєднано до конкретного сеансу. Ви можете мати кілька сеансів / puttys, прикріплених до одного екрану (вони будуть виводити один і той же текст, ви можете вводити команди в одній, а вони відображатимуться в іншій шпаклівці)
nospace_cache
?