Cara termudah
btrfs-zero-log /dev/sda5
Anda mendapatkan masalah itu karena transaksi (tulis atau hapus) macet di jurnal log dan disk tidak cocok dengan itu.
Bagaimana itu bekerja:
Jadi ketika data ditulis pertama, maka ditulis ke jurnal kemudian ke disk (atau pada saat yang sama, tetapi jurnal hanya menyimpan metadata tentang penulisan yang akan datang - tidak yakin ... perlu penelitian lebih lanjut pada bagian itu) ...
Bagaimanapun jika Anda mematikan sistem di tengah-tengah ini menulis / menghapus atau melakukan sesuatu hickup sistem (turun USB yang memegang titik mount btrfs Anda), maka ketika itu mengembalikan bahwa mount tidak akan berfungsi itu akan gagal ( dmesg dan btrfsck akan menunjukkan kesalahan lebih detail) ...
Melihat dmesg Anda akan melihat pesan-pesan transid yang sama.
Anda akan melihat sesuatu seperti ini:
parent transid verify failed on 109973766144 wanted 1823 found 1821
Ini berarti bahwa btrf ingin transif 1826 (Itu ada di jurnal) tetapi pada disk itu melihat 1821. Jadi disk itu 2 transaksi jauh dari yang tidak sinkron dengan jurnal. Saya pribadi akan mengambil risiko brtfs-zero-log di sini hanya karena hanya 2 transaksi. Tetapi untuk menjadi 100% aman jika ini adalah satu-satunya data Anda (ngomong-ngomong jika Anda memiliki data penting Anda harus PERNAH memiliki hanya 1 salinannya, selalu memiliki salinan / cadangan di lokasi lain yang aman - menyalahkan pembuat btrfs tidak akan membenarkan terhadap orang-orang sendiri kurangnya tanggung jawab untuk tidak memiliki cadangan - btrfs bukan solusi cadangan, itu adalah sistem file - tidak ada solusi cadangan yang benar selain memiliki salinannya di tempat lain - bahkan tanpa paritas atau mirrored drive, cadangan sebenarnya adalah duduk di suatu tempat di bawah tanah di Alpen sementara salinan aktifnya ada di kantor Anda di Texas)
parent transid verify failed on 31302336512 wanted 62455 found 62456
Di sini jurnal ingin 62455 tetapi disk adalah satu di depan di 62456, jadi dalam kasus Anda saya hanya akan menghapus jurnal. Jurnal tidak memperbarui kali ini. Sekali lagi saya katakan kepada Anda tentang hal yang aman, jika itu satu-satunya data Anda dan mega kritis (memalukan pada Anda), dan saya akan melakukan operasi di bawah ini terlebih dahulu agar aman.
Menjalankan btrfsck / dev / sda5 (yang omong-omong hanya memeriksa saja sehingga benar-benar aman, satu-satunya opsi btrfsck yang harus Anda khawatirkan) juga akan menunjukkan kepada Anda pesan-pesan itu.
Tetapi berhati-hatilah jika data itu sangat penting, saya akan melakukannya dulu (Seperti yang dikatakan tuan-tuan lainnya)
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
Kemudian cp atau rsync semua file Anda ke lokasi yang aman, lalu ketika aman lakukan btrfs-zero-log, jika ini operasi yang sukses Anda hanya membuang banyak waktu untuk mencadangkan sistem Anda (tetapi jika tidak berhasil, Anda baru saja menyimpan pantat)
Kemudian jika mount gagal melakukan pengembalian btrf (dump sistem, seperti yang saya pahami ini adalah operasi yang dapat dilanjutkan, namun ia terus meminta Y atau y setiap saat dan lagi jadi perhatikan hasilnya)
btrfs restore /dev/sda5 /USB
Kemudian ketika safe (ketika btrfs restore selesai) lakukan btrfs-zero-log, jika itu operasi yang sukses Anda hanya membuang banyak waktu untuk membuat cadangan sistem Anda (tetapi jika tidak berhasil, Anda hanya menyelamatkan pantat Anda)
Anda dapat menjalankan layar terlebih dahulu
screen /bin/bash
btrfs restore /dev/sda5 /USB
CATATAN LAYAR LAYAR
Untuk melepaskan (perintah akan tetap berjalan): CONTROL-a lalu ketik ": lepas" tanpa tanda kutip lalu tekan ENTER
Cara lain untuk melepaskan: Kemudian tutup dempul atau terminal Anda dan itu akan terlepas (perintah / restore masih akan berjalan).
Untuk memeriksanya, cukup saring kembali:
screen -x
layar -x akan melampirkan ke sesi, bahkan jika terlepas, dan tidak seperti -h mengatakan, itu akan melampirkan bahkan jika sudah terpasang juga)
Jika Anda memiliki beberapa layar, layar -x akan memberi tahu Anda harus lebih spesifik untuk melampirkan sesi:
screen -ls
Untuk daftar semua sesi, mudah diingat.
untuk melihat PID Anda juga dapat melakukan ini:
ps aux | grep screen
Setelah Anda mengetahui PID Anda, kemudian jalankan layar seperti ini:
screen -x PID
Itu akan dilampirkan ke sesi tertentu. Anda dapat memiliki beberapa sesi / puttys yang terpasang pada layar yang sama (mereka akan menampilkan teks yang sama, Anda dapat mengetik perintah dalam satu, dan mereka akan dicerminkan pada dempul lainnya)
nospace_cache
?