Delen via


Problemen met een Linux-VM oplossen door de besturingssysteemschijf te koppelen aan een herstel-VM met de Azure CLI

Van toepassing op: ✔️ Virtuele Linux-machines

Als op uw virtuele Linux-machine (VM) een opstart- of schijffout optreedt, moet u mogelijk stappen voor probleemoplossing uitvoeren op de virtuele harde schijf zelf. Een veelvoorkomend voorbeeld is een ongeldige vermelding waarin /etc/fstab wordt voorkomen dat de VIRTUELE machine kan worden opgestart. In dit artikel wordt beschreven hoe u de Azure CLI gebruikt om uw virtuele harde schijf te verbinden met een andere Virtuele Linux-machine om eventuele fouten op te lossen en vervolgens de oorspronkelijke VM opnieuw te maken.

Overzicht van het herstelproces

Het probleemoplossingsproces is als volgt:

  1. Stop de betreffende VM.
  2. Maak een momentopname van de besturingssysteemschijf van de virtuele machine.
  3. Maak een schijf op basis van de momentopname van de besturingssysteemschijf.
  4. Koppel en koppel de nieuwe besturingssysteemschijf aan een andere Linux-VM voor probleemoplossingsdoeleinden.
  5. Maak verbinding met de VM voor probleemoplossing. Bewerk bestanden of voer hulpprogramma's uit om problemen op de nieuwe besturingssysteemschijf op te lossen.
  6. Koppel de nieuwe besturingssysteemschijf los van de VM voor probleemoplossing.
  7. Wijzig de besturingssysteemschijf voor de betreffende VM.

Als u deze stappen voor probleemoplossing wilt uitvoeren, hebt u de meest recente Azure CLI geïnstalleerd en aangemeld bij een Azure-account met behulp van az login.

U kunt de VM-herstelopdrachten gebruiken om stap 1, 2, 3, 4, 6 en 7 te automatiseren. Zie Een Virtuele Linux-machine herstellen met behulp van de herstelopdrachten voor virtuele Azure-machines voor meer documentatie en instructies.

Belangrijk

De scripts in dit artikel zijn alleen van toepassing op de VM's die gebruikmaken van Managed Disk.

Vervang in de volgende voorbeelden de parameternamen door uw eigen waarden, zoals myResourceGroup en myVM.

Opstartproblemen bepalen

Controleer de seriële uitvoer om te bepalen waarom uw VIRTUELE machine niet correct kan worden opgestart. Een veelvoorkomend voorbeeld is een ongeldige vermelding in /etc/fstab, of de onderliggende virtuele harde schijf die wordt verwijderd of verplaatst.

Haal de opstartlogboeken op met az vm boot-diagnostics get-boot-log. In het volgende voorbeeld wordt de seriële uitvoer opgehaald van de virtuele machine met de naam myVM in de resourcegroep met de naam myResourceGroup:

az vm boot-diagnostics get-boot-log --resource-group myResourceGroup --name myVM

Controleer de seriële uitvoer om te bepalen waarom de VM niet kan worden opgestart. Als de seriële uitvoer geen indicatie geeft, moet u mogelijk logboekbestanden /var/log controleren zodra de virtuele harde schijf is verbonden met een VM voor probleemoplossing.

De virtuele machine stoppen

In het volgende voorbeeld wordt de vm met de naam myVM van de resourcegroep myResourceGroupgestopt:

az vm stop --resource-group MyResourceGroup --name MyVm

Een momentopname maken van de besturingssysteemschijf van de betreffende VM

Een momentopname is een volledige, alleen-lezen kopie van een VHD. Deze kan niet worden gekoppeld aan een virtuele machine. In de volgende stap maken we een schijf op basis van deze momentopname. In het volgende voorbeeld wordt een momentopname gemaakt met de naam mySnapshot van de besturingssysteemschijf van de virtuele machine met de naam '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

Een schijf maken op basis van de momentopname

Met dit script maakt u een beheerde schijf met de naam myOSDisk van de momentopname met de naam 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

Als de resourcegroep en de bronmomentopname zich niet in dezelfde regio bevinden, wordt de fout 'Resource is niet gevonden' weergegeven wanneer u deze uitvoert az disk create. In dit geval moet u opgeven --location <region> dat de schijf in dezelfde regio wordt gemaakt als de bronmomentopname.

U hebt nu een kopie van de oorspronkelijke besturingssysteemschijf. U kunt deze nieuwe schijf koppelen aan een andere Windows-VM voor probleemoplossingsdoeleinden.

De nieuwe virtuele harde schijf koppelen aan een andere virtuele machine

Voor de volgende stappen gebruikt u een andere VIRTUELE machine voor het oplossen van problemen. U koppelt de schijf aan deze VM voor probleemoplossing om door de inhoud van de schijf te bladeren en te bewerken. Met dit proces kunt u configuratiefouten corrigeren of aanvullende toepassings- of systeemlogboekbestanden controleren.

Met dit script wordt de schijf gekoppeld aan de virtuele machine myNewOSDisk 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

De gekoppelde gegevensschijf koppelen

Notitie

In de volgende voorbeelden worden de stappen beschreven die vereist zijn voor een Ubuntu-VM. Als u een andere Linux-distributie gebruikt, zoals Red Hat Enterprise Linux of SUSE, kunnen de locaties en mount opdrachten van het logboekbestand iets anders zijn. Raadpleeg de documentatie voor uw specifieke distributie voor de juiste wijzigingen in opdrachten.

  1. SSH voor uw VM voor probleemoplossing met behulp van de juiste referenties. Als deze schijf de eerste gegevensschijf is die is gekoppeld aan uw VM voor probleemoplossing, is de schijf waarschijnlijk verbonden met /dev/sdc. Gebruiken dmesg om gekoppelde schijven weer te geven:

    dmesg | grep SCSI
    

    De uitvoer lijkt op die in het volgende voorbeeld:

    [    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
    

    In het voorgaande voorbeeld bevindt de besturingssysteemschijf zich op /dev/sda en bevindt de tijdelijke schijf voor elke virtuele machine zich op /dev/sdb. Als u meerdere gegevensschijven hebt, moeten ze zich op /dev/sdd, /dev/sdeenzovoort bevinden.

  2. Maak een map om uw bestaande virtuele harde schijf te koppelen. In het volgende voorbeeld wordt een map met de naam troubleshootingdiskgemaakt:

    sudo mkdir /mnt/troubleshootingdisk
    
  3. Als u meerdere partities op uw bestaande virtuele harde schijf hebt, koppelt u de vereiste partitie. In het volgende voorbeeld wordt de eerste primaire partitie gekoppeld op /dev/sdc1:

    sudo mount /dev/sdc1 /mnt/troubleshootingdisk
    

    Notitie

    Best practice is het koppelen van gegevensschijven op VM's in Azure met behulp van de universally unique identifier (UUID) van de virtuele harde schijf. Voor dit korte scenario voor probleemoplossing is het koppelen van de virtuele harde schijf met behulp van de UUID niet nodig. Bij normaal gebruik kan het bewerken /etc/fstab om virtuele harde schijven te koppelen met de apparaatnaam in plaats van UUID ertoe leiden dat de virtuele machine niet kan worden opgestart.

Problemen met de nieuwe besturingssysteemschijf oplossen

Nu de bestaande virtuele harde schijf is gekoppeld, kunt u indien nodig onderhouds- en probleemoplossingsstappen uitvoeren. Zodra u de problemen hebt opgelost, kunt u doorgaan met de volgende stappen.

De nieuwe besturingssysteemschijf ontkoppelen en ontkoppelen

Zodra uw fouten zijn opgelost, ontkoppelt u de bestaande virtuele harde schijf los van de VM voor probleemoplossing. U kunt de virtuele harde schijf niet gebruiken met een andere VIRTUELE machine totdat de lease die de virtuele harde schijf koppelt aan de VM voor probleemoplossing wordt vrijgegeven.

  1. Koppel de bestaande virtuele harde schijf los van de SSH-sessie naar uw VM voor probleemoplossing. Wijzig eerst de bovenliggende map voor het koppelpunt:

    cd /
    

    Ontkoppel nu de bestaande virtuele harde schijf. In het volgende voorbeeld wordt het apparaat ontkoppeld op /dev/sdc1:

    sudo umount /dev/sdc1
    
  2. Koppel de virtuele harde schijf nu los van de virtuele machine. Sluit de SSH-sessie af naar uw VM voor probleemoplossing:

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

De besturingssysteemschijf voor de betreffende VM wijzigen

U kunt Azure CLI gebruiken om de besturingssysteemschijven te wisselen. U hoeft de VIRTUELE machine niet te verwijderen en opnieuw te maken.

In dit voorbeeld wordt de vm met de naam myVM gestopt en wordt de schijf met de naam toegewezen myNewOSDisk als de nieuwe besturingssysteemschijf.

# 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

Volgende stappen

Als u problemen ondervindt met het maken van verbinding met uw VIRTUELE machine, raadpleegt u Problemen met SSH-verbindingen met een Azure-VM oplossen. Zie Problemen met toepassingsconnectiviteit op een Linux-VM oplossen voor problemen met toegang tot toepassingen die op uw VM worden uitgevoerd.

Contact met ons opnemen voor ondersteuning

Als u vragen hebt of hulp nodig hebt, maakt u een ondersteuningsaanvraag of stelt u ondersteuning voor de Azure-community. U kunt ook productfeedback verzenden naar de Azure-feedbackcommunity.