June 15, 2015

Hướng dẫn phục hồi dữ liệu cho RAID-0 bị hỏng

Hôm qua em OC quá độ nên máy bị crash mất cả BIOS, chả hiểu sao hỏng luôn cả cái RAID-0. Sau 24h vật lộn, cuối cùng em cũng lấy lại được dữ liệu. Em post lên để share với anh em pà con để nếu lỡ có ai trót dại dùng RAID-0 mà bị hỏng, thì cũng còn có cơ hội ít ra cũng lấy lại được ít dữ liệu. Phương pháp em dùng chỉ lấy data từ ổ con của RAID chứ không ghi gì ra RAID và không can thiệp vật lý nên về mặt lý thuyết là không làm ảnh hưởng gì tới dữ liệu còn trên đĩa. Phương pháp mặc dù không thể nói là đơn giản nhưng cũng không phải là chỉ có dân pro mới làm được.

Xin các bác đọc kỹ hết cả bài trước khi áp dụng.

Điều kiện:
  • Đĩa SATA. Em không có kinh nghiệm với ATA nên không chắc là phương pháp này sẽ có hiệu quả.
  • Đĩa cứng chỉ bị hỏng nhẹ, nối vào PC vẫn detect được. V.d. nếu đĩa cháy bo mạch thì pó-tay.com
  • Dữ liệu trên đĩa vẫn còn, chỉ là hỏng RAID-0 nên không lấy ra được. V.d. nếu bác nào format cái đĩa hỏng rồi thì pó-tay.com.
  • Trên đĩa có tối thiểu 1 file ảnh JPEG. File này sẽ được dùng để test coi data ra là đúng hay sai.
  • Có 1 cái PC chạy Windows XP trở lên.
  • Có 1 cái đĩa cứng khác (không nằm trong RAID) - em tạm gọi là đĩa K để phân biệt dù các bác có thể là E F G H hay Z. Dung lượng trống của đĩa K tối thiểu = dung lượng dữ liệu trên RAID x 3. V.d. nếu RAID chứa 2GB phim thì đĩa K phải có tối thiểu 6GB trống. Bản thân kích thước cái RAID là bao nhiêu tương đối không quan trọng bằng lượng dữ liệu trữ trên cái RAID - các bác đọc tiếp sẽ hiểu.
  • 3 phần mềm: Runtime RAID Reconstructor v4, Runtime GetDataBack v4 (bản cho NTFS hoặc FAT tùy vào cái RAID bác dùng cái gì) - 2 cái này không free. Và 1 chương trình xem ảnh có thể xem được ảnh JPEG bị hỏng. Em dùng Irfan View.

00. Chuẩn bị
Gắn 2 cái đĩa cần phục hồi vào PC ở cổng SATA khác hoặc gắn vào máy khác. Hoặc tắt RAID để 2 cái đĩa này không còn là một phần của RAID nữa.
Quan trọng: tuyệt đối không xóa RAID! V.d. với main Asus P6t thì tắt RAID = vào bios chuyển SATA từ RAID sang AHCI (hoặc IDE). Còn xóa RAID là trong lúc boot, bấm Ctrl-I chọn delete RAID.
Quan trọng 2: Khi mở máy lên, nếu Win hỏi có "initialise" cái đĩa hay cái gì tương tự thì bấm No! Phương châm ở đây là không được ghi/xóa bất kỳ cái gì vào đĩa RAID hỏng. Initialise sẽ ghi một số dữ liệu vào đĩa và sẽ làm mọi thứ phức tạp hơn.
Quan trọng 3: nếu cắm vào PC khác thì phải lập lại thứ tự cắm như trong RAID. V.d. nếu đĩa 1 cắm vào SATA0, đĩa 2 cắm vào SATA3 thì khi cắm vào PC mới nếu đĩa 1 cắm vào SATA2 thì đĩa 2 tuyệt đối không thể cắm vào SATA0 hoặc SATA1. Điều này sẽ làm mọi chuyện đơn giản hơn nhiều cho các bác.

01. Cài RAID Reconstructor, GetDataBack và chương trình xem JPEG
Cái này dễ, em khỏi hướng dẫn. Chỉ lưu ý là khi chạy 2 chương trình đầu, các bác phải nhấp nút phải, chọn Run As Administrator. Cái này rất quan trọng, nếu không chương trình không đọc dữ liệu trên đĩa được.
Khỏi nói các bác cũng hiểu là không được cài chương trình vào đĩa RAID hỏng.

02. Chạy RAID Reconstructor
Trong mục RAID type chọn Raid-0.
#drives: nhập số đĩa con của RAID vào.
Bấm vào nút ... rồi chọn đĩa phù hợp. Thứ tự đĩa hiển thị phụ thuộc vào thứ tự cổng SATA mà các bác gắn đĩa. (v.d. đĩa gắn vào cổng SATA0 sẽ nằm trên đĩa gắn vào cổng SATA1). Nếu không thấy đĩa nào có nghĩa là các bác chưa Run As Administrator.

Thứ tự đĩa được chọn phải đúng như thứ tự đĩa đã được lắp trong RAID. Nếu các bác làm theo Quan trọng 3 ở trên thì mọi chuyện sẽ dễ hơn ở đây vì các bác biết đĩa nào phải nằm trước đĩa nào nằm sau. Với máy em, em biết 2 cái đĩa con của RAID là đĩa 129 và 130 theo thứ tự đó (128 là đĩa Win). Nếu các bác quên thứ tự và không có đánh dấu thì tin buồn là mọi chuyện sẽ phức tạp hơn rất nhiều. Nếu mà như vậy, các bác cứ chọn đại thứ tự nào cũng được rồi tiếp tục bước 03.

Ảnh đã được thu nhỏ. Vui lòng nhấn vào đây để xem kích thước thật 970x716.

02.5 Tạo image cho đĩa
Thay vì chọn đĩa trực tiếp, các bác có thể tạo image. Cách này an toàn hơn vì các bước sau đòi hỏi phải test dữ liệu. Nếu có file image thì sẽ không cần đụng tới mấy cái đĩa hỏng nữa.
Vào Tools -> Create Single Image File...
Trong Select the source drive, chọn cái đĩa mà bác muốn lấy dữ liệu ra.
Select destination file, ghi ra 1 file trên đĩa K. Nhớ đánh số theo thứ tự đĩa trên RAID.
Nhớ chọn Compressed. Sẽ chậm hơn nhưng kích thước file sẽ nhỏ hơn hẳn nếu RAID không bị full. Vì phần còn lại của dữ liệu sẽ là 0-bit nên nén nhanh và tiết kiệm. (Nếu đĩa không bị phân mảnh thì kích thước file sẽ nhỏ nhất).
Bấm Start.
Làm lại bước 02.5 cho tất cả những đĩa con của RAID.

Ảnh đã được thu nhỏ. Vui lòng nhấn vào đây để xem kích thước thật 970x716.

Sau đó bấm nút ... rồi chọn Select file (image) rồi mở các file image. Nhớ lưu ý thứ tự đĩa cho đúng (đó là lý do vì sao các bác phải đánh số cho file image).

03. Chọn start sector và block size
Đây là bước vô cùng quan trọng.
Nhập start sector vào Start sector of the RAID... (trong hình em chọn 0). Thông thường với hardware RAID (v.d. dùng RAID trên main/card) thì số này là 0. Với software RAID thì số này là 63 hoặc 128. Cái này có thể test thử được. Các bác đọc tiếp sẽ hiểu.
Nhập block size (còn gọi là Strip size hoặc Stripe size) vào ô Block size. Thế lấy số này ở đâu? Nếu các bác xem thông tin của cái RAID thì chắc chắn sẽ thấy số Strip size. (Tips: khi cài RAID-0 nên tìm hiểu và ghi lại số này). Số này luôn là một số mũ của 2 (v.d. 8, 16, 256, v.v...). 256 block size tương đương với 128KB; 16 block size tương đương 8KB v.v.. Nếu số này sai thì chắc chắn 100% dữ liệu ra sẽ vô nghĩa.
Bấm Open drives.

Ảnh đã được thu nhỏ. Vui lòng nhấn vào đây để xem kích thước thật 970x716.

Nếu các bác không biết cả 2 số trên là bao nhiêu thì tin buồn là các bác sẽ mất rất nhiều thời gian để phục hồi dữ liệu. Tin ít buồn hơn là vẫn có thể làm được. Xin đọc tiếp 03.5.

03.5 Analyse
Cứ nhập đại 0 và 256 vào 2 ô trên. Rồi bấm Open drives.
Ở cái ô có số 2 to đùng, bấm Analyse rồi bấm Next trên cửa sổ kế.

Ảnh đã được thu nhỏ. Vui lòng nhấn vào đây để xem kích thước thật 970x716.

Chương trình sẽ tự động chọn một số tham số thích hợp. Như ở đây, start sector là 1 và 5, block size là 16KB. Các bác nhập thêm 0, 63 và 128 (hoặc bất kỳ số nào các bác "nghi ngờ" là đúng vào start sectors. Chọn hết tất cả các block sizes (có thể add them 8 và 512 để test).
Lưu ý số trong ô "Numbers of Sectors to probe".
Rồi bấm Next.

Ảnh đã được thu nhỏ. Vui lòng nhấn vào đây để xem kích thước thật 970x716.

Chương trình sẽ test thử dữ liệu vào nói bác biết số bao nhiêu là đúng và thứ tự đĩa phù hợp. Mặc dù không phải 100% là sẽ có kết quả hoặc kết quả đúng.
Như ở ví dụ của em, kết quả có một dòng chữ đỏ to đùng "THIS RESULT IS NOT SIGNIFICANT!". Có nghĩa là chương trình hoàn toàn xác định được lựa chọn nào là đúng mặc dù block size 256 và start sector 0 là giá trị đúng. Có thể vì RAID của em hỏng khá nặng.

Ảnh đã được thu nhỏ. Vui lòng nhấn vào đây để xem kích thước thật 970x716.

Trong trường hợp này các bác có thể test như sau:
Chọn 1 số block size thông dụng (thường là 64, 128 và 256). Nếu biết block size là bao nhiêu thì nhập số đấy.
Chọn một số start sector thông dụng (v.d. 0, 1, 5, 63, 128). Nếu biết thì tất nhiên là nhập số đó vào.
Number of sectors to probe: chọn 1 giá trị là số mũ của 2 và phải lớn hơn block size lớn nhất 8 hoặc 16 lần. Trong trường hợp của em, em dùng 4096 (16x256).
Bấm Next. Nếu vẫn bị NOT SIGNIFICANT thì chọn giá trị khác.
Nếu may mắn, sau vài lần thử, chương trình sẽ chọn ra được thứ tự đĩa đúng và giá trị start sector và block size "tương đối đúng" và không bị NOT SIGNIFICANT. Các bác chỉ việc bấm nút tròn chọn cái đấy và bấm Finish. Lựa chọn chỉ là tương đối đúng vì như trong trường hợp của em, chương trình cho start sector là 1 nhưng thật ra 0 mới đúng. Tuy nhiên vậy cũng là quá đủ. Các bác đọc tiếp sẽ hiểu.

Có thể thấy rõ, nếu từ đầu các bác biết được cả 3 tham số, hoặc thậm chí chỉ 1 hoặc 2 thì mọi chuyện sẽ nhanh và đơn giản hơn.

04. Test dữ liệu
Trong ô số 3 to đùng, chọn Image, nhập đường dẫn (đĩa K!) và tên file để ghi kết quả (nhớ ghi thêm số start sector và block size vào tên file để tiện test v.d. 0output256 hoặc 1output256). Chọn Compressed rồi bấm Copy. Nếu có warning bảo là file is too big, cứ bấm Ignore, miễn là đĩa K còn khoảng 2x dữ liệu trên RAID. (v.d. data trên RAID 2GB thì K còn 4GB trống là ok - lượng data trên đĩa nhá, không phải kích thước của đĩa RAID).

Ảnh đã được thu nhỏ. Vui lòng nhấn vào đây để xem kích thước thật 970x716.

Chờ tối thiểu 1% rồi bấm Cancel. Cái quan trọng ở đây là trong file output có dữ liệu hoàn chỉnh của file JPEG mà ta sẽ dùng để test. Nếu file nằm ở cuối đĩa thì em xin chia buồn là các bác sẽ phải chạy cho hết 100%. Ở trường hợp của em, file JPG nằm ở đầu đĩa nên chỉ cần 1%.

Ảnh đã được thu nhỏ. Vui lòng nhấn vào đây để xem kích thước thật 970x716.

Bây giờ ta chạy GetDataBack. Bấm Next.

Ảnh đã được thu nhỏ. Vui lòng nhấn vào đây để xem kích thước thật 917x744.

Bấm vào chữ Load more... ở cạnh Image files rồi mở file output mới tạo ra.

Ảnh đã được thu nhỏ. Vui lòng nhấn vào đây để xem kích thước thật 917x744.

Bấm vào See Current Options -> Change Options, tắt Quick Scan đi.

Ảnh đã được thu nhỏ. Vui lòng nhấn vào đây để xem kích thước thật 1439x744.

Bấm Next. Chương trình sẽ scan file output và tìm File System. Nếu file system hoàn chỉnh, sẽ có đèn xanh. Vì file ta chưa chạy hết 100% nên nhiều khả năng sẽ chẳng thấy gì. Các bác bấm vào "Show All" để thấy "đèn đỏ". Chọn cái nào? Ưu tiên theo thứ tự: đèn xanh > đèn đỏ, kích thước trong giấu () gần với kích thước của file output nhất (không phải kích thước đĩa RAID nhá!) và cái số sau chữ "at sector" nhỏ nhất. Bấm Next. Chờ xí cho chương trình đọc file system.

Ảnh đã được thu nhỏ. Vui lòng nhấn vào đây để xem kích thước thật 991x754.

Chọn file JPEG để test. Rồi bấm copy để ghi ra đĩa K

Ảnh đã được thu nhỏ. Vui lòng nhấn vào đây để xem kích thước thật 991x754.

Em sử dụng Irfan View để mở file JPEG. Nếu mở lên không đọc được thì thường là do block size của bác bị sai và/hoặc thứ tự đĩa bị sai và/hoặc dữ liệu của file JPEG không phục hồi đủ (đó là lý do vì sao em chạy tối thiểu 1% vì em biết file JPEG của em nằm ở trong vòng 1% đầu của đĩa). Các bác nên thử nhiều file JPEG vì nhiều khi block size và thứ tự đĩa đúng nhưng không phục hồi hết hoặc phần header bị shift sai nên không mở được.

Nếu 3 cái đấy đúng, chỉ bị start sector sai thì sẽ bị như sau (v.d.)

Ảnh đã được thu nhỏ. Vui lòng nhấn vào đây để xem kích thước thật 1600x600.

Đừng xóa file JPEG này vội (em tạm gọi file này là JPEG1). Các bác tăng/giảm số start sector 1 đơn vị (v.d. 1 thành 2) rồi thử lại. Save cùng file JPEG đấy từ output vào đĩa K nhưng đổi tên khác rồi so sánh với JPEG1.

Dưới đây là ví dụ 3 ảnh JPEG tương ứng với start sector 2, 1 và 0. 0 là lựa chọn đúng.

Ảnh đã được thu nhỏ. Vui lòng nhấn vào đây để xem kích thước thật 1600x600.


Ảnh đã được thu nhỏ. Vui lòng nhấn vào đây để xem kích thước thật 1600x600.


Ảnh đã được thu nhỏ. Vui lòng nhấn vào đây để xem kích thước thật 1600x600.

Các bác nhìn kỹ mấy cái vệt ngang. Mấy cái vệt đó nhỏ dần khi em giảm start sector từ 2 xuống 1 rồi xuống 0. Ở 0, mọi thứ chính xác nên 0 là đúng. Tại sao lại như vậy? Vì mỗi lần các bác chuyển start sector 1 đơn vị thì 512 bytes trong file JPEG bị chuyển sai bị trí (vệt ngang!). Dữ liệu còn lại vẫn đúng nên vẫn hiển thị được. Dữ liệu bị dịch chuyển càng nhiều thì vệt ngang càng dài.

05. Phục hồi
Nếu test data ra được số start sector, block size và thứ tự đĩa đúng thì các bác làm lại step 04, chỉ là cho chạy hết 100%. Mở file output và chép hết những file cần phục hồi ra đĩa K. Nếu các bác tính nhẩm: giả sử đĩa 100% không bị phân mảnh và toàn bộ 0-bit ở cuối đĩa được nén tốt thì 1/3 dung lượng trống của đĩa K sẽ dùng để tạo image ở bước 2.5, 1/3 cho cái output 100% và 1/3 còn lại cho dữ liệu phục hồi. Đó là lý do vì sao dung lượng trống đĩa K tối thiểu phải bằng 3x dung lượng dữ liệu trong RAID.

Đó là những bước em đã làm để phục hồi lại dữ liệu. Hi vọng bài viết sẽ giúp ích được cho những ai xui xẻo rơi vào hoàn cảnh tương tự như em. 

Lưu ý:
Đây là phương pháp em dùng và đã lấy lại được toàn bộ dữ liệu trong 1 cái RAID 0 1.8TB bị hỏng (2 đĩa 1TB gộp lại).
Em không thể đảm bảo là nếu các bác làm theo sẽ 100% lấy lại được hết dữ liệu bị hỏng. Trường hợp khác nhau, kết quả sẽ khác.
Nếu có bất kỳ hậu quả xấu gì (dù liên quan trực tiếp, gián tiếp, thậm chí không có liên quan gì tới hướng dẫn trong bài viết này) thì em cũng không chịu trách nhiệm

0 comments:

Post a Comment