Przenieś VMware ESXi VM do nowego magazynu danych - zachowaj cienkie przydzielanie


27

Szukam dobrego rozwiązania problemu środowiska VMware ESXi, w którym nie ma dostępnego vCenter.

Jaki jest najlepszy sposób przeniesienia maszyny wirtualnej z jednego magazynu danych do drugiego na jednym hoście ESXi, przy jednoczesnym zachowaniu cienkiego przydzielania VMDK?

Jest to samodzielny serwer, który został rozszerzony o inną macierz dyskową / magazyn danych. Chciałbym przenieść dane zawarte w starej tablicy do nowej.

Edycja: Rozmiar docelowego magazynu danych jest w rzeczywistości mniejszy niż źródło. Nie mam wystarczająco dużo miejsca, aby skopiować gruby plik.


Czy naprawdę uważasz, że mądrze jest przenieść maszynę wirtualną do magazynu danych, który jest zbyt mały, aby zmieścić się w niej? Co dzieje się z jakimś nieuczciwym procesem polegającym na tym, że VM decyduje się na wykorzystanie całej przestrzeni dyskowej?
Zoredache

Ogólnie nie ... ale to jest szczególny przypadek. Maszyna wirtualna nie będzie rosła.
ewwhite

Jeśli maszyna wirtualna nie wzrośnie, nie ma powodu, aby utrzymywać ją w niewielkim zakresie.
Jim B

Jaka wersja ESXi?
Jed Daniels

To jest ESXi 5.
ewwhite

Odpowiedzi:


21

Możesz także użyć Plik -> Eksportuj -> Eksportuj szablon OVF

a następnie zaimportuj go. Ostatnim razem, gdy próbowałem, myślę, że to zachowuje format vmdk. Nie jestem już tego taki pewien, ponieważ minęło już sporo czasu.


3
Zakładając wersję 4.1 lub nowszą, podczas importowania pojawi się monit o użycie cienkiego lub grubego.
Jed Daniels

2
Masz to! Eksport OVF do pliku kompresji rzadkiej był szybki i bezbolesny. Podczas importu dostałem opcję cienkiego lub grubego zabezpieczenia, a import był szybki; 5 minut na maszynę wirtualną 72 GB (używane 8 GB).
ewwhite

3
FWIW, możesz to również zrobić z wiersza poleceń, używając ovftool.
Jed Daniels

28

Po prostu sam znalazłem sposób, aby to zrobić. Oto, miejmy nadzieję, łatwy do naśladowania przewodnik, w jaki sposób przenieść maszynę wirtualną do nowego magazynu danych przy jednoczesnym zachowaniu cienkiego udostępniania podczas przesyłania (a tym samym skrócenia czasu przesyłania):

Przewodnik krok po kroku za pomocą vmkfstools w CLI

  1. Wyłącz maszynę wirtualną
  2. (Opcjonalnie) W razie potrzeby konsoliduj migawki.
  3. Usuń maszynę wirtualną z zasobów vCenter
    • Kliknij prawym przyciskiem myszy maszynę Wirtualną i kliknij „Usuń z zapasów” wprowadź opis zdjęcia tutaj
  4. Włącz SSH na komputerze ESXi
    • W kliencie vSphere przejdź do: Konfiguracja -> Profil bezpieczeństwa -> Właściwości (obok Usług) -> SSH (na liście) -> Opcje -> Start
  5. Zaloguj się przez SSH jako root
  6. Przygotuj katalog w docelowym magazynie danych
    • mkdir "/vmfs/volumes/destination_datastore/Some VM"
  7. Sklonuj pliki .vmdk przy użyciu cienkiego udostępniania
    • vmkfstools -i "/vmfs/volumes/source_datastore/Some VM/Some VM.vmdk" -d thin "/vmfs/volumes/destination_datastore/Some VM/Some VM.vmdk"
  8. Skopiuj wszystkie pozostałe pliki (unikając nadpisywania plików .vmdk)
    • find "/vmfs/volumes/source_datastore/Some VM" -maxdepth 1 -type f | grep -v ".vmdk" | while read file; do cp "$file" "/vmfs/volumes/destination_datastore/Some VM"; done
  9. Jeśli nie skonsolidowałeś migawek w kroku 2, być może istnieją pliki delta migawek .vmdk, musimy również skopiować je (może to zająć trochę czasu):
    • find "/vmfs/volumes/source_datastore/Some VM" -maxdepth 1 -type f | grep [0123456789][0123456789][0123456789][0123456789][0123456789][0123456789] | grep ".vmdk" | while read file; do cp "$file" "/vmfs/volumes/destination_datastore/Some VM"; done
  10. Po zakończeniu klonowania i kopiowania wszystkich niezbędnych plików dodaj maszynę wirtualną z nowego magazynu danych z powrotem do ekwipunku
    • W kliencie vSphere przejdź do: Konfiguracja-> Pamięć-> Przeglądarka danych , kliknij prawym przyciskiem docelowy magazyn danych, do którego przeniesiono maszynę wirtualną, i kliknij „Przeglądaj magazyn danych”. wprowadź opis zdjęcia tutaj
  11. Przejdź do maszyny wirtualnej i kliknij prawym przyciskiem myszy plik .vmx , a następnie kliknij polecenie „Dodaj do zapasów” wprowadź opis zdjęcia tutaj
  12. Uruchom maszynę wirtualną, aby zobaczyć, czy to działa, gdy zostaniesz zapytany, czy ją skopiowałeś, czy przeniesiesz, po prostu odpowiedz, że ją skopiowałeś. (Nie jestem pewien, co to oznacza, ale myślę, że ma to związek przynajmniej ze zmianą adresu MAC vNIC). wprowadź opis zdjęcia tutaj
  13. Jeśli maszyna wirtualna uruchomi się dobrze, możesz usunąć maszynę wirtualną ze starego magazynu danych.
    • rm -rf "/vmfs/volumes/source_datastore/Some VM"

Uwaga: Testowane tylko z ESXi 5

Ilustracje bezwstydnie skopiowane z tego bloga .


1
To powinno działać, ale nawet dostarczanie informacji o tym, jak przenieść maszynę wirtualną za pomocą migawek, jest głupie. Powiedz ludziom, aby usunęli wszystkie migawki, zanim spróbujesz wykonać taki ruch.
pauska

2
Powyższy post @ ohaal, w esxi 5.5 u1, musiał zmienić -print0 na -print i działało to jak urok! PS. Chciałbym zagłosować, ale bez przedstawiciela.
icereval

2
@ohaal zweryfikowany do pracy na ESXi 6.7. Dziękuję Ci!
Ed of the Mountain

Czy istnieje powód do kopiowania innych plików oprócz plików .vmdk i .vmx? Jeśli nie, możesz zmienić findlinię na prostą cp.
Agustín Lado,

8

Sprawdź tę odpowiedź . Ta sama logika obowiązuje w twojej sytuacji, mianowicie ten cytat:

Nazywa się to „Konwerter”, ale tak naprawdę powinien się nazywać „Uniwersalny narzędzie do przenoszenia danych systemu operacyjnego”. Jednak nie zsuwa się z języka tak ładnie.

Jedyna różnica polega na tym, że hosty źródłowy i docelowy będą takie same, ale magazyny danych będą się różnić. Oznacza to, że pliki zostaną przesłane z hosta ESXi na komputer z konwerterem, a następnie z powrotem na host. Byłoby miło, gdyby Konwerter był „inteligentny” i wiedział, że to ten sam host. Niestety to kosztuje.

CAVEAT: Konwersja maszyny wirtualnej wygeneruje nowy adres MAC dla dowolnych kart sieciowych. Większość systemów gościa interpretuje to jako nowe urządzenie.


1
Doskonały punkt na temat adresów MAC.
JamesBarnett,

3

W rzeczywistości po prostu utwórz folder w docelowym miejscu docelowym, a następnie skopiuj pliki do folderu ze źródła, a pozostanie cienki. Po skopiowaniu folder zostanie przekonwertowany z cienkiego na gruby ..


2
To jest niepoprawne. sprawdzone przy użyciu du -h .Thin stało się grube po skopiowaniu do już utworzonego folderu w tym samym magazynie danych. cp C* ../newdir
Rowan Hawkins

0

Chciałbym skopiować plik, a następnie przekonwertować go do cienkiego za pomocą vmkfstools.


Rozmiar docelowego magazynu danych jest w rzeczywistości mniejszy niż źródło. Nie mam wystarczająco dużo miejsca, aby skopiować gruby plik.
ewwhite

W takim przypadku kopiowanie i konwersja nie będą działać, ale można również użyć vmkfstools, aby sklonować go bezpośrednio do miejsca docelowego. Skróci to również czas potrzebny na przesłanie go, ponieważ nie przesyła dodatkowych GB zer. Moja odpowiedź zawiera szczegółowe informacje, jak to zrobić.
ohaal
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.