Utilisation de volumes de stockage en bloc avec des services¶
Snowflake prend en charge ces types de volumes de stockage pour vos applications conteneurisées : zone de préparation interne Snowflake, stockage local, volumes de stockage en mémoire et volumes de stockage en bloc.
Spécification du stockage en bloc dans la spécification du service¶
Pour créer un service qui utilise le stockage en bloc, vous fournissez la configuration nécessaire dans la spécification du service comme suit :
Spécifiez le champ
spec.volumes
pour définir les volumes de stockage en bloc à créer.volumes: - name: <name> source: block size: <size in Gi> blockConfig: # optional initialContents: fromSnapshot: <snapshot name> iops: <number-of-operations> throughput: <MiB per second>
Les champs suivants sont obligatoires :
name
: nom du volume.source
: type du volume. Pour le volume de stockage en bloc, la valeur estblock
.size
: capacité de stockage du volume de stockage en bloc mesurée en octets. La valeur doit toujours être un nombre entier, spécifié à l’aide du suffixe de l’unité Gi. Par exemple,5Gi
signifie5*1024*1024*1024
octets. La valeur de la taille peut être comprise entre1Gi
et16384Gi
.
Les champs suivants sont facultatifs :
blockConfig.initialContents.fromSnapshot
: spécifie le nom d’un instantané (expliqué dans les sections suivantes) tiré d’un autre volume. L’instantané est utilisé pour initialiser le volume du bloc.Le nom de l’instantané peut être un identificateur d’objet entièrement qualifié, tel que
TUTORIAL_DB.DATA_SCHEMA.MY_SNAPSHOT
. De plus, le nom de l’instantané est résolu par rapport à la base de données et au schéma du service. En d’autres termes, si vous avez créé votre service dansTUTORIAL_DB.DATA_SCHEMA
,fromSnapshot: MY_SNAPSHOT
est alors équivalent àfromSnapshot: TUTORIAL_DB.DATA_SCHEMA.MY_SNAPSHOT
.blockConfig.iops
: spécifie le nombre maximal d’opérations d’entrée/sortie prises en charge par seconde. Notez que la taille des données par opération est limitée à 256 KiB.La plage prise en charge pour AWS est comprise entre 3 000 et 16 000, avec une valeur par défaut de 3 000.
La plage prise en charge pour Azure est comprise entre 3 000 et 80 000, avec une valeur par défaut de 3 000.
blockConfig.throughput
: spécifie le débit maximal, en MiB/seconde, pour provisionner le volume.La plage prise en charge pour AWS est comprise entre 125 et 1 000, avec une valeur par défaut de 125.
La plage prise en charge pour Azure est de 125 à 1 200, avec une valeur par défaut de 125.
Par exemple :
volumes: - name: vol-1 source: block size: 200Gi blockConfig: initialContents: fromSnapshot: snapshot1 iops: 3000 throughput: 125
Spécifiez le champ
spec.containers.volumeMount
pour décrire l’endroit de vos conteneurs d’application où monter les volumes de stockage en bloc. Les informations que vous fournissez dans ce champ sont les mêmes pour tous les volumes de stockage pris en charge.
Exigences en matière de contrôle d’accès¶
Si vous souhaitez utiliser un instantané existant (fromSnapshot
est dans la spécification) pour initialiser le volume, le rôle de propriétaire du service doit avoir le privilège USAGE sur l’instantané.
Le rôle de propriétaire du service doit avoir le privilège USAGE sur la base de données et le schéma qui contiennent l’instantané.
Gestion des instantanés¶
Vous pouvez prendre des instantanés de votre volume de stockage par blocs et utiliser ultérieurement la sauvegarde comme suit :
Utilisez la sauvegarde de l’instantané pour restaurer un volume de stockage en bloc existant.
Utilisez la sauvegarde de l’instantané comme données seed pour initialiser un nouveau volume de stockage par blocs lors de la création d’un nouveau service.
Vous devez vous assurer que toutes vos mises à jour ont été transférées sur le disque avant de prendre l’instantané.
Snowflake fournit les commandes suivantes pour créer et gérer les instantanés :
En outre, pour restaurer un instantané sur un volume de stockage par blocs existant, vous pouvez exécuter la commande ALTER SERVICE … RESTORE VOLUME. Notez que vous devez suspendre le service avant de pouvoir restaurer un instantané. Après la restauration d’un volume, le service est automatiquement repris.
Coûts de stockage par bloc¶
Pour plus d’informations, consultez le tableau de consommation des services de Snowflake.
Exemple¶
Pour un exemple, voir le tutoriel. Le tutoriel fournit des instructions étape par étape pour créer un service avec un volume de stockage en bloc monté.
Lignes directrices et limitations¶
Les restrictions suivantes s’appliquent aux services qui utilisent des volumes de stockage en bloc :
Limitations générales. Si vous rencontrez des problèmes avec ces limitations, contactez votre représentant de compte.
La valeur de la taille du volume de stockage en bloc peut varier entre 1 Gi et 16 384 Gi.
Chaque service peut prendre en charge jusqu’à trois volumes de blocs. Ceci fait référence à
spec.volumes
dans la spécification de service.Le nombre total de volumes de stockage de blocs par compte Snowflake est limité à 10.
Le nombre d’instantanés autorisés par compte Snowflake est de 100.
Le service qui utilise des volumes de stockage en blocs doit avoir le même nombre minimum et maximum d’instances.
Après la création du service, ceci s’applique :
Vous ne pouvez pas modifier le nombre d’instances de service à l’aide de la commande ALTER SERVICE … SET … lorsqu’un service utilise les volumes de stockage en blocs.
Vous ne pouvez pas changer les champs
size
,iops
outhroughput
de volumes de stockage en blocs.Aucun nouveau volume de stockage en bloc ne peut être ajouté et aucun volume de stockage en bloc existant ne peut être supprimé.
Les volumes de stockage en bloc sont préservés si un service est mis à niveau, ou suspendu et repris. Lorsqu’un service est suspendu, vous continuez à payer pour le volume car il est préservé. Après avoir mis à niveau ou repris un service, Snowflake attache chaque volume de stockage par blocs au même ID d’instance de service qu’auparavant.
Les volumes de stockage en bloc sont supprimés si le service est détruit. Pour préserver les données contenues dans les volumes, prenez des instantanés des volumes. Vous pouvez utiliser les instantanés ultérieurement pour initialiser de nouveaux volumes.
Les volumes de stockage en bloc ne prennent pas en charge Tri-Secret Secure ni Periodic Rekeying. Cela signifie que si votre compte a activé Tri-Secret Secure ou Periodic Rekeying, alors que toutes les autres données Snowflake continueront à bénéficier d’une sécurité accrue, toutes les images stockées dans vos volumes de stockage en bloc Snowpark Container Services ne bénéficieront pas de cette sécurité accrue.
Pour créer un volume de stockage en bloc dans un compte avec Tri-Secret Secure ou Periodic Rekeying, vous devez d’abord confirmer que vous comprenez et acceptez de continuer à ne pas bénéficier de cette sécurité supplémentaire pour vos volumes de stockage en bloc. Pour confirmer l’accord, un administrateur de compte (utilisateur ayant le rôle ACCOUNTADMIN) devra définir le paramètre de niveau de compte ENABLE_TRI_SECRET_AND_REKEY_OPT_OUT_FOR_SPCS_BLOCK_STORAGE sur
TRUE
.
Directives relatives aux IOPS et au débit
Si les performances en IO de votre service ne répondent pas à vos attentes et si le service est impacté par les IO ou le débit du volume de blocs, vous pourriez envisager d’augmenter les IOPS ou le débit. Dans l’implémentation actuelle, de telles modifications nécessitent de recréer le service.
Vous pouvez consulter ces métriques de plateforme disponibles pour identifier si votre service est limité en termes de stockage en bloc :
container.cpu.usage
volume.read.iops
volume.write.iops
volume.read.throughput
volume.write.throughput
Pour AWS :
L’IOPS maximum qui peut être configuré est de 500 IOPS par GiB de la taille du volume, jusqu’à un maximum de 16 000 IOPS. Par exemple, le maximum d’IOPS d’un volume de 10 GiB peut être 500 * 10 = 5 000. En conséquence, notez que le nombre maximum d’IOPS de 16 000 ne peut être configuré que si votre volume est de 32 GiB ou supérieur.
Le débit maximal pouvant être configuré est de 1 MiB/seconde pour chaque 4 IOPS, jusqu’à un maximum de 1 000 MiBs/seconde. Par exemple, avec un nombre par défaut de 3 000 IOPS, vous pouvez configurer un débit atteignant jusqu’à 750 MiB/seconde (3 000/4=750).
Pour Azure :
Après un volume de 6GB, le nombre pris en charge d’IOPS augmente de 500 pour chaque GB au-delà de 6GB (types de disques). Le maximum d’IOPS d’un volume de 10GB peut être de 500 * 4 + 3 000 = 5 000. En conséquence, notez que le nombre maximum d’IOPS de 80 000 ne peut être configuré que si votre volume est de 160 GiB ou supérieur.
Après 6 GB, le débit maximal pouvant être configuré est de 0,25 MiB/seconde pour chaque IOPS, jusqu’à un maximum de 1 200 MiBs/seconde. Par exemple, avec la valeur par défaut de 3 000 IOPS, vous pouvez configurer un débit pouvant atteindre jusqu’à 750 MiB/seconde (3 000*0,25=750).