Oprogramowanie Oracle VM VirtualBox jest narzędziem, które lubi wszystkich, i nie ma z nikim żadnego problemu 🙂 Nie ma specjalnie nic przeciw, jeżeli chcemy pracować z czymś co nie jest sumarycznie „jego”. Przykładem jest to, że może wykorzystywać kilka różnych typów dysków wirtualnych, jak „vhd„/”vhdx„ (natywne dla rozwiązania Hyper-V), „vmdk„ (natywne dla rozwiązań VMware), mimo tego, że jego natywny format dysku to „VDI„ (VirtualBox Disk Image).
To oznacza, że teoretycznie, jeśli dostaliśmy/pobraliśmy dysk wirtualny w formacie vhd/vhdx/vmdk, to VirtualBox bez problemu pozwoli bezpośrednio podpiąć taki dysk do „jego” wirtualnej maszyny, i wykorzystywać go w ten sposób „na wprost”. Ooooczywiście, to nie oznacza jeszcze, że tak kompletnie bez problemu się uruchomi sam system zainstalowany wewnątrz wirtualnego dysku, szczególnie jeżeli mówimy o systemach MS Windows, gdyż jeżeli takowy był instalowany pod Hyper-V, czy VMware Workstation, to tam emulowany sprzęt był inny niż w VirtualBox, także system po uruchomieniu się szybko zauważy taką większą zmianę sprzętu, a to oznacza instalację sterowników, itd. Do tego, jeżeli mieliśmy pod Hyper-V tworzony wirtualny dysk jako „vhd”, to tenże był tam tworzony jako dysk ATA, a w VirtualBox mechanicznie wrzucimy go pod kontroler SATA, i Windows szybko po uruchomieniu się… powiesi 🙂
Mimo wszystko, w praktyce okazuje się czasem, że jednak chcemy/potrzebujemy z różnych powodów, przekonwertować dysk w formacie „obcym” jakim jest vhd/vhdx/vmdk do natywnego dla VirtualBox’a formatu „vdi„. Choć pewniej znacznie częściej mamy sytuację odwrotną, czyli mamy wirtualny dysk w formacie „vdi„, ale ponieważ Hyper-V ani VMware nie są tak miłe jak VirtualBox, i lubią tylko „swoje”, to potrzebujemy czasem przekonwertować dysk w formacie „vdi„, do vhd/vhdx/vmdk. I tu powstaje pytanie: czy to się da zrobić, a jak tak, to jak?
Odpowiedź brzmi: tak, da się, a jak to zrobić, to zobaczymy w dalszej części artykułu 🙂
To jak wykonać konwersję obcego wirtualnego dysku vhd/vhdx/vmdk do formatu „vdi„?
Istotna na początek informacja, to taka, że poniższa procedura jest identyczna, niezależna od tego z jakiego formatu wirtualnego dysku chcemy wykonać konwersję do formatu „vdi„.
Załóżmy więc na początek, że wirtualny dysk jaki mamy aktualnie, to dysk w formacie „vhd„:
I chcemy teraz przekonwertować ten dysk „vhd” do formatu „vdi” (tak, wiem, że przecież można go podłączyć na wprost, ale ten musiałby być podłączony jako dysk ATA, a z różnych powodów potrzebuję aby można było go podłączyć jako dysk SATA, a takim też po konwersji się stanie).
W tym celu, w systemie gospodarza co istotne, uruchamiamy wiersz poleceń, i w nim przechodzimy do katalogu C:\Program Files\Oracle\VirtualBox (konkretnie do katalogu, gdzie zainstalowaliśmy aplikację VirtualBox – także jak zainstalowaliśmy gdzieś indziej, niż ten podany domyślny, to oczywiście musimy przejść do tego katalogu gdzie my mamy zainstalowaną tą aplikację), wykorzystując polecenie:
cd C:\Program Files\Oracle\VirtualBox |
I teraz możemy już wydać polecenie konwersji wirtualnego dysku, zgodnie ze schematem:
VBoxManage clonehd {ścieżka do dysku jaki chcemy konwertować} {ścieżka do nowopowstałego po konwersji dysku} --format vdi |
gdzie pod {ścieżka do dysku jaki chcemy konwertować} podajemy ścieżkę do pliku wirtualnego dysku, który chcemy skonwertować (warto wiedzieć, że ścieżkę do dysku można także uzupełnić przeciągając po prostu plik dysku wirtualnego z eksploratora plików do okna wiersza poleceń), a pod {ścieżka do dysku jaki chcemy konwertować} podajemy ścieżkę do pliku wirtualnego dysku, który powstanie już skonwertowany w formacie „vdi” jako kopia konwertowanego dysku wirtualnego.
Przykładowo, dla naszego analizowanego przypadku, wyglądałoby następująco:
W efekcie wykonania powyższego polecenia okazuje się, że pojawiła się nam kopia naszego pliku wirtualnego dysku, już w formacie „vdi”:
I teraz tenże plik możemy już wykorzystać, podpinając w VirtualBox pod wybraną wirtualną maszynę, i modlić się, aby po włączeniu wirtualnej maszyny nie było problemów jakichś czasem z tym dyskiem (jeżeli jest to wirtualny dysk utworzony pod innym oprogramowaniem wirtualizacyjnym niż VirtualBox) 😉
Oczywiście przypominam, że powyższa procedura jest identyczna, niezależnie, czy chcemy przekonwertować plik w formacie „vmdk„, czy „vhdx„, czy „vhd” – kwestia tylko wskazania ścieżki do pliku jaki chcemy przekonwertować, natomiast format wejściowy dla poleceniu nie musi być specjalnie podawany, sam sobie z rozpoznaniem poradzi
A jak wykonać konwersję odwrotną: czyli z formatu vdi do formatu vhd/vhdx/vmdk?
Sumarycznie procedura jest… identyczna, tylko tyle, że w ramach polecenia konwertującego, po przełączniku/parametrze „–format” podajemy zamiast „vdi” pożądany format wirtualnego dysku, do którego konwersję chcemy wykonać, czyli:
- dla konwersji do dysku vmdk:
VBoxManage clonehd {ścieżka do dysku jaki chcemy konwertować} {ścieżka do nowopowstałego po konwersji dysku} --format vmdk |
- dla konwersji do dysku vhd:
VBoxManage clonehd {ścieżka do dysku jaki chcemy konwertować} {ścieżka do nowopowstałego po konwersji dysku} --format vhd |
Przykładowo:
w efekcie czego otrzymujemy:
i teraz można te dyski już podpinać pod wirtualne maszyny w Hyper-V (dysk vhd) czy VMware (dysk vmdk).
A co z konwersją do vhdx, bo gdzieś chyba powyżej się zgubiło?
Ano tu się okazuje, że o ile narzędziem vboxmanage możemy zrealizować konwersję z formatu vhdx do vdi:
to gdy chcemy wykonać konwersję odwrotną z vdi do vhdx, to niestety vboxmanage mówi nam, że mu przykro, ale takiej konwersji nie obsługuje:
Inna sprawa, że przecież mamy możliwość skorzystania z vhd, a ten format Hyper-V także obsługuje.