Bagaimana cara membuat image disk VHD dari sistem live Linux?

29

Sekali lagi, saya harus menggunakan ahli di sini di SuperUser, karena sumber saya yang lain (terutama Google ;-)) tidak terbukti sangat membantu ...

Jadi pada dasarnya, saya ingin membuat gambar VHD dari disk fisik untuk diarsipkan / diakses / bahkan mungkin dipasang di mesin virtual. Sekarang, ada puluhan artikel dan tutorial tentang cara melakukan itu di web, tetapi tidak ada yang memenuhi kondisi yang ingin saya capai:

  • Saya ingin file tujuan menjadi gambar VHD , karena Windows 7 dapat memasangnya secara asli, bahkan melalui jaringan dan banyak program lain dapat menggunakannya (VirtualBox, ...)
  • Disk yang saya coba gambar berisi instalasi Windows XP, jadi secara teori, saya bisa menggunakan disk2vhdutilitas, tapi saya ingin mencari solusi yang tidak memerlukan booting yang diinstal Windows XP (yaitu, simpan disk hanya-baca saja )
  • Jadi saya sedang mencari solusi yang melibatkan semacam sistem live (berjalan dari USB stic atau jaringan)

Namun, semua solusi yang saya temui baik menggunakan disk2vhdatau menggunakan ddperintah di linux, yang melakukan salinan lengkap dari disk (yaitu bahkan blok kosong) dan tidak menghasilkan file VHD. Apakah ada alat / program di Linux yang dapat langsung membuat file VHD? Atau mungkinkah untuk mengubah gambar disk mentah yang dibuat menggunakan dd ke file VHD, tanpa mengalokasikan ruang untuk blok kosong? Bagaimana Anda akan melanjutkan?

Seperti biasa, saran atau komentar apa pun sangat dihargai !!

Federico
sumber
BSD memiliki alat yang disebut mkimg yang dapat membuat gambar vhd di antara format lain.
julian

Jawaban:

30

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 dddan pipa datassh

Kemudian, saya menyalin semua konten disk ke gambar file di server lokal saya menggunakan dddan 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 -idan dengan menjalankan tes dengan hdparm -Tt /dev/hdX).

CATATAN: ddtidak menampilkan kemajuan operasi, tetapi kami dapat memaksanya untuk melakukannya dengan mengirimkan sinyal USR1 ke ddPID 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 partedpada 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-3gdriver 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
Federico
sumber
Anda harus dapat me-mount gambar VHD menggunakan vdfuseatau qemu-nbdatau mengubahnya ke file img (info lebih lanjut: askubuntu.com/questions/19430/... )
Francesco
1
Pada mesin yang lambat, enkripsi ssh mungkin menjadi hambatan. Pertimbangkan menggunakan netcat (man nc) sebagai gantinya jika Anda tidak memerlukan enkripsi.
Jeremy
2
Anda lupa memasukkan cd ke disk yang terpasang sebelum membuat file nol: mount -o loop, rw, offset = 26608813056 -t ntfs-3g /mnt/mydisk/myfile.dd / mnt / tmp_mnt; cd / mnt / tmp_mnt; cat / dev / zero> zero.file; rm zero.file; Anda juga dapat menggunakan pv bukannya dd untuk menunjukkan kemajuan instan.
Smeterlink
1
Anda mungkin harus menggunakan ukuran blok yang lebih besar dengan dd, misalnya bs=4Muntuk mempercepat proses secara signifikan.
Fritz
13

Saya mencoba melakukan hal yang persis sama dengan OP (saat menyelamatkan instalasi Windows) dan akhirnya membuat alat baru untuk itu ntfsclone2vhd,.

Anda kemudian akan melakukan sesuatu seperti ini:

ntfsclone --save-image -o - /dev/sdXX | ntfsclone2vhd - /mnt/usb/output.vhd
Yirkha
sumber
1
3 tahun terlambat untuk permainan, tetapi halaman ini adalah hit Google teratas untuk kata kunci yang relevan, sehingga mungkin masih membantu beberapa jiwa miskin di masa depan.
Yirkha
2
SOLUSI INI MEMBUTUHKAN SUARA KE ATAS. Sejauh ini, ini adalah solusi termudah (kecuali harus makemenyalin Linux) yang telah saya temukan dalam berjam-jam pencarian. Bravo untuk mengambil inisiatif Yirkha!
user66001
3

Salah satu pendekatan adalah menggunakan beberapa teknologi praktis: VirtualBox, dan ntfsprogspaketnya.

Versi terbaru dari VirtualBox memungkinkan Anda membuat file hard disk VHD, sembari ntfsprogsmenyediakan ntfscloneutilitas. Seperti namanya, ntfscloneklon filesystem NTFS, dan saya percaya ia melakukannya di level filesystem, melompati blok disk yang tidak digunakan.

Jadi, untuk memulai, buat VM baru di VirtualBox, dan berikan drive file VHD baru yang kosong untuknya. Drive VHD hanya perlu sebesar ukuran data yang digunakan pada drive fisik yang ingin Anda klon (sebenarnya, membuatnya sedikit lebih besar, untuk memungkinkan ruang gerak).

Selanjutnya, temukan CD live Linux yang berisi ntfsprogspaket, juga openssh-server. Saya suka System Rescue CD untuk ini, tetapi hampir semua CD live berbasis Debian atau Ubuntu juga bisa digunakan.

Boot VM VirtualBox dengan Linux live CD, dan mulai sshddi dalam VM sehingga Anda akan dapat menjalankan perintah di dalamnya dari jarak jauh. Mempartisi drive VHD kosong dengan tepat, menggunakan alat pemartisi apa pun yang Anda inginkan (saya suka yang sudah tua fdisk, tapi saya agak jadul).

Dengan salinan lain dari live CD Linux, boot mesin yang berisi disk fisik yang ingin Anda kloning. Saya berasumsi bahwa VM VirtualBox dan mesin ini dapat diakses satu sama lain melalui jaringan. Pada mesin ini, jalankan perintah berikut (semuanya dalam satu baris):

ntfsclone --save-image -o - /dev/sdXX |
    ssh root@VirtualBox-VM 'ntfsclone --restore-image --overwrite /dev/sdYY -'

dimana:

  • /dev/sdXX adalah nama perangkat (pada mesin lokal) dari drive fisik yang ingin Anda kloning, dan
  • /dev/sdYY adalah nama perangkat (dalam VM) dari drive tujuan VHD.

Penjelasan: ntfsclonePerintah pertama dalam pipa mengekstrak gambar dari sistem file NTFS sumber dan mengirimkannya melalui ssh tunnel, sedangkan ntfscloneperintah kedua menerima gambar dan mengembalikannya ke drive VHD.

Setelah operasi selesai, file VHD harus berisi klon tepat file-untuk-file dari disk fisik asli (kecuali segala kesalahan perangkat keras, seperti bad sector, yang dapat menyebabkan proses untuk dibatalkan sebelum waktunya).

Satu hal terakhir yang mungkin ingin Anda lakukan adalah menjalankan Windows chkdskpada drive VHD, hanya untuk memastikan kloning tidak menimbulkan masalah (seharusnya tidak, tapi hei, saya agak paranoid tentang hal-hal ini).

Steven Monday
sumber
Hai, terima kasih banyak atas solusi yang Anda ajukan! Pada akhirnya, saya menggunakan metode lain karena saya memiliki beberapa partisi pada disk untuk dicadangkan dan tidak dapat dengan mudah menggunakan VirtualBox pada mesin untuk mencadangkan (lihat jawaban saya untuk detail), tetapi saran Anda untuk menggunakan VirtualBox dan ssh terbukti sangat berguna!
Federico
1

(Saya tahu ini adalah posting lama, tapi mungkin ini setidaknya akan membantu orang lain.)

Apakah Anda benar-benar harus dapat membuat gambar di Linux? Saya pikir Anda mencoba untuk membuat cadangan hard drive Windows ke VHD. Saya tidak berpikir bahwa sistem file Linux dapat dienkapsulasi dalam wadah VHD.

Utilitas SysInternals gratis yang disebut Disk2vhd akan membuat VHD dari sistem operasi Windows XP atau yang lebih baru. Ini juga harus berfungsi untuk pencitraan drive yang dipasang USB.

Bernard
sumber
0

Saya juga mencoba mengkloning sistem linux langsung baru-baru ini.

Masih belum ada solusi yang sempurna. Sarankan 2 cara yang dapat Anda coba:

(1) VMware vConverter (gratis)

Anda perlu menginstal vsphere hypervisor (gratis) sebagai tujuannya.

Saya lakukan hari ini yang lalu, tidak ada keberuntungan untuk berhasil. Kira saya menginstal vSphere di VirtualBox.

Ref di sini: http://xrubenx.blogspot.com.au/2010/01/vmware-converter-standalone.html

(2) Gunakan yang ini http://www.r1soft.com/tools/linux-hot-copy/

Saya akan mencoba hotcopy R1Soft akhir pekan ini.

NelsonT
sumber
Saya tidak akan mencoba hot-copy karena ini, wiki.r1soft.com/display/LTR1D/hcp-setup
NelsonT
0

Anda juga dapat menggunakan live cd dengan windows. Ini tidak resmi dari Microsoft tetapi berfungsi. Anda bisa menaruhnya di drive cd atau usb.

Smeterlink
sumber