Untuk referensi di masa mendatang, inilah cara saya akhirnya melanjutkan, dengan beberapa komentar tentang berbagai masalah atau jebakan yang ditemui:
1. Boot mesin dengan sistem live Linux
Langkah pertama adalah mem-boot mesin yang berisi disk ke gambar, menggunakan sistem live Linux.
CATATAN: Ide pertama saya adalah menggunakan disk USB Live Ubuntu, tetapi mesin tidak mendukung booting dari USB, jadi saya merasa lebih mudah menggunakan live CD Knoppix lama .
2. Gambar disk menggunakan dd
dan pipa datassh
Kemudian, saya menyalin semua konten disk ke gambar file di server lokal saya menggunakan dd
dan memipipkan data melalui ssh
:
$ dd if = / dev / hdX bs = 4k conv = noerror, sync | ssh -c blowfish myuser @ myserver 'dd of = myfile.dd'
Beberapa komentar di sini: metode ini akan membaca semua isi disk, sehingga bisa sangat lama (butuh 5 jam untuk disk 80Gb). Kemacetan bukan jaringan, tetapi kecepatan baca disk. Sebelum meluncurkan salinan, saya menyarankan untuk memeriksa parameter BIOS / disk / sistem untuk memastikan bahwa disk dan motherboard bekerja pada kecepatan tertinggi yang dimungkinkan (ini dapat diperiksa menggunakan perintah hdparm -i
dan dengan menjalankan tes dengan hdparm -Tt /dev/hdX
).
CATATAN: dd
tidak menampilkan kemajuan operasi, tetapi kami dapat memaksanya untuk melakukannya dengan mengirimkan sinyal USR1 ke dd
PID proses dari terminal lain:
$ kill -USR1 PIDofdd
3. Ambil kembali ruang yang tidak digunakan
Pada titik ini, mesin sumber tidak lagi diperlukan dan kami akan bekerja secara eksklusif pada server tujuan (menjalankan Linux juga). VirtualBox akan digunakan untuk mengonversi gambar disk mentah ke format VHD, tetapi sebelum melakukannya, kita dapat memblok blok yang tidak digunakan, sehingga VirtualBox tidak mengalokasikan ruang untuk mereka di file terakhir.
Untuk melakukannya, saya memasang gambar sebagai perangkat loopback:
$ mount -o loop,rw,offset=26608813056 -t ntfs-3g /mnt/mydisk/myfile.dd /mnt/tmp_mnt
$ cat /dev/zero > zero.file
$ rm zero.file
CATATAN: Offset yang mengindikasikan awal partisi dalam disk image dapat diperoleh dengan menggunakan parted
pada file image:
$ parted /mnt/mydisk/myfile.dd
(parted) unit
Unit? [compact]? B
(parted) print
Model: (file)
Disk /mnt/mydisk/myfile.dd: 80026361856B
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Number Start End Size Type File system Flags
1 32256B 21936821759B 21936789504B primary ntfs boot
2 21936821760B 80023749119B 58086927360B extended lba
5 26608813056B 80023749119B 53414936064B logical ntfs
CATATAN2: Driver kernel Linux NTFS default menyediakan akses hanya-baca, oleh karena itu perlu untuk menginstal dan menggunakan ntfs-3g
driver userspace atau menulis ke disk akan menimbulkan kesalahan!
4. Buat gambar VHD menggunakan VBoxManage
Pada titik ini, kita dapat menggunakan utilitas VirtualBox untuk mengonversi gambar mentah ke file VHD:
VBoxManage convertfromraw myfile.dd myfile.vhd --format VHD