Problemen met een Linux-VM oplossen door de besturingssysteemschijf te koppelen aan een herstel-VM met de Azure CLI
Als uw virtuele Linux-machine (VM) een opstart- of schijffout ondervindt, moet u mogelijk stappen voor probleemoplossing uitvoeren op de virtuele harde schijf zelf. Een veelvoorkomend voorbeeld is een ongeldige vermelding in /etc/fstab
die voorkomt dat de VM kan worden opgestart. In dit artikel wordt beschreven hoe u de Azure CLI gebruikt om uw virtuele harde schijf te verbinden met een andere Linux-VM om eventuele fouten op te lossen en vervolgens uw oorspronkelijke VM opnieuw te maken.
Overzicht van herstelproces
Het probleemoplossingsproces is als volgt:
- Stop de betreffende VM.
- Maak een momentopname van de besturingssysteemschijf van de VM.
- Maak een schijf op basis van de momentopname van de besturingssysteemschijf.
- Koppel en koppel de nieuwe besturingssysteemschijf aan een andere Linux-VM voor probleemoplossingsdoeleinden.
- Maak verbinding met de VM voor probleemoplossing. Bewerk bestanden of voer hulpprogramma's uit om problemen op de nieuwe besturingssysteemschijf op te lossen.
- Ontkoppel de nieuwe besturingssysteemschijf en koppel deze los van de VM voor probleemoplossing.
- Wijzig de besturingssysteemschijf voor de betreffende VM.
Als u deze stappen voor probleemoplossing wilt uitvoeren, moet de meest recente Azure CLI zijn geïnstalleerd en zijn aangemeld bij een Azure-account met 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 azure-opdrachten voor het herstellen van virtuele 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 parameternamen door uw eigen waarden, zoals myResourceGroup
en myVM
.
Opstartproblemen vaststellen
Controleer de seriële uitvoer om te bepalen waarom uw VM 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 vm 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 de logboekbestanden controleren in /var/log
zodra u de virtuele harde schijf hebt aangesloten op een VM voor probleemoplossing.
De VM stoppen
In het volgende voorbeeld stopt u de VM met de naam myVM
van de resourcegroep met de naam myResourceGroup
:
az vm stop --resource-group MyResourceGroup --name MyVm
Een momentopname maken vanaf 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 VM 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 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, ontvangt u de fout 'Resource is niet gevonden' wanneer u uitvoert az disk create
. In dit geval moet u opgeven --location <region>
om de schijf te maken in dezelfde regio 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 VM
Voor de volgende stappen gebruikt u een andere VM voor probleemoplossingsdoeleinden. U koppelt de schijf aan deze VM voor probleemoplossing om de inhoud van de schijf te bekijken en te bewerken. Met dit proces kunt u configuratiefouten corrigeren of aanvullende toepassings- of systeembestanden bekijken.
Met dit script wordt de schijf myNewOSDisk
gekoppeld aan de VM 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
Opmerking
In de volgende voorbeelden worden de stappen beschreven die vereist zijn op een Ubuntu-VM. Als u een andere Linux-distributie gebruikt, zoals Red Hat Enterprise Linux of SUSE, zijn de locaties en mount
opdrachten van het logboekbestand mogelijk iets anders. Raadpleeg de documentatie voor uw specifieke distributie voor de juiste wijzigingen in opdrachten.
SSH naar 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
. Gebruikdmesg
om gekoppelde schijven weer te geven:dmesg | grep SCSI
De uitvoer is vergelijkbaar met 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 die voor elke VM is opgegeven zich op/dev/sdb
. Als u meerdere gegevensschijven hebt, moeten deze zich op/dev/sdd
,/dev/sde
, enzovoort bevinden.Maak een map om uw bestaande virtuele harde schijf te koppelen. In het volgende voorbeeld wordt een map gemaakt met de naam
troubleshootingdisk
:sudo mkdir /mnt/troubleshootingdisk
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 aan
/dev/sdc1
:sudo mount /dev/sdc1 /mnt/troubleshootingdisk
Opmerking
Het beste is om gegevensschijven te koppelen aan VM's in Azure met behulp van de UUID (Universally Unique Identifier) van de virtuele harde schijf. Voor dit korte probleemoplossingsscenario is het koppelen van de virtuele harde schijf met behulp van de UUID niet nodig. Bij normaal gebruik
/etc/fstab
kan bewerken om virtuele harde schijven te koppelen met behulp van de apparaatnaam in plaats van UUID ertoe leiden dat de VM niet kan worden opgestart.
Problemen met de nieuwe besturingssysteemschijf oplossen
Als de bestaande virtuele harde schijf is gekoppeld, kunt u nu zo nodig onderhouds- en probleemoplossingsstappen uitvoeren. Zodra u de problemen hebt opgelost, gaat u verder met de volgende stappen.
De nieuwe besturingssysteemschijf ontkoppelen en loskoppelen
Zodra uw fouten zijn opgelost, ontkoppelt u de bestaande virtuele harde schijf en koppelt u deze los van uw VM voor probleemoplossing. U kunt de virtuele harde schijf pas met een andere VM gebruiken als de lease die de virtuele harde schijf koppelt aan de VM voor probleemoplossing is vrijgegeven.
Ontkoppel de bestaande virtuele harde schijf van de SSH-sessie naar uw VM voor probleemoplossing. Wijzig eerst uit de bovenliggende map voor uw koppelpunt:
cd /
Ontkoppel nu de bestaande virtuele harde schijf. In het volgende voorbeeld wordt het apparaat ontkoppeld op
/dev/sdc1
:sudo umount /dev/sdc1
Koppel nu de virtuele harde schijf los van de VM. 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 VM 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 myNewOSDisk
als de nieuwe besturingssysteemschijf toegewezen.
# 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 bij het maken van verbinding met uw VM, raadpleegt u Problemen met SSH-verbindingen met een Azure-VM oplossen. Zie Problemen met toepassingsconnectiviteit oplossen op een Linux-VM voor problemen met het openen van toepassingen die worden uitgevoerd op uw VM.
Contacteer ons voor hulp
Als u vragen hebt of hulp nodig hebt, maak een ondersteuningsaanvraag of vraag de Azure-communityondersteuning. U kunt ook productfeedback verzenden naar de Feedback-community van Azure.
Feedback
https://aka.ms/ContentUserFeedback.
Binnenkort beschikbaar: In de loop van 2024 zullen we GitHub-problemen geleidelijk uitfaseren als het feedbackmechanisme voor inhoud en deze vervangen door een nieuw feedbacksysteem. Zie voor meer informatie:Feedback verzenden en weergeven voor