Une fois de plus, je dois faire appel aux experts de SuperUser, car mes autres sources (principalement Google ;-)) ne se sont pas avérées très utiles ...
Donc, fondamentalement, je voudrais créer une image VHD d'un disque physique à archiver/à accéder/peut-être même monter sur une machine virtuelle. Maintenant, il existe des dizaines d'articles et de tutoriels sur la façon de le faire sur le Web, mais aucun ne remplit exactement les conditions que j'aimerais atteindre:
disk2vhd
, mais j'aimerais trouver une solution qui ne ne nécessite pas de démarrer l'installation de Windows XP (c.-à-d. garder le disque en lecture seule)Cependant, toutes les solutions que j'ai rencontrées utilisent soit disk2vhd
, soit la commande dd
sous linux, qui crée une copie complète du disque (c.-à-d. Même des blocs vides) et ne produit pas de fichier VHD. Existe-t-il un outil/programme sous Linux permettant de créer directement un fichier VHD? Ou est-il possible de convertir une image disque brute créée à l'aide de dd en un fichier VHD, sans allouer d'espace pour les blocs vides? Comment procéderiez-vous?
Comme toujours, tout conseil ou commentaire est très apprécié !!
Pour référence future, voici comment j'ai finalement procédé, avec quelques commentaires sur les divers problèmes ou pièges rencontrés:
La première étape consistait à démarrer la machine contenant le disque en image, en utilisant un système live Linux.
REMARQUE: ma première idée était d'utiliser un disque Ubuntu Live USB, mais la machine ne prenant pas en charge le démarrage à partir de la clé USB, j'ai donc trouvé plus facile d'utiliser un ancien Knoppix live CD .
dd
et transmettez les données à travers ssh
Ensuite, j'ai copié tout le contenu du disque dans une image de fichier sur mon serveur local à l'aide de dd
et en transférant les données via ssh
:
$ dd if =/dev/hdX bs = 4k conv = noerror, sync | ssh -c blowfish monutilisateur @ mon serveur 'dd de = monfichier.dd'
Quelques commentaires ici: cette méthode va lire tout le contenu du disque, donc ça peut prendre très longtemps (ça m'a pris 5h pour un disque de 80Go). Le goulot d'étranglement n'est pas le réseau, mais bien la vitesse de lecture du disque. Avant de lancer la copie, il est conseillé de vérifier les paramètres BIOS/disque/système afin de s’assurer que le disque et la carte mère fonctionnent à la vitesse la plus élevée possible (vous pouvez le vérifier en utilisant la commande hdparm -i
et en effectuant un test avec hdparm -Tt /dev/hdX
).
REMARQUE: dd
ne génère pas l'avancement de l'opération, mais nous pouvons le forcer à le faire en envoyant le signal USR1 au PID du processus dd
depuis un autre terminal:
$ kill -USR1 PIDofdd
À ce stade, la machine source n'est plus nécessaire et nous travaillerons exclusivement sur le serveur de destination (sous Linux également). VirtualBox sera utilisé pour convertir l’image disque brute au format VHD, mais avant cela, nous pouvons mettre à zéro les blocs inutilisés, de sorte que VirtualBox ne leur alloue pas d’espace dans le fichier final.
Pour ce faire, j'ai monté les images en tant que périphérique de bouclage:
$ mount -o loop,rw,offset=26608813056 -t ntfs-3g /mnt/mydisk/myfile.dd /mnt/tmp_mnt
$ cat /dev/zero > zero.file
$ rm zero.file
REMARQUE: le décalage indiquant le début de la partition dans l'image disque peut être obtenu à l'aide de parted
sur le fichier 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
REMARQUE 2: Le pilote NTFS du noyau Linux par défaut fournit un accès en lecture seule. Il est donc nécessaire d'installer et d'utiliser le pilote userspace ntfs-3g
ou l'écriture sur le disque provoquera une erreur!
À ce stade, nous pouvons utiliser les utilitaires VirtualBox pour convertir l’image brute en fichier VHD:
VBoxManage convertfromraw myfile.dd myfile.vhd --format VHD
J'essayais de faire exactement la même chose que l'OP (tout en sauvant une installation Windows) et j'ai fini par créer un nouvel outil, ntfsclone2vhd
.
Vous feriez alors simplement quelque chose comme ceci:
ntfsclone --save-image -o - /dev/sdXX | ntfsclone2vhd - /mnt/usb/output.vhd
Une approche consiste à utiliser quelques technologies pratiques: VirtualBox et le package ntfsprogs
.
Les versions récentes de VirtualBox vous permettent de créer des fichiers de disque dur VHD, alors que ntfsprogs
fournit l'utilitaire ntfsclone
. Comme son nom l'indique, ntfsclone
clone les systèmes de fichiers NTFS, et je pense que c'est le cas au niveau du système de fichiers, en ignorant les blocs de disque inutilisés.
Donc, pour commencer, créez un nouveau VM dans VirtualBox et mettez à disposition un nouveau lecteur de fichier VHD vide. Le disque dur virtuel ne doit pas dépasser la taille des données utilisées sur le disque physique que vous voulez cloner (eh bien, rendez-le un peu plus grand, afin de laisser un peu de marge de manœuvre).
Ensuite, recherchez un live CD Linux contenant le paquetage ntfsprogs
, ainsi que openssh-server
. J'apprécie le CD System Rescue , mais à peu près tout live CD basé sur Debian ou Ubuntu devrait également fonctionner.
Démarrez la VirtualBox VM avec le live CD Linux et démarrez sshd
dans la VM pour pouvoir exécuter des commandes à distance. Partitionnez le disque VHD vide de manière appropriée, en utilisant l’outil de partitionnement que vous préférez (j’aime bien le vieux fdisk
, mais je suis un peu vieux jeu).
Avec une autre copie du live CD Linux, démarrez la machine contenant le disque physique que vous voulez cloner. Je suppose que VirtualBox VM et cette machine sont accessibles l'un à l'autre via le réseau. Sur cette machine, exécutez la commande suivante (sur une seule ligne):
ntfsclone --save-image -o - /dev/sdXX |
ssh root@VirtualBox-VM 'ntfsclone --restore-image --overwrite /dev/sdYY -'
où:
/dev/sdXX
est le nom de périphérique (sur la machine locale) du lecteur physique que vous voulez cloner, et/dev/sdYY
est le nom de périphérique (dans la VM) du lecteur de destination du disque dur virtuel.Explication: La première commande ntfsclone
du pipeline extrait une image du système de fichiers NTFS source et l'envoie via le tunnel ssh, tandis que la seconde commande ntfsclone
reçoit l'image et la restaure sur le lecteur VHD.
Une fois l'opération terminée, le fichier VHD doit contenir un clone exact fichier par fichier du disque physique d'origine (à l'exception des erreurs matérielles, telles que des secteurs défectueux, susceptibles de provoquer une interruption prématurée du processus).
Une dernière chose à faire est d’exécuter une chkdsk
de Windows sur le disque dur virtuel, juste pour s’assurer que le clonage ne pose aucun problème (cela ne devrait pas être le cas, mais bon, je suis un peu paranoïaque à ce sujet). .
(Je sais que c'est un ancien post, mais peut-être que cela aidera au moins les autres.)
Avez-vous vraiment besoin de pouvoir créer l’image sous Linux? Je pense que vous essayez de sauvegarder les disques durs Windows au format VHD. Je ne pense pas que les systèmes de fichiers Linux puissent être encapsulés dans un conteneur de disque dur virtuel.
Un utilitaire gratuit SysInternals appelé Disk2vhd créera des disques durs virtuels sous Windows en cours d'exécution. XP ou un système plus récent. Cela devrait également fonctionner pour les lecteurs d'image USB montés.
Vous pouvez également utiliser un live cd avec Windows. Ce n'est pas officiel de Microsoft mais ça marche. Vous pouvez le mettre sur un lecteur de CD ou USB.
J'essaie également de cloner un système Linux live récemment.
Toujours pas de solution parfaite. Suggérez deux manières d’essayer:
(1) VMware vConverter (gratuit)
Vous devez installer vsphere hypervisor (free) en tant que destination.
Je l'ai fait il y a quelques jours, aucune chance de réussir. Je suppose que j'installe vSphere sur un VirtualBox.
Référez-vous ici: http://xrubenx.blogspot.com.au/2010/01/vmware-converter-standalone.html
(2) Utilisez celui-ci http://www.r1soft.com/tools/linux-hot-copy/
Je vais essayer hotcopy R1Soft ce week-end.