Trong hướng dẫn này, chúng tôi sẽ tham khảo một ví dụ thực tế về lệnh dd của Linux mà quản trị viên hệ thống có thể sử dụng để di chuyển hoặc sao chép Hệ điều hành Windows hoặc Hệ điều hành Linux từ ổ cứng HDD lớn hơn được phân vùng theo kiểu bố cục MBR hoặc GPT sang ổ SSD nhỏ hơn. Trong hướng dẫn này, chúng tôi sẽ sử dụng ví dụ về hệ thống Windows được cài đặt trên ổ cứng có nhiều phân vùng. Phương pháp này có thể trở nên khá phức tạp trong trường hợp ổ cứng HDD được phân vùng theo kiểu MBR và chứa một phân vùng mở rộng với nhiều phân vùng logic hoặc các phân vùng không theo thứ tự. Tôi khuyên bạn không nên sử dụng phương pháp này nếu đó là trường hợp của bạn. Trong những trường hợp như vậy, an toàn hơn là sử dụng ddrescure, có thể sao chép toàn bộ bố cục đĩa của bạn (bảng phân vùng và các khối đã sử dụng bên trong mỗi phân vùng) mà không thực sự chuyển không gian trống. Có thể tải DDrescure bằng cách cài đặt gói gddrescue từ kho lưu trữ chính của Ubuntu.
Sau đó, chạy lệnh sau với quyền root để sao chép đĩa cài đặt Windows từ HDD (/dev/sdb) sang SSD (/dev/sda). Tiện ích pv không được cài đặt theo mặc định trong Ubuntu. Bạn có thể cài đặt bằng cách chạy:
Sau đó, bắt đầu quá trình sao chép bằng cách đưa ra lệnh bên dưới:
LƯU Ý: đĩa đích phải có kích thước ít nhất bằng tổng dung lượng chiếm dụng của tất cả các phân vùng lên đến phân vùng Windows từ đĩa nguồn, bao gồm cả phân vùng Windows.
Giải thích các lệnh được sử dụng trong ví dụ trên
dd - dd là viết tắt của "Sao chép và Chuyển đổi". Một số người có thể nói nó là viết tắt của 'Data Destroyer' (trong trường hợp bạn hiểu sai lệnh, một số thiệt hại nghiêm trọng có thể xảy ra) hoặc Data Duplicate hoặc Data Description. Sử dụng bất kỳ mô tả nào phù hợp với nhu cầu của bạn!
if - đĩa nguồn (tệp vào/ra)
bs - Giá trị kích thước sector từ đầu ra fdisk (Kích thước khối hoặc số byte được đọc/ghi một lần)
count - Sector "Kết thúc" cuối cùng từ đầu ra fdisk tăng thêm một số nguyên (+1) - Có bao nhiêu khối kích thước 512 nên sao chép trước khi dừng lại. Tại đây, nó sẽ truyền 44099584 sector có kích thước 512 byte.
conv=sync,noerror - đồng bộ I/O và không dừng lại trong trường hợp bạn gặp lỗi khối trên đĩa nguồn
| - Đường ống Linux (kênh giao tiếp giữa các tiến trình trong Linux hoặc FIFO)
pv -s 21GB - theo dõi tiến trình sao chép - Khoảng 21GB sẽ được chuyển qua đường ống
của - đĩa đích nơi dữ liệu được truyền qua đường ống thực sự được ghi (tệp ra/ra)
Trong trường hợp bạn muốn vận hành với Kích thước khối lớn hơn kích thước khối đĩa chuẩn (512), giả sử gấp bốn lần kích thước khối chuẩn (2048), để tăng tốc mọi thứ, bạn có thể thực hiện một số phép toán đơn giản và nhân bốn kích thước khối chuẩn của đĩa (512x4) rồi chia tổng số khối +1 của phân vùng cuối cùng cho bốn.
Một ví dụ khác
Trong ví dụ này, "Kết thúc" của sda2: 44898303+1 chia cho 4. dd sẽ vận hành với kích thước khối là 2048 bytes.
Sau khi quá trình hoàn tất (tùy thuộc vào kích thước và tốc độ đĩa của bạn, có thể mất mười phút hoặc thậm chí hàng giờ), hãy xác minh đĩa đích bằng cùng lệnh sfdisk và so sánh đầu ra từ cả hai đĩa. Kết quả sẽ tương tự nhau.
Nhân với tám kích thước khối chuẩn của đĩa (512x8) rồi chia tổng số khối +1 của phân vùng cuối cùng cho tám như minh họa trong hình ảnh bên dưới. "Kết thúc" của sda4 đại diện cho phân vùng Windows là 19855359+1 chia cho 8. dd hoạt động với kích thước khối là 4096 byte.
Trong ví dụ này, vì chúng ta chỉ sao chép HĐH Windows chứ không phải toàn bộ dữ liệu đĩa theo sau phân vùng thứ tư nên chúng ta cần xóa phân vùng cuối cùng. Chúng ta có thể xóa nó bằng cách chạy tiện ích dòng lệnh cgdisk trực tiếp từ bảng điều khiển như minh họa trên các ảnh chụp màn hình sau
Xác minh sự khác biệt giữa bảng phân vùng trên cả hai đĩa bằng cách phát lệnh fdisk. Bảng phân vùng phải tương tự, ngoại trừ phân vùng thứ 5 từ /dev/sda phải được xóa khỏi đĩa đã sao chép (/dev/sdb ).
Cố gắng không khởi động máy khi cắm cả hai đĩa vì điều này có thể gây nhầm lẫn cho bộ nạp khởi động, khiến máy không thể khởi động hệ điều hành. Sau khi bạn xác nhận rằng hệ điều hành của bạn khởi động bình thường, hãy sử dụng cùng một công cụ như để thu nhỏ hệ thống tệp để mở rộng phân vùng đã sao chép bằng cách thêm không gian chưa phân bổ.
Sử dụng phương pháp dd này, bạn có thể chuyển bất kỳ phiên bản nào của hệ điều hành Windows hoặc Linux với tất cả các cài đặt tùy chỉnh, chương trình đã cài đặt và tệp từ ổ cứng HDD lớn hơn sang ổ SSD nhỏ hơn mà không phải gánh nặng cài đặt hệ điều hành từ đầu và dành hàng giờ để tùy chỉnh.
BƯỚC MỘT - Thu nhỏ phân vùng
Bạn có thể thay đổi kích thước phân vùng Linux hoặc Windows (thu nhỏ) xuống kích thước tối thiểu bằng cách sử dụng bản phân phối Linux trực tiếp như Gparted hoặc chạy tiện ích GUI gparted từ ảnh ISO Ubuntu Desktop Live. Các bản phân phối Linux trả phí khác mà bạn có thể sử dụng để điều chỉnh kích thước hệ thống tệp phân vùng đĩa (ext2, ext4, NTFS, xfs) là Partition Wizard hoặc Parted Magic. Bạn cũng có thể sử dụng tiện ích diskmgmt.msc của Microsoft Windows để thu nhỏ phân vùng NTFS. Bằng cách thu nhỏ không gian trống của phân vùng, thời gian cần thiết mà dd sẽ mất để sao chép các khối đĩa không sử dụng, trong trường hợp phân vùng lớn, sẽ giảm đáng kể. Trong trường hợp phân vùng lớn chỉ có một phần trăm nhỏ dung lượng đã sử dụng, bạn nên thu nhỏ hệ thống tệp vì tiện ích dd cũng sẽ sao chép dung lượng chưa sử dụng trong quá trình này (dd cũng sẽ sao chép tất cả các khối trống của phân vùng 100GB hoặc 1TB có dung lượng đã sử dụng nhỏ hơn 10%).BƯỚC HAI - Sao chép đĩa
Sau khi phân vùng được thay đổi kích thước xuống mức tối thiểu, hãy cắm vật lý đĩa thứ hai hoặc ổ SSD vào bộ điều khiển SATA/SCSI của máy và khởi động máy bằng bản phân phối Live Linux. Sau khi bản phân phối Linux trực tiếp đã được tải vào RAM, hãy mở bảng điều khiển Linux và chạy fdisk -l /dev/sda (giả sử rằng /dev/sda là đĩa cài đặt Windows hoặc ổ C: trong môi trường Windows) và ghi lại sector "Kết thúc" cuối cùng (44898303 như được hiển thị trong ví dụ bên dưới):Ví dụ một - Sao chép đĩa MBR (Hệ điều hành Windows được cài đặt trên phân vùng thứ hai)
Trong thiết lập thử nghiệm này, các đĩa được đảo ngược, do đó /dev/sdb biểu thị đĩa cài đặt Windows và /dev/sda biểu thị ổ SSD trống.Sau đó, chạy lệnh sau với quyền root để sao chép đĩa cài đặt Windows từ HDD (/dev/sdb) sang SSD (/dev/sda). Tiện ích pv không được cài đặt theo mặc định trong Ubuntu. Bạn có thể cài đặt bằng cách chạy:
Mã:
sudo apt install pv
Mã:
sudo dd if=/dev/sdb bs=512 count=44898303 conv=sync,noerror | pv -s 21G |sudo dd of=/dev/sda
Giải thích các lệnh được sử dụng trong ví dụ trên
dd - dd là viết tắt của "Sao chép và Chuyển đổi". Một số người có thể nói nó là viết tắt của 'Data Destroyer' (trong trường hợp bạn hiểu sai lệnh, một số thiệt hại nghiêm trọng có thể xảy ra) hoặc Data Duplicate hoặc Data Description. Sử dụng bất kỳ mô tả nào phù hợp với nhu cầu của bạn!
if - đĩa nguồn (tệp vào/ra)
bs - Giá trị kích thước sector từ đầu ra fdisk (Kích thước khối hoặc số byte được đọc/ghi một lần)
count - Sector "Kết thúc" cuối cùng từ đầu ra fdisk tăng thêm một số nguyên (+1) - Có bao nhiêu khối kích thước 512 nên sao chép trước khi dừng lại. Tại đây, nó sẽ truyền 44099584 sector có kích thước 512 byte.
conv=sync,noerror - đồng bộ I/O và không dừng lại trong trường hợp bạn gặp lỗi khối trên đĩa nguồn
| - Đường ống Linux (kênh giao tiếp giữa các tiến trình trong Linux hoặc FIFO)
pv -s 21GB - theo dõi tiến trình sao chép - Khoảng 21GB sẽ được chuyển qua đường ống
của - đĩa đích nơi dữ liệu được truyền qua đường ống thực sự được ghi (tệp ra/ra)
Trong trường hợp bạn muốn vận hành với Kích thước khối lớn hơn kích thước khối đĩa chuẩn (512), giả sử gấp bốn lần kích thước khối chuẩn (2048), để tăng tốc mọi thứ, bạn có thể thực hiện một số phép toán đơn giản và nhân bốn kích thước khối chuẩn của đĩa (512x4) rồi chia tổng số khối +1 của phân vùng cuối cùng cho bốn.
Một ví dụ khác
Trong ví dụ này, "Kết thúc" của sda2: 44898303+1 chia cho 4. dd sẽ vận hành với kích thước khối là 2048 bytes.
Mã:
sudo dd if=/dev/sda bs=2048 count=44898303 conv=sync,noerror | pv -s 21G |sudo dd of=/dev/sdb
Sau khi quá trình hoàn tất (tùy thuộc vào kích thước và tốc độ đĩa của bạn, có thể mất mười phút hoặc thậm chí hàng giờ), hãy xác minh đĩa đích bằng cùng lệnh sfdisk và so sánh đầu ra từ cả hai đĩa. Kết quả sẽ tương tự nhau.
Ví dụ hai - Sao chép đĩa GPT (Hệ điều hành Windows được cài đặt trên phân vùng thứ tư)
Trong đoạn trích này, dd sẽ hoạt động với kích thước khối gấp tám lần kích thước khối chuẩn (4096) để chuyển nhiều khối cùng một lúc. Hệ điều hành Windows nằm trong phân vùng thứ tư của đĩa cứng. Tất cả các phân vùng Windows trước đó cũng phải được sao chép. Đĩa sẽ được sao chép hoàn toàn cho đến sector 19855359 cuối cùng, đại diện cho ranh giới phân vùng Windows kết thúc. Dữ liệu theo sau sector 19855359+1 đại diện cho phân vùng D: trong Windows, do đó phân vùng này không có ích gì với chúng ta vì chúng ta chỉ muốn sao chép phân vùng hệ điều hành.Nhân với tám kích thước khối chuẩn của đĩa (512x8) rồi chia tổng số khối +1 của phân vùng cuối cùng cho tám như minh họa trong hình ảnh bên dưới. "Kết thúc" của sda4 đại diện cho phân vùng Windows là 19855359+1 chia cho 8. dd hoạt động với kích thước khối là 4096 byte.
Mã:
sudo dd if=/dev/sda bs=4096 count=2481920 conv=sync,noerror | pv -s 9G |sudo dd of=/dev/sdb
Trong ví dụ này, vì chúng ta chỉ sao chép HĐH Windows chứ không phải toàn bộ dữ liệu đĩa theo sau phân vùng thứ tư nên chúng ta cần xóa phân vùng cuối cùng. Chúng ta có thể xóa nó bằng cách chạy tiện ích dòng lệnh cgdisk trực tiếp từ bảng điều khiển như minh họa trên các ảnh chụp màn hình sau
Xác minh sự khác biệt giữa bảng phân vùng trên cả hai đĩa bằng cách phát lệnh fdisk. Bảng phân vùng phải tương tự, ngoại trừ phân vùng thứ 5 từ /dev/sda phải được xóa khỏi đĩa đã sao chép (/dev/sdb ).
BƯỚC BA - Kiểm tra Đĩa đã sao chép
Cuối cùng, tắt máy, rút ổ cứng cũ và bật máy tính chỉ bằng đĩa mới sao chép. Máy sẽ khởi động trong hệ điều hành của bạn ngay lập tức. Trong trường hợp máy từ chối khởi động, hãy kiểm tra vật lý các đầu nối SATA trên bo mạch chủ và thử đảo ngược chúng hoặc vào cài đặt BIOS/UEFI và đảm bảo đĩa thích hợp được bật trong trình tự khởi động.Cố gắng không khởi động máy khi cắm cả hai đĩa vì điều này có thể gây nhầm lẫn cho bộ nạp khởi động, khiến máy không thể khởi động hệ điều hành. Sau khi bạn xác nhận rằng hệ điều hành của bạn khởi động bình thường, hãy sử dụng cùng một công cụ như để thu nhỏ hệ thống tệp để mở rộng phân vùng đã sao chép bằng cách thêm không gian chưa phân bổ.
Sử dụng phương pháp dd này, bạn có thể chuyển bất kỳ phiên bản nào của hệ điều hành Windows hoặc Linux với tất cả các cài đặt tùy chỉnh, chương trình đã cài đặt và tệp từ ổ cứng HDD lớn hơn sang ổ SSD nhỏ hơn mà không phải gánh nặng cài đặt hệ điều hành từ đầu và dành hàng giờ để tùy chỉnh.