Wie erstelle ich ein VHD-Disk-Image von einem Linux Live-System?

Einmal mehr muss ich auf die Experten hier bei SuperUser zurückgreifen, da sich meine anderen Quellen (hauptsächlich Google ;-)) nicht als sehr hilfreich erwiesen haben...

Im Grunde möchte ich also ein VHD-Image einer physischen Festplatte erstellen, auf das archiviert/zugegriffen/möglicherweise sogar in einer virtuellen Maschine gemountet werden soll. Nun, es gibt Dutzende von Artikeln und Tutorials, wie das im Web zu tun, aber keine, die genau die Bedingungen erfüllt ich erreichen möchte:

  • Ich möchte das Ziel die Datei ein VHD-image, Windows 7 mounten kann es nativ, auch über das Netzwerk und viele andere Programme können es verwenden, (VirtualBox, ...)
  • Die Festplatte, die ich abbilden möchte, enthält eine Windows XP-Installation, daher könnte ich theoretisch das Dienstprogramm disk2vhd verwenden, aber ich möchte eine - Lösung finden, für die kein Booten erforderlich ist Windows XP installieren (dh die Festplatte schreibgeschützt halten)
  • Daher suchte ich nach einer Lösung, die eine Art von Live-System (läuft von einem USB stic oder das Netzwerk)

Alle Lösungen, auf die ich gestoßen bin, verwenden jedoch entweder disk2vhd oder den Befehl dd unter Linux, der eine vollständige Kopie der Festplatte ausführt (dh sogar leere Blöcke) und gibt keine VHD-Datei aus. Gibt es unter Linux ein Tool/Programm, das direkt eine VHD-Datei erstellen kann? Oder ist es möglich, ein mit dd erstelltes RAW-Disk-Image in eine VHD-Datei zu konvertieren, ohne Speicherplatz für die leeren Blöcke zuzuweisen? Wie würden Sie vorgehen?

- Wie immer -, jeder Rat oder Kommentar wird sehr geschätzt!!

Author: Federico, 2012-04-10

6 answers

Für zukünftige Referenz, hier ist, wie ich ging schließlich, mit ein paar Kommentaren zu den verschiedenen Fragen oder Fallstricke begegnet:

1. Booten Sie die Maschine mit einem Linux live-system

Der erste Schritt bestand darin, die Maschine, die die Festplatte enthält, mithilfe eines Linux-Live-Systems auf Image zu booten.

HINWEIS: Meine erste Idee war, eine Ubuntu Live USB Disk zu verwenden, aber die maschine nicht unterstützt Booten von USB, so fand ich es einfacher zu bedienen ein alter [[25]] Knoppix live CD.

2. Stellen Sie die Festplatte mit dd ab und leiten Sie die Daten durch ssh

Dann kopierte ich den gesamten Festplatteninhalt mit dd in ein Dateiabbild auf meinem lokalen Server und leitete die Daten über ssh:

$ dd if=/dev/hdX bs=4k conv=noerror,sync - | ssh -c blowfish myuser@myserver 'dd of=MeineDatei.dd'

Ein paar Kommentare hier: Diese Methode liest den gesamten Festplatteninhalt, so dass es sehr lange dauern kann (es dauerte mehr als 5 Stunden für eine 80-GB-Festplatte). Engpass ist nicht das Netzwerk, aber wirklich die Lesegeschwindigkeit der Festplatte. Bevor ich die Kopie starte, empfehle ich, die BIOS/Disk/Systemparameter zu überprüfen, um sicherzustellen, dass die Festplatte und das Motherboard mit der höchstmöglichen Geschwindigkeit arbeiten (dies kann mit dem Befehl hdparm -i und durch Ausführen eines Tests mit hdparm -Tt /dev/hdX überprüft werden).

HINWEIS: dd gibt den Fortschritt der Operation nicht aus, aber wir können dies erzwingen, indem wir das USR1 - Signal von einem anderen an die Prozess-PID dd senden terminal:

$ kill-USR1 PIDofdd

Hinweis: Neuere Versionen von dd unterstützen die Option status=LEVEL (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. Zurückfordern des ungenutzten Speicherplatzes

Zu diesem Zeitpunkt wird der Quellcomputer nicht mehr benötigt und wir arbeiten ausschließlich auf dem Zielserver (auch unter Linux). VirtualBox wird verwendet, um das Raw-Disk-Image in das VHD-Format zu konvertieren, aber bevor wir dies tun, können wir die nicht verwendeten Blöcke auf Null setzen, damit VirtualBox dies nicht tut weisen Sie Platz für sie in der endgültigen Datei zu.

Dazu habe ich die Bilder als Loopback-Gerät angehängt:

$ mount -o loop,rw,offset=26608813056 -t ntfs-3g /mnt/mydisk/myfile.dd /mnt/tmp_mnt
$ cat /dev/zero > zero.file
$ rm zero.file

HINWEIS: Der Versatz, der den Anfang der Partition innerhalb des Disk-Images angibt, kann mithilfe von parted in der Image-Datei erhalten werden:

$ 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: Der standardmäßige Linux-Kernel NTFS-Treiber bietet schreibgeschützten Zugriff, daher ist es notwendig, den Userspace zu installieren und zu verwenden ntfs-3g Treiber oder Schreiben auf die Festplatte wird einen Fehler auslösen!

4. Erstellen Sie die VHD Bild mit VBoxManage

An dieser Stelle können wir die VirtualBox-Dienstprogramme verwenden, um das RAW-Image in eine VHD-Datei zu konvertieren:

VBoxManage convertfromraw myfile.dd myfile.vhd --format VHD
 31
Author: Federico,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2020-11-05 05:25:33

Ich habe versucht, genau dasselbe wie das OP zu tun (während ich eine Windows-Installation gerettet habe) und am Ende ein neues Tool dafür erstellt, ntfsclone2vhd.

Sie würden dann einfach so etwas tun:

ntfsclone --save-image -o - /dev/sdXX | ntfsclone2vhd - /mnt/usb/output.vhd
 18
Author: Yirkha,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2015-04-27 22:13:43

Ein Ansatz besteht darin, einige praktische Technologien zu verwenden: VirtualBox und das Paket ntfsprogs.

Mit den neuesten Versionen von VirtualBox können Sie VHD-Festplattendateien erstellen, während ntfsprogs das Dienstprogramm ntfsclone bereitstellt. Wie der Name schon sagt, klont ntfsclone NTFS-Dateisysteme, und ich glaube, dass dies auf Dateisystemebene geschieht, indem nicht verwendete Datenträgerblöcke übersprungen werden.

Erstellen Sie zunächst eine neue VM in VirtualBox und stellen Sie ein neues, leeres VHD-Dateilaufwerk dafür bereit. Das VHD-Laufwerk muss nur sein so groß wie die Größe der Daten, die auf dem physischen Laufwerk verwendet werden, das Sie klonen möchten (machen Sie es tatsächlich etwas größer, um etwas Spielraum zu haben).

Suchen Sie als nächstes eine Linux-Live-CD, die das Paket ntfsprogs sowie openssh-server enthält. Ich mag System Rescue CD dafür, aber so ziemlich jede Debian - oder Ubuntu-basierte Live-CD sollte auch funktionieren.

Starten Sie die VirtualBox-VM mit der Linux-Live-CD und starten Sie sshd innerhalb der VM, damit Sie Befehle ausführen können es entfernt. Partitionieren Sie das leere VHD-Laufwerk ungefähr mit dem von Ihnen bevorzugten Partitionierungstool (ich mag einfaches altes fdisk, aber ich bin etwas alte Schule).

Starten Sie mit einer anderen Kopie der Linux-Live-CD den Computer, der die physische Festplatte enthält, die Sie klonen möchten. Ich gehe davon aus, dass die VirtualBox-VM und diese Maschine über das Netzwerk miteinander zugänglich sind. Führen Sie auf diesem Computer den folgenden Befehl aus (alle in einer Zeile):

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

Wobei:

  • /dev/sdXX ist die gerätename (auf dem lokalen Computer) des physischen Laufwerks, das Sie klonen möchten, und
  • /dev/sdYY ist der Gerätename (in der VM) des VHD-Ziellaufwerks.

Erklärung: Der erste ntfsclone Befehl in der Pipeline extrahiert ein Image des Quell-NTFS-Dateisystems und sendet es über den ssh-Tunnel, während der zweite ntfsclone Befehl das Image empfängt und auf dem VHD-Laufwerk wiederherstellt.

Sobald der Vorgang abgeschlossen ist, sollte die VHD-Datei eine Datei für Datei enthalten. klonen der ursprünglichen physischen Festplatte (abgesehen von Hardwarefehlern wie fehlerhaften Sektoren, die dazu führen können, dass der Prozess vorzeitig abgebrochen wird).

Eine letzte Sache, die Sie vielleicht tun möchten, ist, ein Windows chkdsk auf dem VHD-Laufwerk auszuführen, nur um sicherzustellen, dass das Klonen keine Probleme verursacht hat (es sollte nicht sein, aber hey, ich bin ein bisschen paranoid über diese Dinge).

 3
Author: Steven Monday,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2012-04-11 01:10:50

(Ich weiß, dass dies ein alter Beitrag ist, aber vielleicht hilft dies zumindest anderen.)

Müssen Sie das Image wirklich unter Linux erstellen können? Ich denke, Sie versuchen, Windows-Festplatten auf VHD zu sichern. Ich glaube nicht, dass Linux-Dateisysteme in einem VHD-Container gekapselt werden können.

Ein kostenloses [[5]}SysInternals - Dienstprogramm namens [[7]}Disk2vhd erstellt VHDs des aktuell laufenden Windows XP-oder neueren Systems. Dies sollte auch für die Abbildung von USB-Laufwerken funktionieren.

 1
Author: Bernard,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2012-12-05 20:07:37

Ich habe kürzlich auch versucht, ein Live-Linux-System zu klonen.

Immer noch keine perfekten Lösungen. Schlagen Sie 2 Möglichkeiten vor, die Sie versuchen können:

(1) VMware vConverter (kostenlos)

Sie müssen vsphere hypervisor (free) als Ziel installieren.

Ich habe das vor Tagen getan, kein Glück, um erfolgreich zu sein. Ich schätze, ich installiere vSphere auf einer VirtualBox.

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

(2) Benutze diesen http://www.r1soft.com/tools/linux-hot-copy/

Ich werde dieses Wochenende R1Soft hotcopy ausprobieren.

 0
Author: NelsonT,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2012-04-13 08:57:20

Sie können auch eine live-cd mit windows. Es ist nicht offiziell von Microsoft, funktioniert aber. Sie können es auf eine CD oder ein USB-Laufwerk legen.

 0
Author: Smeterlink,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2016-03-02 07:18:10