GNU/Linux >> Belajar Linux >  >> Linux

Bagaimana cara membuat image disk VHD dari sistem live Linux?

Untuk referensi di masa mendatang, inilah cara saya akhirnya melanjutkan, dengan beberapa komentar tentang berbagai masalah atau kendala yang dihadapi:

1. Boot mesin dengan sistem live Linux

Langkah pertama adalah mem-boot mesin yang berisi disk ke image, menggunakan sistem live Linux.

CATATAN:Ide pertama saya adalah menggunakan disk Ubuntu Live USB, tetapi mesin tidak mendukung booting dari USB, jadi saya merasa lebih mudah menggunakan Knoppix live CD lama .

2. Gambar disk menggunakan dd dan menyalurkan data melalui ssh

Kemudian, saya menyalin semua konten disk ke gambar file di server lokal saya menggunakan dd dan menyalurkan data melalui ssh :

$ dd if=/dev/hdX bs=4k conv=noerror,sinkronisasi | ssh -c blowfish [email protected] 'dd of=myfile.dd'

Beberapa komentar di sini:metode ini akan membaca semua isi disk, sehingga bisa memakan waktu sangat lama (butuh waktu 5 jam untuk disk 80Gb). Hambatannya bukanlah jaringan, tetapi sebenarnya kecepatan membaca disk. Sebelum meluncurkan salinan, saya menyarankan untuk memeriksa parameter BIOS/disk/sistem untuk memastikan bahwa disk dan motherboard bekerja pada kecepatan setinggi mungkin (ini dapat diperiksa menggunakan perintah hdparm -i dan dengan menjalankan pengujian dengan hdparm -Tt /dev/hdX ).

CATATAN:dd tidak menampilkan kemajuan operasi, tetapi kami dapat memaksanya untuk melakukannya dengan mengirimkan USR1 sinyal ke dd memproses PID dari terminal lain:

$ kill -USR1 PIDofdd

Catatan:Versi dd yang lebih baru mendukung status=LEVEL opsi (man dd )

   status=LEVEL
          The  LEVEL of information to print to stderr; 'none' suppresses everything but error messages, 'noxfer' suppresses
          the final transfer statistics, 'progress' shows periodic transfer statistics

3. Dapatkan kembali ruang yang tidak terpakai

Pada titik ini, mesin sumber tidak lagi diperlukan dan kami akan bekerja secara eksklusif di server tujuan (menjalankan Linux juga). VirtualBox akan digunakan untuk mengonversi image disk mentah ke format VHD, tetapi sebelum melakukannya, kita dapat menghapus blok yang tidak terpakai, sehingga VirtualBox tidak mengalokasikan ruang untuk blok tersebut di file akhir.

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 menunjukkan awal partisi di dalam disk image dapat diperoleh dengan menggunakan parted pada file gambar:

$ 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

NOTE2:Driver NTFS kernel Linux default menyediakan akses read-only, sehingga perlu untuk menginstal dan menggunakan userspace ntfs-3g driver 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 menjadi file VHD:

VBoxManage convertfromraw myfile.dd myfile.vhd --format VHD

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

Anda kemudian hanya akan melakukan sesuatu seperti ini:

ntfsclone --save-image -o - /dev/sdXX | ntfsclone2vhd - /mnt/usb/output.vhd

Salah satu pendekatannya adalah dengan menggunakan beberapa teknologi praktis:VirtualBox, dan ntfsprogs paket.

Versi terbaru dari VirtualBox memungkinkan Anda membuat file hard disk VHD, sedangkan ntfsprogs menyediakan ntfsclone kegunaan. Seperti namanya, ntfsclone mengkloning sistem file NTFS, dan saya yakin ini dilakukan pada tingkat sistem file, melewati blok disk yang tidak terpakai.

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

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

Boot VM VirtualBox dengan live CD Linux, dan mulai sshd dalam VM sehingga Anda dapat menjalankan perintah dari jarak jauh. Partisi drive VHD kosong dengan tepat, menggunakan alat pemartisi apa pun yang Anda suka (saya suka fdisk lama , tapi saya agak jadul).

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

ntfsclone --save-image -o - /dev/sdXX |
    ssh [email protected] 'ntfsclone --restore-image --overwrite /dev/sdYY -'

di mana:

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

Penjelasan:ntfsclone yang pertama perintah dalam pipa mengekstrak gambar sistem file NTFS sumber dan mengirimkannya melalui terowongan ssh, sedangkan ntfsclone kedua perintah menerima image dan mengembalikannya ke drive VHD.

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

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


Linux
  1. Cara Menambah Nomor Disk Inode di Linux

  2. Cara Membuat Video Dari File PDF Di Linux

  3. Linux – Bagaimana Cara Membuat File Gambar Partisi Terformat Dari Awal?

  1. Cara Membuat USB Bootable Linux dari Baris Perintah Linux

  2. Cara membuat gambar khusus dari wadah Docker

  3. Bagaimana cara memasang image disk multi-partisi di Linux?

  1. Cara Membuat Partisi di Linux

  2. Cara Memformat Partisi Disk di Linux

  3. Cara Membuat Sistem File (Partisi) Ext4 Baru di Linux