Phục hồi hệ thống tập tin ext4 với tạp chí bị hỏng


9

Tôi có một ổ cứng dường như đã phát triển một số loại vấn đề phần cứng trong tạp chí. Điều này ngăn chặn ổ đĩa được tải. Chạy mount -r -t ext4 /dev/sda5 /mnt/rootkết quả trong spew kernel sau:

[ 1420.671055] ata1.00: exception Emask 0x0 SAct 0x1000000 SErr 0x0 action 0x0
[ 1420.673862] ata1.00: irq_stat 0x40000008
[ 1420.676600] ata1.00: failed command: READ FPDMA QUEUED
[ 1420.679326] ata1.00: cmd 60/40:c0:a8:9d:0a/00:00:08:00:00/40 tag 24 ncq 32768 in
[ 1420.679326]          res 41/40:40:e1:9d:0a/00:00:08:00:00/00 Emask 0x409 (media error) <F>
[ 1420.685014] ata1.00: status: { DRDY ERR }
[ 1420.687858] ata1.00: error: { UNC }
[ 1420.761064] ata1.00: configured for UDMA/133
[ 1420.763863] sd 0:0:0:0: >[sda] Unhandled sense code
[ 1420.766653] sd 0:0:0:0: >[sda]  
[ 1420.769364] Result: hostbyte=DID_OK driverbyte=DRIVER_SENSE
[ 1420.772104] sd 0:0:0:0: >[sda]  
[ 1420.774780] Sense Key : Medium Error [current] [descriptor]
[ 1420.777491] Descriptor sense data with sense descriptors (in hex):
[ 1420.780249]         72 03 11 04 00 00 00 0c 00 0a 80 00 00 00 00 00 
[ 1420.783175]         08 0a 9d e1 
[ 1420.785972] sd 0:0:0:0: >[sda]  
[ 1420.788730] Add. Sense: Unrecovered read error - auto reallocate failed
[ 1420.791545] sd 0:0:0:0: >[sda] CDB: 
[ 1420.794331] Read(10): 28 00 08 0a 9d a8 00 00 40 00
[ 1420.797242] end_request: I/O error, dev sda, sector 134913505
[ 1420.800072] ata1: EH complete
[ 1420.800077] JBD2: Failed to read block at offset 2748
[ 1420.812529] JBD2: recovery failed
[ 1420.815275] EXT4-fs (sda5): error loading journal

Tôi hầu như không hiểu điều này có nghĩa là gì, nhưng nó chắc chắn trông giống như một vấn đề phần cứng ngăn chặn tạp chí được tải. Có cách nào để làm việc này không? Tạp chí, có thể được chuyển đến một phần bù khác trong khi phần còn lại của ổ đĩa còn nguyên vẹn không? Tôi không có ý định tiếp tục sử dụng ổ đĩa; Tôi chỉ muốn gắn kết nó để tôi có thể sao chép một vài tệp quan trọng.


Hai điều: đảm bảo ngắt kết nối và kết nối lại cáp. Nếu thậm chí có thể thoát khỏi vấn đề phần cứng tạm thời. Nếu có, nhận cáp mới. Nếu không, hãy thử (các) đĩa trong một máy tính khác với các loại cáp khác nhau.
0xC0000022L

Bạn đã thử fsckhệ thống tập tin?
psusi

Tôi đã có một vấn đề tương tự ngày hôm nay khi tôi bằng cách nào đó đã làm hỏng tạp chí khi mở khóa phân vùng ext4 được mã hóa của tôi. Tôi chỉ có thể gắn kết như chỉ đọc. Tôi đã cố gắng khắc phục bằng cách chạy thói quen 'Kiểm tra' đối với phân vùng trong GParted. Thói quen 'Kiểm tra' đã tìm thấy các vấn đề với tạp chí và tự động sửa chúng.
navnav

Câu trả lời:


8

Để gắn kết nó ở chế độ chỉ đọc, không cần phát lại tạp chí để bạn có thể truy cập các tệp của mình (có thể bạn sẽ mất một số thay đổi chưa được cam kết với fs thông thường):

mount -o ro,noload ...


7

Có một cái nhìn vào đầu ra của smartctl -a /dev/sda. Nếu đó không phải là vấn đề về cáp thì đĩa có thể bị chết. Nếu bạn không có bản sao lưu gần đây, bạn nên cố gắng sao chép nội dung của thiết bị khối (không cần gắn) bằng dd_resTHER hoặc dd với các tùy chọn tương ứng.

Sau đó, bạn có thể thử hdparm --write-sector(luôn hài hước các tùy chọn "RẤT NGUY HIỂM" này ...).

Một lựa chọn khác là tạo một thiết bị DM bỏ qua các khu vực bị lỗi. Điều đó không phục hồi nội dung của họ, tất nhiên. Bạn phải chuyển đổi bù sda (134913505) thành bù sda5 (tìm ra số của khu vực đầu tiên của sda5 và trừ nó). Giả sử bù sda5 là 12345. Bạn tạo một thiết bị khối có sector 12345 không được ánh xạ tới sda5 mà ở một nơi khác (ví dụ: thiết bị lặp). Định nghĩa thiết bị (để tạo dmsetup) trông như thế này:

0 12345 linear /dev/sda5 0
12345 1 linear /dev/loop0 0
12346 99987653 /dev/sda5 12345

# format:
# logical_start_sector num_sectors linear destination_device start_sector

Bạn sẽ không may mắn khi chỉ có một khu vực bị lỗi. Bạn có thể vạch ra bao nhiêu tùy ý (kết quả là thiết bị DM cung cấp số không cho các khu vực đó nhưng có thể ghi được) nhưng việc tính toán bù đắp trong loop0 có thể trở nên thú vị. Một tùy chọn khác là sử dụng một thiết bị ảo có cùng kích thước để ánh xạ lại và sử dụng cung cấp mỏng hoặc ảnh chụp nhanh (với kích thước khối nhỏ, ví dụ 1 sector) của thiết bị mục tiêu bằng không.

Chỉnh sửa 1

Thiết bị lặp không nên trỏ đến một tệp trên cùng một đĩa (sda).


Điểm rất tốt. --write-sectorFAR từ "nguy hiểm". Trong thực tế, đây thực sự là lý tưởng tùy chọn để sử dụng bất cứ khi nào chắc chắn tham nhũng đơn ngành ngăn cản bạn nhận được một liên tục hình ảnh ngành thô ( ddsẽ giải cứu với "thiết bị I / O lỗi", một số ổ cứng thậm chí sẽ yêu cầu để điện-chu kỳ máy ( !) để được hệ điều hành công nhận một lần nữa). Tuy nhiên, bạn phải biết về shell-scripting nếu bạn muốn sử dụng --write-sectorcho các phạm vi ngành .
cú pháp

0

Bạn có thể khởi động ở chế độ phục hồi, trong đó FS sẽ được gắn ở chế độ chỉ đọc và sao chép nội dung của bạn.


Tôi đang gắn kết chỉ đọc. Tôi đã sửa dòng lệnh hiển thị ở trên để làm cho điều này rõ ràng hơn.
JSB

Và bạn có thể truy cập ổ đĩa?
schaiba

Không. Việc thử gắn RO ổ đĩa (hoặc trong R / W, điều đó không tạo ra sự khác biệt) dẫn đến lỗi xuất hiện ở trên.
JSB

Sau đó, đề xuất với trao đổi cáp có thể có ích. Và liên quan đến câu hỏi của bạn, tạp chí không thể được di chuyển theo cách bạn muốn.
schaiba
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.