Quản Trị Mạng - Bài viết sau sẽ hướng dẫn bạn cách khôi phục phân vùng ổ đĩa cứng trong hệ điều hành Ubuntu
1. Tình huống giả định sử dụng trong bài viết, xảy ra với trường hợp laptop cài hệ điều hành Microsoft Windows XP, mọi việc bắt đầu xảy ra khi 1 phân vùng ổ cứng bị bad. Phương án cứu hộ đưa ra là sử dụng bộ đĩa Ubuntu 9.10 Karmic Koala Desktop để sao lưu dữ liệu, nhận biết các lỗi vật lý và cố gắng phục hồi những lỗi này.
2. Quá trình sao lưu
- Chúng ta không biết có chuyện gì đã xảy ra với ổ cứng, vì vậy cần phải làm thao tác sao lưu toàn bộ dữ liệu của ổ cứng thành file ảnh trước khi bắt tay vào sửa chữa. Từ cửa sổ dòng lệnh, tạo thư mục ở đường dẫn /media/server trên đĩa cứu hộ từ chiếc laptop để kết nối 1 phân vùng hoặc 1 chiếc ổ cứng khác để chứa file sao lưu
- Hệ thống server trước kia đã được cấu hình với tính năng chia sẻ NFS, nhưng chiếc đĩa CD cứu hộ lại chưa được cài đặt sẵn NFS client. Tính năng hỗ trợ của Ubuntu live CD có thể tải trực tiếp và cài đặt chương trình từ hệ thống:
LiveCD$ sudo apt-get install portmap nfs-common
- Quá trình cài đặt nfs client kết thúc, bây giờ chúng ta có thể kết nối phân vùng ổ cứng 1 cách an toàn:
LiveCD$ sudo mount server:/storage/share /media/server
Bây giờ thư mục chia sẻ trên server trông giống như 1 phân vùng được cố định tại /media/server:
LiveCD$ sudo fdisk -l
Disk /dev/sda: 250.0 GB, 250000000000 bytes
255 heads, 63 sectors/track, 30394 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Disk identifier: 0x00000001
Device Boot Start End Blocks Id System
/dev/sda1 * 1 16708 134206978+ 7 HPFS/NTFS
fdisk -l chỉ ra ổ cứng được cố định tại /dev/sda và ở đó còn có 1 phân vùng ổ cứng định dạng NTFS nữa. Chúng ta có thể sử dụng lệnh dd để tạo file ảnh của ổ cứng. Chú ý rằng câu lệnh dd cho phép chúng ta đọc và ghi dữ liệu trực tiếp lên thiết bị lưu trữ, bất cứ câu lệnh nào không phù hợp cũng có thể xóa bỏ toàn bộ dữ liệu trên ổ cứng, vì vậy hãy thật cẩn thận.
LiveCD$ dd if=/dev/sda of=/media/server/laptop_disk.img
Thông thường, dd cần 1 khoảng thời gian khá lâu để tạo file ảnh, nhưng chúng ta cũng thường xuyên nhận được thông báo lỗi ổ cứng và dd đã tự động bỏ qua. Thật may mắn thay vì có chức năng ddrescue, thực ra là 2 chương trình ddrescue khác nhau, nhưng ở đây chúng ta sẽ sử dụng GNU ddrescue, với chức năng tương tự như dd, ngoại trừ đối với những trường hợp ổ cứng bị lỗi nặng và nhiều triệu chứng khác. ddrescue không được tích hợp sẵn trên live CD, và cũng không có trên nhà cung cấp APT, vì vậy chúng ta phải tải trực tiếp từ Internet, đặt vào thư mục đã thiết lập chia sẻ nfs sẵn và bắt đầu cài đặt từ đó:
LiveCD$ sudo dpkg -i gddrescue_1.11-1_i386.deb
LiveCD$ sudo ddrescue -v /dev/sda mary_inspiron_6000.img mary_inspiron_6000.log
Kết thúc câu lệnh trên, ddrescue đã hoàn tất quá trình tạo file ảnh của ổ cứng. Tiếp theo, chúng ta sẽ tạo thêm 1 phiên bản dự phòng của file ảnh này, để phòng trường hợp lỗi xảy ra trong các quá trình khắc phục lỗi tiếp theo, nếu có bất kỳ vấn đề gì xảy ra, chúng ta có thể quay lại bước này để giảm thiểu rủi ro. Tất cả các thao tác đều được thực hiện trên file ảnh mary_inspiron_6000.img, còn file gốc mary_inspiron_6000.img.orig sẽ được giữ nguyên:
LiveCD$ cp -p mary_inspiron_6000.img mary_inspiron_6000.img.orig
3. Quá trình phục hồi
Những bước thực hiện khá phức tạp, vì vậy các bạn hãy cẩn thận ngay từ bước đầu tiên. Kết nối file ảnh mary_inspiron_6000.img thành ổ D trên 1 hệ thống máy ảo sử dụng hệ điều hành Microsoft Windows XP được thiết lập sẵn.
Dùng lệnh diskpart để hiện thị đầy đủ thông tin về các phân vùng trên hệ thống máy ảo:
C:\Documents and Settings\sfrizzell>diskpart
DISKPART> list diskDisk ### Status Size Free Dyn Gpt
-------- ---------- ------- ------- --- ---
Disk 0 Online 12 GB 0 B
Disk 1 Online 56 GB 0 B
DISKPART> select disk 1
Chúng ta lựa chọn Disk 1 để làm việc:
DISKPART> detail disk
QEMU HARDDISK
Disk ID: 41AB2316
Type : IDE
Bus : 0
Target : 1
LUN ID : 0
Volume ### Ltr Label Fs Type Size Status Info
---------- --- ----------- ----- ---------- ------- --------- --------
Volume 2 D NTFS Partition 56 GB Healthy
Sử dụng tiện ích chkdsk.exe để kiểm tra các file hệ thống trên phân cùng logical của hệ điều hành Windows XP Professional:
C:\Documents and Settings\sfrizzell>chkdsk /r d:
The type of the file system is NTFS.
CHKDSK is verifying files (stage 1 of 5)...
File verification completed.
CHKDSK is verifying indexes (stage 2 of 5)...
Correcting error in index $I30 for file 56146.
Correcting error in index $I30 for file 56146.
Sorting index $I30 in file 56146.
Index verification completed.
CHKDSK is recovering lost files.
Recovering orphaned file 6A82D2~1 (56129) into directory file 56146.
Recovering orphaned file 6A82D25B245A4B1D94281AC1E2272B77 (56129) into directory
file 56146.
Recovering orphaned file 3BEA32~1.DB3 (56145) into directory file 56146.
Recovering orphaned file 3bea32c5-d9da-4696-a242-338575562c22-inq.db3 (56145) in
to directory file 56146.
Recovering orphaned file 3BEA32~1.XML (56147) into directory file 56146.
Recovering orphaned file 3BEA32C5-D9DA-4696-A242-338575562C22.xml (56147) into d
irectory file 56146.
Recovering orphaned file 3BEA32~2.DB3 (56149) into directory file 56146.
Recovering orphaned file 3bea32c5-d9da-4696-a242-338575562c22-preinq.db3 (56149)
into directory file 56146.
Recovering orphaned file 3BEA32~3.DB3 (56150) into directory file 56146.
Recovering orphaned file 3bea32c5-d9da-4696-a242-338575562c22-errors.db3 (56150)
into directory file 56146.
Recovering orphaned file manifest.db3 (56151) into directory file 56146.
CHKDSK is verifying security descriptors (stage 3 of 5)...
Security descriptor verification completed.
CHKDSK is verifying Usn Journal...
Usn Journal verification completed.
CHKDSK is verifying file data (stage 4 of 5)...
File data verification completed.
CHKDSK is verifying free space (stage 5 of 5)...
Free space verification is complete.
CHKDSK discovered free space marked as allocated in the
master file table (MFT) bitmap.
Correcting errors in the Volume Bitmap.
Windows has made corrections to the file system.
58597055 KB total disk space.
32117188 KB in 48418 files.
18992 KB in 6501 indexes.
264 KB in bad sectors.
131935 KB in use by the system.
65536 KB occupied by the log file.
26328676 KB available on disk.
4096 bytes in each allocation unit.
14649263 total allocation units on disk.
6582169 allocation units available on disk.
Sau khi Chkdsk hoàn tất quá trình kiểm tra và sửa chữa phân vùng, bây giờ chúng ta sẽ quay lại bước trên khi bắt đầu thực hiện quá trình sao lưu, sử dụng dd thông qua cơ chế chia sẻ nfs để sao chép file ảnh đã được sửa chữa vào 1 ổ cứng khác. Kiểm tra quá trình khởi động từ phân vùng được sửa chữa này và mọi việc đã thành công.
Bên cạnh đó, Microsoft còn cung cấp thêm 1 công cụ để mở rộng, kế thừa các phân vùng ổ đĩa. diskpart sẽ “dồn” các phân vùng có sẵn vào chỗ trống, nhưng không thể làm như vậy đối với các phân vùng hệ thống hoặc chứa hệ điều hành, để khắc phục, hãy sử dụng 1 thiết bị lưu trữ cắm ngoài qua giao tiếp USB, hệ thống sẽ tự động nhận dạng thiết bị nhanh chóng và dễ dàng:
DISKPART> list volume
Volume ### Ltr Label Fs Type Size Status Info
---------- --- ----------- ----- ---------- ------- --------- --------
Volume 2 E NTFS Partition 56 GB Healthy
DISKPART> select volume 2
DISKPART> extend
DISKPART> list volume
Volume ### Ltr Label Fs Type Size Status Info
---------- --- ----------- ----- ---------- ------- --------- --------
* Volume 2 E NTFS Partition 149 GB Healthy
Vậy là quá trình khôi phục đã hoàn tất, bạn có thể thay thế ổ cứng có vấn đề bằng ổ cứng vừa được khôi phục và sửa chữa hệ điều hành.