Aggiungere un disco permanente alla VM

Crea e collega un disco non di avvio alla tua macchina virtuale (VM) utilizzando le istruzioni riportate in questa pagina.

Prima di iniziare

Per utilizzare i comandi dell'interfaccia a riga di comando (CLI) gdcloud, assicurati di aver scaricato, installato e configurato la CLI gdcloud. Tutti i comandi per Distributed Cloud utilizzano la CLI gdcloud o kubectl e richiedono un ambiente del sistema operativo.

Recupera il percorso del file kubeconfig

Per eseguire comandi sul server API Management, assicurati di disporre delle seguenti risorse:

  1. Accedi e genera il file kubeconfig per il server API Management se non ne hai uno.

  2. Utilizza il percorso del file kubeconfig del server API Management per sostituire MANAGEMENT_API_SERVER in queste istruzioni.

Richiedere autorizzazioni e accesso

Per eseguire le attività elencate in questa pagina, devi disporre del ruolo Amministratore macchina virtuale progetto. Segui i passaggi per verificare di disporre del ruolo Amministratore VirtualMachine progetto (project-vm-admin) nello spazio dei nomi del progetto in cui si trova la VM.

Per le operazioni sulle VM che utilizzano la console GDC o gcloud CLI, chiedi all'amministratore IAM del progetto di assegnarti sia il ruolo Project VirtualMachine Admin sia il ruolo Project Viewer (project-viewer).

Collega un disco a una VM

Crea e collega dischi non di avvio alla VM. Ogni disco aggiuntivo può specificare un'immagine personalizzata o un disco vuoto. Puoi aggiungere più dischi contemporaneamente a una VM.

Console

  1. Nel menu di navigazione, fai clic su Virtual Machines > Instances.

  2. Nell'elenco delle VM, fai clic sul nome di una VM per visualizzarne i dettagli.

  3. Fai clic su Aggiungi nuovo disco.

  4. Nella finestra di dialogo di conferma, fai clic su Arresta per arrestare la VM.

  5. Attendi qualche minuto per l'arresto della VM.

  6. Fai clic su Aggiorna.

  7. Quando la VM è in stato arrestato, fai di nuovo clic su Aggiungi nuovo disco.

  8. Nella finestra di dialogo Aggiungi disco, scegli un disco nuovo o uno esistente.

    • Per eseguire il provisioning di un nuovo disco, fai clic sulla scheda Nuovo disco.

      1. Nel campo Nome disco, inserisci un nuovo nome disco univoco per il progetto.
      2. Nel campo Dimensioni, inserisci una dimensione del disco compresa tra 10 e 65.536 GiB. Ad esempio, 10 GiB.
      3. Nella sezione Regola di eliminazione, fai clic su Conserva disco o Elimina disco.
    • Per scegliere un disco esistente, fai clic sulla scheda Disco esistente.

      1. Nell'elenco Disco, seleziona un disco.
      2. Nella sezione Regola di eliminazione, fai clic su Conserva disco o Elimina disco.
  9. Fai clic su Salva. Il disco viene visualizzato nell'elenco dei dischi per la VM.

  10. Riavvia la VM.

API

  1. Crea un VirtualMachineDisk:

    kubectl --kubeconfig MANAGEMENT_API_SERVER apply -n PROJECT -f - <<EOF
    apiVersion: virtualmachine.gdc.goog/v1
    kind: VirtualMachineDisk
    metadata:
      name: NON_BOOT_BLANK_DISK
    spec:
      size: NON_BOOT_BLANK_DISK_SIZE
    EOF
    
  2. Arresta la VM.

  3. Aggiungi VirtualMachineDisk al VirtualMachine spec.disks esistente:

    kubectl --kubeconfig MANAGEMENT_API_SERVER edit virtualmachines.virtualmachine.gdc.goog -n PROJECT VM_NAME
    

    Modifica quanto segue nell'editor di testo:

    ...
    disks:
    - virtualMachineDiskRef:
        name: VM_BOOT_DISK_NAME
        boot: true
    - virtualMachineDiskRef:
        name: NON_BOOT_BLANK_DISK
        autoDelete: false
    ...
    

    Sostituisci le variabili utilizzando le seguenti definizioni.

    VariabileDefinizione
    MANAGEMENT_API_SERVER Il file kubeconfig del server API di gestione.
    PROJECT Il progetto Google Distributed Cloud (GDC) con air gap in cui creare la VM.
    VM_NAMEIl nome della nuova VM.
    VM_BOOT_DISK_NAMEIl nome del nuovo disco di avvio della VM.
    NON_BOOT_BLANK_DISKIl nome del tuo disco aggiuntivo.
    NON_BOOT_BLANK_DISK_SIZELe dimensioni dei tuoi dischi aggiuntivi, ad esempio 20G.
  4. Avvia la VM.

Formatta e monta un disco non di avvio

Dopo aver collegato un disco alla VM, esegui i passaggi necessari per renderlo accessibile all'interno della VM.

Connettiti alla VM

Accedi tramite SSH alla VM.

Formatta il disco

  1. Elenca i dischi collegati all'istanza per numero di serie e individua il disco che vuoi formattare e montare.

    ls -l /dev/disk/by-id/
    

    Questo output di esempio mostra i nomi dei dischi come numeri di serie:

       total 0
       lrwxrwxrwx 1 root root  9 Sep 13 23:51 ata-QEMU_HARDDISK_agentSADisk -> ../../sdc
       lrwxrwxrwx 1 root root  9 Sep 13 23:51 scsi-0ATA_QEMU_HARDDISK_agentSADisk -> ../../sdc
       lrwxrwxrwx 1 root root  9 Sep 13 23:51 scsi-0QEMU_QEMU_HARDDISK_vm-disk-boot -> ../../sda
       lrwxrwxrwx 1 root root 10 Sep 13 23:51 scsi-0QEMU_QEMU_HARDDISK_vm-disk-boot-part1 -> ../../sda1
       lrwxrwxrwx 1 root root 11 Sep 13 23:51 scsi-0QEMU_QEMU_HARDDISK_vm-disk-boot-part14 -> ../../sda14
       lrwxrwxrwx 1 root root 11 Sep 13 23:51 scsi-0QEMU_QEMU_HARDDISK_vm-disk-boot-part15 -> ../../sda15
       lrwxrwxrwx 1 root root  9 Sep 13 23:51 scsi-0QEMU_QEMU_HARDDISK_vm-disk-data -> ../../sdb
       lrwxrwxrwx 1 root root  9 Sep 13 23:51 scsi-1ATA_QEMU_HARDDISK_agentSADisk -> ../../sdc
       lrwxrwxrwx 1 root root  9 Sep 13 23:51 scsi-SATA_QEMU_HARDDISK_agentSADisk -> ../../sdc
       lrwxrwxrwx 1 root root  9 Sep 13 23:51 scsi-SQEMU_QEMU_HARDDISK_vm-disk-boot -> ../../sda
       lrwxrwxrwx 1 root root 10 Sep 13 23:51 scsi-SQEMU_QEMU_HARDDISK_vm-disk-boot-part1 -> ../../sda1
       lrwxrwxrwx 1 root root 11 Sep 13 23:51 scsi-SQEMU_QEMU_HARDDISK_vm-disk-boot-part14 -> ../../sda14
       lrwxrwxrwx 1 root root 11 Sep 13 23:51 scsi-SQEMU_QEMU_HARDDISK_vm-disk-boot-part15 -> ../../sda15
       lrwxrwxrwx 1 root root  9 Sep 13 23:51 scsi-SQEMU_QEMU_HARDDISK_vm-disk-data -> ../../sdb
    

    Le informazioni che seguono la freccia, ->, su ogni riga indicano il nome del dispositivo del disco. Ad esempio, in scsi-SQEMU_QEMU_HARDDISK_vm-disk-data -> ../../sdb, il numero di serie è scsi-SQEMU_QEMU_HARDDISK_vm-disk-data e il nome del dispositivo è sdb.

  2. Identifica il numero di serie del disco da questo elenco.

    Comportamento importante delle funzionalità situazionali che può influire sull'elenco dei numeri di serie:

    • Se il valore virtualMachineDiskRef.name è più lungo di 20 caratteri, vengono utilizzati solo i primi 20 caratteri come numero di serie.
    • Se ci sono due dischi con gli stessi primi 20 caratteri, solo il primo disco ha un numero di serie.
  3. Formatta il disco:

   sudo mkfs.ext4 -m 0 -E lazy_itable_init=0,lazy_journal_init=0,discard /dev/disk/by-id/DISK_ID
  • Sostituisci DISK_ID con il numero di serie del disco che stai formattando.
  • Per questo esempio, specifica scsi-SQEMU_QEMU_HARDDISK_vm-disk-data per formattare l'intero disco senza una tabella di partizione.

Per massimizzare le prestazioni del disco, utilizza le opzioni di formattazione consigliate nel flag -E. Poiché non è necessario riservare spazio per il volume root sul disco secondario, specifica -m 0 per utilizzare tutto lo spazio su disco disponibile.

Monta il disco

  1. Crea una directory che funga da punto di montaggio per il nuovo disco. Puoi utilizzare qualsiasi directory. L'esempio seguente crea una directory in /mnt/disks/:

    sudo mkdir -p /mnt/disks/MOUNT_DIR
    

    Sostituisci MOUNT_DIR con la directory in cui vuoi montare il disco.

  2. Monta il disco sull'istanza e attiva l'opzione per eliminare:

    sudo mount -o discard,defaults /dev/disk/by-id/DISK_ID /mnt/disks/MOUNT_DIR
    

    Sostituisci quanto segue:

    • DISK_ID con il numero di serie del disco da montare.
    • MOUNT_DIR con la directory in cui vuoi montare il disco.
  3. (Facoltativo) Configura le autorizzazioni di lettura e scrittura sul disco. Il seguente comando concede l'accesso in scrittura, a+w, al disco per tutti gli utenti.

    sudo chmod a+w /mnt/disks/MOUNT_DIR
    
  4. (Facoltativo) Configura il montaggio automatico al riavvio della VM utilizzando l'UUID (Universally Unique Identifier) o lo script di avvio.

Configura il montaggio automatico al riavvio della VM - UUID disco

Aggiungi il disco al file /etc/fstab, in modo che venga montato automaticamente di nuovo al riavvio della VM. Su un sistema operativo, il nome del dispositivo cambia a ogni riavvio, ma l'UUID del dispositivo punta sempre allo stesso volume, anche quando sposti i dischi tra i sistemi. Pertanto, utilizza sempre l'UUID del dispositivo per configurare il montaggio automatico al riavvio della VM.

  1. Crea un backup del file /etc/fstab corrente:

      sudo cp /etc/fstab /etc/fstab.backup
    
  2. Elenca l'UUID per il disco:

      sudo blkid /dev/DEVICE_NAME
    

    L'output di esempio mostra l'UUID di accc19c5-d0d6-4157-9672-37d4e1d48eb5 per il disco

      /dev/sdb: UUID="accc19c5-d0d6-4157-9672-37d4e1d48eb5" TYPE="ext4"
    

    DEVICE_NAME è il nome del dispositivo del disco che vuoi montare automaticamente. Se hai creato una tabella delle partizioni sul disco, specifica la partizione che vuoi montare come suffisso del nome del dispositivo. Ad esempio, se sdb è il nome del dispositivo disco e vuoi montare la partizione 1, DEVICE_NAME diventa sdb1.

  3. Apri il file /etc/fstab in un editor di testo e crea una voce che includa l'UUID:

      UUID=UUID_VALUE /mnt/disks/MOUNT_DIR ext4 discard,defaults,MOUNT_OPTION 0 2
    

    Sostituisci quanto segue:

    • UUID_VALUE con il disco UUID, elencato come output del comando Elenca l'UUID.
    • MOUNT_DIR con la directory in cui hai montato il disco.
    • MOUNT_OPTION con il valore MOUNT_OPTION per il tuo sistema operativo, che specifica cosa fa il sistema operativo se non riesce a montare il disco all'avvio.
  4. Verifica che le voci /etc/fstab siano corrette:

      cat /etc/fstab
    

    Di seguito è riportato un esempio di output:

      LABEL=cloudimg-rootfs /    ext4   defaults    0 1
      LABEL=UEFI    /boot/efi   vfat    umask=0077  0 1
      UUID=UUID_VALUE /mnt/disks/MOUNT_DIR ext4 discard,defaults,MOUNT_OPTION 0 2
    

Se scolleghi questo disco o crei uno snapshot dal disco di avvio di questa VM, modifica il file /etc/fstab e rimuovi la voce relativa a questo disco. Anche se hai impostato MOUNT_OPTION su nofail o nobootwait, mantieni il file /etc/fstab sincronizzato con i dispositivi collegati alla tua VM. Rimuovi queste voci prima di creare lo snapshot del disco di avvio o scollegare il disco.

Configura il montaggio automatico al riavvio della VM - Script di avvio della VM

Puoi anche utilizzare uno script di avvio per montare il disco a ogni riavvio aggiungendo i comandi di Monta il disco a uno script di avvio. Prima di aggiungere lo script per montare il disco, formattalo utilizzando i comandi descritti in Formattare il disco.

  1. Crea il secret dello script di avvio.

    cat <<EOF >>mount-disk-script
    #!/bin/bash
    mkdir -p /mnt/disks/MOUNT_DIR
    mount -o discard,defaults /dev/disk/by-id/DISK_ID /mnt/disks/MOUNT_DIR
    EOF
    
    kubectl create secret -n PROJECT generic VM_NAME-mount-script --from-file=script=mount-disk-script
    
    rm mount-disk-script
    
  2. Aggiungi lo script di avvio alla VM.

    kubectl --kubeconfig MANAGEMENT_API_SERVER edit virtualmachines.virtualmachine.gdc.goog -n PROJECT VM_NAME
    

    Modifica spec.startupScripts per includere il nome del secret.

    apiVersion: virtualmachine.gdc.goog/v1
    kind: VirtualMachine
    metadata:
    name: VM_NAME
    namespace: PROJECT
    spec:
    …
    startupScripts:
    - name: mount-script
      scriptSecretRef:
        name: VM_NAME-mount-script
    

Per ulteriori informazioni sulla configurazione degli script di avvio, consulta.