L’utilisation du cache disque sur les VM hébergeant une base Active Directory sur un disque IDE peut conduire à des corruptions de données en cas d’arrêt brutal des serveurs physiques.

Explication :

Le cache en écriture permet d’améliorer grandement les performances en écriture du disque. Cependant, en cas de crash, les informations du cache sont perdues ce qui peut conduire à une corruption des données. Pour cette raison, les cartes RAID professionnelles sont pourvues d’une batterie permettant d’assurer la conservation des données du cache même en cas d’arrêt brutal de la machine. Les informations contenues dans le cache sont alors écrites sur le disque lors du rallumage de la machine afin de prévenir la corruption des données.

Dans le cas d’une machine virtuelle, le cache est “émulé” et n’est pas protégé par une batterie physique. Les données qu’il contient sont donc perdues en cas de crash de votre serveur physique. Les mécanismes de cache sont décrit dans la KB suivante : https://support.microsoft.com/kb/2801713/en-us

Le système de fichier NTFS permet de contourner ce problème en utilisant FUA. Le FUA (Forced Unit Acess) est un bit qui permet d’indiquer aux données qu’elles doivent êtres écrites directement sur le disque sans passer par le cache.

Quand Active directory qui utilise une base Jet est installé sur un disque IDE, il essaie de désactiver l’écriture dans le cache. Hyper-V répond à cette demande de manière incorrecte “success”. La base Jet pense alors qu’il est possible d’écrire sur le disque en toute sécurité, ce qui n’est pas le cas…

 

La solution :

Le problème est décrit ici KB2853952. Il est résolu par l’installation du rollup KB2855336  Lorsque Active Directory cherche à désactiver le cache, Hyper-V répondra alors “Failure”, ce qui permettra à la base jet de demander l’écriture directe sur le disque, ce qui sera compris et honoré par le driver Hyper-V.

La conséquence facheuse est l’apparition du warning suivant dans le journal d’évènement de votre VM. En effet, Hyper-V répond désormais “Echec” à la demande de désactivation du cache. La base Jet utilisera alors l’écriture directe sur disque.

Event ID : 1539

Source : ActiveDirectory_DomainService

AD Corrupt

Paradoxalement, si vous voyez ce message, c’est que tout va bien !

Source: ici