Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Vue d’ensemble
Le thin provisioning (allocation dynamique) est une technique de gestion du stockage qui optimise l’allocation des ressources physiques de stockage. Il permet aux administrateurs d’allouer aux applications des quantités plus importantes de stockage virtuel que ce qui est physiquement disponible, en supposant que tout le stockage alloué ne sera pas utilisé en même temps.
Le thin provisioning est une solution de bout en bout pour l’approvisionnement du stockage qui offre des allocations juste à temps. Il nécessite une planification pour le déploiement du stockage et une exécution sur l’hôte et l’application cliente.
Fonctionnalités de thin provisioning dans Windows Server : elles servent d’interfaces entre le stockage compatible avec le thin provisioning et le serveur hôte. Les fonctionnalités du thin provisioning incluent :
- Identification de l’unité logique de thin provisioning (LUN)
- Notification de seuil
- Handles pour l’épuisement des ressources
- Récupération de l’espace pour offrir un service d’approvisionnement en stockage hautement disponible et évolutif aux utilisateurs finaux.
Identification de l’unité logique de thin provisioning
Windows Server a adopté la spécification standard T10 SCSI Block Command 3 (SBC3) pour identifier les unités logiques de thin provisioning (LUN) à partir de Windows Server 2012.
Lors de l’énumération initiale du périphérique cible, Windows Server recueille tous les paramètres de propriété du périphérique cible et identifie le type d’approvisionnement ainsi que la capacité UNMAP et TRIM. Le périphérique de stockage rapporte son type d’approvisionnement et la capacité UNMAP et TRIM selon la spécification SBC3.
Si le périphérique de stockage ne rapporte pas correctement sa capacité actuelle, des problèmes de compatibilité peuvent survenir. Par exemple, si le périphérique de stockage indique qu’il prend en charge la commande UNMAP mais ne le fait pas, un problème de blocage du formatage du disque peut survenir. Lorsque les informations sur le type d’approvisionnement sont exactes, la pile de stockage peut offrir une meilleure gestion des E/S selon le type d’approvisionnement du stockage.
Changements du type d’approvisionnement ou de la capacité de la LUN en temps réel
Un administrateur de stockage peut changer le type d’approvisionnement ou la capacité de la LUN. Lorsque le type d’approvisionnement ou la capacité de la LUN est modifié, la matrice de stockage déclenche une condition de sensibilité UNIT ATTENTION qui renvoie les informations correctes lorsque les données de sensibilité sont demandées. Windows Server enregistre un événement système pour avertir l’administrateur système du changement du type d’approvisionnement ou de la capacité de la LUN.
Handles de seuil et d’épuisement des ressources
Une LUN de thin provisioning est généralement créée avec moins d’espace disque physique que la taille de la LUN. La notification de seuil est une fonction nécessaire pour alerter l’hôte et l’application cliente de l’état de consommation de l’espace de stockage.
La plupart des matrices de stockage de thin provisioning ne signalent pas un événement lorsque le seuil est atteint. Ces solutions de stockage de thin provisioning résolvent la notification de seuil via leur utilitaire de gestion de stockage propriétaire. Par conséquent, pour l’hôte et l’application cliente, le seul événement que ces matrices de stockage signalent est l’épuisement permanent des ressources. Le périphérique de stockage en thin provisioning peut utiliser l’un des handles suivants pour alerter les administrateurs système ou les applications clientes lorsque la consommation de l’espace de stockage approche de sa capacité :
- Le handle de notification de seuil.
- Le handle d’épuisement temporaire des ressources.
- Le handle d’épuisement permanent des ressources.
Notification de seuil de thin provisioning
L’utilitaire de gestion de stockage définit le seuil de thin provisioning. Windows Server ne remplace pas le seuil défini par l’utilitaire de gestion de stockage. Pour la LUN en thin provisioning, l’administrateur du stockage doit spécifier le seuil selon le taux moyen de consommation de stockage. Lorsqu’une commande d’écriture dépasse le seuil défini par le périphérique de stockage cible, celui-ci termine la commande en utilisant les données de sensibilité et envoie un message « THIN PROVISIONING SOFT THRESHOLD REACHED ». Lorsque Windows Server reçoit les données de sensibilité correspondantes, les actions suivantes se produisent :
- Un événement système est enregistré pour avertir l’administrateur hôte que le seuil d’utilisation ou de disponibilité des ressources a été atteint sur le périphérique LUN.
- Les informations sur les ressources utilisées et disponibles sont signalées dans le journal des événements système à partir de la page de journal du périphérique cible. Pour que ce rapport se produise, la matrice de stockage doit prendre en charge la spécification de la page de journal pour l’approvisionnement des blocs logiques afin que Windows Server génère l’événement système.
- La commande terminée est réessayée.
Les commandes d’écriture envoyées après l’enregistrement de cette erreur pourraient potentiellement être perdues si FILE_FLAG_WRITE_THROUGH n’est pas défini, car elles pourraient déclencher une condition d’épuisement permanent des ressources.
Épuisement temporaire des ressources
Lorsque la matrice de stockage active la fonction de croissance automatique sur une LUN, un administrateur peut utiliser la notification d’épuisement temporaire des ressources pour s’assurer que le périphérique de stockage peut allouer plus d’espace à la LUN en quatre secondes. Lorsqu’une commande d’écriture provoque une condition d’épuisement temporaire des ressources, le périphérique de stockage termine la commande demandant l’opération en utilisant les données de sensibilité et renvoie un message « SPACE ALLOCATION IN PROGRESS ». L’épuisement temporaire des ressources est géré comme suit :
- Réessayer la demande d’origine quatre fois avec un intervalle de réessai réglé sur 1 seconde.
- Si tous les réessais échouent, la demande est renvoyée à l’application.
- Si le périphérique de stockage ne gère pas l’épuisement temporaire des ressources, Windows Server s’attend à ce que le périphérique de stockage échoue la prochaine demande d’écriture en renvoyant un statut d’épuisement permanent des ressources.
Épuisement permanent des ressources
La condition d’épuisement permanent des ressources indique que la LUN de thin provisioning a atteint la limite maximale d’espace de stockage. Lorsque l’épuisement permanent des ressources se produit pendant une commande d’écriture, le périphérique de stockage termine l’opération en utilisant les données de sensibilité et envoie un message « SPACE ALLOCATION FAILED WRITE PROTECT ». L’épuisement permanent est géré comme suit :
- La commande d’écriture est renvoyée à l’application si la commande a le FILE_FLAG_WRITE_THROUGH défini.
- L’application peut recevoir une réponse de succès sans que la demande ne soit complétée ni vidée sur le support physique si la commande d’écriture n’a pas le FILE_FLAG_WRITE_THROUGH défini.
- Un événement système est enregistré, incluant un message d’erreur « épuisement permanent des ressources ».
- Le code d’erreur est renvoyé au gestionnaire de partition et la LUN est mise hors ligne.
Récupération de l’espace de stockage à l’aide de la commande UNMAP
Les scénarios suivants peuvent déclencher la récupération de l’espace :
- Suppression d’un fichier.
- Trim au niveau du système de fichiers.
- Opération d’optimisation du stockage.
Le trim au niveau du système de fichiers est activé pour un périphérique de stockage conçu pour effectuer un « retour à zéro en lecture » après une opération de trim ou d’unmap.
Opération de récupération de l’espace dans la pile de stockage
Windows Server convertit les notifications de suppression ou de trim en une requête UNMAP correspondante :
- Lorsqu’un fichier volumineux est supprimé du système de fichiers.
- Lorsqu’un trim au niveau du système de fichiers est déclenché.
La pile de pilotes de port de stockage traduit la requête UNMAP en une commande SCSI UNMAP ou en une commande ATA TRIM selon le type de protocole du périphérique de stockage. Lors de l’énumération du périphérique de stockage, la pile de stockage Windows recueille des informations sur la prise en charge des commandes UNMAP ou TRIM par le périphérique de stockage. Seule la requête UNMAP est envoyée au périphérique de stockage si celui-ci dispose de la capacité SCSI UNMAP ou ATA TRIM. Windows Server fournit également une implémentation d’API pour démapper les LBAs sur un périphérique cible de stockage. Windows Server n’adopte pas les ensembles de commandes T10 SCSI WRITE SAME.
Requêtes UNMAP du système d’exploitation invité Hyper-V
Lors de la création de la machine virtuelle (VM), un hôte Hyper-V envoie une demande pour savoir si le périphérique de stockage sur lequel réside le disque dur virtuel (VHD) prend en charge les commandes UNMAP ou TRIM. Lorsqu’un fichier volumineux est supprimé du système de fichiers de l’OS invité de la VM, l’OS invité envoie une demande de suppression de fichier au disque dur virtuel de la machine virtuelle (VHD) ou au fichier VHD (ou fichier VHDX). Le fichier VHD ou VHDX de la VM tunnelise la requête SCSI UNMAP vers la pile de pilotes de classe de l’hôte Hyper-V de Windows, comme suit :
- Si la VM dispose d’un fichier VHD, le VHD convertit les commandes SCSI UNMAP ou ATA TRIM en une requête TRIM de code de contrôle de gestion des ensembles de données I/O, puis envoie la requête au périphérique de stockage hôte.
- Si la VM dispose d’un fichier VHDX, le système de fichiers VHD convertit les commandes SCSI UNMAP ou ATA TRIM en requêtes de trim au niveau du système de fichiers, puis envoie les requêtes au système d’exploitation hôte.
Windows Hyper-V prend également en charge les appels IOCTL DSM TRIM du système d’exploitation invité.
Utilitaire d’optimisation des lecteurs Windows
Les utilisateurs finaux ou les administrateurs système peuvent utiliser l’utilitaire d’optimisation des lecteurs pour récupérer de l’espace soit en créant une demande manuelle, soit en optimisant la configuration de l’agenda. Si le disque est une LUN de thin provisioning, le type de support du disque apparaît comme « Thin Provisioning Drive ».
L’administrateur système peut planifier une consolidation de l’espace de stockage à l’aide de l’utilitaire d’optimisation des lecteurs. L’utilitaire peut également notifier l’administrateur système si le système manque trois exécutions programmées consécutives.
Récupération de l’état de mappage des blocs
Dans une LUN de thin provisioning, tous les blocs logiques sont regroupés en blocs (clusters). Le paramètre OPTIMAL UNMAP GRANULARITY que le périphérique de stockage rapporte définit la taille du bloc. Tous les blocs sont classés dans les états Mappé, Désalloué ou Ancré. Windows Server traite les états Désalloué et Ancré comme des états non mappés. Windows Server fournit une implémentation d’API, ou une allocation IOCTL DSM, pour récupérer le statut d’approvisionnement des LBAs à partir des LUNs de thin provisioning pour l’opération de gestion du stockage. L’application peut appeler la routine d’allocation IOCTL DSM pour envoyer la commande SCSI et récupérer l’état mappé ou non mappé de chaque bloc dans une plage spécifique. Si le statut d’approvisionnement des LBAs retourné ne décrit pas toute la plage d’allocation, l’application envoie une autre commande SCSI pour récupérer le statut d’approvisionnement de la plage restante des LBAs.
Le périphérique de stockage n’a pas besoin de traiter toute la plage de LBAs en une seule réponse. Si la plage partielle de LBAs de la demande initiale a été retournée, une autre commande est envoyée pour récupérer les états de mappage de la plage de LBAs restante.