Share via


Usare l'archiviazione BLOB di Azure con Lustre gestito di Azure

Lustre gestito di Azure si integra con Archiviazione BLOB di Azure per semplificare il processo di importazione dei dati da un contenitore BLOB a un file system. È anche possibile esportare dati dal file system a un contenitore BLOB per l'archiviazione a lungo termine. Questo articolo illustra i concetti relativi all'uso dell'integrazione BLOB con i file system lustre gestiti di Azure.

Per comprendere i requisiti e la configurazione necessari per un contenitore BLOB compatibile, vedere Prerequisiti di integrazione dei BLOB.

Panoramica dell'integrazione di BLOB

È possibile configurare l'integrazione BLOB durante la creazione del cluster ed è possibile creare un processo di importazione in qualsiasi momento dopo la creazione del cluster. Dopo aver importato i dati, è possibile usare i dati come si farebbe con altri dati del file system. Quando vengono creati nuovi file o i file esistenti vengono modificati nel file system, è possibile esportare di nuovo questi file nell'account di archiviazione eseguendo i comandi dell'interfaccia della riga di comando di Lustre nel client o esportando i dati usando processi di esportazione.

Quando si importano dati da un contenitore BLOB in un file system lustre gestito di Azure, solo i nomi di file (spazio dei nomi) e i metadati vengono importati nello spazio dei nomi Lustre. Il contenuto effettivo di un BLOB viene importato quando si accede per la prima volta da un client. Si verifica un lieve ritardo quando si accede prima ai dati mentre la funzionalità Gestione archiviazione gerarchica lustre (HSM) esegue il pull del contenuto del BLOB nel file corrispondente nel file system.

È possibile eseguire il prelettura del contenuto dei BLOB usando il comando di lfs hsm_restore Lustre da un client montato con funzionalità sudo. Il comando seguente preletcherà il contenuto dei BLOB nel file system:

nohup find local/directory -type f -print0 | xargs -0 -n 1 sudo lfs hsm_restore &

Lustre gestito di Azure funziona con gli account di archiviazione con spazio dei nomi gerarchico abilitato e account di archiviazione con uno spazio dei nomi non gerarchico o flat. Si applicano le differenze minime seguenti:

  • Per un account di archiviazione con spazio dei nomi gerarchico abilitato, Lustre gestito di Azure legge gli attributi POSIX dall'intestazione BLOB.
  • Per un account di archiviazione in cui non è abilitato lo spazio dei nomi gerarchico, Lustre gestito di Azure legge gli attributi POSIX dai metadati del BLOB. Viene creato un file vuoto separato con lo stesso nome del contenuto del contenitore BLOB per contenere i metadati. Questo file è di pari livello alla directory dei dati effettiva nel file system lustre gestito di Azure.

Importare dati da Archiviazione BLOB

È possibile configurare l'integrazione con l'archiviazione BLOB durante la creazione del cluster ed è possibile creare un processo di importazione in qualsiasi momento dopo la creazione del cluster.

Requisiti del contenitore BLOB

Quando si configura l'integrazione BLOB durante la creazione del cluster, è necessario identificare due contenitori BLOB separati: il contenitore per importare e il contenitore di registrazione. Il contenitore da importare contiene i dati da importare nel file system lustre gestito di Azure. Il contenitore di registrazione viene usato per archiviare i log per il processo di importazione. Questi due contenitori devono trovarsi nello stesso account di archiviazione. Per altre informazioni sui requisiti per il contenitore BLOB, vedere Prerequisiti di integrazione blob.

Prefisso di importazione

Quando si importano dati da un contenitore BLOB, è possibile specificare facoltativamente uno o più prefissi per filtrare i dati importati nel file system lustre gestito di Azure. I nomi di file nel contenitore BLOB che corrispondono a uno dei prefissi vengono aggiunti a un record di metadati nel file system. Quando un client accede per la prima volta a un file, il relativo contenuto viene recuperato dal contenitore BLOB e archiviato nel file system.

Nella portale di Azure usare i campi Importa prefisso nella scheda Avanzate durante la creazione del cluster per specificare i dati da importare dal contenitore BLOB. Questi campi si applicano solo al processo di importazione iniziale. Non è possibile modificare il prefisso di importazione dopo la creazione del cluster.

Per un processo di importazione, è possibile specificare i prefissi di importazione quando si crea il processo. Dalla portale di Azure è possibile specificare prefissi di importazione nei campi Prefisso di importazione. È anche possibile specificare il prefisso di importazione quando si usa l'API REST per creare un processo di importazione.

Quando si specificano prefissi di importazione, tenere presenti le considerazioni seguenti:

  • Il prefisso di importazione predefinito è /. Questo comportamento predefinito importa il contenuto dell'intero contenitore BLOB.
  • Se si specificano più prefissi, i prefissi devono essere non sovrapposti. Ad esempio, se si specifica /data e /data2, il processo di importazione ha esito negativo perché i prefissi si sovrappongono.
  • Se il contenitore BLOB si trova in un account di archiviazione con spazio dei nomi gerarchico abilitato, è possibile considerare il prefisso come percorso del file. Gli elementi nel percorso sono inclusi nel file system lustre gestito di Azure.
  • Se il contenitore BLOB si trova in un account di archiviazione con uno spazio dei nomi non gerarchico (o flat), è possibile considerare il prefisso di importazione come stringa di ricerca confrontata con l'inizio del nome del BLOB. Se il nome di un BLOB nel contenitore inizia con la stringa specificata come prefisso di importazione, tale file viene reso accessibile nel file system. Lustre è un file system gerarchico e / i caratteri nei nomi BLOB diventano delimitatori di directory quando vengono archiviati in Lustre.

Modalità di risoluzione dei conflitti

Quando si importano dati da un contenitore BLOB, è possibile specificare come gestire i conflitti tra il contenitore BLOB e il file system. Questa opzione si applica solo ai processi di importazione eseguiti per i cluster esistenti. La tabella seguente illustra le modalità di risoluzione dei conflitti disponibili e le relative descrizioni:

Mode Descrizione
fail Il processo di importazione ha esito negativo immediatamente con un errore se viene rilevato un conflitto.
skip Il processo di importazione ignora il file se viene rilevato un conflitto.
overwrite-dirty Il processo di importazione valuta un percorso in conflitto per verificare se deve essere eliminato e reimportato. Per altre informazioni, vedere modalità overwrite-dirty.
overwrite-always Il processo di importazione valuta un percorso in conflitto ed elimina sempre/reimporta se è dirty o rilascia se è pulito. Per altre informazioni, vedere overwrite-always mode .To learn more, see overwrite-always mode.

Modalità overwrite-dirty

La overwrite-dirty modalità valuta un percorso in conflitto per verificare se deve essere eliminato e reimportato. A livello generale, overwrite-dirty la modalità controlla lo stato del modulo di protezione hardware. Se lo stato del modulo di protezione hardware è Pulito e Archiviato, il che significa che i dati sono sincronizzati con il contenitore BLOB fino a quando Lustre può indicare, vengono aggiornati solo gli attributi, se necessario. In caso contrario, il file viene eliminato e reimportato dal contenitore BLOB.

Il controllo dello stato del modulo di protezione hardware non garantisce che il file in Lustre corrisponda al file nel contenitore BLOB. Se è necessario assicurarsi che il file in Lustre corrisponda al file nel contenitore BLOB il più vicino possibile, usare la overwrite-always modalità .

Modalità sovrascrittura sempre

La overwrite-always modalità valuta un percorso in conflitto e elimina sempre/re-import se è dirty o rilascia se è pulita. Questa modalità è utile quando si vuole assicurarsi che il file system sia sempre sincronizzato con il contenitore BLOB. È anche l'opzione più costosa, perché ogni file ripristinato in precedenza viene rilasciato o eliminato/reimportato al primo accesso.

Tolleranza di errore

Quando si importano dati da un contenitore BLOB, è possibile specificare la tolleranza di errore. Il livello di tolleranza di errore determina il modo in cui il processo di importazione gestisce gli errori temporanei che si verificano durante il processo di importazione, ad esempio errori del sistema operativo o interruzioni di rete. È importante notare che gli errori in questo contesto non fanno riferimento a conflitti di file, gestiti dalla modalità di risoluzione dei conflitti.

Per i processi di importazione sono disponibili le opzioni di tolleranza di errore seguenti:

  • Non consentire errori (impostazione predefinita): il processo di importazione ha esito negativo immediatamente se si verifica un errore durante l'importazione. Questo è il comportamento predefinito.
  • Consenti errori: il processo di importazione continua se si verifica un errore e viene registrato l'errore. Al termine del processo di importazione, è possibile visualizzare gli errori nel contenitore di registrazione.

Considerazioni per i processi di importazione BLOB

Gli elementi seguenti sono importanti da considerare quando si importano dati da un contenitore BLOB:

  • È possibile eseguire una sola azione di importazione o esportazione alla volta. Ad esempio, se è in corso un processo di importazione, il tentativo di avviare un altro processo di importazione restituisce un errore.
  • I processi di importazione possono essere annullati. È possibile annullare un processo di importazione avviato in un cluster esistente o un processo di importazione avviato durante la creazione del cluster.
  • La distribuzione del cluster può essere restituita correttamente prima del completamento del processo di importazione corrispondente. Il processo di importazione continua a essere eseguito in background. È possibile monitorare lo stato del processo di importazione nei modi seguenti:
    • portale di Azure: il portale di Azure visualizza lo stato del processo di importazione. Passare al file system e selezionare Integrazione BLOB per visualizzare lo stato del processo di importazione.
    • File Lustre nella directory radice: un file denominato simile a /lustre/IMPORT_<state>.<timestamp_start> viene creato nella directory radice Lustre durante l'importazione. Il <state> segnaposto cambia man mano che l'importazione procede. Il file viene eliminato al termine del processo di importazione.
  • Per visualizzare i dettagli su un processo di importazione completato, è possibile controllare il contenitore di registrazione. Il contenitore di registrazione contiene i log per il processo di importazione, inclusi eventuali errori o conflitti che si sono verificati durante l'importazione.
  • Se il processo di importazione non riesce per qualsiasi motivo, è possibile che non siano disponibili statistiche complete sul processo di importazione, ad esempio il numero di file importati o il numero di conflitti.

Esportare i dati nell'archiviazione BLOB usando un processo di esportazione

È possibile copiare dati dal file system lustre gestito di Azure all'archiviazione a lungo termine in Archiviazione BLOB di Azure creando un processo di esportazione.

Quali file vengono esportati durante un processo di esportazione?

Quando si esportano file dal sistema Lustre gestito di Azure, non tutti i file vengono copiati nel contenitore BLOB specificato al momento della creazione del file system. Le regole seguenti si applicano ai processi di esportazione:

  • I processi di esportazione copiano solo i file nuovi o i cui contenuti vengono modificati. Se il file importato dal contenitore BLOB durante la creazione del file system rimane invariato, il processo di esportazione non esporta il file.
  • I file con modifiche ai metadati non vengono esportati solo. Le modifiche ai metadati includono: proprietario, autorizzazioni, attributi estesi e modifiche del nome (rinominate).
  • I file eliminati nel file system lustre gestito di Azure non vengono eliminati nel contenitore BLOB originale durante il processo di esportazione. Il processo di esportazione non elimina i file nel contenitore BLOB.

Esecuzione di processi di esportazione nei file system attivi

Nei file system attivi, le modifiche apportate ai file durante il processo di esportazione possono causare un errore. Questo stato di errore consente di sapere che non tutti i dati nel file system potrebbero essere esportati nell'archivio BLOB. In questo caso, è possibile ritentare l'esportazione creando un nuovo processo di esportazione. Il nuovo processo copia solo i file che non sono stati copiati nel processo precedente.

Nei file system con molte attività, i tentativi potrebbero avere esito negativo più volte perché i file cambiano di frequente. Per verificare che un file sia stato esportato correttamente nell'archivio BLOB, controllare il timestamp nel BLOB corrispondente. Al termine del processo, è anche possibile visualizzare il contenitore di registrazione configurato in fase di distribuzione per visualizzare informazioni dettagliate sul processo di esportazione. Il contenitore di registrazione fornisce informazioni di diagnostica sui file non riusciti e sul motivo per cui hanno avuto esito negativo.

Se si sta preparando la rimozione delle autorizzazioni di un cluster e si vuole eseguire un'esportazione finale nell'archiviazione BLOB, assicurarsi che tutte le attività di I/O vengano arrestate prima di avviare il processo di esportazione. Questo approccio consente di garantire che tutti i dati vengano esportati evitando errori dovuti all'attività del file system.

Metadati per i file esportati

Quando i file vengono esportati dal file system lustre gestito di Azure al contenitore BLOB, vengono salvati metadati aggiuntivi per semplificare la reimportazione del contenuto in un file system.

La tabella seguente elenca gli attributi POSIX del file system Lustre salvati nei metadati del BLOB come coppie chiave-valore:

Attributo POSIX Tipo
owner INT
group INT
permissions formato octal o rwxrwxrwx; bit sticky è supportato

Gli attributi della directory vengono salvati in un BLOB vuoto. Questo BLOB ha lo stesso nome del percorso della directory e contiene la coppia chiave-valore seguente nei metadati del BLOB: hdi_isfolder : true.

È possibile modificare manualmente gli attributi POSIX prima di usare il contenitore per idratare un nuovo cluster Lustre. Modificare o aggiungere metadati BLOB usando le coppie chiave-valore descritte in precedenza.

Considerazioni per i processi di esportazione

Gli elementi seguenti sono importanti da considerare quando si esportano dati con un processo di esportazione:

  • È possibile eseguire una sola azione di importazione o esportazione alla volta. Ad esempio, se è in corso un processo di esportazione, il tentativo di avviare un altro processo di esportazione restituisce un errore.

Copiare un contenitore BLOB Lustre con AzCopy o Storage Explorer

È possibile spostare o copiare il contenitore BLOB usata da Lustre usando AzCopy o Storage Explorer.

Per AzCopy, è possibile includere gli attributi della directory aggiungendo il flag seguente:

--include-directory-stub

L'inclusione di questo flag mantiene gli attributi POSIX della directory durante un trasferimento, ad esempio , ownergroupe permissions. Se si usa azcopy nel contenitore di archiviazione senza questo flag o con il flag impostato su false, i dati e le directory vengono inclusi nel trasferimento, ma le directory non mantengono gli attributi POSIX.

In Storage Explorer è possibile abilitare questo flag in Impostazioni selezionando Trasferisci e selezionando la casella Includi stub directory.

Screenshot che mostra come includere gli stub di directory durante un trasferimento in Storage Explorer.

Passaggi successivi