Collega l'archiviazione a blocchi durevole a una VM TPU

Una VM TPU include un disco di avvio da 100 GiB. Per alcuni scenari, la VM TPU potrebbe richiedere spazio di archiviazione aggiuntivo per l'addestramento o il pre-elaborazione. Puoi aggiungere un volume Google Cloud Hyperdisk o Persistent Disk (DP) per espandere la capacità del disco locale.

Per ottenere le massime prestazioni e funzionalità avanzate, Google consiglia di utilizzare Hyperdisk, se disponibile per la tua TPU. In caso contrario, utilizza Persistent Disk. Per saperne di più sulle opzioni di archiviazione a blocchi in Compute Engine, consulta Scegliere un tipo di disco.

Supporto TPU per Hyperdisk e Persistent Disk

La tabella seguente mostra i tipi di disco supportati per ogni versione della TPU:

Versione TPU Tipi di dischi supportati Numero massimo di PD per VM
(incluso il disco di avvio)
v6e Hyperdisk bilanciato
Hyperdisk ML
I PD non sono supportati da v6e
v5p Disco permanente bilanciato 128
v5e Disco permanente bilanciato 128
v4 Disco permanente bilanciato 128
v3 Disco permanente bilanciato 128
v2 Disco permanente bilanciato 128

Modalità di accesso

Puoi configurare un disco collegato a una TPU in modalità di singolo writer o di sola lettura, come mostrato nella tabella seguente:

Modalità di accesso Descrizione Valore nell'API Compute Engine Valore nell'API Cloud TPU Tipi di dischi supportati
Modalità writer singolo Questa è la modalità di accesso predefinita. Consente di collegare il disco a un massimo di un'istanza alla volta. L'istanza ha accesso in lettura/scrittura al disco. READ_WRITE_SINGLE read-write
  • Hyperdisk bilanciato
  • Hyperdisk ML
  • Disco permanente bilanciato
Modalità di sola lettura Consente collegamenti simultanei a più istanze in modalità di sola lettura. Le istanze non possono scrivere sul disco in questa modalità. Obbligatoria per la condivisione di sola lettura. READ_ONLY_MANY read-only
  • Hyperdisk bilanciato
  • Disco permanente bilanciato

Puoi configurare un disco collegato a una TPU single-host (ad esempio v6e-8, v5p-8 o v5litepod-8) in modalità single-writer o di sola lettura.

Quando colleghi un disco a una TPU multihost, il disco viene collegato a ogni VM della TPU. Per impedire a due o più VM TPU di scrivere su un disco contemporaneamente, devi configurare tutti i dischi collegati a una TPU multi-host come di sola lettura. I dischi di sola lettura sono utili per archiviare un set di dati per l'elaborazione su uno slice TPU.

Prerequisiti

Prima di utilizzare le procedure seguenti, devi configurare un account e un progetto Google Cloud . Per saperne di più, vedi Configurare l'ambiente Cloud TPU.

Crea un disco

Utilizza il seguente comando per creare un disco:

$ gcloud compute disks create DISK_NAME \
    --size DISK_SIZE  \
    --zone ZONE \
    --type DISK_TYPE

Descrizioni dei flag dei comandi

DISK_NAME
Il nome del nuovo disco.
DISK_SIZE
Le dimensioni del nuovo disco. Il valore deve essere un numero intero seguito da un'unità di misura delle dimensioni in GB per gibibyte o TB per tebibyte. Se non viene specificata alcuna unità di misura, viene utilizzato il GB.
ZONE
Il nome della zona in cui creare il nuovo disco. Deve essere la stessa zona utilizzata per creare la TPU.
DISK_TYPE
Il tipo di disco. Utilizza uno dei seguenti valori: hyperdisk-balanced, hyperdisk-ml o pd-balanced.

Per Hyperdisk, puoi specificare facoltativamente il flag --access-mode con uno dei seguenti valori:

  • READ_WRITE_SINGLE: accesso in lettura/scrittura da un'istanza. Questa è l'impostazione predefinita.
  • READ_ONLY_MANY: (solo Hyperdisk ML) Accesso simultaneo di sola lettura da più istanze.

Per saperne di più sulla creazione di dischi, consulta Crea un nuovo volume Hyperdisk e Crea un nuovo volume Persistent Disk.

Collega un disco

Puoi collegare un volume del disco alla tua VM TPU quando crei la VM TPU oppure puoi collegarne uno dopo la creazione della VM TPU.

Collega un disco quando crei una VM TPU

Utilizza il flag --data-disk per collegare un volume del disco quando crei una VM TPU.

Se crei una TPU multi-host, devi specificare mode=read-only (solo Hyperdisk ML e disco permanente bilanciato). Se stai creando una TPU a host singolo, puoi specificare mode=read-only (solo Hyperdisk ML e disco permanente bilanciato) o mode=read-write. Per saperne di più, vedi Modalità di accesso.

Il seguente esempio mostra come collegare un volume del disco durante la creazione di una VM TPU utilizzando le risorse in coda:

$ gcloud compute tpus queued-resources create QR_NAME \
    --node-id=TPU_NAME
    --project PROJECT_ID \
    --zone=ZONE \
    --accelerator-type=ACCELERATOR_TYPE \
    --runtime-version=TPU_SOFTWARE_VERSION \
    --data-disk source=projects/PROJECT_ID/zones/ZONE/disks/DISK_NAME,mode=MODE

Descrizioni dei flag dei comandi

QR_NAME
Il nome della richiesta di risorsa in coda.
TPU_NAME
Il nome della nuova TPU.
PROJECT_ID
L'ID del progetto Google Cloud in cui creare la TPU.
ZONE
Il nome della zona in cui creare Cloud TPU.
ACCELERATOR_TYPE
Il tipo di acceleratore specifica la versione e le dimensioni della Cloud TPU che vuoi creare. Per maggiori informazioni sui tipi di acceleratore supportati per ogni versione di TPU, consulta la sezione Versioni di TPU.
TPU_SOFTWARE_VERSION
La versione software TPU.
DISK_NAME
Il nome del disco da collegare alla VM TPU.
MODE
La modalità del disco. La modalità deve essere una delle seguenti: read-only o read-write. Se non specificato, la modalità predefinita è read-write. Per maggiori informazioni, vedi Modalità di accesso.

Puoi anche collegare un disco quando crei una VM TPU utilizzando il comando gcloud compute tpus tpu-vm create:

$ gcloud compute tpus tpu-vm create TPU_NAME \
    --project PROJECT_ID \
    --zone=ZONE \
    --accelerator-type=ACCELERATOR_TYPE \
    --version=TPU_SOFTWARE_VERSION \
    --data-disk source=projects/PROJECT_ID/zones/ZONE/disks/DISK_NAME,mode=MODE

Descrizioni dei flag dei comandi

TPU_NAME
Il nome della nuova TPU.
PROJECT_ID
L'ID del progetto Google Cloud in cui creare la TPU.
ZONE
Il nome della zona in cui creare Cloud TPU.
ACCELERATOR_TYPE
Il tipo di acceleratore specifica la versione e le dimensioni della Cloud TPU che vuoi creare. Per maggiori informazioni sui tipi di acceleratore supportati per ogni versione di TPU, consulta la sezione Versioni di TPU.
TPU_SOFTWARE_VERSION
La versione software TPU.
DISK_NAME
Il nome del disco da collegare alla VM TPU.
MODE
La modalità del disco. La modalità deve essere una delle seguenti: read-only o read-write. Se non specificato, la modalità predefinita è read-write. Per maggiori informazioni, vedi Modalità di accesso.

Collega un disco a una VM TPU esistente

Utilizza il comando gcloud alpha compute tpus tpu-vm attach-disk per collegare un disco a una VM TPU esistente.

$ gcloud alpha compute tpus tpu-vm attach-disk TPU_NAME \
    --zone=ZONE \
    --disk=DISK_NAME \
    --mode=MODE

Descrizioni dei flag dei comandi

TPU_NAME
Il nome della TPU.
ZONE
La zona in cui si trova Cloud TPU.
DISK_NAME
Il nome del disco da collegare alla VM TPU.
MODE
La modalità del disco. La modalità deve essere una delle seguenti: read-only o read-write. Se non specificato, la modalità predefinita è read-write. Deve corrispondere alla modalità di accesso del disco.

Se la VM si arresta per qualsiasi motivo, potrebbe essere necessario montare il disco dopo averla riavviata. Per informazioni su come abilitare il montaggio automatico del disco al riavvio della VM, consulta Configurare il montaggio automatico al riavvio del sistema.

Per saperne di più sull'eliminazione automatica di un disco, consulta Modificare un Hyperdisk e Modificare un Persistent Disk.

Formatta e monta un disco

Se hai collegato un nuovo disco vuoto alla tua VM TPU, prima di poterlo utilizzare devi formattarlo e montarlo. Se hai collegato un disco che contiene già dati, devi montarlo prima di poterlo utilizzare.

Per ulteriori informazioni sulla formattazione e sul montaggio di un disco non di avvio, consulta Formattare e montare un disco non di avvio su una VM Linux.

  1. Connettiti alla VM TPU utilizzando SSH:

    $ gcloud compute tpus tpu-vm ssh TPU_NAME --zone ZONE

    Se utilizzi una TPU multi-host, questo comando ti connetterà alla prima TPU nella slice TPU (chiamata anche worker 0).

  2. Dalla VM TPU, elenca i dischi collegati alla VM TPU:

    (vm)$ sudo lsblk

    L'output del comando lsblk è simile al seguente:

    NAME    MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
    loop0     7:0    0  55.5M  1 loop /snap/core18/1997
    loop1     7:1    0  67.6M  1 loop /snap/lxd/20326
    loop2     7:2    0  32.3M  1 loop /snap/snapd/11588
    loop3     7:3    0  32.1M  1 loop /snap/snapd/11841
    loop4     7:4    0  55.4M  1 loop /snap/core18/2066
    sda       8:0    0   300G  0 disk
    ├─sda1    8:1    0 299.9G  0 part /
    ├─sda14   8:14   0     4M  0 part
    └─sda15   8:15   0   106M  0 part /boot/efi
    sdb       8:16   0    10G  0 disk
    

    In questo esempio, sda è il disco di avvio e sdb è il nome del disco appena collegato. Il nome del disco collegato dipende dal numero di dischi collegati alla VM.

    Quando utilizzi una TPU multi-host, devi montare il disco su tutte le VM TPU nella sezione TPU. Il nome del disco deve essere lo stesso per tutte le VM TPU, ma non è garantito. Ad esempio, se scolleghi e poi ricolleghi il disco, il nome del dispositivo viene incrementato, passando da sdb a sdc.

  3. Se il disco non è stato formattato, formattalo utilizzando lo strumento mkfs. Sostituisci sdb se il disco ha un nome del dispositivo diverso. Sostituisci ext4 se vuoi utilizzare un file system diverso.

    (vm)$ sudo mkfs.ext4 -m 0 -E lazy_itable_init=0,lazy_journal_init=0,discard /dev/sdb
  4. Crea una directory per montare il disco sulla TPU.

    Se utilizzi una TPU single-host, esegui il seguente comando dalla TPU per creare una directory in cui montare il disco:

    (vm)$ sudo mkdir -p /mnt/disks/MOUNT_DIR

    Sostituisci MOUNT_DIR con la directory in cui montare il disco.

    Se utilizzi una TPU multi-host, esegui il seguente comando al di fuori della VM TPU. Questo comando creerà la directory su tutte le VM TPU nello slice TPU.

    (vm)$ gcloud compute tpus tpu-vm ssh TPU_NAME --worker=all --command="sudo mkdir -p /mnt/disks/MOUNT_DIR"
  5. Monta il disco sulla TPU utilizzando lo strumento mount.

    Se utilizzi una TPU single-host, esegui il seguente comando per montare il disco sulla tua VM TPU:

    (vm)$ sudo mount -o discard,defaults /dev/sdb /mnt/disks/MOUNT_DIR

    Se utilizzi una TPU multi-host, esegui il seguente comando al di fuori della VM TPU. Il disco verrà montato su tutte le VM TPU nello slice TPU.

    (vm)$ gcloud compute tpus tpu-vm ssh TPU_NAME --worker=all --command="sudo mount -o discard,defaults /dev/sdb /mnt/disks/MOUNT_DIR"
  6. Configura le autorizzazioni di lettura e scrittura sul disco. Ad esempio, il seguente comando concede l'accesso in scrittura al disco per tutti gli utenti.

    (vm)$ sudo chmod a+w /mnt/disks/MOUNT_DIR

Smontare un disco

Per smontare (scollegare) un disco dalla VM TPU, esegui questo comando:

$ gcloud alpha compute tpus tpu-vm detach-disk TPU_NAME \
    --zone=ZONE \
    --disk=DISK_NAME

Descrizioni dei flag dei comandi

TPU_NAME
Il nome della TPU.
ZONE
La zona in cui si trova Cloud TPU.
DISK_NAME
Il nome del disco da scollegare dalla VM TPU.

Esegui la pulizia

Elimina le risorse Cloud TPU e Compute Engine quando non ti servono più.

  1. Disconnettiti dalla Cloud TPU, se non l'hai già fatto:

    (vm)$ exit

    Il tuo prompt dovrebbe ora essere username@projectname, a indicare che ti trovi in Cloud Shell.

  2. Elimina la tua Cloud TPU:

    $ gcloud compute tpus tpu-vm delete TPU_NAME \
        --zone=ZONE
  3. Verifica che la Cloud TPU sia stata eliminata. L'eliminazione può richiedere qualche minuto.

    $ gcloud compute tpus tpu-vm list --zone=ZONE
  4. Verifica che il disco sia stato eliminato automaticamente quando la VM TPU è stata eliminata elencando tutti i dischi nella zona in cui hai creato il disco:

    $ gcloud compute disks list --filter="zone:( ZONE )"

    Se il disco non è stato eliminato quando è stata eliminata la VM TPU, utilizza questo comando per eliminarlo:

    $ gcloud compute disks delete DISK_NAME \
        --zone ZONE