Les snapshots - ou instantanés - sont un moyen très répandu de créer des copies virtuelles d'un système entier pour en faciliter la récupération très rapide voire immédiate.  Un système de restauration basé sur des snapshots et correctement conçu peut ainsi restaurer de très gros volumes en quelques minutes seulement - pour peu que le point de restauration ne remonte pas à plusieurs semaines - au risque d'éventuelles pertes de données. Quoi qu'il en soit le système a plus que le mérite d'exister, sachant qu'en la matière deux approches distinctes de snapshots cohabitent. A savoir d'un côté la copie sur écriture (copy-over-write ou CoW) et la redirection sur écriture (redirect-over-write ou RoW), chacune ayant ses avantages et ses inconvénients en termes performances système et de la capacité à conserver des instantanés sur une longue période.

Contrairement à la notion de « volume » couramment utilisée dans ce domaine, nous parlerons ici plutôt d'« entité protégée » pour faire allusion à l'entité sauvegardée par un instantané spécifique. S'il est vrai que celle-ci est généralement un volume RAID, certains systèmes de stockage d'objets y renoncent au profit de la protection d'autres entités telles que du partage NAS. Dans ce cas, cette entité peut couvrir plusieurs unités de disque qui ne résident pas nécessairement dans un volume RAID ou LUN. Tous les types de snapshots ont une caractéristique commune : il s'agit de copies virtuelles et non physiques. En cas d'incident sur l'entité protégée, l'instantané seul serait inutile. Par exemple, en cas de triple défaillance d'un disque dans un volume RAID 6, un instantané ne serait d'aucune utilité. Un système de stockage d'objets - ou tout système de stockage utilisant l'erasure coding au lieu du RAID - peut incorporer des mécanismes de protection contre un certain nombre de défaillances simultanées, mais au-delà de ce nombre, les snapshots sont inefficaces. Pour garantir une protection contre les défaillances des supports, il est donc impératif de répliquer ou de sauvegarder l'instantané sur un autre périphérique, c'est-à-dire de créer une copie physique à partir d'une copie virtuelle.

Des snapshots cloud bien différents

Si le terme snapshot est désormais utilisé par les fournisseurs cloud, le présent article s'intéresse uniquement aux snapshots traditionnels, tels que ceux que l'on trouve dans les NAS et les baies de stockage. En cas de recours à un produit d'un fournisseur IaaS et de création d'un instantané, c'est une copie physique de ce volume dans le stockage objet qui est en fait créé. A savoir en fait une sauvegarde qui doit également être copiée dans un autre endroit et sur un autre compte afin de la protéger contre une attaque ransomware ou une catastrophe naturelle : ce qui est très différent de ce qui est présentement abordé.

Lors de la création d'un instantané, rien ne se passe sur la matrice de disques durs hébergeant l'entité protégée. Le système de stockage prend simplement note du fait que l'état actuel de l'entité protégée doit être sauvegardé. La disparité entre les instantanés CoW et RoW réside ainsi dans la manière dont ils stockent les versions précédentes des blocs modifiés, et ces différentes méthodes ont des implications significatives en termes de performances.

Zoom sur le fonctionnement de la copie sur écriture...

Prenons l'exemple d'un système de copie sur écriture, qui duplique les blocs avant de les écraser avec de nouvelles données. Essentiellement, lorsqu'un bloc de l'entité protégée doit être modifié, le système copie ce bloc dans une zone d'instantané séparée avant qu'il ne soit écrasé. Cette approche utilise trois opérations d'E/S pour chaque écriture : une lecture et deux écritures. Avant d'écraser un bloc, sa valeur précédente doit être lue et écrite à un autre endroit, suivie de l'écriture des nouvelles données. Si un processus tente d'accéder au snapshot à un moment ultérieur, il le fait par l'intermédiaire du système d'instantané, qui sait quels blocs ont été modifiés depuis la création de l'instantané. Les blocs non modifiés sont lus à partir de l'entité protégée d'origine, tandis que le système d'instantané récupère les versions précédentes des blocs modifiés à partir de leurs emplacements de stockage respectifs. Ce processus de prise de décision pour chaque bloc peut dès lors entraîner une surcharge de calcul importante.

... et de la redirection sur écriture

En revanche, un système de redirection sur écriture utilise des pointeurs pour représenter toutes les entités protégées. Lorsqu'un bloc doit être modifié, le système de stockage redirige ainsi simplement le pointeur associé à ce bloc vers un autre bloc et y écrit les données. Le système d'instantané maintient un enregistrement de tous les emplacements de blocs constituant un snapshot donné, qui est essentiellement une liste de pointeurs correspondant aux emplacements de blocs. Si un processus cherche à accéder à un instantané spécifique, il peut utiliser ces pointeurs pour récupérer les blocs à leur emplacement d'origine. Le fait que certains blocs aient été remplacés et soient désormais représentés par des pointeurs différents n'a aucune importance pour le processus d'instantané. Par conséquent, la lecture d'un snapshot dans un système de redirection sur écriture n'entraîne aucune surcharge de calcul.

Bilan des courses

Les snaphsots RoW peuvent réduire de 200 % les opérations d'E/S lors de la modification d'un bloc protégé (une écriture contre deux lectures et une écriture), tout en éliminant toute surcharge de calcul supplémentaire associée à la lecture des instantanés. En revanche les systèmes CoW peuvent avoir un impact négatif significatif sur les performances de l'entité protégée. Plus le nombre et la durée des instantanés stockés sont importants, plus l'impact sur les performances de l'entité protégée est prononcé. C'est précisément la raison pour laquelle les snapshots de copie sur écriture sont généralement utilisés comme sources temporaires pour les sauvegardes. La création d'un trop grand nombre d'instantanés et leur conservation pendant de longues périodes peuvent réduire les performances de l'entité protégée jusqu'à 50 %.

Si vous prévoyez d'utiliser la fonction d'instantané de votre système de stockage pour créer et conserver de nombreux instantanés pendant de longues périodes, vous devriez vraiment rechercher un système de redirection sur écriture ou quelque chose de similaire. Quel que soit le fournisseur sélectionné, assurez-vous de communiquer avec lui sur la façon dont vous prévoyez d'utiliser les instantanés et voyez s'il pense que vous aurez des problèmes de performances. Vérifiez ensuite ses affirmations au moyen d'un test de validation d'un PoC. Les snapshots sont un outil formidable, mais encore faut-il parvenir à les utiliser correctement.