Đọc ngắn trong khi cố gắng mở phân vùng


8

Trên máy tính cá nhân tại nhà của tôi chạy Kubfox Linux 13.04 Tôi gặp sự cố khi cài đặt phân vùng rất thân thuộc với tôi. Chính sách sao lưu của tôi là thực hiện sao lưu hàng tháng, vì vậy tôi có một bản sao lưu từ tháng 8 :). Có cách nào để khôi phục các tệp cá nhân trên ổ đĩa này không?

Ổ đĩa này là ổ đĩa 1000 GiB Western Digital Green 1,5 năm tuổi, được gắn tại nhà /dev/sdc2, bật hệ thống tập tin gốc /dev/sdc6và bật tập tin phương tiện /dev/sdc3. Vì vậy, tất nhiên sdc2sẽ là người đi! Cho đến nay tôi biết không có sự cố mất điện hoặc các sự kiện khác như vậy trong suốt vòng đời của ổ đĩa. Tôi đã quản lý để có được thông tin này bằng cách chạy Kubfox LiveCD:

kubuntu@kubuntu:~$ sudo fdisk -l

Disk /dev/sdc: 1000.2 GB, 1000204886016 bytes
255 heads, 63 sectors/track, 121601 cylinders, total 1953525168 sectors
Units = sectors of 1 * 512 = 512 bytes                                                                                                                                                                                                       Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00008044

  Device Boot      Start         End      Blocks   Id  System
/dev/sdc1   *        4094    88066047    44030977    5  Extended
/dev/sdc2        88066048  1419266047   665600000   83  Linux
/dev/sdc3      1419266048  1953523711   267128832   83  Linux
/dev/sdc5            4096     6146047     3070976   82  Linux swap / Solaris
/dev/sdc6         6148096    47106047    20478976   83  Linux
/dev/sdc7        47108096    88066047    20478976   83  Linux


kubuntu@kubuntu:~$ sudo mount -t ext4 /dev/sdc2 c1
mount: wrong fs type, bad option, bad superblock on /dev/sdc2,
  missing codepage or helper program, or other error
  In some cases useful info is found in syslog - try
  dmesg | tail  or so


  kubuntu@kubuntu:~$ sudo debugfs -c /dev/sdc2 
debugfs 1.42.5 (29-Jul-2012)

/dev/sdc2: Attempt to read block from filesystem resulted in short read while opening filesystem
debugfs:  quit


kubuntu@kubuntu:~$ sudo fsck /dev/sdc2
fsck from util-linux 2.20.1
e2fsck 1.42.5 (29-Jul-2012)
fsck.ext4: Attempt to read block from filesystem resulted in short read while trying to open /dev/sdc2
Could this be a zero-length partition?


kubuntu@kubuntu:~$ sudo fsck.ext4 -v /dev/sdc2
e2fsck 1.42.5 (29-Jul-2012)
    fsck.ext4: Attempt to read block from filesystem resulted in short read while trying to open /dev/sdc2
Could this be a zero-length partition?


kubuntu@kubuntu:~$ dmesg | tail
[ 2684.532855] Descriptor sense data with sense descriptors (in hex):
[ 2684.532858]         72 03 11 04 00 00 00 0c 00 0a 80 00 00 00 00 00 
[ 2684.532876]         05 3f c8 b0 
[ 2684.532885] sd 5:0:0:0: [sdc]  
[ 2684.532893] Add. Sense: Unrecovered read error - auto reallocate failed
[ 2684.532898] sd 5:0:0:0: [sdc] CDB: 
[ 2684.532902] Read(10): 28 00 05 3f c8 b0 00 00 08 00
[ 2684.532917] end_request: I/O error, dev sdc, sector 88066224
[ 2684.532927] Buffer I/O error on device sdc2, logical block 22
[ 2684.532973] ata6: EH complete

Hãy giúp tôi Unix & Linux, bạn là hy vọng duy nhất của chúng tôi.


Bạn có thể gắn kết các phân vùng (không phải nhà) khác?
Timo

Có, tất cả các phân vùng khác có thể được gắn kết thành công.
dotancohen

@Timo Tôi đứng đúng, bạn hoàn toàn đúng, họ chỉ không được liệt kê theo thứ tự nên tôi đã bỏ lỡ. Bình luận đã bị xóa.
terdon

Câu trả lời:


4

Vẫn có thể có hy vọng, nhưng ổ đĩa của bạn dường như có vấn đề về phần cứng (cách giải thích của tôi về lỗi đọc ở dmesgđầu ra).

Bạn nên cố gắng tạo một bản sao của những gì có thể phục hồi từ phân vùng đó vào một ổ đĩa khác (để giảm thiểu truy cập đĩa). Sử dụng ddrescuecho điều đó, có thể mất một lúc nhưng nhận được nhiều nhất nếu không phải tất cả dữ liệu có thể phục hồi của phân vùng.

Nếu có thể bắt đầu từ một đĩa khác, từ đĩa CD Live hoặc kết nối ổ đĩa với một máy tính khác có Linux riêng để khởi động. Lý do tôi sẽ làm như vậy là các lỗi đọc trong khi thực hiện ddrescuecó thể có tác động đến tốc độ truy cập đĩa trên các phân vùng khác.

Khi bạn có bản sao đó, hãy gọi bản sao đó, dưới dạng tệp trên đĩa khác, tạo một bản sao của bản sao đó. Sau đó thử làm một kiểm tra hệ thống tập tin trên bản sao đó. Nếu sự phục hồi đó làm xáo trộn bản sao, bạn có thể bắt đầu từ bản sao gốc và thử lại lần nữa, một cái gì đó khác.


Cảm ơn bạn, tôi hiện đang nhân bản phân vùng với ddrescuemột ổ đĩa vật lý khác.
dotancohen

Cảm ơn bạn. Tôi đã có thể sao chép đĩa với ddrescuevà phục hồi hầu hết các tệp với e2fsck. Điều buồn cười là hầu hết các tệp chưa được khôi phục là các tệp mới nhất mà tôi không có bản sao lưu. Tôi tự hỏi nếu đó là bản chất của ext4.
dotancohen

@dotancohen Tôi rất vui vì bạn đã lấy lại ít nhất một số. Sẽ không gọi là buồn cười mặc dù bạn đã bỏ lỡ những cái gần đây nhất. Tôi có quá ít kiến ​​thức về hệ thống tập tin nhật ký để giải thích tại sao lại như vậy. Tại sao bạn không đặt nó như một câu hỏi mới, hoặc tôi có thể làm điều đó nếu bạn không muốn?
Timo

Vâng, buồn cười không phải là từ đúng, nhưng đó là cách đau buồn của tôi! Tôi sẽ hỏi câu hỏi mới vì tôi cũng quan tâm. Cảm ơn bạn Timo!
dotancohen

Cảm ơn bạn, tôi đã hỏi ở đây .
dotancohen

14

(Tôi biết đây là một câu hỏi cũ, tôi tình cờ gặp vấn đề này bản thân mình và đã FS của tôi trở lại với cuộc sống mà không ddrescue, vì vậy tôi sẽ chia sẻ những expericence cho bất cứ ai khác gặp phải này)

Hệ thống tập tin mở rộng lưu trữ các bản sao lưu của siêu khối - trong một dịp như thế này.

Trước tiên, hãy xác định vị trí của các bản sao lưu ( đảm bảo bạn có tùy chọn -n! Nếu không, điều này sẽ xóa hệ thống tệp bằng một cái mới):

mke2fs -n /dev/sdxx

Đây là một lần chạy thử (tức là không ghi) thói quen tạo FS. Nó sẽ cho bạn biết các điểm bù nơi nó sẽ đặt các bản sao lưu siêu khối nếu nó đang tạo một hệ thống tập tin. Nếu bạn biết kích thước khối FS của mình là thứ gì đó ngoài 4096, bạn cũng phải chỉ định tham số -b {blocksize}để lấy đúng số.

Đối với các khối có kích thước 4096, siêu khối dự phòng đầu tiên sẽ có mặt 32768. Nếu các thao tác sau không thành công với cùng một thông báo lỗi về superblock xấu / đọc ngắn, hãy thử sao lưu superblock tiếp theo từ danh sách mke2fsđã cung cấp cho bạn.

Tiếp theo, bạn có thể gắn hệ thống tập tin bằng cách sử dụng siêu khối sao lưu như thế này

mount -o sb=32768 /dev/sdxx /mnt/sdxx

sau đó khám phá FS từ trình quản lý tệp của bạn, sao chép các tệp không bị hư hại, v.v.

Hoặc, để thực sự sửa lỗi FS, bạn có thể chạy fsckvới siêu khối dự phòng như thế này

e2fsck -fy -b 32768 /dev/sdxx

Ở đây -flàm cho nó quét đĩa ngay cả khi nó không bẩn và -ytrả lời có cho tất cả các câu hỏi về sửa chữa công cụ. Các -btùy chọn, ngoài việc xác định các superblock sao lưu, sẽ làm cho nó cập nhật superblock gốc với thông tin từ bản sao lưu.

Sau này, bạn nên có hệ thống tập tin của bạn trở lại.

Nếu e2fsck không thể viết siêu khối chính Nếu siêu khối bị hỏng vì nó ở trên một khu vực xấu e2fscksẽ kết thúc quá trình chạy, hãy thử cập nhật siêu khối và cung cấp cho bạn thông báo lỗi sau:

Error writing block 1 (Attempt to write block from filesystem resulted in short write)

Rõ ràng, siêu khối chính không được cập nhật và toàn bộ e2fsckhoạt động là vô ích.

Bạn cần gợi ý đĩa để ánh xạ lại khu vực đó - bằng cách viết số không vào nó. Cảm ơn @Keith đã chỉ ra điều này: lệnh tiếp theo có thể tạo ra nhiều mớ hỗn độn nếu nhập sai , vì vậy hãy kiểm tra kỹ trước khi chạy. Đây là phép màu:

dd if=/dev/zero of=/dev/sdxx bs=4096 count=1 seek=0

Điều này sẽ ghi 1 khối số 0 có kích thước 4096 vào sdxx ở offset 0. Đừng quên tính toán kích thước khối khác nhau nếu đó là trường hợp dành cho bạn.

Sau đó, bạn sẽ có thể viết thư cho siêu khối (sẽ thuộc về một lĩnh vực vật lý khác trong suốt với bạn). Bây giờ, bạn chạy lại e2fscklệnh trên và nó sẽ viết thành công siêu khối cho phép bạn gắn FS bình thường.

Đi mà không nói Bây giờ bạn nên sao lưu dữ liệu quan trọng sang ổ đĩa vật lý khác và, nếu bạn vẫn có kế hoạch sử dụng hệ thống tập tin, hãy chạy

e2fsck -fccy /dev/sdxx

PS Kudos gửi @Nemo trên tìm thấy này: trong trường hợp tất cả các bản sao lưu của siêu khối của FS của bạn bị hỏng, mke2fs/mkfscó tùy chọn -S sẽ tạo lại siêu mô tả và mô tả nhóm như thể tạo một hệ thống tệp mới, mà không cần chạm vào bất cứ thứ gì khác . Nhưng bạn hoàn toàn phải chắc chắn rằng kích thước khối của bạn là đúng và trang man nói rằng bạn nên chạy e2fscktheo nó và không có gì đảm bảo về dữ liệu còn lại để giải cứu. Đọc trang người đàn ông và ném một điểm cộng vào câu trả lời này .


Cảm ơn bạn Ivan. Tôi sẽ thử cái này, vì tôi vẫn còn ổ đĩa cũ.
dotancohen

@dotancohen - Tôi không biết ... bạn đã bao giờ xác minh rằng ổ đĩa đó chắc chắn là xấu chưa? Tôi đã có một số thứ iffy xảy ra trên Green 3tb và tôi đã từ bỏ nó trong gần một năm - hai năm trước. Đó chỉ là một vấn đề về hệ thống tập tin mà tôi đã sửa chữa - và có tất cả dữ liệu của tôi. Nếu bạn muốn sao lưu / thay thế superblocks sử dụng wipefs- bạn đã cài đặt nó và nó là một công cụ linux được thiết kế cho mục đích này Xem mantrang của nó . Về đĩa - để xác minh xem nó có sử dụng xấu về mặt vật lý hay không smartctl- bạn có thể phải cài đặt nó.
mikeerv

1
@dotancohen - nếu bạn chưa bao giờ sử dụng nó trước khi nó trông sẽ tệ, có lẽ. Nhưng nó thực sự không. Chỉ sau khi tôi đọc kỹ bài viết trên wikipedia này , tôi mới nhận ra đĩa của mình hoạt động tốt trong giới hạn hoạt động bình thường. Nhưng các danh mục đều được đặt tên là những điều khủng khiếp và các tiêu đề cột giống nhau với một loạt các số khó hiểu xen kẽ. Chỉ cần so sánh chặt chẽ báo cáo của bạn với dữ liệu trong bảng ở đó và chắc chắn rằng bạn hiểu vị trí của mỗi ngưỡng thất bại trước khi gửi nó.
mikeerv

1
@Keith [wow Tôi trễ một năm] Không, cái đó sẽ không xóa đĩa, chỉ có siêu khối trên nó. Nhưng vâng, bạn nói đúng, tôi sẽ thêm một cảnh báo vì nếu nhập sai lệnh này rõ ràng có thể gây ra nhiều rắc rối.
Ivan Bartsov

1
@Nemo Cảm ơn, đã không chú ý đến điều -S trước đây, rất tốt để biết :) Tôi sẽ đặt một liên kết đến câu trả lời đó.
Ivan Bartsov
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.