Ćwiczenie — Poprawne określanie rozmiaru maszyn wirtualnych
Maszyny wirtualne muszą mieć rozmiary stosowne do oczekiwanej pracy. Maszyna wirtualna bez odpowiedniej ilości pamięci lub zasobów procesora CPU ulegnie awarii przy zbyt dużym obciążeniu lub będzie działać zbyt wolno, a tym samym nieefektywnie.
Wstępnie zdefiniowane rozmiary maszyn wirtualnych
Podczas tworzenia maszyny wirtualnej można podać wartość rozmiaru maszyny wirtualnej, która określa ilość zasobów obliczeniowych poświęconych maszynie wirtualnej, w tym procesor CPU, procesor GPU i pamięć udostępnioną maszynie wirtualnej z platformy Azure.
Platforma Azure definiuje zestaw wstępnie zdefiniowanych rozmiarów maszyn wirtualnych dla systemów Linux i Windows, z których mają być wybierane na podstawie oczekiwanego użycia.
Typ | Rozmiary | opis |
---|---|---|
Ogólnego przeznaczenia | Dsv3, Dv3, DSv2, Dv2, DS, D, Av2, A0–7 | Zrównoważona moc procesora CPU w stosunku do pamięci. Opcja idealna w przypadku tworzenia i testowania, małych i średnich aplikacji oraz rozwiązań dotyczących danych. |
Optymalizacja pod kątem obliczeń | Fs, F | Duża moc procesora CPU w stosunku do pamięci. Opcja dobra w przypadku aplikacji o średnim ruchu, urządzeń sieciowych i procesów wsadowych. |
Optymalizacja pod kątem pamięci | Esv3, Ev3, M, GS, G, DSv2, DS, Dv2, D | Duża ilość pamięci na rdzeń. Opcja bardzo dobra w przypadku relacyjnych baz danych, średnich i dużych pamięci podręcznych oraz analizowania w pamięci. |
Optymalizacja pod kątem magazynu | Ls | Wysoka przepływność dysku i duża liczba operacji we/wy. Opcja idealna w przypadku danych big data oraz baz danych SQL i NoSQL. |
Optymalizacja pod kątem procesora GPU | NV, NC | Maszyny wirtualne wyspecjalizowane pod kątem intensywnego renderowania grafiki i edytowania materiałów wideo. |
Wysoka wydajność | H, A8-11 | Maszyny wirtualne z najbardziej wydajnymi procesorami CPU oraz, opcjonalnie, interfejsami sieciowymi zapewniającymi wysoką przepływność (RDMA). |
Dostępne rozmiary zmieniają się w zależności od regionu, w którym tworzysz maszynę wirtualną. Aby wyświetlić listę dostępnych rozmiarów, użyj polecenia vm list-sizes
. Spróbuj wpisać następujące polecenie w usłudze Azure Cloud Shell:
az vm list-sizes --location eastus --output table
Poniżej przedstawiono skrócony wynik dla regionu eastus
:
MaxDataDiskCount MemoryInMb Name NumberOfCores OsDiskSizeInMb ResourceDiskSizeInMb
------------------ ------------ ---------------------- --------------- ---------------- ----------------------
2 2048 Standard_B1ms 1 1047552 4096
2 1024 Standard_B1s 1 1047552 2048
4 8192 Standard_B2ms 2 1047552 16384
4 4096 Standard_B2s 2 1047552 8192
8 16384 Standard_B4ms 4 1047552 32768
16 32768 Standard_B8ms 8 1047552 65536
4 3584 Standard_DS1_v2 1 1047552 7168
8 7168 Standard_DS2_v2 2 1047552 14336
16 14336 Standard_DS3_v2 4 1047552 28672
32 28672 Standard_DS4_v2 8 1047552 57344
64 57344 Standard_DS5_v2 16 1047552 114688
....
64 3891200 Standard_M128-32ms 128 1047552 4096000
64 3891200 Standard_M128-64ms 128 1047552 4096000
64 3891200 Standard_M128ms 128 1047552 4096000
64 2048000 Standard_M128s 128 1047552 4096000
64 1024000 Standard_M64 64 1047552 8192000
64 1792000 Standard_M64m 64 1047552 8192000
64 2048000 Standard_M128 128 1047552 16384000
64 3891200 Standard_M128m 128 1047552 16384000
Określanie rozmiaru podczas tworzenia maszyny wirtualnej
Nie określiliśmy rozmiaru podczas tworzenia maszyny wirtualnej, więc platforma Azure wybrała domyślny rozmiar ogólnego przeznaczenia. Możemy jednak określić rozmiar w ramach polecenia vm create
, używając parametru --size
. Na przykład możesz użyć następującego polecenia, aby utworzyć dwurdzeniową maszynę wirtualną:
az vm create \
--resource-group "<rgn>[sandbox resource group name]</rgn>" \
--name SampleVM2 \
--image Ubuntu2204 \
--admin-username azureuser \
--generate-ssh-keys \
--verbose \
--size "Standard_DS2_v2"
Ostrzeżenie
Twoja warstwa subskrypcji wymusza limity dotyczące liczby zasobów, które możesz utworzyć, a także całkowitego rozmiaru tych zasobów. Limity przydziału zależą od typu subskrypcji i regionu. Interfejs wiersza polecenia platformy Azure informuje o przekroczeniu tego limitu z powodu błędu Przekroczono limit przydziału. Jeśli wystąpi ten błąd we własnej płatnej subskrypcji, możesz poprosić o podniesienie limitów skojarzonych z subskrypcją płatną (do 10 000 procesorów wirtualnych) za pośrednictwem bezpłatnego żądania online.
Zmiana rozmiaru istniejącej maszyny wirtualnej
Możemy również zmienić rozmiar istniejącej maszyny wirtualnej, jeśli obciążenie ulegnie zmianie lub jeśli rozmiar został niepoprawnie zmieniony podczas tworzenia. Użyjmy pierwszej utworzonej maszyny wirtualnej SampleVM. Przed zażądaniem zmiany rozmiaru musimy sprawdzić, czy żądany rozmiar jest dostępny w klastrze, w którym nasza maszyna wirtualna jest częścią. Możemy użyć vm list-vm-resize-options
polecenia :
az vm list-vm-resize-options \
--resource-group "<rgn>[sandbox resource group name]</rgn>" \
--name SampleVM \
--output table
To polecenie zwraca listę wszystkich możliwych konfiguracji rozmiaru dostępnych w grupie zasobów. Jeśli żądany rozmiar nie jest dostępny w naszym klastrze, ale jest dostępny w regionie, możemy cofnąć przydział maszyny wirtualnej. To polecenie zatrzymuje uruchomioną maszynę wirtualną i usuwa ją z bieżącego klastra bez utraty żadnych zasobów. Następnie możemy zmienić jego rozmiar, co spowoduje ponowne utworzenie maszyny wirtualnej w nowym klastrze, w którym jest dostępna konfiguracja rozmiaru.
Uwaga
W piaskownicy środowiska Microsoft Learn istnieje ograniczenie do kilku rozmiarów maszyn wirtualnych.
Aby zmienić rozmiar maszyny wirtualnej, użyjemy vm resize
polecenia . Na przykład możemy dowiedzieć się, że nasza maszyna wirtualna jest zbyt słaba do wykonania danego zadania. Możemy podnieść go do D2s_v3, gdzie ma 2 rdzenie wirtualne i 8 GB pamięci. Wpisz następujące polecenie w usłudze Cloud Shell:
az vm resize \
--resource-group "<rgn>[sandbox resource group name]</rgn>" \
--name SampleVM \
--size Standard_D2s_v3
To polecenie zajmuje kilka minut, aby zmniejszyć zasoby maszyny wirtualnej, a po zakończeniu zwraca nową konfigurację JSON.