Skip to main content
Un volume est un espace de stockage qu’une sandbox monte à l’emplacement de votre choix. Les bacs à sable prennent en charge deux types de volumes. Les volumes temporaires appartiennent à une seule sandbox et disparaissent avec elle. Les Volumes enregistrés sont des volumes que votre organisation enregistre une seule fois et que n’importe quel nombre de bacs à sable peut ensuite monter. Cette page s’adresse aux développeurs dont la sandbox doit écrire plus de données que n’en peut contenir le système de fichiers de son conteneur, ou qui souhaitent que plusieurs bacs à sable lisent le même dataset. À l’issue de cette page, vous saurez joindre ces deux types de volumes et gérer le cycle de vie des Volumes enregistrés.

Choisir un type de volume

Utilisez un volume temporaire comme espace de travail au sein d’un même run. Utilisez un Volume enregistré pour les données qui doivent survivre à la sandbox ou que plusieurs bacs à sable lisent simultanément, comme un dataset partagé ou les poids du modèle.

Volumes temporaires

Les exemples de volumes temporaires omettent auth et s’authentifient avec un jeton d’accès à l’API CoreWeave fourni par CWSANDBOX_API_KEY. Pour utiliser une clé API Forge, suivez la procédure décrite dans Premiers pas, puis transmettez les AuthHeaders obtenus à Sandbox.run(). Un volume temporaire est créé en même temps que la sandbox et détruit avec elle. Pour en déclarer un, ajoutez ScratchVolumeOptions à la liste volumes.
ScratchVolumeOptions accepte les champs suivants :

Choisir un support de stockage

Avec StorageMedium.DISK, le volume repose sur le disque local. Avec StorageMedium.MEMORY, il repose sur tmpfs, ce qui est plus rapide, mais l’espace utilisé est décompté de la requête de mémoire du conteneur qui monte le volume ainsi que du plafond de mémoire de la politique. Comme un volume en RAM sans limite pourrait épuiser les ressources du nœud, un volume MEMORY doit déclarer une valeur size. Celle-ci peut être exprimée sous forme de quantité absolue ou de pourcentage entier de la requête de mémoire résolue de la sandbox, par exemple "50%". La forme en pourcentage n’est valide que pour MEMORY. Un volume DISK doit utiliser une taille absolue.

Monter un volume temporaire sur plusieurs conteneurs

mount_path est un raccourci qui monte le volume sur le conteneur principal. Dans une sandbox multiconteneur, omettez mount_path et déclarez plutôt les montages sur chaque conteneur, afin que plusieurs conteneurs puissent accéder au même volume.

Volumes enregistrés

Les exemples suivants utilisent une PVC de votre cluster CKS et un jeton d’accès à l’API CoreWeave défini dans CWSANDBOX_API_KEY. Suivez la procédure Utiliser votre propre capacité de calcul avant d’enregistrer ou de monter un Volume adossé à une PVC. Un Volume enregistré pointe vers une PersistentVolumeClaim (PVC) qui existe déjà dans l’un de vos clusters. Une fois le Volume enregistré, les bacs à sable peuvent monter la demande sans disposer d’un accès au cluster lui-même. Le Volume n’est qu’un pointeur de métadonnées : CoreWeave ne copie jamais les données, et la suppression du Volume n’affecte en rien la demande. Chaque rattachement offre une vue en direct de la même demande : toute écriture effectuée depuis un bac à sable est donc visible par tous les autres bacs à sable qui la montent.

Enregistrer un Volume

Volume.create() renvoie immédiatement le Volume à l’état VALIDATING, puis le plan de contrôle vérifie que la demande existe et qu’elle est utilisable. Interrogez son statut avec wait_until_ready() avant de le monter.
Vous choisissez vous-même l’ID du volume. Il doit être unique au sein de votre organisation et ne peut plus être modifié après sa création.
La source et l’option read_only sont également immuables après la création. Seul le champ description peut être modifié par la suite.
PvcVolumeSource accepte les champs suivants : Définissez read_only=True dans Volume.create() pour que la lecture seule devienne une propriété du Volume lui-même. Ce paramètre fixe un minimum, et non une valeur par défaut : un montage peut être en lecture seule sur un Volume accessible en écriture, mais aucun montage ne peut écrire sur un Volume en lecture seule.

Monter un Volume enregistré

Montez le Volume à l’aide de son ID avec RegisteredVolumeOptions. Le Volume doit être à l’état READY au démarrage, faute de quoi la sandbox échoue avec l’erreur CWSANDBOX_VOLUME_NOT_READY.
RegisteredVolumeOptions exige name, volume_id et un mount_path absolu autre que /. Il accepte également sub_path, qui se combine avec tout sub_path défini lors de l’enregistrement, ainsi que read_only. Une sandbox indique les Volumes qu’elle a montés dans attached_volume_ids.

Localité et placement

La propriété locality d’un Volume indique s’il impose des contraintes de placement :
  • cluster_local : le Volume réside dans un seul cluster ; les bacs à sable qui le montent sont donc planifiés sur l’exécuteur de ce cluster. Les Volumes adossés à un PVC sont locaux au cluster.
  • global : le Volume est accessible depuis n’importe quel cluster et n’impose aucune contrainte de placement.
Il est impossible de monter dans une même sandbox deux Volumes locaux appartenant à des clusters différents : le démarrage échoue alors avec l’erreur CWSANDBOX_VOLUME_PLACEMENT_CONFLICT.

Gérer les Volumes enregistrés

Utilisez les opérations suivantes pour lister, inspecter, mettre à jour et annuler l’enregistrement des Volumes de votre organisation.
Volume.list() gère automatiquement la pagination et accepte les filtres states et runner_ids. delete() accepte allow_missing=True, de sorte que la suppression d’un Volume déjà supprimé réussit au lieu de lever une exception. La suppression d’un Volume encore monté par des bacs à sable dans un état non terminal échoue avec l’erreur CWSANDBOX_VOLUME_IN_USE, que le client Python lève sous la forme d’une exception VolumeInUseError. Arrêtez d’abord les bacs à sable associés.

États des volumes

Au cours de son cycle de vie, un Volume enregistré passe par les états suivants : wait_until_ready() interroge l’état du Volume jusqu’à ce qu’il passe à READY. La méthode lève VolumeError si le Volume passe à ERROR ou DELETING, et VolumeWaitTimeoutError si le délai d’expiration est écoulé avant.

Motifs d’échec

Utilisez ce tableau pour interpréter les motifs d’échec que peuvent renvoyer les opérations sur les sandbox et les Volumes. Pour en savoir plus sur les fonctionnalités connexes des sandbox, consultez les ressources suivantes :
Dernière modification le 15 octobre 2026