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

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 maszynie wirtualnej pomyślne uruchomienie. W tym artykule szczegółowo opisano sposób używania interfejsu wiersza polecenia platformy Azure do łączenia wirtualnego dysku twardego z inną maszyną wirtualną z systemem Linux w celu naprawienia błędów, a następnie ponownego utworzenia oryginalnej maszyny wirtualnej.

Omówienie procesu odzyskiwania

Proces rozwiązywania problemów wygląda następująco:

  1. Zatrzymaj maszynę wirtualną, na która dotyczy problem.
  2. Wykonaj migawkę z dysku systemu operacyjnego maszyny wirtualnej.
  3. Utwórz dysk na podstawie migawki dysku systemu operacyjnego.
  4. Dołącz i zainstaluj nowy dysk systemu operacyjnego na innej maszynie wirtualnej z systemem Linux w celu rozwiązywania problemów.
  5. Połącz się z maszyną wirtualną rozwiązywania problemów. Edytuj pliki lub uruchom dowolne narzędzia, aby rozwiązać problemy z nowym dyskiem systemu operacyjnego.
  6. Odinstaluj i odłącz nowy dysk systemu operacyjnego od maszyny wirtualnej rozwiązywania problemów.
  7. Zmień dysk systemu operacyjnego dla maszyny wirtualnej, których dotyczy problem.

Aby wykonać te kroki rozwiązywania problemów, potrzebny jest najnowszy interfejs wiersza polecenia platformy Azure zainstalowany i zalogowany na koncie platformy Azure przy użyciu polecenia az login.

Za pomocą poleceń naprawy maszyny wirtualnej można zautomatyzować kroki 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żna

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 serialu, aby ustalić, dlaczego maszyna wirtualna nie może poprawnie uruchomić maszyny wirtualnej. Typowym przykładem jest nieprawidłowy wpis w /etc/fstabprogramie 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 serialu 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 serialu, aby ustalić, dlaczego nie można uruchomić maszyny wirtualnej. Jeśli dane wyjściowe szeregowe nie dostarczają żadnych wskazówek, może być konieczne przejrzenie plików dziennika po /var/log podłączeniu wirtualnego dysku twardego do maszyny wirtualnej 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órego dotyczy problem

Migawka jest pełną kopią dysku VHD tylko do odczytu. Nie można jej dołączyć do maszyny wirtualnej. W następnym kroku utworzymy dysk na podstawie 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 z myOSDisk 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 createprogramu zostanie wyświetlony błąd "Zasób nie został znaleziony". W takim przypadku należy określić --location <region> , aby utworzyć dysk w tym samym regionie co migawka źródła.

Teraz masz kopię oryginalnego dysku systemu operacyjnego. Ten nowy dysk można zainstalować na innej maszynie wirtualnej z systemem Windows w celu rozwiązywania problemów.

Dołączanie nowego wirtualnego dysku twardego do innej maszyny wirtualnej

W kilku następnych krokach użyj innej maszyny wirtualnej do rozwiązywania problemów. Dołącz dysk do tej maszyny wirtualnej rozwiązywania problemów, aby przeglądać i edytować zawartość dysku. Ten proces umożliwia poprawienie wszelkich 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

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ą określonej dystrybucji, aby uzyskać odpowiednie zmiany w poleceniach.

  1. SSH do maszyny wirtualnej 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 usługą /dev/sdc. Służy dmesg do wyświetlania dołączonych dysków:

    dmesg | grep SCSI
    

    Dane wyjściowe są podobne do następującego 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 miejscu /dev/sda , a dysk tymczasowy dla każdej maszyny wirtualnej ma wartość /dev/sdb. Jeśli masz wiele dysków danych, powinny one być w /dev/sdd, /dev/sdei tak dalej.

  2. Utwórz katalog, aby zainstalować istniejący wirtualny dysk twardy. Poniższy przykład tworzy katalog o nazwie troubleshootingdisk:

    sudo mkdir /mnt/troubleshootingdisk
    
  3. Jeśli masz wiele partycji na istniejącym wirtualnym dysku twardym, zainstaluj wymaganą partycję. W poniższym przykładzie zainstalowano pierwszą partycję podstawową pod adresem /dev/sdc1:

    sudo mount /dev/sdc1 /mnt/troubleshootingdisk
    

    Uwaga

    Najlepszym rozwiązaniem jest instalowanie dysków danych na maszynach wirtualnych na platformie Azure przy użyciu uniwersalnie 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 przypadku 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ć dowolne kroki konserwacji i rozwiązywania problemów w razie potrzeby. Po rozwiązaniu problemów wykonaj następujące kroki.

Odinstaluj i odłącz nowy dysk systemu operacyjnego

Po usunięciu błędów należy odinstalować i odłączyć istniejący wirtualny dysk twardy od maszyny wirtualnej rozwiązywania problemów. Wirtualnego dysku twardego nie można używać z żadną inną maszyną wirtualną, dopóki nie zostanie wydana dzierżawa dołączania wirtualnego dysku twardego do maszyny wirtualnej rozwiązywania problemów.

  1. Od sesji SSH do maszyny wirtualnej rozwiązywania problemów odinstaluj istniejący wirtualny dysk twardy. Najpierw zmień katalog nadrzędny punktu instalacji:

    cd /
    

    Teraz odinstaluj istniejący wirtualny dysk twardy. Poniższy przykład odinstaluje urządzenie pod adresem /dev/sdc1:

    sudo umount /dev/sdc1
    
  2. Teraz odłącz wirtualny dysk twardy od maszyny wirtualnej. Zakończ sesję SSH na maszynie wirtualnej rozwiązywania problemów:

    az vm disk detach -g MyResourceGroup --vm-name MyTroubleShootVm --name myNewOSDisk
    

Zmienianie dysku systemu operacyjnego dla maszyny wirtualnej, których dotyczy problem

Za pomocą interfejsu wiersza polecenia platformy Azure można zamienić dyski systemu operacyjnego. Nie trzeba usuwać i tworzyć ponownie 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 uruchomionych 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 platformy Azure.