Delen via


Opstartfout met Linux-VM oplossen na het inschakelen van Azure Disk Encryption

Van toepassing op: ✔️ Virtuele Linux-machines

Wanneer u Azure Disk Encryption (ADE) implementeert voor een virtuele Azure Linux-machine (VM), worden verschillende essentiële instellingen met betrekking tot het opstartproces en systeemonderdelen gewijzigd door bestanden te bewerken. Als de ADE-implementatie mislukt of wordt onderbroken, kan de VIRTUELE machine vastlopen in de noodmodus of onbruikbaar zijn, met name wanneer de besturingssysteemschijf is versleuteld.

Dit artikel bevat veelvoorkomende scenario's waarin een Linux-VM niet kan worden opgestart na een ADE-implementatie en stappen biedt voor het oplossen van het probleem.

Vereiste voorwaarden

In alle scenario's moet u een momentopname maken of een back-up maken voordat schijven worden versleuteld. Back-ups zorgen ervoor dat een hersteloptie mogelijk is als er een onverwachte fout optreedt tijdens de versleuteling. Zie Azure Backup voor meer informatie over het maken van back-ups en het herstellen van versleutelde VM's.

Extensielogboeken

Als u opstartproblemen met linux-VM's wilt oplossen, controleert u de extensielogboeken in de seriële Azure-console of het extensielogboekbestand /var/log/azure/Microsoft.Azure.Security.AzureDiskEncryptionForLinux/extension.log.

Scenario 1: ADE-modules ontbreken in de initramfs-image

Als de besturingssysteemschijf gebruikmaakt van Logical Volume Manager (LVM) en u een waarschuwingsbericht ziet zoals de volgende tekst, worden de vereiste modules niet opgenomen in de oorspronkelijke RAM-schijfinstallatiekopieën:

Warning: /dev/mapper/rootvg-rootlv does not exist 
...
Entering emergency mode. Exit the shell to continue.
dracut:/# 

Volg deze stappen om dit probleem op te lossen:

  1. Herstel de VIRTUELE machine vanuit een back-up en probeer de versleuteling opnieuw uit te voeren.

  2. Als een herstelbewerking niet haalbaar is, gebruikt u de Azure CLI-extensie az vm repair om een herstel-VM te maken of gebruikt u de handmatige methode om een herstel-VM te maken. Koppel vervolgens de besturingssysteemschijf van de defecte VM aan die herstel-/herstel-VM en ontgrendel deze.

  3. Wanneer u in chroot bent, voert u de volgende opdrachten uit:

    Opmerking

    Vervang de kernel- en extensieversie dienovereenkomstig in de volgende opdrachten.

    1. Kopieer de volgende bestanden uit de extensieconfiguratiemap naar de map met initramfs-scripts:

      sudo cp /var/lib/waagent/Microsoft.Azure.Security.AzureDiskEncryptionForLinux-X.X.X.X/main/oscrypto/91adeOnline /usr/lib/dracut/modules.d/
      
    2. Hergenereer de initramfs-afbeelding opnieuw.

      sudo dracut -f -v /boot/initramfs-X.XX.X-XXX.XX.X.x86_64.img <kernel version>
      
    3. Test de gewijzigde kernel door de VIRTUELE machine ervan op te starten. Als dit werkt, genereert u alle resterende initramfs-bestanden opnieuw.

  4. Vervang de mislukte besturingssysteemschijf door de schijf die de oplossing bevat.

  5. Controleer de extensielogboeken en seriële consolelogboeken om ervoor te zorgen dat het versleutelingsproces is voltooid:

    [AzureDiskEncryption] 3670: [Info] ======= MACHINE STATE: completed =======
    [AzureDiskEncryption] 3670: [Info] Encryption succeeded for all volumes
    [AzureDiskEncryption] 3670: [Info] Executing: lvs --noheadings --nameprefixes --unquoted -o lv_name,vg_name,lv_kernel_major,lv_kernel_minor
    [AzureDiskEncryption] 3670: [Info] OS PV is encrypted
    [AzureDiskEncryption] 3670: [Info] found one ide with vmbus: <GUID> and the sdx path is: sda
    [AzureDiskEncryption] 3670: [Info] found one ide with vmbus: <GUID> and the sdx path is: sdb
    [AzureDiskEncryption] 3670: [Info] found one ide with vmbus: <GUID> and the sdx path is: sdc
    [AzureDiskEncryption] 3670: [Info] Executing: pvs
    [AzureDiskEncryption] 3670: [Info] Found OS block device: /dev/mapper/osencrypt
    
  6. Controleer de initramfs-bestanden om ervoor te zorgen dat de ADE-modules correct worden toegevoegd:

    Opmerking

    Vervang de bestandsnaam van initramfs dienovereenkomstig in de volgende opdrachten.

    sudo lsinitrd /boot/initramfs-4.18.0-553.45.1.el8_10.x86_64.img | egrep -w "ade|adeOnline"
    

    Er wordt een uitvoer verwacht die vergelijkbaar is met de volgende uitvoer:

    -rwxr--r--   1 root     root         1126 Jan 15  2024 usr/lib/dracut/hooks/cmdline/30-parse-crypt-ade.sh
    -rwxr--r--   1 root     root          681 Jan 15  2024 usr/sbin/crypt-run-generator-ade
    

Scenario 2: De versleuteling wordt onderbroken

De stappen voor het oplossen van problemen met een onderbroken versleuteling zijn afhankelijk van waar het proces wordt onderbroken. In sommige scenario's is herstellen vanuit een back-up mogelijk de enige optie.

  1. Controleer de seriële consolelogboeken op eventuele foutberichten.

    Problemen met de implementatie van extensies worden meestal aangegeven door Python-fouten. Voorbeeld:

    [AzureDiskEncryption] 7293: [Info] Command /sbin/e2fsck -f -y /dev/korn-fromme failed with return code 8
    stdout:
    Possibly non-existent device?
    stderr:
    e2fsck 1.46.5 (30-Dec-2021)
    /sbin/e2fsck: No such file or directory while trying to open /dev/korn-fromme
    [AzureDiskEncryption] 7293: [Error] check shrink fs failed with code 8 for /dev/korn-fromme
    [AzureDiskEncryption] 7293: [Info] Your file system may not have enough space to do the encryption or file System may not support resizing
    [AzureDiskEncryption] 7293: [Error] Failed to encrypt data volumes with error: Encryption failed for name:korn-fromme type:lvm fstype:ext4 mountpoint:/someone label: model: size:6442450944 majmin:None device_id:, stack trace: Traceback (most recent call last):
      File '/var/lib/waagent/Microsoft.Azure.Security.AzureDiskEncryptionForLinux-1.4.0.7/main/handle.py', line 2172, in daemon_encrypt
        while not daemon_encrypt_data_volumes(encryption_marker=encryption_marker,
      File '/var/lib/waagent/Microsoft.Azure.Security.AzureDiskEncryptionForLinux-1.4.0.7/main/handle.py', line 2438, in daemon_encrypt_data_volumes
        raise Exception(message)
    Exception: Encryption failed for name:korn-fromme type:lvm fstype:ext4 mountpoint:/someone label: model: size:6442450944 majmin:None device_id:
    
  2. Zorg ervoor dat aan alle vereisten voor extensies wordt voldaan.

  3. Werk indien nodig op een reddings-VM en analyseer de mislukte schijf. Controleer voor de besturingssysteemschijf het volgende:

    • De vereiste partities zijn aanwezig en de gegevens zijn in orde.
    • Het OS LUKS-headerbestand, osluksheaderwordt afzonderlijk opgeslagen onder de opstartpartitie. Als de schijf is versleuteld en dit bestand ontbreekt of beschadigd is, kunt u de virtuele machine niet herstellen zonder een werkende back-up.
    • De initramfs bevat de vereiste ADE-modules. Als de vereiste modules ontbreken, volg de stappen in de ADE-modules ontbreken in de initram-image-sectie.
    • Het BEK-volume bevat het ADE-sleutelbestand.
  4. Als het ADE-sleutelbestand ontbreekt, maakt u een test-VM en versleutelt u deze (volumetypegegevens) met behulp van de oorspronkelijke versleutelingsinstellingen waarmee de defecte VM wordt versleuteld. Voer na het versleutelen de volgende stappen uit:

    1. Kopieer het ADE-sleutelbestand in het BEK-volume op de test-VM.
    2. Start de defecte virtuele machine.
    3. Identificeer in de noodmodus het ADE-sleutelbestand en het headerbestand.
    4. Op basis van de schijfindeling (LVM of raw), maak de schijf handmatig vrij van versleuteling.
    5. Start de virtuele machine op.
    6. Als het ADE-sleutelbestand nog steeds ontbreekt en het BEK-volume is gekoppeld, maakt u handmatig een bestand /mnt/azure_bek_disk/LinuxPassPhraseFileName met de inhoud van het ADE-sleutelbestand.
    7. Start de VM opnieuw op.
    8. Implementeer de VIRTUELE machine opnieuw.

Scenario 3: Er is onvoldoende ruimte in de opstartpartitie (Ubuntu)

Opmerking

Vanaf Ubuntu 24 worden afbeeldingen geleverd met een afzonderlijke opstartpartitie van ten minste 1 GB.

ADE vereist een afzonderlijke opstartpartitie. Tijdens een extensie-implementatie wordt /boot als een afzonderlijke partitie gemaakt en worden de oorspronkelijke bestanden hersteld. Aan het einde van dit proces wordt een nieuw initiële RAM-schijfbestand gemaakt. Als er onvoldoende ruimte is, mislukt deze stap. Dit scenario is complex vanwege veel varianten. Wanneer de besturingssysteemschijf ADE gebruikt, is het opnieuw formaat maken van de besturingssysteemschijf niet mogelijk. Momenteel kunnen alleen Ubuntu-installatiekopieën onder dit opstartsplitsingsproces vallen.

Voer de volgende acties uit om dit probleem te voorkomen:

  1. Verwijder ongebruikte oude kernels.
  2. Zorg ervoor dat alleen de benodigde bestanden onder /bootstaan.

Scenario 4: De VFAT-kernelmodule is uitgeschakeld

De VFAT-kernelmodule moet ingeschakeld zijn om het BEK-volume te koppelen. Zo niet, dan is het ADE-sleutelbestand niet beschikbaar, waardoor de schijf niet kan worden ontgrendeld. Schakel de VFAT-module in om door te gaan met de versleuteling.

Scenario 5: Vereiste pakketten kunnen niet worden geïnstalleerd

De ADE-extensie installeert vereiste pakketten als deze niet standaard zijn geïnstalleerd. Als deze pakketinstallatie mislukt, mislukt de versleuteling.

Volg deze stappen om de oorzaak van pakketinstallatiefouten te bepalen:

  1. Bekijk de extensielogboeken vanuit de seriële Azure-console en zoek een bericht zoals dit:

    [Info] Installing pre-requisites
    
  2. Zorg ervoor dat alle pakketten zijn geïnstalleerd.

    Zie Pakketbeheer voor een volledige lijst met de vereiste pakketten op basis van de Linux-distributie.

  3. Als er problemen zijn met de installatie van het pakket, bepaalt u welk pakket mislukt en wat de reden is.

  4. Zorg ervoor dat de defecte VM toegang heeft tot de pakketopslagplaatsen.

    Als de defecte VM specifieke netwerkvereisten heeft, gaat u naar Azure Disk Encryption in een geïsoleerd netwerk.

    Zie Veelvoorkomende problemen in de yum- en dnf-pakketbeheerhulpprogramma's voor Linux oplossen en veelvoorkomende problemen met APT in Ubuntu oplossen voor meer informatie over het oplossen van problemen met opslagplaatsen.

Scenario 6: Ontbrekende parameters in de GRUB-configuratie

Tijdens het versleutelingsproces voegt de extensie verschillende parameters toe aan de kernelopties in het /etc/default/grub bestand. Deze parameters zijn gerelateerd aan de UUID's van de opstart- en hoofdpartities: rd.luks.ade.partuuid en rd.luks.ade.bootuuid.

De parameters moeten correct zijn ingesteld op de UUID's. Als dat niet het probleem is, gebruikt u een offline-probleemoplossingsmethode om de parameters handmatig toe te voegen. U kunt de UUID's in de chroot omgeving verkrijgen met behulp van de blkid opdracht.

Zie GRUB opnieuw installeren en het GRUB-configuratiebestand handmatig opnieuw genereren voor meer informatie over het regenereren van het GRUB-bestand.

Scenario 7: Ontbrekend of beschadigd osluksheader-bestand

LUKS slaat de versleutelingsmetagegevens op in de LUKS-header aan het begin van de versleutelde partitie. Deze header bevat belangrijke informatie, zoals de codering, modus, hash-functie en sleutelsites. De partitie wordt versleuteld met behulp van een hoofdsleutel.

Wanneer ADE wordt gebruikt op de besturingssysteemschijf, wordt de header opgeslagen in een bestand met de naam osluksheader, dat zich in de opstartpartitie bevindt. Als dit bestand is beschadigd of ontbreekt, kan het alleen worden hersteld vanuit een back-up. Gebruik een offline probleemoplossingsmethode om de opstartpartitie van de betreffende schijf te koppelen en het osluksheader bestand vanuit de back-up te plaatsen.

Hulpmiddelen

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 Azure-feedbackcommunity.