Cách thích hợp để xử lý các hệ thống tệp XFS bị hỏng


18

Gần đây tôi đã có một hệ thống tập tin XFS bị hỏng do lỗi nguồn. (Hệ thống CentOS 7). Hệ thống sẽ không khởi động đúng cách.

Tôi đã khởi động từ một đĩa CD cứu hộ và thử xfs_repair, nó bảo tôi gắn phân vùng để xử lý nhật ký.

Tôi đã gắn kết phân vùng và đã lsxác minh rằng có, nó dường như ở đó. Tôi ngắt kết nối phân vùng và thử xfs_repairlại và nhận được thông báo tương tự.

Tôi phải làm gì trong tình huống này? Có vấn đề gì với đĩa cứu hộ của tôi (System Cứu CD, phiên bản 4.7.1)? Có một số thủ tục khác tôi nên đã sử dụng?

Cuối cùng tôi đã khôi phục hệ thống từ các bản sao lưu (trong trường hợp này nhanh chóng và dễ dàng), nhưng tôi muốn biết phải làm gì trong tương lai.

Câu trả lời:


19

Nếu bạn đang cố chạy xfs num ngoặc , nhận thông báo lỗi đề xuất gắn hệ thống tệp để phát lại nhật ký và sau khi cài đặt vẫn nhận được thông báo lỗi tương tự, bạn có thể cần thực hiện sửa chữa bắt buộc (sử dụng -Lcờ với xfs_repair). Tùy chọn này nên là phương sách cuối cùng.

Ví dụ: tôi sẽ sử dụng trường hợp tôi có phân vùng gốc bị hỏng trong cài đặt CentOS 7. Khi cố gắn kết phân vùng, tôi liên tục nhận được thông báo lỗi dưới đây:

mount: mount / dev / mapper / centos-root on / mnt / centos-root fail: Cấu trúc cần làm sạch

Thật không may, buộc sửa chữa sẽ liên quan đến việc hủy bỏ (phá hủy) nhật ký trước khi thử sửa chữa. Khi sử dụng phương pháp này, có khả năng kết thúc với nhiều dữ liệu bị hỏng hơn dự đoán ban đầu; tuy nhiên, chúng ta có thể sử dụng các công cụ xfs thích hợp để xem loại thiệt hại nào có thể gây ra trước khi thực hiện bất kỳ thay đổi vĩnh viễn nào.

Sử dụng xfs_metadumpxfs_mdrestore , bạn có thể tạo hình ảnh siêu dữ liệu của phân vùng bị ảnh hưởng và thực hiện sửa chữa bắt buộc trên hình ảnh thay vì phân vùng. Lợi ích của việc này là khả năng nhìn thấy thiệt hại đi kèm với việc sửa chữa bắt buộc trước khi thực hiện nó trên phân vùng.

Để làm điều này, bạn sẽ cần một USB có kích thước khá hoặc ổ cứng ngoài. Bắt đầu bằng cách gắn ổ USB - USB của tôi được đặt tại /dev/sdb1, ổ của bạn có thể được đặt tên khác.

mkdir -p /mnt/usb
mount /dev/sdb1 /mnt/usb

Sau khi được gắn kết, hãy chạy xfs_metadumpđể tạo một bản sao của siêu dữ liệu phân vùng vào USB - một lần nữa, phân vùng bị ảnh hưởng của bạn có thể khác. Trong trường hợp này, tôi đã có một phân vùng gốc bị hỏng nằm ở /dev/mapper/centos-root:

xfs_metadump /dev/mapper/centos-root /mnt/usb/centos-root.metadump

Tiếp theo, bạn sẽ muốn khôi phục siêu dữ liệu vào hình ảnh để chúng tôi có thể thực hiện sửa chữa và đo lường thiệt hại.

xfs_mdrestore /mnt/usb/centos-root.metadump /mnt/usb/centos-root.img

Tôi thấy rằng trong chế độ cứu hộ xfs_mdrestorelà không có sẵn, và thay vào đó bạn sẽ cần ở chế độ cứu hộ của một đĩa CD CentOS trực tiếp.

Cuối cùng, chúng ta có thể thực hiện sửa chữa trên hình ảnh:

xfs_repair -L /mnt/usb/centos-root.img

Sau khi sửa chữa hoàn tất và bạn đã đánh giá đầu ra và thiệt hại tiềm tàng, bạn có thể xác định xem bạn có muốn thực hiện sửa chữa đối với phân vùng hay không.

Để chạy sửa chữa đối với phân vùng, chỉ cần chạy:

xfs_repair -L /dev/mapper/centos-root

Đừng quên kiểm tra các phân vùng khác cho tham nhũng là tốt. Sau khi sửa chữa, khởi động lại hệ thống và bạn sẽ có thể khởi động thành công.

Hãy nhớ rằng -Lcờ nên được sử dụng như là phương sách cuối cùng, nơi không có lựa chọn nào khác có thể sửa chữa.

Tôi thấy rằng những bài viết trực tuyến này đã giúp:


OK, vì vậy -L là giải pháp cuối cùng và đây là những hướng dẫn TUYỆT VỜI về cách xem nó sẽ tệ đến mức nào nếu chúng ta sử dụng -L. Tôi còn thiếu những lựa chọn nào khác khi sử dụng -L?
Michael Kohne

1
@MichaelKohne Khôi phục từ bản sao lưu, tất nhiên. Bạn không nên đến bất cứ nơi nào gần mức địa ngục này trừ khi bạn không có bản sao lưu.
Michael Hampton

1
@MichaelHampton - OK, đủ công bằng. Nhưng tôi không nghĩ rằng tôi đã bị mất một hệ thống tập tin như thế này do lỗi ext4 trên powerfail - xfs có kém khả năng phục hồi không? Hay lần này tôi thực sự gặp xui xẻo?
Michael Kohne

@MichaelKohne Tôi nghĩ bạn vừa gặp xui xẻo. XFS là một hệ thống tập tin đáng tin cậy.
Michael Hampton

3
chúng tôi thường đơn giản là có thể làm điều đó từ initrd. những "tiến bộ" tuyệt vời mà chúng tôi đã thực hiện.
Florian Heigl

1

Tôi đã gặp lỗi này khi 7 điểm dừng bên trong máy ảo kvm:

tham nhũng siêu dữ liệu được phát hiện tại xfs ...

Khi tôi sử dụng nhật ký whit whit nhật ký -xe, tôi đã tìm thấy một lỗi gắn kết:

/ dev / mapper / root / sysroot

Tôi giải quyết nó bằng cách sử dụng:

xfs_V ngoặc / dev / mapper / root

Sau đó hệ thống hoàn thành bảy giai đoạn và sau đó y khởi động lại bằng

./tắt

Và sau đó máy ảo 7 centos hoạt động tốt

Trân trọng

Lưu ý: có thể bạn / dev / mapper / root có tên khác, vui lòng xem nhật ký lỗi của bạn với tạp chí -xe để tìm tên của đơn vị bạn được gắn kết xấu

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.