Udostępnij za pośrednictwem


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:

  1. Zatrzymaj maszynę wirtualną, której dotyczy problem.
  2. Utwórz migawkę z dysku systemu operacyjnego maszyny wirtualnej.
  3. Utwórz dysk na podstawie migawki dysku systemu operacyjnego.
  4. Dołączanie i instalowanie nowego dysku systemu operacyjnego na innej maszynie wirtualnej z systemem Linux na potrzeby rozwiązywania problemów.
  5. 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.
  6. Odinstalowywanie i odłączanie nowego dysku systemu operacyjnego od maszyny wirtualnej rozwiązywania problemów.
  7. 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/fstabpliku 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 createpolecenia 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.

  1. 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/sdcprogramem . Użyj dmesg 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/sddlokalizacji , /dev/sdeitd.

  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ę. 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.

  1. 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
    
  2. 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.