

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

# Precaricamento dei file nel file system
<a name="preload-file-contents-hsm-dra"></a>

Facoltativamente, puoi precaricare contenuti, singoli file o directory nel tuo file system.

## Importazione di file tramite comandi HSM
<a name="preload-hsm"></a>

Amazon FSx copia i dati dal tuo repository di dati Amazon S3 al primo accesso a un file. Grazie a questo approccio, la lettura o la scrittura iniziale su un file comporta una piccola latenza. Se l'applicazione è sensibile a questa latenza e sapete a quali file o directory deve accedere, potete facoltativamente precaricare il contenuto di singoli file o directory. A tale scopo, utilizzare il comando seguente. `hsm_restore`

È possibile utilizzare il `hsm_action` comando (rilasciato con l'utilità `lfs` utente) per verificare che il contenuto del file abbia terminato il caricamento nel file system. Il valore restituito da `NOOP` indica che il file è stato caricato correttamente. Esegui i seguenti comandi da un'istanza di calcolo con il file system montato. Sostituiscilo *path/to/file* con il percorso del file che stai precaricando nel file system.

```
sudo lfs hsm_restore path/to/file
sudo lfs hsm_action path/to/file
```

È possibile precaricare l'intero file system o un'intera directory all'interno del file system utilizzando i seguenti comandi. (La e commerciale finale esegue un comando come processo in background). Se richiedi il precaricamento di più file contemporaneamente, Amazon FSx carica i file dal tuo repository di dati Amazon S3 in parallelo. Se un file è già stato caricato nel file system, il `hsm_restore` comando non lo ricarica.

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

**Nota**  
Se il bucket S3 collegato è più grande del file system, dovresti essere in grado di importare tutti i metadati dei file nel tuo file system. Tuttavia, puoi caricare solo la quantità effettiva di dati di file che rientra nello spazio di archiviazione rimanente del file system. Riceverai un errore se tenti di accedere ai dati dei file quando non c'è più spazio di archiviazione sul file system. In tal caso, è possibile aumentare la quantità di capacità di archiviazione in base alle esigenze. Per ulteriori informazioni, consulta [Gestione della capacità di archiviazione](managing-storage-capacity.md).

## Fase di convalida
<a name="preload-validation"></a>

Puoi eseguire lo script bash elencato di seguito per aiutarti a scoprire quanti file o oggetti si trovano in uno stato di archiviazione (rilasciato).

Per migliorare le prestazioni dello script, in particolare su file system con un numero elevato di file, i thread della CPU vengono determinati automaticamente in base al file. `/proc/cpuproc` In altre parole, vedrai prestazioni più veloci con un'istanza Amazon EC2 con un numero di vCPU più elevato.

1. Configura lo script bash.

   ```
   #!/bin/bash
   
   # Check if a directory argument is provided
   if [ $# -ne 1 ]; then
       echo "Usage: $0 /path/to/lustre/mount"
       exit 1
   fi
   
   # Set the root directory from the argument
   ROOT_DIR="$1"
   
   # Check if the provided directory exists
   if [ ! -d "$ROOT_DIR" ]; then
       echo "Error: Directory $ROOT_DIR does not exist."
       exit 1
   fi
   
   # Automatically detect number of CPUs and set threads
   if command -v nproc &> /dev/null; then
       THREADS=$(nproc)
   elif [ -f /proc/cpuinfo ]; then
       THREADS=$(grep -c ^processor /proc/cpuinfo)
   else
       echo "Unable to determine number of CPUs. Defaulting to 1 thread."
       THREADS=1
   fi
   
   # Output file
   OUTPUT_FILE="released_objects_$(date +%Y%m%d_%H%M%S).txt"
   
   echo "Searching in $ROOT_DIR for all released objects using $THREADS threads"
   echo "This may take a while depending on the size of the filesystem..."
   
   # Find all released files in the specified lustre directory using parallel
   # If you  get false positives for file names/paths that include the word 'released',
   # you can grep 'released exists archived' instead of just 'released'
   time sudo lfs find "$ROOT_DIR" -type f | \
   parallel --will-cite -j "$THREADS" -n 1000 "sudo lfs hsm_state {} | grep released" > "$OUTPUT_FILE"
   
   echo "Search complete. Released objects are listed in $OUTPUT_FILE"
   echo "Total number of released objects: $(wc -l <"$OUTPUT_FILE")"
   ```

1. Rendi eseguibile lo script:

   ```
   $ chmod +x find_lustre_released_files.sh
   ```

1. Esegui lo script, come nell'esempio seguente:

   ```
   $ ./find_lustre_released_files.sh /fsxl/sample
   Searching in /fsxl/sample for all released objects using 16 threads
   This may take a while depending on the size of the filesystem...
   real 0m9.906s
   user 0m1.502s
   sys 0m5.653s
   Search complete. Released objects are listed in released_objects_20241121_184537.txt
   Total number of released objects: 30000
   ```

Se sono presenti oggetti rilasciati, esegui un ripristino in blocco nelle directory desiderate per importare i file in FSx for Lustre da S3, come nell'esempio seguente:

```
$ DIR=/path/to/lustre/mount
$ nohup find $DIR -type f -print0 | xargs -0 -n 1 -P 8 sudo lfs hsm_restore &
```

Nota che ci `hsm_restore` vorrà del tempo se ci sono milioni di file.