Cách dễ nhất
btrfs-zero-log /dev/sda5
Bạn gặp phải vấn đề đó vì một giao dịch (ghi hoặc xóa) bị kẹt trong nhật ký nhật ký và đĩa không khớp với nó.
Làm thế nào nó hoạt động:
Vì vậy, khi dữ liệu được ghi đầu tiên, nó được ghi vào nhật ký sau đó vào đĩa (hoặc cùng một lúc, nhưng tạp chí chỉ lưu siêu dữ liệu về lần ghi sắp tới - không chắc chắn ... cần nghiên cứu thêm về phần đó) ...
Dù sao đi nữa, nếu bạn tắt hệ thống ở giữa ghi / xóa này hoặc làm điều gì đó làm hỏng hệ thống (tháo USB giữ điểm gắn btrfs của bạn), thì khi nó trả về việc gắn kết đó sẽ không hoạt động ( dmesg và btrfsck sẽ thất bại cho bạn thấy các lỗi chi tiết hơn) ...
Nhìn vào dmesg bạn sẽ thấy những thông điệp tương tự.
Bạn sẽ thấy một cái gì đó như thế này:
parent transid verify failed on 109973766144 wanted 1823 found 1821
Điều đó có nghĩa là btrfs muốn transif 1826 (Đó là trên tạp chí) nhưng trên đĩa thì thấy 1821. Vì vậy, đĩa đã cách 2 giao dịch không đồng bộ với tạp chí. Cá nhân tôi sẽ mạo hiểm một brtfs-zero-log ở đây chỉ vì 2 giao dịch của nó. Nhưng để an toàn 100% nếu đây là dữ liệu duy nhất của bạn (nhân tiện nếu bạn có dữ liệu quan trọng, bạn KHÔNG BAO GIỜ chỉ có 1 bản sao của nó, luôn có một bản sao / sao lưu ở một vị trí an toàn khác - đổ lỗi cho người tạo btrfs sẽ không biện minh chống lại sự thiếu trách nhiệm của những người không có bản sao lưu - btrfs không phải là giải pháp sao lưu, đó là một hệ thống tập tin - không có gì là một giải pháp sao lưu thực sự ngoài việc có một bản sao của nó trong đó - thậm chí không phải là ổ đĩa nhân đôi hoặc sao chép, một bản sao lưu thực sự là ngồi ở đâu đó dưới lòng đất trong dãy Alps trong khi bản sao hoạt động của nó ở trong văn phòng của bạn ở Texas)
parent transid verify failed on 31302336512 wanted 62455 found 62456
Ở đây tạp chí đang muốn 62455 nhưng đĩa đi trước ở mức 62456, vì vậy trong trường hợp của bạn tôi sẽ xóa nhật ký. Tạp chí không cập nhật lần này. Một lần nữa tôi đã nói với bạn rằng đó là điều an toàn, nếu đó là dữ liệu duy nhất của bạn và là điều cực kỳ quan trọng (xấu hổ với bạn), và tôi sẽ thực hiện các thao tác dưới đây trước để an toàn.
Chạy btrfsck / dev / sda5 (bằng cách này chỉ cần kiểm tra chỉ đọc để nó hoàn toàn an toàn, các tùy chọn btrfsck duy nhất của bạn mà bạn phải lo lắng) cũng sẽ hiển thị cho bạn những tin nhắn đó.
Nhưng hãy cẩn thận nếu dữ liệu đó là quan trọng, trước tiên tôi sẽ làm (Như các gents khác đã nói)
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
Sau đó, cp hoặc rsync tất cả các tệp của bạn đến vị trí an toàn, sau đó khi an toàn thực hiện btrfs-zero-log, nếu hoạt động thành công, bạn chỉ lãng phí rất nhiều thời gian để sao lưu hệ thống của mình (nhưng nếu nó không thành công, bạn chỉ lưu mông)
Sau đó, nếu các mount không thành công, hãy khôi phục btrfs (kết xuất hệ thống, vì tôi hiểu rằng nó hoạt động có thể khôi phục được, tuy nhiên nó cứ yêu cầu Y hoặc y cứ thỉnh thoảng lại xem đầu ra)
btrfs restore /dev/sda5 /USB
Sau đó, khi an toàn (khi khôi phục btrfs được thực hiện) hãy thực hiện btrfs-zero-log, nếu hoạt động thành công, bạn chỉ lãng phí rất nhiều thời gian để sao lưu hệ thống của mình (nhưng nếu nó không thành công, bạn chỉ cần lưu ass của mình)
Bạn có thể chạy màn hình trước
screen /bin/bash
btrfs restore /dev/sda5 /USB
MÀN HÌNH LƯU Ý
Để tách (lệnh vẫn sẽ chạy): KIỂM SOÁT-a rồi gõ ": tách" mà không có dấu ngoặc kép, sau đó nhấn ENTER
Một cách khác để tách ra: Sau đó đóng putty hoặc thiết bị đầu cuối của bạn và nó sẽ tách ra (lệnh / khôi phục vẫn sẽ chạy).
Để kiểm tra, chỉ cần quay lại màn hình:
screen -x
screen -x sẽ đính kèm vào các phiên, ngay cả khi tách ra và không giống như -h nói, nó sẽ đính kèm ngay cả khi nó cũng được gắn vào)
Nếu bạn có một vài màn hình, màn hình -x sẽ cho bạn biết cần phải cụ thể hơn để đính kèm vào phiên:
screen -ls
ls cho danh sách tất cả các phiên, dễ nhớ đó.
để xem PID bạn cũng có thể làm điều này:
ps aux | grep screen
Khi bạn tìm ra PID của mình, sau đó chạy màn hình như thế này:
screen -x PID
Điều đó sẽ đính kèm vào một phiên cụ thể. Bạn có thể có một vài phiên / putty được gắn vào cùng một màn hình (chúng sẽ xuất ra cùng một văn bản, bạn có thể nhập các lệnh trong một và chúng sẽ được nhân đôi trên putty khác)
nospace_cache
?