Phục hồi nhanh hơn từ một đĩa có thành phần xấu


13

Gần đây tôi đã cố gắng ddtừ một ổ cứng không lành mạnh thành một tập tin. Tôi đã sử dụng dd if=/dev/sdb of=somefile bs=4096 conv=noerror,sync. Vấn đề của tôi là đã ddlãng phí rất nhiều thời gian khi nó gặp phải một khối xấu. Trong trường hợp sử dụng của tôi, tôi sẵn sàng trả tiền với một số mất dữ liệu để có kết quả nhanh hơn.

Có cách nào để xử lý lỗi nhanh hơn không? Có lẽ một tinh chỉnh kernel (nói với ổ cứng để giảm bớt nỗ lực đọc khối)? Hay chương trình khác?

Câu trả lời:


29

Đầu tiên, để phần mềm sử dụng: bạn có thể thử sử dụng ddrescuethay vì dd.

ddrescuecó một công tắc để chỉ làm một số lần thử lại giới hạn. Nó cũng có thể sử dụng một logfile, vì vậy nó ghi lại các khối nào là xấu. Nếu sau này bạn cảm thấy muốn thực hiện nhiều lần thử lại hơn, bạn có thể sử dụng cùng một logfile để chạy ddrescue lại với các tùy chọn khác nhau (như nhiều lần thử lại hơn) và nó sẽ chỉ thử lại các khối cần thiết.

Ví dụ sử dụng:

# ddrescue -n /dev/sda /dev/sdb rescue.log
# ddrescue -r1 /dev/sda /dev/sdb rescue.log

Từ trang ddrescuethông tin:

   -n, --no-scrape     
          Skip the scraping phase. Avoids spending a lot of time
          trying to rescue the most difficult parts of the file.

   -r, --retry-passes=<n>
          Exit after given number of retry passes. Defaults to 0.
          -1 means infinity. Every bad sector is tried only once 
          in each pass. To retry bad sectors detected on a previous
          run, you must specify a non-zero number of retry passes.

Dưới đây là một số nguồn bổ sung để sử dụng ddrescue:


Biên tập

Trong trường hợp ổ cứng mất quá nhiều thời gian, bạn có thể thử bật một tính năng có tên là TLER ( T ime L bắt chước E rror R ecovery) hoặc CCTL ( C ommand C ompletion T ime L imit). Không phải tất cả các ổ cứng đều có nó, nhưng bạn có thể sử dụng nó để giới hạn thời gian trên chính bộ điều khiển ổ cứng. Cách tiếp cận này có thể được kết hợp với việc sử dụng ddrecue, tất nhiên.

Linux có một công cụ gọi là smartctl(trong smartmontoolsgói).

Để kiểm tra cài đặt hiện tại ("bị vô hiệu hóa" có nghĩa là không giới hạn thời gian mà bạn không muốn):

# smartctl -l scterc /dev/sda

Để đặt giá trị này thành một giá trị cố định (trong 5,0 giây trong ví dụ này. Đặt nó thành 0 sẽ vô hiệu hóa TLER):

# smartctl -l scterc,50,50 /dev/sda

Nguồn cho TLER: http://en.wikipedia.org/wiki/TLER


2
Một công cụ khác để xem xét là dc3dd, đây là phiên bản pháp y của dd
fpmurphy

ồ, tôi không biết công cụ đó!
Slizzed

2
Tôi không biết về TLER đó, nhưng nó thực sự đã cứu tôi. Trên đĩa của tôi, những cái này đã bị vô hiệu hóa và mỗi lần tôi chạy ddresTHER đĩa của tôi bị chặn sau vài giây. Tắt nguồn, bật nguồn và thử tiếp theo. Bây giờ tôi đặt nó thành 2 giây với lệnh bạn đề cập và nó không bao giờ chặn nữa, nó bỏ qua một số cung, nhưng ít nhất là tiếp tục mà không bị gián đoạn.
Sven Rieke 17/03/18

2

Tôi đã có kết quả tốt từ các đĩa không thể đọc được bằng phần mềm này.

http://www.cgsecurity.org/wiki/TestDisk

Điều tiếp theo này là một công cụ phục hồi vững chắc là tốt. Nó có thể nhận tệp ngay cả khi bảng tệp của bạn bị hỏng hoặc nếu chúng bị xóa. Đó là một công cụ pháp y tốt chết tiệt. Nó kết xuất mọi thứ theo một cách thực sự không có tổ chức, nhưng bạn có thể di chuyển tất cả dữ liệu.

http://www.cgsecurity.org/wiki/PhotoRec


2

Để có một tùy chọn nhanh và nhanh để cứu đĩa, bạn có thể sử dụng tệp sh script và chạy tệp với sh. Nó chứa dòng này, chỉ cần lặp lại sudo ddrescuesleep 3vài lần nữa. Giấc ngủ được sử dụng để khiến ổ nghỉ ngơi vài giây:

#! /bin/sh -e 
sudo ddrescue -d -r0 -e +0 -T 1s -n /dev/drivepartition file.img log.logfile 
sleep 3

Các tùy chọn được sử dụng ở trên:

  • -r0 : không thử lại
  • -e +0: thoát khỏi lỗi đầu tiên
  • -T 1s: thoát với 1 giây không đọc
  • -d : I / O trực tiếp
  • -n : không có phế liệu

Bạn có thể sử dụng -Rsau khi kết thúc với tùy chọn -Amột lần, điều đó sẽ đảo ngược và loại bỏ tất cả lỗi và bắt đầu lại từ đầu. Có nghĩa là nó sẽ đọc lỗi khác nhau.


0

Phụ thuộc vào kích thước của ổ cứng của bạn và có bao nhiêu khối xấu. Tôi thường mất 20 phút để sao lưu bằng cách sử dụng DD khỏe mạnh 1 tera. Với những khối xấu tôi vừa mới hồi phục sáng nay, đã khiến tôi mất gấp đôi thời gian. Tôi gặp vấn đề khi sao chép (sao lưu đĩa) với khoảng 30 khối xấu. Điều đầu tiên tôi đã làm là sao lưu các tệp bằng Filezilla thông thường để sao lưu tất cả dữ liệu tốt. Tôi nhận thấy rằng một tệp lớn không sao chép chính xác (Dừng ở giữa và khởi động lại quá trình chuyển). May mắn thay tôi có một bản sao lưu trước đó của cùng một tập tin. Để nhân đôi đĩa, sau đó tôi phải tìm các khối xấu trên đĩa bằng thủ tục này:

Lần đầu tiên tìm ra đĩa vấn đề xác định thông tin HD bằng fdisk -l

Thứ 2 nếu cho biết đĩa của bạn là / dev / sdb thì bạn cần chạy lệnh badblocks -v / dev / sdb, nó sẽ liệt kê tất cả các khối xấu của bạn trên ổ đĩa. May mắn sẽ có một vài. Nếu không tìm thấy khối xấu nào, thì khối ổ đĩa của bạn vẫn ổn và cần phải tìm ra thứ khác. Kích thước khối của tôi là 512 vì vậy tôi sử dụng số mặc định đó để chạy DD

Mỗi khối thứ 3 có kích thước 512, vì vậy, những gì tôi đã làm là đặt bs = 512

Mỗi lần tôi chạy DD thường xuyên như mọi khi, dữ liệu của tôi, sau các lỗi, sẽ bị hỏng. Vì vậy, sau đó tôi sử dụng các tham số như được giải thích trên trang https://www.gnu.org/software/coreutils/manual/html_node/dd-invocation.html tìm kiếm phần "Đối với các đĩa bị lỗi".

dd if=/dev/sdb of=/dev/sda bs=512 conv=noerror,sync iflag=fullblock 

Phải mất một thời gian. Mỗi khối xấu gặp phải âm thanh như tiếng đập vào ổ đĩa bị lỗi. Nó sao chép khối theo từng khối, và thông qua tất cả các khối xấu của tôi tạo ra tiếng ồn tương tự. Số lần gây ra tiếng ồn là do nó tìm thấy một khối xấu khác và cho bạn biết về thông báo lỗi hiển thị. Những gì 'conv = noerror, sync' thực hiện, là loại bỏ các lần đọc xấu với NUL, trong khi 'iflag = fullblock' phục vụ cho các lần đọc ngắn, nhưng vẫn đồng bộ hóa dữ liệu của bạn đến cuối. Không có tham nhũng, nó chỉ không sao chép các khối bị lỗi và lấp đầy nó bằng các NUL trống.

Sau khi sao chép với DD xong, tôi chỉ cần thay thế tệp xấu đó hoàn nguyên Filezilla từ bản sao lưu trước và mọi thứ đều hoạt động tốt. Tôi hy vọng điều này sẽ hữu ích cho những người khác đang cố gắng sao lưu các ổ đĩa bị lỗi.

LƯU Ý: Các khối xấu của tôi nơi khá gần nhau. Khoảng 4 khối cùng một lúc trong các nhóm phát hiện xấu. Nếu các khối của bạn nằm trên đĩa, một số tệp có thể bị ảnh hưởng. May mắn thay, trong trường hợp của tôi, một tệp 4gb cơ sở dữ liệu lớn chỉ bị ảnh hưởng.


1
Nếu cùng một câu trả lời giải quyết nhiều câu hỏi, rất có thể các câu hỏi là trùng lặp. Nếu vậy, tốt hơn là trả lời một và đánh dấu cái kia là một bản sao có thể. Điều đó tránh sự phình to của các câu trả lời lặp đi lặp lại, và liên kết các câu hỏi giúp người đọc dễ dàng tìm thấy tất cả các câu trả lời.
fixer1234

Không thực sự, nhưng nếu bạn nghĩ như vậy, hãy cho tôi biết để tôi sẽ xóa câu trả lời của tôi. Tôi đã tìm kiếm giải pháp phù hợp ở mọi nơi, nhưng tôi đã tìm ra cách khắc phục sự cố với máy chủ của mình. Có một số câu hỏi tương tự khác, không trả lời được vấn đề của tôi. Cho đến nay tôi tìm thấy khoảng một chục câu hỏi tương tự liên quan đến tất cả. Tôi vừa trả lời một cặp đôi để viết kinh nghiệm của tôi và làm thế nào tôi có thể giải quyết nó. Hãy cho tôi biết nếu bạn muốn tôi xóa câu trả lời của tôi và tôi sẽ rất vui khi làm điều đó. Trân trọng.
Luis H Cabrejo
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.