Google Cloud Managed Lustre peut importer des données depuis Cloud Storage et en exporter vers ce service. Les transferts de données sont incrémentiels. Ils ne copient que les fichiers qui n'existent pas encore dans la destination ou qui ont été modifiés depuis leur transfert.
Les buckets Cloud Storage avec l'espace de noms hiérarchique activé offrent des vitesses de transfert plus rapides vers et depuis Managed Lustre par rapport aux buckets standards.
Performances
Les transferts entre Managed Lustre et Cloud Storage peuvent atteindre les vitesses suivantes :
- Pour les fichiers de plus de 32 Mo, jusqu'à 100 Gbit/s. La vitesse de transfert est limitée par le débit maximal d'une instance (capacité de l'instance multipliée par le niveau de performances).
Points à prendre en compte concernant la bande passante de sortie Cloud Storage
Cloud Storage fournit une bande passante de sortie par défaut pouvant atteindre 200 Gbit/s par région et par projet. Si vous disposez de plusieurs instances Managed Lustre dans le même projet et la même région, vous pouvez demander une augmentation de la limite de bande passante de sortie. Pour en savoir plus, consultez les quotas de bande passante Cloud Storage.
Autorisations requises
Autorisations pour lancer le transfert
Le compte utilisateur ou de service utilisé pour lancer le transfert doit disposer des autorisations suivantes :
lustre.instances.exportDatapour transférer des données de Managed Lustre vers Cloud Storage.lustre.instances.importDatapour effectuer le transfert depuis Cloud Storage.
Ces deux autorisations sont accordées avec le rôle roles/lustre.admin. Vous pouvez créer un rôle personnalisé pour accorder des autorisations de manière indépendante.
Autorisations pour l'agent de service Managed Lustre
Obtenir l'agent de service Managed Lustre
Un agent de service Managed Lustre est créé la première fois que vous créez une instance Managed Lustre dans le projet. L'identité de l'agent de service se présente sous la forme service-PROJECT_NUMBER@gcp-sa-lustre.iam.gserviceaccount.com.
Si vous ne disposez pas encore d'un agent de service Managed Lustre
Exécutez la commande
services identity create:gcloud beta services identity create \ --service=lustre.googleapis.com \ --project=PROJECT_NUMBER_OR_IDRemplacez PROJECT_NUMBER_OR_ID par le numéro ou l'ID du projet dans lequel vous souhaitez créer l'instance Managed Lustre. Le résultat ressemble à ce qui suit :
Service identity created: service-1234567890@gcp-sa-lustre.iam.gserviceaccount.comCopiez la valeur de l'identité de l'agent de service à utiliser à l'étape suivante.
Si vous avez déjà créé une instance Managed Lustre
Pour créer l'identité de l'agent de service, obtenez votre numéro de projet. Un PROJECT_NUMBER n'est pas la même chose qu'un ID de projet :
- Un ID de projet est une chaîne unique pouvant être une combinaison de lettres, de chiffres et de traits d'union. Vous spécifiez un ID de projet lorsque vous créez votre projet. Exemple :
example-project-123 - Un numéro de projet est un identifiant unique généré automatiquement pour votre projet. Il ne comporte que des chiffres. Exemple :
1234567890
Pour obtenir le PROJECT_NUMBER d'un ID de projet donné, utilisez la commande
gcloud projects describe:gcloud projects describe PROJECT_ID --format="value(projectNumber)"- Un ID de projet est une chaîne unique pouvant être une combinaison de lettres, de chiffres et de traits d'union. Vous spécifiez un ID de projet lorsque vous créez votre projet. Exemple :
Copiez le numéro de projet renvoyé dans l'identité de l'agent de service :
service-PROJECT_NUMBER@gcp-sa-lustre.iam.gserviceaccount.comCopiez l'identité de l'agent de service pour l'utiliser à l'étape suivante.
Accorder des autorisations
L'agent de service Managed Lustre nécessite l'un des rôles Cloud Storage suivants :
- Pour transférer des données vers et depuis Cloud Storage, vous devez disposer de l'autorisation
roles/storage.objectUsersur le bucket Cloud Storage. - Pour transférer uniquement depuis Cloud Storage, cliquez sur
roles/storage.objectViewersur le bucket Cloud Storage.
Pour attribuer l'un de ces rôles, exécutez la commande gcloud suivante :
gcloud storage buckets add-iam-policy-binding gs://BUCKET_NAME \
--member=serviceAccount:SERVICE_AGENT_IDENTITY \
--role=roles/storage.objectViewer_OR_objectUser
SERVICE_AGENT_IDENTITY correspond à l'identité de l'agent du service Managed Lustre de l'étape précédente.
Importer des données dans Managed Lustre
Vous pouvez importer des données depuis un bucket Cloud Storage. Le bucket peut se trouver dans le même projet ou dans un autre. Le bucket peut se trouver dans une zone ou une région différente de votre instance Managed Lustre, mais les transferts interrégions
peuvent être plus lents que les transferts intrarégions.
gcloud
gcloud lustre instances import-data INSTANCE_ID \
--location=LOCATION \
--gcs-path-uri=gs://BUCKET_NAME/ \
--lustre-path=PS_PATH
Où :
- INSTANCE_ID est le nom de votre instance Managed Lustre.
--locationcorrespond à la zone de votre instance Managed Lustre. Exemple :us-central1-a.--gcs-path-urispécifie l'URI d'un bucket Cloud Storage ou un chemin d'accès dans un bucket au formatgs://<bucket_name>/<optional_path_inside_bucket>/. Si un chemin d'accès dans le bucket est spécifié, il doit se terminer par une barre oblique (/).--lustre-pathspécifie le chemin d'accès au répertoire racine du système de fichiers Lustre géré. Doit commencer par/. La valeur par défaut est/. Si vous spécifiez une valeur autre que celle par défaut, le répertoire doit déjà exister dans le système de fichiers.
Les paramètres ci-dessous sont facultatifs :
--request-idvous permet d'attribuer un ID unique à cette requête. Si vous relancez cette requête en utilisant le même ID de requête, le serveur l'ignorera si elle a déjà été traitée. Doit être un UUID valide qui ne soit pas composé uniquement de zéros.--asyncrenvoie immédiatement une réponse, sans attendre la fin de l'opération.
Pour en savoir plus, consultez la documentation du SDK Cloud.
REST
POST https://lustre.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/instances/INSTANCE_ID:importData
Authorization: Bearer [YOUR_ACCESS_TOKEN]
{
"gcsPath" : {
"uri" : "gs://BUCKET_NAME/"
},
"lustrePath" : {
"path" : "/PATH"
}
}
Où :
- PROJECT_ID est le nom de votre projet Google Cloud .
- LOCATION est la zone de votre instance Managed Lustre. Exemple :
us-central1-a - INSTANCE_ID est le nom de votre instance Managed Lustre.
gcsPathcontient une cléuridont la valeur spécifie l'URI d'un bucket Cloud Storage ou un chemin d'accès dans un bucket, au formatgs://<bucket_name>/<optional_path_inside_bucket>/. Si un chemin d'accès dans le bucket est spécifié, il doit se terminer par une barre oblique (/).lustrePathcontient une clépathdont la valeur spécifie le chemin d'accès au répertoire racine du système de fichiers Lustre géré. Doit commencer par/. La valeur par défaut est/. Si vous spécifiez une valeur autre que celle par défaut, le répertoire doit déjà exister dans le système de fichiers.
Pour utiliser votre propre compte de service au lieu de l'agent de service géré par Google, la requête accepte un champ serviceAccount dans l'objet JSON :
"serviceAccount" : "projects/PROJECT_ID/serviceAccounts/SERVICE_ACCOUNT_ID"
Voici un exemple de commande curl :
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
https://lustre.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/instances/INSTANCE_ID:importData \
-d '{"gcsPath": {"uri":"gs://BUCKET_NAME/"}, "lustrePath": {"path":"/"}}'
Attributs de fichier
Lorsque vous importez des données d'un bucket Cloud Storage vers une instance Managed Lustre, les attributs de fichier de l'instance Managed Lustre sont définis de deux manières :
- Si l'objet Cloud Storage comporte des métadonnées personnalisées, comme décrit pour l'exportation de données, alors :
- L'UID, le GID, le mode et le
mtimedu fichier sont définis en fonction des métadonnées personnalisées de l'objet. - La valeur
atimedu fichier est définie sur la même valeur quemtime.
- L'UID, le GID, le mode et le
- Si l'objet Cloud Storage ne comporte pas les métadonnées personnalisées :
- L'UID et le GID du fichier sont définis sur 0 (
root). - Le mode du fichier est défini sur
rwxr-xr-x(755). - Les valeurs
atimeetmtimedu fichier sont définies sur l'heure de création de l'objet Cloud Storage.
- L'UID et le GID du fichier sont définis sur 0 (
Dans les deux cas :
- Le
ctimed'un fichier est défini sur l'heure à laquelle le fichier a été écrit dans l'instance. - Les
atime,ctimeetmtimed'un répertoire sont définis sur l'heure à laquelle le répertoire a été créé sur l'instance.
Exporter les données
Vous pouvez exporter des données depuis votre instance Managed Lustre vers un bucket Cloud Storage dans le même projet ou dans un autre. Le bucket peut se trouver dans une zone ou une région différente de votre instance Managed Lustre, mais les transferts interrégions peuvent être plus lents que les transferts intrarégions.
gcloud
gcloud lustre instances export-data \
INSTANCE_ID \
--location=LOCATION \
--gcs-path-uri="gs://BUCKET_NAME/" \
--lustre-path="/"
Où :
- INSTANCE_ID est le nom de votre instance Managed Lustre.
--locationest la zone de votre instance Managed Lustre. Exemple :us-central1-a--gcs-path-urispécifie l'URI d'un bucket Cloud Storage ou un chemin d'accès dans un bucket, au formatgs://<bucket_name>/<optional_path_inside_bucket>/. Si un chemin d'accès dans le bucket est spécifié, il doit se terminer par une barre oblique (/).--lustre-pathspécifie le chemin d'accès au répertoire racine du système de fichiers Managed Lustre. Doit commencer par/. La valeur par défaut est/.
Les paramètres ci-dessous sont facultatifs :
--request-idvous permet d'attribuer un ID unique à cette requête. Si vous relancez cette requête en utilisant le même ID de requête, le serveur l'ignorera si elle a déjà été traitée. Doit être un UUID valide qui ne soit pas composé uniquement de zéros.--asyncrenvoie immédiatement une réponse, sans attendre la fin de l'opération.
REST
POST https://lustre.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/instances/INSTANCE_ID:exportData
Authorization: Bearer [YOUR_ACCESS_TOKEN]
{
"lustrePath" : {
"path" : "/"
},
"gcsPath" : {
"uri" : "gs://BUCKET_NAME/"
}
}
Où :
- PROJECT_ID est le nom de votre projet Google Cloud .
- INSTANCE_ID est le nom de votre instance Managed Lustre.
- LOCATION est la zone de votre instance Managed Lustre. Exemple :
us-central1-a lustrePathcontient une clépathdont la valeur spécifie le chemin d'accès au répertoire racine du système de fichiers Lustre géré. Doit commencer par/. La valeur par défaut est/.gcsPathcontient une cléuridont la valeur spécifie l'URI d'un bucket Cloud Storage ou un chemin d'accès dans un bucket, au formatgs://<bucket_name>/<optional_path_inside_bucket>/. Si un chemin d'accès dans le bucket est spécifié, il doit se terminer par une barre oblique (/).
Pour utiliser votre propre compte de service au lieu de l'agent de service géré par Google, la requête accepte un champ serviceAccount dans l'objet JSON :
"serviceAccount" : "projects/PROJECT_ID/serviceAccounts/SERVICE_ACCOUNT_ID"
Voici un exemple de commande curl :
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json"
https://lustre.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/instances/INSTANCE_ID:exportData \
-d '{"lustrePath": {"path":"/"}, "gcsPath": {"uri":"gs://BUCKET_NAME/"}}'
Attributs de fichier
Lorsque vous exportez des données d'une instance Managed Lustre vers un bucket Cloud Storage, les attributs de fichier suivants sont conservés en tant que métadonnées personnalisées dans Cloud Storage :
- L'UID du fichier est stocké avec la clé
goog-reserved-posix-uid. - Le GID du fichier est stocké avec la clé
goog-reserved-posix-gid. - Le mode numérique du fichier est stocké avec la clé
goog-reserved-posix-mode. - Le
mtimedu fichier est stocké avec la clégoog-reserved-file-mtime.
Ces noms de clés de métadonnées personnalisées sont les mêmes que ceux utilisés par le service de transfert de stockage pour les transferts avec des systèmes de fichiers POSIX.
Les attributs de fichier suivants ne sont pas conservés :
- Les liens symboliques ne sont pas conservés.
- Les liens physiques sont exportés en tant qu'objets Cloud Storage distincts, ce qui entraîne la création de plusieurs copies.
- La configuration de striping Lustre définie de manière explicite à l'aide de
lfs setstripeoulfs setdirstripen'est pas conservée. - Les
atimeetctimedes fichiers ne sont pas conservés. - Le
mtimedes répertoires n'est pas conservé. - Les répertoires vides ne sont pas conservés.
Opération Get
Pour afficher l'état d'une opération d'importation ou d'exportation, vous avez besoin de l'ID de l'opération. Cet ID est renvoyé par le service lorsque vous effectuez une demande d'importation ou d'exportation. Il utilise le format suivant :
operation-1234567890123-6127783ad26ea-88913969-02748053
gcloud
gcloud lustre operations describe OPERATION_ID \
--location=LOCATION
REST
GET https://lustre.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/operations/OPERATION_ID
Authorization: Bearer [YOUR_ACCESS_TOKEN]
Voici un exemple de commande curl :
curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
https://lustre.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/operations/OPERATION_ID
Annuler l'opération
Pour annuler une opération d'importation ou d'exportation, vous avez besoin de l'ID de l'opération. Cet ID est renvoyé par le service lorsque vous effectuez une demande d'importation ou d'exportation. Il utilise le format suivant :
operation-1234567890123-6127783ad26ea-88913969-02748053
gcloud
gcloud lustre operations cancel OPERATION_ID \
--location=LOCATION
REST
POST https://lustre.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/operations/OPERATION_ID:cancel
Authorization: Bearer [YOUR_ACCESS_TOKEN]
Voici un exemple de commande curl :
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
https://lustre.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/operations/OPERATION_ID:cancel
Limites
Les limites suivantes s'appliquent :
Une seule opération de transfert par instance peut être active à la fois. Si vous lancez un deuxième transfert avant la fin du premier, l'erreur suivante s'affiche :
ERROR: (gcloud.lustre.instances.export-data) ABORTED: unable to queue the operation
Dépannage
Lorsque vous importez des données depuis ou vers Cloud Storage, vous pouvez rencontrer des problèmes de blocage des transferts, d'autorisations ou de fichiers ignorés. Suivez ces étapes pour diagnostiquer et résoudre les problèmes courants de transfert de données.
Transfert bloqué ou vitesse de sortie lente
Si une opération d'importation ou d'exportation est bloquée ou s'exécute beaucoup plus lentement que prévu, vérifiez les points suivants :
- Limites de bande passante de sortie Cloud Storage : Cloud Storage applique un quota de bande passante de sortie par défaut pouvant atteindre 200 Gbit/s par région et par projet. Si plusieurs instances ou charges de travail à haut débit transfèrent des données simultanément, vous risquez d'être limité par ce quota. Consultez Quotas de bande passante Cloud Storage pour demander une augmentation de quota.
- Limites de débit des instances : les vitesses de transfert sont limitées par la capacité de débit maximale de votre instance (capacité de l'instance multipliée par son niveau de performances). Vérifiez le niveau de performances de votre instance pour vous assurer qu'il correspond à vos attentes.
Erreurs d'autorisation lors du lancement du transfert
Si le démarrage d'un transfert échoue avec une erreur d'autorisation ou d'autorisation refusée, vérifiez les rôles IAM suivants :
- Autorisations du compte utilisateur et du compte de service : l'identité à l'origine de la commande de transfert doit disposer de l'autorisation
lustre.instances.importData(pour l'importation) oulustre.instances.exportData(pour l'exportation). Ces autorisations sont incluses dans le rôleroles/lustre.admin. - Autorisations de l'agent de service : l'agent de service Managed Lustre géré par Google (
service-<PROJECT_NUMBER>@gcp-sa-lustre...) doit disposer de l'autorisationroles/storage.objectViewer(pour les importations) ouroles/storage.objectUser(pour les exportations) sur le bucket Cloud Storage cible. Pour obtenir des instructions de configuration détaillées, consultez Accorder des autorisations à l'agent de service.
Fichiers ignorés ou attributs manquants
Les transferts de données Lustre gérés sont incrémentiels. Ils ne copient que les fichiers qui n'existent pas dans la destination ou qui ont été modifiés depuis le dernier transfert.
- Si des fichiers semblent avoir été ignorés, vérifiez s'ils ont déjà été transférés avec succès et s'ils n'ont pas été modifiés.
- Lorsque vous exportez des données vers Cloud Storage, les métadonnées POSIX (UID, GID, mode, mtime) sont conservées à l'aide de clés de métadonnées personnalisées (par exemple,
goog-reserved-posix-uid). Notez que les liens symboliques, les répertoires vides et les mises en page de bandes PFL explicites ne sont pas conservés lors de l'exportation. Pour en savoir plus, consultez Transférer les attributs des fichiers de données.
Examiner les opérations de transfert ayant échoué
Si une opération de transfert échoue, récupérez le message d'erreur détaillé et le motif de l'échec à l'aide de l'ID d'opération :
gcloud lustre operations describe OPERATION_ID \
--location=LOCATION
Examinez le champ error dans le résultat de l'opération pour déterminer si l'échec est dû à des objets manquants, à des délais d'attente du réseau ou à l'authentification.
Impossible d'ajouter l'opération à la file d'attente
Si une erreur semblable à l'une des suivantes s'affiche lorsque vous tentez de démarrer une opération :
ERROR: (gcloud.lustre.instances.import-data) ABORTED: unable to queue the operation
ERROR: (gcloud.lustre.instances.export-data) ABORTED: unable to queue the operation
ERROR: (gcloud.lustre.instances.update) ABORTED: unable to queue the operation
Cette erreur se produit lorsque vous essayez de démarrer une opération alors qu'une autre opération du même type est déjà en cours sur la même instance.
- Importation/Exportation : Managed Lustre n'accepte qu'une seule opération de transfert active par instance à la fois. La mise en file d'attente n'est pas compatible avec les opérations de transfert.
- Mise à jour d'instance : Managed Lustre n'autorise qu'une seule mise à jour active par instance à la fois, et permet de mettre en file d'attente une opération de mise à jour supplémentaire.
Pour résoudre ce problème, attendez la fin de l'opération en cours avant d'en commencer une autre.
FILESYSTEM_NO_SPACE_ON_DEVICE erreurs
Si votre transfert renvoie une erreur FILESYSTEM_NO_SPACE_ON_DEVICE, même si les outils de surveillance indiquent qu'il reste de l'espace libre agrégé, vous pouvez rencontrer un déséquilibre OST, des octrois d'espace client ou un épuisement des inodes.
Pour en savoir plus et découvrir des stratégies d'atténuation, consultez Erreurs No space left on device.