Serwer maszyn wirtualnych a konkretnie hyperwizor VMWare ESXi jest darmowym narzędziem IT usprawniającym pracę na szerokim polu zastosowań IT takim jak edukacja, optymalizacja wykorzystania zasobów sprzętowych, rozwój aplikacji, testowanie oprogramowania i wiele innych. Niestety owa „darmowość” niesie ze sobą pewne utrudniania czy raczej ograniczenia jakich nie posiada wersja płatna a jednym z nich jest brak automatyzacji w przypadku potrzeby przenoszenia maszyn pomiędzy serwerami czy dyskami twardymi.
Przenoszenie maszyn wirtualnych pomiędzy serwerami VMWare ESXi, jeśli korzystamy z darmowej wersji hyperwizora, nie jest wspomagane przez proces automatyczny typu „kliknij i masz” – trzeba zrobić to ręcznie. Nie jest to trudna sprawa i zostanie opisana niniejszym poście. Oczywiście sposobów przenoszenia jest wiele , ja wybrałem ten, z którego korzystałem ostatnio kilka razy. Generalnie musimy mieć dostęp do konsoli zarówno źródłowego jak i docelowego serwera ESXi. W moim przypadku pracowały dwa serwery ESXi każdy z jednym dyskiem twardym a za drugim razem do dyspozycji miałem tylko jedną maszynę co opiszę nieco dalej. Procedura jest banalna: kopiujesz, za pomocą wbudowanego w system ESXi polecenia scp, odpowiednie pliki maszyny wirtualnej, na docelowym hoście tworzysz nową maszynę a jako dysk twardy podpinasz skopiowane pliki.
1. Aby zalogować się na konsolę systemu ESXi należy ją uruchomić gdyż domyślnie jest ona wyłączona:
– logujesz się do fizycznej konsoli serwera ESXi, za pomocą klawisza F2 wchodzisz do głównego menu, gdzie wybierasz pozycję „Troubleshooting Options”:
Na następnym ekranie należy włączyć (przez naciśnięcie klawisza enter) dwie opcje: „Enable ESXi Shell” i „Enable SSH”
po ich włączeniu zmienia się odpowiednio stan po prawej stronie ekranu:
Powyższe czynności wykonujemy na obu serwerach ESXi. Tym sposobem mamy już dostęp zarówno do lokalnej konsoli systemu jak i po ssh przez sieć. Dostęp lokalny uzyskujemy po naciśnięciu kombinacji ALT-F1. Aby powrócić do głównego menu ALT-F2 (logi ALT-F10).
2. Lokalizacja potrzebnych nam plików jest dość prosta:
– w programie vSphere Client patrzymy jaka nazwę ma nasza maszyna wirtualna (panel po lewej)
– w oknie konsoli serwera ESXi przechodzimy za pomocą polecenia
cd /vmfs/volumes
do katalogu w kjakim ESXi przechowuje zbiory danych tzw „Data Store”
– teraz należy sprawdzić jaki mamy zbiór katalogów:
ls -al
powyższe polecenie wyświetli nam listę wszystkich plików i katalogów. Szukamy czegoś w stylu
datastore -> nazwa-katalogu
co jest łączem do głównego katalogu z danymi (zakładam, że w systemie jest tylko jeden zbiór danych o nazwie „datastore”), jeśli masz inne musisz ustalić w jakim jest przechowywana Twoja maszyna wirtualna. Ustalić to można bardzo prosto: przeglądasz właściwości maszyny wirtualnej (vSphere Client -> lewy panel. pracy klawisz myszki na Twojej maszynie ->Edit Settings -> po lewej pozycja Hard Disk), którą chcesz kopiować, po prawej w sekcji „Disk File” w kwadratowych nawiasach masz informację w jakim zbiorze danych jest maszyna umieszczona:
W tym przypadku jest to [datastore1] czyli nazwa domyślna.
3. Przechodzimy więc do katalogu datastore1 i szukamy katalogu z nazwą identyczną jaką ma nasza maszyna do kopiowania. Przypuścmy iż to będzie „Win7_64” czyli szukamy katalogu Win7_64 (ważna wielkość liter!). Wchodzimy do tego katalogu i przeglądamy jego zawartość czyli:
Mamy tu sporo plików jednak dla nas najważniejsze zostały ujęte w ramkę na powyższej ilustracji a są to pliki:
nazwamaszyny.vmdk i nazwamaszyny-flat.vmdk
Te dwa pliku muszimy skopiować na serwer docelowy gdyż są to pliku wirtualnego dysku twardego (*.vmdk opis, *-flat.vmdk zawartość). Ale uwaga! Aby kopiować te pliki maszynę wirtualną trzeba najpierw zatrzymać a o jej pracy świadczy plik *.vswp. Maszyne zatrzymujemy z poziomu vSphere Client i dopiero teraz możemy przystąpić do kopiowania plików.
4. Powyższe dwa pliki kopiujemy do docelowego datastore (trzeba najpierw sprawdzić jak się nazywa) do jego katalogu głównego, ewentualnie możemy, w celu utrzymania porządku stworzyć tam jakiś katalog tymczasowy np vm-temp:
mkdir /vmfs/volumes/datastore1/vm-temp
i do niego wgrywać pliki. polecenie kopiowania to standardowe scp:
scp *.vmdk root@192.168.0.199:vmfs/volumes/datastore1/vm-temp
gdzie root to nazwa konta użytkownika w systemie docelowym 192.168.0.199 jego adres IP (możesz podać nazwę domenową) a vmfs/volumes/datastore1/vm-temp to pełna ścieżka docelowa. Jak widać za jednym zamachem kopiujemy dwa pliki. operacja może trwać długo gdyż plik *.vmdk zwykle zajmuje sporo miejsca – setki MB lub dziesiątki GB.
5. po zakończeniu kopiowania przechodzimy do konsoli sytemu docelowego i
– tworzymy nową maszynę wirtualną ale bez dysku twardego!
– przenosimy skopiowane wcześniej pliki
mv *.vmdk ../nazwa_katalogu_maszyny
tu uwaga: należy pliki przenieść a nie skopiować gdyż może braknąć miejsca na dysku a poza tym w katalogu tymczasowym, do jakiego zostały wgrane, są one bezużyteczne (chyba, że chcesz mieć kopie), pliki skopiować należy do katalogu zgodnego z nazwą nowej maszyny a najczęściej katalog ten znajduje się poziom wyżej czyli w datastore1 katalogu w jakim mamy nasz katalog tymczasowy i stąd w poleceniu kopiowania ../ czyli wyjdz poziom wyżej
– dodajemy do maszyny wirtualnej nasz dysk i gotowe:
Z kolejnego okna wybieramy opcję use an existing virtual disk i przeszukując datastore wybieramy nasz plik jaki został wcześniej wgrany do katalogu maszyny wirtualnej:
niebawem dalsza część dotycząca przenoszenia między dwoma dyskami systemowymi ale podłączonymi do jednego serwera…