Cloner un disque virtuel VHD en VDI Par LoiselJP Le 17/03/2014
1 Objectifs Les machines virtuelles permettent aujourd hui de passer d un environnement classique (réel) vers un environnement de test dans lequel il est possible d effectuer un ensemble d actions qui ne mettront pas en péril le fonctionnement du poste réel. Après une sauvegarde système, il peut être intéressant d utiliser l image créée dans un environnement de virtualisation. Plusieurs solutions sont possibles. Ce document décrit l une des méthodes qui pourra être utilisée dans ce but. Ce document décrit le plus succinctement possible une manière de cloner un disque d origine en VHD en VDI. Cette procédure pourra être appliquée dans la conversion de disque VHD en VMDK Virtualbox qui est un logiciel libre le propose facilement. Cloner un disque virtuel VHD en VDI page 2/19
2 Sommaire 1 Objectifs... 2 2 Sommaire... 3 3 Prérequis... 4 4 VBoxManage... 5 5 Cloner le disque... 16 6 Conclusion... 17 Propriété... 19 Licence... 19 Cloner un disque virtuel VHD en VDI page 3/19
3 Prérequis Ce document se limite à la modification de format d un disque dur virtuel. Il ne s adresse en aucun cas à la création ou à l utilisation d un disque ou d une machine virtuelle. On suppose que le lecteur sache créer, utiliser et paramétrer une machine virtuelle. Dans le cadre de ce document, Virtualbox devra être installé sur le poste de travail. Ici, la dernière version de Virtualbox en cours est installée Et celle-ci est installée dans le dossier «C:\bureau\VirtualBox\VirtualBox.exe». Cloner un disque virtuel VHD en VDI page 4/19
Ce chemin devra être connu pour la conversion. 4 VBoxManage Pour la gestion et les modifications de machines virtuelles ou disques, Virtualbox met à disposition un petit utilitaire qui pourra être trouvé dans le dossier d installation «VBoxManage». VBoxManage peut être trouvé et exécuté après ouverture d un invite de commande (CMD) : Il sera nécessaire ensuite de se déplacer dans le dossier où est installé VirtualBox : cd chemin_de_vitualbox Cloner un disque virtuel VHD en VDI page 5/19
Si vous exécutez VBoxManage sans paramètre ou après une mauvaise commande, le texte suivant est affiché à l écran : General Options: [-v --version] print version number and exit [-q --nologo] suppress the logo [--settingspw <pw>] provide the settings password [--settingspwfile <file>] provide a file containing the settings password Commands: list [--long -l] showvminfo showvminfo registervm unregistervm createvm modifyvm vms runningvms ostypes hostdvds hostfloppies intnets bridgedifs natnets dhcpservers hostinfo hostinfo hostcpuids hddbackends hdds dvds floppies usbhost usbfilters systemproperties extpacks groups webcams [--details] [--machinereadable] --log <idx> <filename> [--delete] --name <name> [--groups <group>,...] [--ostype <ostype>] [--register] [--basefolder <path>] [--uuid <uuid>] [--name <name>] [--groups <group>,...] [--ostype <ostype>] [--iconfile <filename>] [--memory <memorysize in MB>] [--pagefusion on off] [--vram <vramsize in MB>] [--acpi on off] [--ioapic on off] [--hpet on off] [--triplefaultreset on off] [--hwvirtex on off] [--nestedpaging on off] [--largepages on off] [--vtxvpid on off] [--vtxux on off] Cloner un disque virtuel VHD en VDI page 6/19
[--pae on off] [--longmode on off] [--synthcpu on off] [--cpuidset <leaf> <eax> <ebx> <ecx> <edx>] [--cpuidremove <leaf>] [--cpuidremoveall] [--hardwareuuid <uuid>] [--cpus <number>] [--cpuhotplug on off] [--plugcpu <id>] [--unplugcpu <id>] [--cpuexecutioncap <1-100>] [--rtcuseutc on off] [--graphicscontroller none vboxvga] [--monitorcount <number>] [--accelerate3d on off] [--firmware bios efi efi32 efi64] [--chipset ich9 piix3] [--bioslogofadein on off] [--bioslogofadeout on off] [--bioslogodisplaytime <msec>] [--bioslogoimagepath <imagepath>] [--biosbootmenu disabled menuonly messageandmenu] [--biossystemtimeoffset <msec>] [--biospxedebug on off] [--boot<1-4> none floppy dvd disk net>] [--nic<1-n> none null nat bridged intnet generic natnetwork] [--nictype<1-n> Am79C970A Am79C973] [--cableconnected<1-n> on off] [--nictrace<1-n> on off] [--nictracefile<1-n> <filename>] [--nicproperty<1-n> name=[value]] [--nicspeed<1-n> <kbps>] [--nicbootprio<1-n> <priority>] [--nicpromisc<1-n> deny allow-vms allow-all] [--nicbandwidthgroup<1-n> none <name>] [--bridgeadapter<1-n> none <devicename>] [--intnet<1-n> <network name>] [--nat-network<1-n> <network name>] [--nicgenericdrv<1-n> <driver> [--natnet<1-n> <network> default] [--natsettings<1-n> [<mtu>],[<socksnd>], [<sockrcv>],[<tcpsnd>], [<tcprcv>]] [--natpf<1-n> [<rulename>],tcp udp,[<hostip>], <hostport>,[<guestip>],<guestport>] [--natpf<1-n> delete <rulename>] [--nattftpprefix<1-n> <prefix>] [--nattftpfile<1-n> <file>] [--nattftpserver<1-n> <ip>] [--natbindip<1-n> <ip> [--natdnspassdomain<1-n> on off] Cloner un disque virtuel VHD en VDI page 7/19
[--natdnsproxy<1-n> on off] [--natdnshostresolver<1-n> on off] [--nataliasmode<1-n> default [log],[proxyonly], [sameports]] [--macaddress<1-n> auto <mac>] [--mouse ps2 usb usbtablet usbmultitouch] [--keyboard ps2 usb [--uart<1-n> off <I/O base> <IRQ>] [--uartmode<1-n> disconnected server <pipe> client <pipe> file <file> <devicename>] [--lpt<1-n> off <I/O base> <IRQ>] [--lptmode<1-n> <devicename>] [--guestmemoryballoon <balloonsize in MB>] [--audio none null dsound solaudio oss oss coreaudio] [--audiocontroller ac97 hda sb16] [--clipboard disabled hosttoguest guesttohost bidirectional] [--draganddrop disabled hosttoguest [--vrde on off] [--vrdeextpack default <name> [--vrdeproperty <name=[value]>] [--vrdeport <hostport>] [--vrdeaddress <hostip>] [--vrdeauthtype null external guest] [--vrdeauthlibrary default <name> [--vrdemulticon on off] [--vrdereusecon on off] [--vrdevideochannel on off] [--vrdevideochannelquality <percent>] [--usb on off] [--usbehci on off] [--snapshotfolder default <path>] [--teleporter on off] [--teleporterport <port>] [--teleporteraddress <address empty> [--teleporterpassword <password>] [--teleporterpasswordfile <file> stdin] [--tracing-enabled on off] [--tracing-config <config-string>] [--tracing-allow-vm-access on off] [--autostart-enabled on off] [--autostart-delay <seconds>] [--defaultfrontend default <name>] clonevm [--snapshot <uuid> <name>] [--mode machine machineandchildren all] [--options link keepallmacs keepnatmacs keepdisknames] Cloner un disque virtuel VHD en VDI page 8/19
[--name <name>] [--groups <group>,...] [--basefolder <basefolder>] [--uuid <uuid>] [--register] import export startvm controlvm <ovfname/ovaname> [--dry-run -n] [--options keepallmacs keepnatmacs] [more options] (run with -n to have options displayed for a particular OVF) <machines> --output -o <name>.<ovf/ova> [--legacy09 --ovf09 --ovf10 --ovf20] [--manifest] [--iso] [--options manifest iso nomacs nomacsbutnat] [--vsys <number of virtual system>] [--product <product name>] [--producturl <product url>] [--vendor <vendor name>] [--vendorurl <vendor url>] [--version <version info>] [--description <description info>] [--eula <license text>] [--eulafile <filename>]... [--type gui sdl headless] pause resume reset poweroff savestate acpipowerbutton acpisleepbutton keyboardputscancode <hex> [<hex>...] setlinkstate<1-n> on off nic<1-n> null nat bridged intnet generic natnetwork [<devicename>] nictrace<1-n> on off nictracefile<1-n> <filename> nicproperty<1-n> name=[value] nicpromisc<1-n> deny allow-vms allow-all natpf<1-n> [<rulename>],tcp udp,[<hostip>], <hostport>,[<guestip>],<guestport> natpf<1-n> delete <rulename> guestmemoryballoon <balloonsize in MB> usbattach <uuid> <address> usbdetach <uuid> <address> clipboard disabled hosttoguest guesttohost bidirectional draganddrop disabled hosttoguest vrde on off vrdeport <port> Cloner un disque virtuel VHD en VDI page 9/19
vrdeproperty <name=[value]> vrdevideochannelquality <percent> setvideomodehint <xres> <yres> <bpp> [[<display>] [<enabled:yes no> [<xorigin> <yorigin>]]] screenshotpng <file> [display] vcpenabled on off vcpscreens all none <screen>,[<screen>...] setcredentials <username> --passwordfile <file> <password> <domain> [--allowlocallogon <yes no>] teleport --host <name> --port <port> [--maxdowntime <msec>] [--passwordfile <file> --password <password>] plugcpu <id> unplugcpu <id> cpuexecutioncap <1-100> webcam <attach [path [settings]]> <detach [path]> <list> discardstate adoptstate snapshot closemedium storageattach <state_file> take <name> [--description <desc>] [--live] delete <uuid snapname> restore <uuid snapname> restorecurrent edit <uuid snapname> --current [--name <name>] [--description <desc>] list [--details --machinereadable] showvminfo <uuid snapname> disk dvd floppy <uuid filename> [--delete] --storagectl <name> [--port <number>] [--device <number>] [--type dvddrive hdd fdd] [--medium none emptydrive additions <uuid filename> host:<drive> iscsi] [--mtype normal writethrough immutable shareable readonly multiattach] [--comment <text>] [--setuuid <uuid>] [--setparentuuid <uuid>] [--passthrough on off] [--tempeject on off] Cloner un disque virtuel VHD en VDI page 10/19
[--nonrotational on off] [--discard on off] [--bandwidthgroup <name>] [--forceunmount] [--server <name> <ip>] [--target <target>] [--tport <port>] [--lun <lun>] [--encodedlun <lun>] [--username <username>] [--password <password>] [--initiator <initiator>] [--intnet] storagectl bandwidthctl showhdinfo createhd modifyhd clonehd --name <name> [--add ide sata scsi floppy sas] [--controller LSILogic LSILogicSAS BusLogic IntelAHCI PIIX3 PIIX4 ICH6 I82078] [--portcount <1-30>] [--hostiocache on off] [--bootable on off] [--remove] add <name> --type disk network --limit <megabytes per second>[k m g K M G] set <name> --limit <megabytes per second>[k m g K M G] remove <name> list [--machinereadable] (limit units: k=kilobit, m=megabit, g=gigabit, K=kilobyte, M=megabyte, G=gigabyte) <uuid filename> --filename <filename> [--size <megabytes> --sizebyte <bytes>] [--diffparent <uuid> <filename> [--format VDI VMDK VHD] (default: VDI) [--variant Standard,Fixed,Split2G,Stream,ESX] <uuid filename> [--type normal writethrough immutable shareable readonly multiattach] [--autoreset on off] [--property <name=[value]>] [--compact] [--resize <megabytes> --resizebyte <bytes>] <uuid inputfile> <uuid outputfile> [--format VDI VMDK VHD RAW <other>] [--variant Standard,Fixed,Split2G,Stream,ESX] Cloner un disque virtuel VHD en VDI page 11/19
[--existing] convertfromraw convertfromraw getextradata setextradata <filename> <outputfile> [--format VDI VMDK VHD] [--variant Standard,Fixed,Split2G,Stream,ESX] [--uuid <uuid>] stdin <outputfile> <bytes> [--format VDI VMDK VHD] [--variant Standard,Fixed,Split2G,Stream,ESX] [--uuid <uuid>] global <key> enumerate global <key> [<value>] (no value deletes key) setproperty machinefolder default <folder> hwvirtexclusive on off vrdeauthlibrary default <library> websrvauthlibrary default null <library> vrdeextpack null <library> autostartdbpath null <folder> loghistorycount <value> defaultfrontend default <name> usbfilter usbfilter add <index,0-n> --target global --name <string> --action ignore hold (global filters only) [--active yes no] (yes) [--vendorid <XXXX>] (null) [--productid <XXXX>] (null) [--revision <IIFF>] (null) [--manufacturer <string>] (null) [--product <string>] (null) [--remote yes no] (null, VM filters only) [--serialnumber <string>] (null) [--maskedinterfaces <XXXXXXXX>] modify <index,0-n> --target global [--name <string>] [--action ignore hold] (global filters only) [--active yes no] [--vendorid <XXXX> ""] [--productid <XXXX> ""] [--revision <IIFF> ""] [--manufacturer <string> ""] [--product <string> ""] [--remote yes no] (null, VM filters only) [--serialnumber <string> ""] Cloner un disque virtuel VHD en VDI page 12/19
[--maskedinterfaces <XXXXXXXX>] usbfilter sharedfolder sharedfolder guestcontrol remove <index,0-n> --target global add --name <name> --hostpath <hostpath> [--transient] [--readonly] [--automount] remove --name <name> [--transient] exec[ute] --image <path to program> --username <name> [--passwordfile <file> --password <password>] [--domain <domain>] [--verbose] [--timeout <msec>] [--environment "<NAME>=<VALUE> [<NAME>=<VALUE>]"] [--wait-exit] [--wait-stdout] [--wait-stderr] [--dos2unix] [--unix2dos] [-- [<argument1>]... [<argumentn>]] copyfrom <guest source> <host dest> --username <name> [--passwordfile <file> --password <password>] [--domain <domain>] [--verbose] [--dryrun] [--follow] [--recursive] copyto cp <host source> <guest dest> --username <name> [--passwordfile <file> --password <password>] [--domain <domain>] [--verbose] [--dryrun] [--follow] [--recursive] createdir[ectory] mkdir md <guest directory>... --username <name> [--passwordfile <file> --password <password>] [--domain <domain>] [--verbose] [--parents] [--mode <mode>] removedir[ectory] rmdir <guest directory>... --username <name> [--passwordfile <file> --password <password>] [--domain <domain>] [--verbose] [--recursive -R -r] removefile rm <guest file>... --username <name> [--passwordfile <file> --password <password>] [--domain <domain>] [--verbose] ren[ame] mv Cloner un disque virtuel VHD en VDI page 13/19
<source>... <dest> --username <name> [--passwordfile <file> --password <password>] [--domain <domain>] [--verbose] createtemp[orary] mktemp <template> --username <name> [--passwordfile <file> --password <password>] [--directory] [--secure] [--tmpdir <directory>] [--domain <domain>] [--mode <mode>] [--verbose] list <all sessions processes files> [--verbose] process kill --session-id <ID> --session-name <name or pattern> [--verbose] <PID>... <PID n> [p[s]]kill --session-id <ID> --session-name <name or pattern> [--verbose] <PID>... <PID n> session close --session-id <ID> --session-name <name or pattern> --all [--verbose] stat <file>... --username <name> [--passwordfile <file> --password <password>] [--domain <domain>] [--verbose] updateadditions [--source <guest additions.iso>] [--verbose] [--wait-start] [-- [<argument1>]... [<argumentn>]] watch [--verbose] debugvm dumpguestcore --filename <name> info <item> [args] injectnmi log [--release --debug] <settings>... logdest [--release --debug] <settings>... logflags [--release --debug] <settings>... osdetect osinfo getregisters [--cpu <id>] <reg> all... setregisters [--cpu <id>] <reg>=<value>... show [--human-readable --sh-export --sh-eval --cmd-set] <logdbg-settings logrel-settings> Cloner un disque virtuel VHD en VDI page 14/19
[[opt] what...] statistics [--reset] [--pattern <pattern>] [--descriptions] metrics metrics metrics metrics metrics metrics list [* host <vmname> [<metric_list>]] (comma-separated) setup [--period <seconds>] (default: 1) [--samples <count>] (default: 1) [--list] [* host <vmname> [<metric_list>]] query [* host <vmname> [<metric_list>]] enable [--list] [* host <vmname> [<metric_list>]] disable [--list] [* host <vmname> [<metric_list>]] collect [--period <seconds>] (default: 1) [--samples <count>] (default: 1) [--list] [--detach] [* host <vmname> [<metric_list>]] dhcpserver add modify --netname <network_name> [--ip <ip_address> --netmask <network_mask> --lowerip <lower_ip> --upperip <upper_ip>] [--enable --disable] dhcpserver remove --netname <network_name> extpack install [--replace] <tarball> uninstall [--force] <name> cleanup Après ces quelques pages on peut remarquer la complexité de la commande. D autant que l aide de Virtualbox est en anglais. Son utilisation se fait de la sorte : VBoxManage [<option générale>] <commande> Parmi cette multitude de commutateurs qui permettent de cloner une machine, la renommer, Cloner un disque virtuel VHD en VDI page 15/19
la démarrer, modifier on trouver le commutateur «clonehd» 5 Cloner le disque Comme indiqué au paragraphe précédent, c est le commutateur «clonehd» qui sera utilisé : VBoxManage clonehd La commande donne alors les paramètres a passer à la commande. L image disque à cloner tout comme la cible peuvent être aussi bien des fichiers que leur «UUID» La commande suivante permettra d obtenir différentes informations telles que l UUID d un disque VBoxManage showhdinfo Cloner un disque virtuel VHD en VDI page 16/19
Appliquer ensuite la ligne de commande : VBoxManage clonehd "disque_source" "disque_destination" --format choix_du_format Par exemple : VBoxManage clonehd "E:\VDI-HD-perso\essai-install 1-100GO.vdi" "e:\clone.vmdk" --format vmdk Un disque est alors cloné comme ici de VDI vers VMDK. Le cadre de ce document étant de cloner un disque VHD en VDI, la ligne de commande ne se différenciera que de peu : VBoxManage clonehd "source.vhd" "destination.vdi" --format vdi 6 Conclusion Après le clone d un disque dur, il sera nécessaire de terminer en testant le disque (généralement c est le cas car le clonage du disque a pour objectif ensuite de l utiliser sous son nouveau format). Comme indiqué dans ce document, le clonage de disque avec sa conversion ne demande aucune connaissance particulière l aide donne toute l utilisation de VboxManage : Cloner un disque virtuel VHD en VDI page 17/19
Encore faut-il en connaitre l existence Cloner un disque virtuel VHD en VDI page 18/19
Propriété Cloner un disque virtuel VHD en VDI. Jean Paul Loisel 56 Rue Philippe de Girard 59160 Lomme loiseljp@club-internet.fr 06 99 15 99 00 Licence Ce document est distribué en "Public Documentation License". The contents of this Documentation are subject to the Public Documentation License. You may only use this Documentation if you comply with the terms of this License. A copy of the License is available at this mail loiseljp@club-internet.fr. The Original Documentation is " Cloner un disque virtuel VHD en VDI". The Initial Writer of the Original Documentation is Jean Paul LOISEL 2010. All Rights Reserved. Contributor(s):. Portions created by are Copyright [Insert year(s)]. All Rights Reserved. (Contributor contact(s): [Insert hyperlink/alias]). The text of this chapter may differ slightly from the text of the notices in the files of the Original Documentation. You should use the text of this chapter rather than the text found in the Original Documentation for Your Modifications. Cloner un disque virtuel VHD en VDI page 19/19