Rozwiązywanie problemów z maszyną wirtualną z systemem Linux przez dołączenie dysku systemu operacyjnego do maszyny wirtualnej odzyskiwania za pomocą interfejsu wiersza polecenia platformy Azure
Dotyczy: ✔️ maszyny wirtualne z systemem Linux
Jeśli maszyna wirtualna z systemem Linux napotka błąd rozruchu lub dysku, może być konieczne wykonanie kroków rozwiązywania problemów na samym wirtualnym dysku twardym. Typowym przykładem może być nieprawidłowy wpis, /etc/fstab
który uniemożliwia pomyślne uruchomienie maszyny wirtualnej. W tym artykule szczegółowo opisano sposób łączenia wirtualnego dysku twardego z inną maszyną wirtualną z systemem Linux przy użyciu interfejsu wiersza polecenia platformy Azure, aby naprawić wszelkie błędy, a następnie ponownie utworzyć oryginalną maszynę wirtualną.
Omówienie procesu odzyskiwania
Proces rozwiązywania problemów jest następujący:
- Zatrzymaj maszynę wirtualną, której dotyczy problem.
- Utwórz migawkę z dysku systemu operacyjnego maszyny wirtualnej.
- Utwórz dysk na podstawie migawki dysku systemu operacyjnego.
- Dołączanie i instalowanie nowego dysku systemu operacyjnego na innej maszynie wirtualnej z systemem Linux na potrzeby rozwiązywania problemów.
- Nawiąż połączenie z maszyną wirtualną rozwiązywania problemów. Edytuj pliki lub uruchom dowolne narzędzia, aby rozwiązać problemy z nowym dyskiem systemu operacyjnego.
- Odinstalowywanie i odłączanie nowego dysku systemu operacyjnego od maszyny wirtualnej rozwiązywania problemów.
- Zmień dysk systemu operacyjnego dla maszyny wirtualnej, której dotyczy problem.
Aby wykonać te kroki rozwiązywania problemów, musisz zainstalować najnowszy interfejs wiersza polecenia platformy Azure i zalogować się na koncie platformy Azure przy użyciu polecenia az login.
Polecenia naprawy maszyny wirtualnej umożliwiają zautomatyzowanie kroków 1, 2, 3, 4, 6 i 7. Aby uzyskać więcej dokumentacji i instrukcji, zobacz Naprawianie maszyny wirtualnej z systemem Linux przy użyciu poleceń naprawy maszyny wirtualnej platformy Azure.
Ważne
Skrypty w tym artykule dotyczą tylko maszyn wirtualnych korzystających z dysku zarządzanego.
W poniższych przykładach zastąp nazwy parametrów własnymi wartościami, takimi jak myResourceGroup
i myVM
.
Określanie problemów z rozruchem
Sprawdź dane wyjściowe szeregowe, aby ustalić, dlaczego maszyna wirtualna nie może poprawnie uruchomić. Typowym przykładem jest nieprawidłowy wpis w /etc/fstab
pliku lub źródłowy wirtualny dysk twardy, który jest usuwany lub przenoszony.
Pobierz dzienniki rozruchu za pomocą polecenia az vm boot-diagnostics get-boot-log. Poniższy przykład pobiera dane wyjściowe szeregowe z maszyny wirtualnej o nazwie myVM
w grupie zasobów o nazwie myResourceGroup
:
az vm boot-diagnostics get-boot-log --resource-group myResourceGroup --name myVM
Przejrzyj dane wyjściowe szeregowe, aby określić, dlaczego nie można uruchomić maszyny wirtualnej. Jeśli dane wyjściowe szeregowe nie zawierają żadnych wskazówek, może być konieczne przejrzenie plików dziennika po /var/log
nawiązaniu połączenia wirtualnego dysku twardego z maszyną wirtualną rozwiązywania problemów.
Zatrzymywanie maszyny wirtualnej
Poniższy przykład zatrzymuje maszynę wirtualną o nazwie myVM
z grupy zasobów o nazwie myResourceGroup
:
az vm stop --resource-group MyResourceGroup --name MyVm
Tworzenie migawki z dysku systemu operacyjnego maszyny wirtualnej, której dotyczy problem
Migawka to pełna kopia dysku VHD tylko do odczytu. Nie można dołączyć go do maszyny wirtualnej. W następnym kroku utworzymy dysk z tej migawki. Poniższy przykład tworzy migawkę o nazwie mySnapshot
z dysku systemu operacyjnego maszyny wirtualnej o nazwie "myVM".
#Get the OS disk Id
$osdiskid=(az vm show -g myResourceGroup -n myVM --query "storageProfile.osDisk.managedDisk.id" -o tsv)
#creates a snapshot of the disk
az snapshot create --resource-group myResourceGroupDisk --source "$osdiskid" --name mySnapshot
Tworzenie dysku na podstawie migawki
Ten skrypt tworzy dysk zarządzany o nazwie myOSDisk
z migawki o nazwie mySnapshot
.
#Provide the name of your resource group
$resourceGroup="myResourceGroup"
#Provide the name of the snapshot that will be used to create Managed Disks
$snapshot="mySnapshot"
#Provide the name of the Managed Disk
$osDisk="myNewOSDisk"
#Provide the size of the disks in GB. It should be greater than the VHD file size.
$diskSize=128
#Provide the storage type for Managed Disk. Premium_LRS or Standard_LRS.
$storageType="Premium_LRS"
#Provide the OS type
$osType="linux"
#Get the snapshot Id
$snapshotId=(az snapshot show --name $snapshot --resource-group $resourceGroup --query id -o tsv)
# Create a new Managed Disks using the snapshot Id.
az disk create --resource-group $resourceGroup --name $osDisk --sku $storageType --size-gb $diskSize --source $snapshotId
Jeśli grupa zasobów i migawka źródłowa nie znajdują się w tym samym regionie, podczas uruchamiania az disk create
polecenia zostanie wyświetlony błąd "Zasób nie zostanie znaleziony". W takim przypadku należy określić --location <region>
, aby utworzyć dysk w tym samym regionie co migawka źródłowa.
Teraz masz kopię oryginalnego dysku systemu operacyjnego. Ten nowy dysk można zainstalować na innej maszynie wirtualnej z systemem Windows na potrzeby rozwiązywania problemów.
Dołączanie nowego wirtualnego dysku twardego do innej maszyny wirtualnej
W następnych kilku krokach użyjesz innej maszyny wirtualnej do celów rozwiązywania problemów. Dysk jest dołączany do tej maszyny wirtualnej rozwiązywania problemów, aby przeglądać i edytować zawartość dysku. Ten proces umożliwia poprawienie błędów konfiguracji lub przejrzenie dodatkowych plików dziennika aplikacji lub systemu.
Ten skrypt dołącza dysk myNewOSDisk
do maszyny wirtualnej MyTroubleshootVM
:
# Get ID of the OS disk that you just created.
$myNewOSDiskid=(az disk show -g $resourceGroup -n $osDisk --query id -o tsv)
# Attach the disk to the troubleshooting VM
az vm disk attach --disk $myNewOSDiskid --resource-group $resourceGroup --size-gb $diskSize --sku $storageType --vm-name MyTroubleshootVM
Instalowanie dołączonego dysku danych
Uwaga 16.
W poniższych przykładach szczegółowo opisano kroki wymagane na maszynie wirtualnej z systemem Ubuntu. Jeśli używasz innej dystrybucji systemu Linux, takiej jak Red Hat Enterprise Linux lub SUSE, lokalizacje plików dziennika i mount
polecenia mogą być nieco inne. Zapoznaj się z dokumentacją dotyczącą określonej dystrybucji, aby uzyskać odpowiednie zmiany w poleceniach.
Połączenie SSH z maszyną wirtualną rozwiązywania problemów przy użyciu odpowiednich poświadczeń. Jeśli ten dysk jest pierwszym dyskiem danych dołączonym do maszyny wirtualnej rozwiązywania problemów, dysk prawdopodobnie jest połączony z
/dev/sdc
programem . Użyjdmesg
polecenia , aby wyświetlić dołączone dyski:dmesg | grep SCSI
Dane wyjściowe są podobne do poniższego przykładu:
[ 0.294784] SCSI subsystem initialized [ 0.573458] Block layer SCSI generic (bsg) driver version 0.4 loaded (major 252) [ 7.110271] sd 2:0:0:0: [sda] Attached SCSI disk [ 8.079653] sd 3:0:1:0: [sdb] Attached SCSI disk [ 1828.162306] sd 5:0:0:0: [sdc] Attached SCSI disk
W poprzednim przykładzie dysk systemu operacyjnego znajduje się w punkcie
/dev/sda
, a dysk tymczasowy udostępniany dla każdej maszyny wirtualnej ma wartość/dev/sdb
. Jeśli masz wiele dysków danych, powinny znajdować się w/dev/sdd
lokalizacji ,/dev/sde
itd.Utwórz katalog, aby zainstalować istniejący wirtualny dysk twardy. Poniższy przykład tworzy katalog o nazwie
troubleshootingdisk
:sudo mkdir /mnt/troubleshootingdisk
Jeśli masz wiele partycji na istniejącym wirtualnym dysku twardym, zainstaluj wymaganą partycję. Poniższy przykład instaluje pierwszą partycję podstawową w lokalizacji
/dev/sdc1
:sudo mount /dev/sdc1 /mnt/troubleshootingdisk
Uwaga 16.
Najlepszym rozwiązaniem jest zainstalowanie dysków danych na maszynach wirtualnych na platformie Azure przy użyciu uniwersalnego unikatowego identyfikatora (UUID) wirtualnego dysku twardego. W tym krótkim scenariuszu rozwiązywania problemów instalowanie wirtualnego dysku twardego przy użyciu identyfikatora UUID nie jest konieczne. Jednak w normalnym użyciu edytowanie
/etc/fstab
w celu zainstalowania wirtualnych dysków twardych przy użyciu nazwy urządzenia zamiast identyfikatora UUID może spowodować niepowodzenie rozruchu maszyny wirtualnej.
Rozwiązywanie problemów z nowym dyskiem systemu operacyjnego
Po zainstalowaniu istniejącego wirtualnego dysku twardego można teraz wykonać wszelkie kroki konserwacji i rozwiązywania problemów zgodnie z potrzebami. Po usunięciu problemów wykonaj następujące kroki.
Odinstalowywanie i odłączanie nowego dysku systemu operacyjnego
Po usunięciu błędów należy odinstalować istniejący wirtualny dysk twardy i odłączyć go od maszyny wirtualnej rozwiązywania problemów. Nie można używać wirtualnego dysku twardego z inną maszyną wirtualną, dopóki dzierżawa dołącza wirtualnego dysku twardego do maszyny wirtualnej rozwiązywania problemów zostanie zwolniona.
Z sesji SSH do maszyny wirtualnej rozwiązywania problemów odinstaluj istniejący wirtualny dysk twardy. Najpierw zmień katalog nadrzędny dla punktu instalacji:
cd /
Teraz odinstaluj istniejący wirtualny dysk twardy. W poniższym przykładzie urządzenie jest odinstalowywany pod adresem
/dev/sdc1
:sudo umount /dev/sdc1
Teraz odłącz wirtualny dysk twardy od maszyny wirtualnej. Zamknij sesję SSH z maszyną wirtualną rozwiązywania problemów:
az vm disk detach -g MyResourceGroup --vm-name MyTroubleShootVm --name myNewOSDisk
Zmienianie dysku systemu operacyjnego dla maszyny wirtualnej, której dotyczy problem
Aby zamienić dyski systemu operacyjnego, możesz użyć interfejsu wiersza polecenia platformy Azure. Nie musisz usuwać i ponownie utworzyć maszyny wirtualnej.
Ten przykład zatrzymuje maszynę wirtualną o nazwie myVM
i przypisuje dysk o nazwie myNewOSDisk
jako nowy dysk systemu operacyjnego.
# Stop the affected VM
az vm stop -n myVM -g myResourceGroup
# Get ID of the OS disk that is repaired.
$myNewOSDiskid=(az disk show -g $resourceGroup -n $osDisk --query id -o tsv)
# Change the OS disk of the affected VM to "myNewOSDisk"
az vm update -g myResourceGroup -n myVM --os-disk $myNewOSDiskid
# Start the VM
az vm start -n myVM -g myResourceGroup
Następne kroki
Jeśli masz problemy z nawiązywaniem połączenia z maszyną wirtualną, zobacz Rozwiązywanie problemów z połączeniami SSH z maszyną wirtualną platformy Azure. W przypadku problemów z uzyskiwaniem dostępu do aplikacji działających na maszynie wirtualnej zobacz Rozwiązywanie problemów z łącznością aplikacji na maszynie wirtualnej z systemem Linux.
Skontaktuj się z nami, aby uzyskać pomoc
Jeśli masz pytania lub potrzebujesz pomocy, utwórz wniosek o pomoc techniczną lub zadaj pytanie w społeczności wsparcia dla platformy Azure. Możesz również przesłać opinię o produkcie do społeczności opinii na temat platformy Azure.