PHỤC HỒI DỮ LIÊU: DỄ HAY KHÓ (PHẦN 4)

Sử dụng công cụ Ddrescue để sao chép dữ liệu từ ổ cứng bị bad.

Khi ổ cứng bị bad sector, đặc biệt là bị bad ở sector 0, việc sao chép dữ liệu từ ổ cứng đó sang một thiết bị lưu trữ khác mà không có công cụ chuyên dụng là một công việc rất khó khăn, đặc biệt nếu việc sao chép được tiến hành trên hệ điều hành Windows. Trên thực tế, khi không có công cụ chuyên dụng phù hợp, ta có thể sử dụng một số phần mềm chuyên dụng dùng để sao chép, trích xuất dữ liệu từ ổ cứng bị bad. Một trong những phần mềm đó là ddrescue.

Ddrescue là một ứng dụng được viết trên hệ điều hành Linux, ứng dụng này có thể được tải và đặt trực tiếp vào hệ điều hành hoặc sử dụng một số hệ điều hành chuyên dụng có sẵn ứng dụng ddrescue trong nó như Parted Magic.

Để thực hiện việc sao chép, trích xuất, xử lý dữ liệu từ một ổ cứng bị bad, ta có thể sử dụng ddrescue theo ba bước sau:

B1. Tạo tệp tin hình ảnh từ đĩa cứng bị lỗi (bad sector)

Trên hệ điều hành Unix/Linux, các thiết bị lưu trữ dữ liệu (HDD, USB flash disk, cdrom, dvdrom, v.v…) được đại diện là các tệp tin trong thư mục /dev. Ổ đĩa thường được thể hiện bằng tiền tố “sd”, tiếp theo là một chữ cái theo tự bảng chữ cái bắt đầu bằng “a”. Có thể hiểu như sau: thiết bị lưu trữ đầu tiên sẽ được /dev/ sda, thiết bị lưu trữ tiếp theo là /dev/sdb và tiếp tục như vậy với các thiết bị lưu trữ tiếp theo. Ngoài ra, phân vùng đầu tiên của thiết bị lưu trữ cụ thể được đại diện bằng một số gia tang. Cụ thể như sau: phân vùng đầu tiên của thiết bị lưu trữ thứ nhất: /dev/sda1, phân vùng thứ hai của thiết bị lưu trữ thứ nhất: /dev/sda2 và tương tự với các phân vùng tiếp theo.

Trong nội dung của bước này, việc cố gắng tạo hình ảnh một ổ đĩa đầy đủ (cụ thể là /dev/sda) trong đó bao gồm tất cả mọi thứ (mbr, bảng FAT, tất cả các phân vùng) hoặc chỉ cần tạo hình ảnh một phân vùng duy nhất (cụ thể là /dev/sda2). Nếu người dùng chỉ cần khôi phục dữ liệu từ một phân vùng Windows, ta nên tạo tệp tin ảnh với phân vùng cụ thể đó. Nếu người dùng cần khôi phục toàn bộ ổ đĩa, việc tạo tệp tin ảnh với cả ổ đĩa là điều cần thiết phải làm. Để có thể kiểm tra danh sách thiết bị lưu trữ dữ liệu hiện có trên hệ thống, ta sử dụng lệnh sau trong terminator:

“ # lsblk -o name, label, size, fstype, model”

Khi đó, trong Parted Magic sẽ hiện ra hình ảnh sau:

Ta có thể thấy có hai ổ cứng kèm theo:

+ /Dev/sda, trong đó có hai phân vùng là /dev/sda1 và /dev/sda2. Đây là ổ cài đặt Windows 8 trong máy tính

+ /Dev/sdb, đó là ổ đĩa USB và có một phân vùng duy nhất: /dev/sdb1.

Tại thời điểm này, ta phải lưu ý đến tên của ổ đĩa hoặc phân vùng mà người dùng muốn khôi phục và tên và ổ đĩa mà ta muốn lưu trữ hình ảnh khôi phục, việc này đơn giản nhưng quan trọng, tránh việc ghi đè dữ liệu dẫn đến không thể phục hồi. Lưu ý, trong một số trường hợp vị trí, tên ổ có thể bị thay đổi sau khi khởi động lại, do đó cần phải kiểm tra kỹ trước khi tiến hành bất cứ công việc đọc, ghi dữ liệu nào.

Trong trường hợp này, ta sẽ tạo tệp tin ảnh của ổ đĩa chứa hệ điều hành Windows 8 vào ổ đĩa USB.

Mở ‘File Manager” trên Parted Magic, kiểm tra ổ đĩa USB và tạo thư mục lưu trữ tệp tin ảnh hệ điều hành Windows và logfile quá trình tạo ảnh. Lưu ý rằng:

+ Không duyệt tệp tin trên ổ cứng bị bad ở đây là ổ cứng chứa hệ điều hành Windows 8;

+ Dung lượng ổ đĩa cứng dùng để lưu trữ dữ liệu tạo ảnh cần phải lớn hơn hoặc bằng dung lượng ổ đĩa cứng hoặc phân vùng cần phục hồi

Hãy để File Manager duyệt tại vị trí cần lưu trữ ảnh đĩa, chọn “File -> Terminal”.

Tại cửa sổ Terminal mới, sử dụng cú pháp lệnh:

“# ddrescue -d -r3 /dev/sda test.img test.logfile”

Cú pháp lệnh trên có thể hiểu như sau:

+ d: yêu cầu ddrescue truy cập trực tiếp vào đĩa và bỏ qua kernel’s cache

+  r3: yêu cầu ddrescue thử đọc lại bad sector 3 lần trươc khi tiếp tục. Lưu ý, trong lần đầu tiên tiến hành đọc, ta có thể bỏ qua tùy chọn này để tránh lãng phí thời gian đọc trên những bad sector đó. Ta luôn có thể sử dụng logfile để quay trở lại và thử đọc những bad sector này sau khi có được hình ảnh từ lần sao chép đầu tiên.

+ /dev/sda là ổ đĩa, ở đây ta khôi phục toàn bộ đĩa cứng. Nếu chỉ muốn khôi phục một phân vùng, ta có thể sử dụng /dev/sda1 hoặc /dev/sda2 để thay thế.

+ test.img là tên tệp tin ảnh.

+ test.logfile là tên của logfile. Lưu ý: luôn luôn sử dụng một logfile khi tiến hành tạo tệp tin ảnh. Điều này cho phép ta khôi phục lại hình ảnh bị gián đoạn trong trường hợp rời máy tính, mất điện v.v… hoặc để thử đọc lại vị trí bị bad sector. Nếu không có logfile, ta sẽ phải tiến hành lại từ đầu một lần nữa.

Việc tạo tệp tin ảnh sẽ mất rất nhiều thời gian, đặc biệt với một ổ đĩa lớn và nhiều bad sector thời gian phục hồi có thể tính bằng ngày.

B2. Khôi phục và sao chép, nhân bản hình vào đĩa cứng mới

Sau khi việc tạo tệp tin ảnh từ bước 1 hoàn tất, ta sẽ tiến hành nhân bản hình ảnh ổ đĩa cứng bị bad vào một ổ đĩa cứng mới (ổ cứng mới luôn phải có dung lượng lớn hơn dung lượng ổ cứng cần phục hồi).

Kiểm tra tính toàn vẹn của các tệp tin trong ảnh: Khi ddrescue đã hoàn tất công việc tạo tệp tin ảnh, vẫn có một số lượng đáng kể các tệp tin bị hỏng, lỗi, sai sót do bad sector từ ổ cứng cần phục hổi. Nếu có nhiều lỗi trong quá trình tạo tệp tin ảnh, việc sử dụng các ứng dụng như CHKDSK và SFC trên ổ đĩa mới có thể giúp được trong một số trường hợp. Tuy nhiên, nếu lỗi quá nhiều, ta chỉ có thể cài đặt mới lại hệ điều hành và tiến hành khôi phục lại dữ liệu (thực hiện tại bước 3). Như ta có thể thấy, trong trường hợp này ddrescue không phục hồi 512byte. Tùy thuộc vào 512 byte này thuộc vào tệp tin nào mà đây có phải là vấn đề hay không. Nếu 512byte này nằm trong tệp tin ảnh JPEG, tệp tin ảnh có thể bị mờ, bị mất một vài chỗ hoặc không xem được. Nếu 512 byte này nằm trong một cơ sở dữ liệu nào đó, toàn bộ nội dung cở sở dữ liệu sẽ hỏng.

Nếu mọi thứ khi tạo tện tin ảnh đều tốt, gỡ ổ cứng lỗi ra khỏi hệ thống, lắp đặt một ổ đĩa cứng mới, kết nối ổ đĩa USB chứa tệp tin ảnh và khởi động lại Parted Magic. Duyệt đến tệp tin ảnh trên ổ đĩa USB và mở terminal “File -> Terminal”. Đến đây ta có thể có một số tùy chọn như sau:

+ Sử dụng lệnh *.nix: lệnh dd:

“# dd if=test.img of=/dev/sda”

Trong trường hợp này, cần phải lưu ý kỹ tên và phân vùng của thiết bị lưu trữ, đặc biệt là khi máy tính đã được khởi động lại, nó có thể khác lúc đầu. Lệnh này sẽ mất một khoảng thời gian khá dài và trong lúc đó dd không cung cấp bất kỳ một thông tin nào liên quan đến tiến độ thực thi lệnh nên cần kiên nhẫn. Khi quá trình này hoàn tất, hệ thống sẽ khởi động lại và chúng ta có thể tiếp tục tiến trình khôi phục dữ liệu.

+ Sử dụng ddrescue để đặt dữ liệu hình ảnh vào ổ cứng mới

“ # ddrescue -f test.img /dev/sda restore.logfile”

Lưu ý, luôn sử dụng logfile và cần đặt tên khác với logfile khi tạo file ảnh để tránh nhầm lẫn.

* Nhân bản trực tiếp vào đĩa cứng mới

Trong một số trương hợp, ta có thể tiến hành nhân bản (clone) một cách trực tiếp dữ liệu từ hai ổ cứng sang nhau: ổ cứng bị bad sang ổ cứng tốt.

Tương tự như trên, ta cần xác định tên, loại, dung lượng, phân vùng của ổ đĩa cứng. Lệnh vẫn như sau:

“ # lsblk -o name, label, size, fstype, model”

Trong trường hợp này, giả sử /dev/sda là ổ cứng cũ, /dev/sdb là ổ cứng mới, ta tiến hành như sau:

“ # ddrescue -d -f -r3 /dev/sda /dev/sdb /media/PNY_usb/rescue.logfile”

Trong trường hợp này, cần sử dụng một ổ đĩa thứ ba (usb flash) để lưu trữ các logfile. Cần lưu ý, có thể để tệp tin logfile này ở bất cứ đâu trừ khu vực hai ổ cứng nhân bản sang nhau.

B3. Làm việc với tệp tin hình ảnh

Việc sử dụng ddrescue để tạo tệp tin ảnh phục vụ cho mục đích khôi phục tệp tin thay vì để thay thế cho một đĩa cứng lỗi là công việc thường xuyên phải tiến hành. Làm thế nào để có thể tiến hành lấy dữ liệu từ tệp tin ảnh được ddrescue tạo ra?

Trên thực tế, có nhiều cách thức để làm việc này. Có thể sử dụng một số công cụ phục hồi dữ liệu hỗ trợ các tệp tin ảnh như R-Studio là một ví dụ. Một cách thức khác là sử dụng Linux (hoặc môi trường tương tự như Parted Magic) để gắn kết các tệp tin hình ảnh bằng cách sử dụng lệnh mount. Để gắn kết một cách thành công hình ảnh, ta cần phải biết cụ thể các tệp tin hình ảnh của một phân vùng hay một đĩa cứng chứa nhiều phân vùng.

Trường hợp 1: Làm việc với các tệp tin hình ảnh có chứa một phân vùng duy nhất.

Khời động Parted Magic với tệp tin hình ản được để sẵn trong ổ đĩa USB, ta cần phải tạo ra một vùng thích hợp để gắn kết các tệp tin hình ảnh vào ổ đĩa cứng. Sử dụng “File Manager”, duyệt đến vị trí hình ảnh được lưu trữ. Cụ thể như hình ảnh sau:

Ta có thể thấy, tệp tin hình ảnh có tên partition.img được lưu trữ trên ổ cứng USB. Tệp tin ảnh này chỉ chứa phân vùng Windows 8(/dev/sda1 chứ không phải dev/sda).

Tiếp theo, ta tạo hai thư mục mới trên ổ đĩa USB, một tên “mountpoint” để tạm thời gắn kết các tệp tin hình ảnh và một tên “recovery” để sau chép và lưu trữ tệp tin phục hồi từ hình ảnh gắn kết.

Tiếp theo, sử dụng lệnh mount ở trong terminal bằng cách sử dụng “file -> terminal” và nhập lệnh sau:

“ # mount -o loop,ro partition.img mountpoint”

Lệnh này sẽ tạm thời gắn kết các tệp tin hình ảnh trong thư mục “mountpoint” mà ta đã tạo ra. Việc sử dụng “ro” gắn kết các tệp tin hình ảnh giúp các tệp tin chỉ đọc mà không bị ghi hay thay đổi.

Sau khi tiến hành lệnh xong, duyệt đến thư mục chúng ta tạo ra và ta sẽ thấy phân vùng windows 8 vừa được phục hồi.

Tiến hành sao chép các tệp tin ta cần vào thư mục “recovery” mà ta tạo trước đó. Khi hoàn tất, ta cần tháo gắn kết tệp tin hình ảnh bằng lệnh:

“ # umount mountpoint”

Trường hợp 2: làm việc với các tệp tin hình ảnh có chứa nhiều phân vùng

Nếu ta cố gắng gắn kết một tệp tin hình ảnh có chứa toàn bộ đĩa với nhiều phân vùng sử dụng bằng phương pháp trên, ta chắc chắn sẽ gặp lỗi. Hình ảnh dưới dây thể hiện những gì xảy ra khi ta cố gắng gắn kết một tệp tin hình ảnh (test.img) có chứa nhiều phân vùng.

Có một cách thức khác để gắn kết các phân vùng riêng trong tệp tin ảnh. Ta cần thực hiện như sau:

“ # parted test.img

Unit

B

Print

Sau đó ta sẽ có hình ảnh sau:

Ta có thể thấy, hình ảnh này thể hiện hai phân vùng, một phân vùng có tệp tin hệ thống là fat32, một phân vùng có tệp tin hệ thống là ntfs: đây là phân vùng chứa hệ điều hành Windows.

Gõ “quit” và thoát khỏi dấu nhắc lệnh, sử dụng lệnh mount để tiến hành gắn kết tệp tin hình ảnh.

“ # mount -o loop,ro,offset=7355760640 test.img mountpoint”

Khi thực hiện lệnh trên, ta sẽ có toàn bộ hệ thống tệp tin trong phân vùng chứa hệ điều hành windows nằm trong thư mục mountpoint.

Ta có thể thấy, sẽ dễ dàng hơn rất nhiều nếu sử dụng những phần mềm phục hồi như R-Studio chẳng hạn. Nó sẽ giúp cho ta kiểm tra toàn bộ hình ảnh ổ đĩa hoặc tiến hành sao chép, phục hồi tệp tin theo yêu cầu.

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *