Protection des données des périphériques NVMe
Certaines formes d'instance de calcul dans Oracle Cloud Infrastructure incluent des périphériques NVMe attachés localement. Ces périphériques offrent une latence extrêmement faible et un stockage de blocs hautes performances idéal pour le Big Data, le traitement des transactions en ligne (OLTP) et toute autre charge globale pouvant en bénéficier.
Les périphériques NVMe ne sont en aucune manière protégés ; il s'agit de périphériques individuels installés localement sur votre instance. Oracle Cloud Infrastructure ne prend pas d'images, n'effectue pas de sauvegarde et n'utilise pas RAID ni aucune autre méthode pour protéger les données sur les périphériques NVMe. Il vous incombe de protéger les données sur ces périphériques et d'en gérer la durabilité.
Oracle Cloud Infrastructure offre des unités logiques de stockage de blocs distants hautes performances (iSCSI) redondantes et pouvant être sauvegardées via un appel d'API. Pour plus d'informations, reportez-vous à Présentation de Block Volume.
Pour obtenir des informations sur les formes qui prennent en charge le stockage NVMe local, reportez-vous à Formes de calcul.
Recherche des périphériques NVMe sur votre instance
Vous pouvez identifier les périphériques NVMe à l'aide de la commande lsblk
. La réponse renvoie une liste. Les périphériques NVMe commencent par "nvme
", comme indiqué dans l'exemple suivant pour une instance BM.DenseIO1.36 :
[opc@somehost ~]$ lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 46.6G 0 disk
├─sda1 8:1 0 512M 0 part /boot/efi
├─sda2 8:2 0 8G 0 part [SWAP]
└─sda3 8:3 0 38G 0 part /
nvme0n1 259:6 0 2.9T 0 disk
nvme1n1 259:8 0 2.9T 0 disk
nvme2n1 259:0 0 2.9T 0 disk
nvme3n1 259:1 0 2.9T 0 disk
nvme4n1 259:7 0 2.9T 0 disk
nvme5n1 259:4 0 2.9T 0 disk
nvme6n1 259:5 0 2.9T 0 disk
nvme7n1 259:2 0 2.9T 0 disk
nvme8n1 259:3 0 2.9T 0 disk
[opc@somehost ~]$
Modes d'échec et solutions de protection associées
Vous devez envisager les trois modes d'échec principaux suivants :
Protection contre l'échec d'un périphérique NVMe
Une unité de stockage RAID protégée est le moyen le plus recommandé pour vous protéger contre un échec de périphérique NVMe. Il existe trois niveaux RAID utilisables pour la majorité des charges globales :
-
RAID 1 : copie exacte (ou miroir) d'un ensemble de données sur plusieurs disques. Une paire mise en mirroir RAID 1 classique contient deux disques, comme suit :
-
RAID 10 : partitionne les données sur plusieurs paires mises en miroir. Tant qu'un disque de chaque paire mise en miroir fonctionne, les données peuvent être extraites, comme indiqué ci-dessous :
-
RAID 6 : partitionnement au niveau des blocs avec deux blocs de parité répartis sur tous les disques membres, comme indiqué.
Pour plus d'informations sur RAID et les niveaux, reportez-vous à RAID.
Dans la mesure où le niveau RAID approprié dépend du nombre de disques disponibles, du nombre d'unités logiques de stockage individuelles nécessaires, de la quantité d'espace nécessaire et des performances requises, il n'existe pas de choix correct. Vous devez comprendre votre charge globale et concevoir en conséquence.
Si vous partitionnez ou formatez votre disque dans le cadre de ce processus et que le lecteur est de taille supérieure à 2 To, vous devez créer une table de partition GUID. Pour créer une table de partition GUID, utilisez la commande parted au lieu de fdisk. Pour plus d'informations, reportez-vous à A propos des partitions de disque dans le guide de l'administrateur Oracle Linux.
Options d'utilisation d'une forme BM.DenseIO1.36
Il existe plusieurs options pour les instances BM.DenseIO1.36 avec neuf périphériques NVMe .
Pour toutes les options ci-dessous, vous pouvez éventuellement augmenter la valeur limite de vitesse de resynchronisation RAID par défaut. Augmenter cette valeur afin de se rapprocher de la vitesse de stockage rapide sur les instances Bare Metal peut réduire le temps nécessaire pour configurer RAID.
Utilisez la commande suivante pour augmenter la valeur limite de vitesse :
$ sysctl -w dev.raid.speed_limit_max=10000000
Option 1 : création d'un périphérique RAID 6 unique sur les neuf périphériques
Cette unité de stockage est redondante, fonctionne bien, fera face à l'échec de deux périphériques et sera présentée comme une unité logique de stockage unique avec environ 23,8 To d'espace utilisable.
Utilisez les commandes suivantes pour créer un périphérique RAID 6 unique sur les neuf périphériques :
$ sudo yum install mdadm -y
$ sudo mdadm --create /dev/md0 --raid-devices=9 --level=6 /dev/nvme0n1 /dev/nvme1n1 /dev/nvme2n1 /dev/nvme3n1 /dev/nvme4n1 /dev/nvme5n1 /dev/nvme6n1 /dev/nvme7n1 /dev/nvme8n1
$ sudo mdadm --detail --scan | sudo tee -a /etc/mdadm.conf >> /dev/null
Option 2 : création d'une unité de stockage RAID 10 à quatre périphériques et d'une unité de stockage RAID 6 à cinq périphériques
Ces unités de stockage seraient présentées comme deux unités logiques de stockage différentes à vos applications. Cette option est recommandée lorsque vous devez isoler un type d'E/S par rapport à un autre, comme des fichiers journaux et des fichiers de données. Dans cet exemple, votre unité de stockage RAID 10 aurait environ 6,4 To d'espace utilisable et l'unité de stockage RAID 6 en aurait environ 9,6 To.
Utilisez les commandes suivantes pour créer une unité de stockage RAID 10 à quatre périphériques et une unité de stockage RAID 6 à cinq périphériques :
$ sudo yum install mdadm -y
$ sudo mdadm --create /dev/md0 --raid-devices=4 --level=10 /dev/nvme5n1 /dev/nvme6n1 /dev/nvme7n1 /dev/nvme8n1
$ sudo mdadm --create /dev/md1 --raid-devices=5 --level=6 /dev/nvme0n1 /dev/nvme1n1 /dev/nvme2n1 /dev/nvme3n1 /dev/nvme4n1
$ sudo mdadm --detail --scan | sudo tee -a /etc/mdadm.conf >> /dev/null
Option 3 : création d'une unité de stockage RAID 10 à huit périphériques
Si vous avez besoin des meilleures performances possible et que vous pouvez sacrifier une partie de votre espace disponible, vous pouvez utiliser une unité de stockage RAID 10 à huit périphériques. Comme une unité de stockage RAID 10 nécessite un nombre pair de périphériques, le neuvième périphérique est enlevé de l'unité de stockage et sert de disque hot spare en cas d'échec d'un autre périphérique. Cela crée une seule unité logique de stockage avec environ 12,8 To d'espace utilisable.
Utilisez les commandes suivantes pour créer une unité de stockage RAID 10 à huit périphériques :
$ sudo yum install mdadm -y
$ sudo mdadm --create /dev/md0 --raid-devices=8 --level=10 /dev/nvme0n1 /dev/nvme1n1 /dev/nvme2n1 /dev/nvme3n1 /dev/nvme4n1 /dev/nvme5n1 /dev/nvme6n1 /dev/nvme7n1
La commande suivante ajoute /dev/nvme8n en tant que disque hot spare pour l'unité de stockage /dev/md0 :
$ sudo mdadm /dev/md0 --add /dev/nvme8n1
$ sudo mdadm --detail --scan | sudo tee -a /etc/mdadm.conf >> /dev/null
Option 4 : création de deux unités de stockage RAID 10 à quatre périphériques
Pour obtenir les meilleures performances possible et une isolation d'E/S sur les unités logiques de stockage, créez deux unités de stockage RAID 10 à quatre périphériques. Comme RAID 10 nécessite un nombre pair de périphériques, le neuvième périphérique est enlevé des unités de stockage et sert de disque hot spare global en cas d'échec d'un autre périphérique dans l'une des unités de stockage. Cela crée deux unités logiques de stockage, chacune avec environ 6,4 To d'espace utilisable.
Utilisez les commandes suivantes pour créer deux unités de stockage RAID 10 à quatre périphériques avec un disque hot spare global :
$ sudo yum install mdadm -y
$ sudo mdadm --create /dev/md0 --raid-devices=4 --level=10 /dev/nvme4n1 /dev/nvme5n1 /dev/nvme6n1 /dev/nvme7n1
$ sudo mdadm --create /dev/md1 --raid-devices=4 --level=10 /dev/nvme0n1 /dev/nvme1n1 /dev/nvme2n1 /dev/nvme3n1
La création d'un disque hot spare global nécessite les deux étapes suivantes :
-
Ajoutez le disque hot spare à l'une des deux unités de stockage (peu importe laquelle) en exécutant ces commandes :
$ sudo mdadm /dev/md0 --add /dev/nvme8n1
$ sudo mdadm --detail --scan | sudo tee -a /etc/mdadm.conf >> /dev/null
-
Modifiez
/etc/mdadm
pour placer les deux unités de stockage dans le même groupe de disques hot spare. Ajoutezspare-group=global
à la fin de la ligne commençant parARRAY
, comme suit :$ sudo vi /etc/mdadm.conf
ARRAY /dev/md0 metadata=1.2 spares=1 name=mdadm.localdomain:0 UUID=43f93ce6:4a19d07b:51762f1b:250e2327 spare-group=global
ARRAY /dev/md1 metadata=1.2 name=mdadm.localdomain:1 UUID=7521e51a:83999f00:99459a19:0c836693 spare-group=global
Surveillance de votre unité de stockage
Il est important que vous soyez averti si un périphérique de l'une de vos unités de stockage échoue. Mdadm possède des outils intégrés qui peuvent être utilisés à des fins de surveillance. Vous pouvez utiliser deux options :
- Définition de l'option
MAILADDR
dans/etc/mdadm.conf
et exécution du moniteurmdadm
en tant que démon. - Exécution d'un script externe lorsque
mdadm
détecte un échec
Définition de l'option MAILADDR
dans /etc/mdadm.conf
et exécution du moniteur mdadm
en tant que démon.
La méthode la plus simple consiste à définir l'option MAILADDR
dans /etc/mdadm.conf
, puis à exécuter le moniteur mdadm en tant que démon, comme suit :
-
La ligne
DEVICE partitions
est requise pour queMAILADDR
puisse fonctionner. Si elle est manquante, vous devez l'ajouter, comme suit :$ sudo vi /etc/mdadm.conf
DEVICE partitions
ARRAY /dev/md0 level=raid1 UUID=1b70e34a:2930b5a6:016we78d:eese14532
MAILADDR <my.name@example.com>
-
Exécutez le moniteur à l'aide de la commande suivante :
$ sudo nohup mdadm –-monitor –-scan –-daemonize &
-
Pour vérifier que le moniteur est exécuté au démarrage, exécutez les commandes suivantes :
$ sudo chmod +x /etc/rc.d/rc.local
$ sudo vi /etc/rc.local
Ajoutez la ligne suivante à la fin de /etc/rc.local :
nohup mdadm –-monitor –-scan –-daemonize &
-
Pour vérifier que le courriel et le moniteur fonctionnent tous les deux, exécutez la commande suivante :
$ sudo mdadm --monitor --scan --test -1
Ces courriels seront probablement marqués comme messages indésirables. L'option
PROGRAM
, décrite plus loin dans cette rubrique, permet l'envoi d'alertes et de messages de façon plus sophistiquée.
Exécution d'un script externe lorsqu'un échec est détecté
Une option plus avancée consiste à créer un script externe qui sera exécuté si le moniteur mdadm
détecte un échec. Vous pouvez intégrer ce type de script à votre solution de surveillance existante. Voici un exemple de ce type de script :
$ sudo vi /etc/mdadm.events
#!/bin/bash
event=$1
device=$2
if [ $event == "Fail" ]
then
<"do something">
else
if [ $event == "FailSpare" ]
then
<"do something else">
else
if [ $event == "DegradedArray" ]
then
<"do something else else">
else
if [ $event == "TestMessage" ]
then
<"do something else else else">
fi
fi
fi
fi
$ sudo chmod +x /etc/mdadm.events
Ensuite, ajoutez l'option PROGRAM
à /etc/mdadm.conf
, comme indiqué dans l'exemple suivant :
-
La ligne
DEVICE partitions
est requise pour queMAILADDR
puisse fonctionner. Si elle est manquante, vous devez l'ajouter, comme suit :$ sudo vi /etc/mdadm.conf
DEVICE partitions
ARRAY /dev/md0 level=raid1 UUID=1b70e34a:2930b5a6:016we78d:eese14532
MAILADDR <my.name@example.com>
PROGRAM /etc/mdadm.events
-
Exécutez le moniteur à l'aide de la commande suivante :
$ sudo nohup mdadm –-monitor –-scan –-daemonize &
-
Pour vérifier que le moniteur est exécuté au démarrage, exécutez les commandes suivantes :
$ sudo chmod +x /etc/rc.d/rc.local
$ sudo vi /etc/rc.local
Ajoutez la ligne suivante à la fin de /etc/rc.local :
nohup mdadm –-monitor –-scan –-daemonize &
-
Pour vérifier que le courriel et le moniteur fonctionnent tous les deux, exécutez la commande suivante :
$ sudo mdadm --monitor --scan --test -1
Ces courriels seront probablement marqués comme messages indésirables. L'option
PROGRAM
, décrite plus loin dans cette rubrique, permet l'envoi d'alertes et de messages de façon plus sophistiquée.
Simulation de l'échec d'un périphérique
Vous pouvez utiliser mdadm
pour provoquer manuellement l'échec d'un périphérique afin de déterminer si votre unité de stockage RAID peut faire face à l'échec, ainsi que pour tester les alertes configurées.
-
Marquez un périphérique de l'unité de stockage comme étant en échec en exécutant la commande suivante :
$ sudo mdadm /dev/md0 --fail /dev/nvme0n1
-
Récupérez le périphérique ou votre unité de stockage risque de ne plus être protégée. Utilisez la commande suivante :
$ sudo mdadm /dev/md0 --add /dev/nvme0n1
L'unité de stockage sera automatiquement reconstruite afin d'utiliser le "nouveau" périphérique. Les performances seront réduites lors de ce processus.
-
Vous pouvez surveiller le statut de la reconstruction en exécutant la commande suivante :
$ sudo mdadm --detail /dev/md0
Procédure à suivre en cas d'échec d'un périphérique NVMe
Les ressources Compute dans le cloud sont conçues pour être temporaires et fongibles. Si un périphérique NVMe échoue alors que l'instance est en service, vous devez démarrer une autre instance avec la même quantité de stockage ou plus, puis copier les données vers la nouvelle instance, en remplaçant l'ancienne instance. Plusieurs outils permettent de copier de grandes quantités de données, le plus populaire étant rsync. Etant donné que la connectivité entre les instances est de 10 Go/s, la copie des données doit être rapide. N'oubliez pas qu'avec un périphérique en échec, votre unité de stockage peut ne plus être protégée. Vous devez donc copier les données de l'instance concernée aussi rapidement que possible.
Utilisation du gestionnaire de volumes logiques Linux
Le gestionnaire de volumes logiques Linux fournit un vaste ensemble de fonctionnalités pour la gestion des volumes. Si vous avez besoin de ces fonctionnalités, il est vivement recommandé d'utiliser mdadm
comme décrit dans les sections précédentes de cette rubrique pour créer les unités de stockage RAID, puis les commandes pvcreate
, vgcreate
et lvcreate
du gestionnaire de volumes logiques pour créer des volumes sur les unités logiques de stockage mdadm
. Vous ne devez pas utiliser le gestionnaire de volumes logiques directement pour vos périphériques NVMe.
Protection contre la perte de l'instance ou du domaine de disponibilité
Une fois vos données protégées contre la perte d'un périphérique NVMe, vous devez les protéger contre la perte d'une instance ou du domaine de disponibilité. Ce type de protection est généralement effectué en répliquant vos données vers un autre domaine de disponibilité ou en les sauvegardant vers un autre emplacement. La méthode que vous choisissez dépend de vos objectifs. Pour plus de détails, reportez-vous aux concepts de récupération après sinistre d'objectif de délai de récupération (RTO) et d'objectif du point de récupération (RPO).
Réplication
La réplication des données d'une instance d'un domaine de disponibilité vers une autre possède le RTO et le RPO les plus faibles, à un coût significativement plus élevé que les sauvegardes. Pour chaque instance d'un domaine de disponibilité, vous devez avoir une autre instance dans un autre domaine de disponibilité.
Pour les charges globales de base de données Oracle, vous devez utiliser la fonctionnalité Oracle Data Guard intégrée pour répliquer vos bases de données. Les domaines de disponibilité Oracle Cloud Infrastructure sont suffisamment proches les uns des autres pour être capables de prendre en charge les réplications synchrones hautes performances. La réplication asynchrone est également une option.
Pour la réplication de blocs à usage général, DRBD est l'option recommandée. Vous pouvez configurer DRBD de sorte à répliquer, de façon synchrone ou asynchrone, chaque écriture d'un domaine de disponibilité vers un autre domaine de disponibilité.
Sauvegardes
Les sauvegardes traditionnelles constituent une autre manière de protéger les données. Tous les produits de sauvegarde commerciaux sont entièrement pris en charge sur Oracle Cloud Infrastructure. Si vous utilisez des sauvegardes, les RTO et RPO sont beaucoup plus élevés que si vous utilisez la réplication, car vous devez recréer les ressources de calcul qui ont échoué, puis restaurer la sauvegarde la plus récente. Les coûts sont significativement plus faibles car il n'est pas nécessaire de gérer une seconde instance. Ne stockez pas vos sauvegardes dans le même domaine de disponibilité que leur instance d'origine.
Protection contre l'altération ou la perte de données à cause d'une erreur de l'application ou de l'utilisateur
La réalisation de clichés ou la création de sauvegardes de façon régulière sont les deux méthodes recommandées pour prévenir l'altération ou la perte de données suite à une erreur de l'application ou de l'utilisateur.
Clichés
Afin de gérer les clichés facilement, vous devez utiliser un système de fichiers prenant en charge les clichés, tel que ZFS, ou utiliser le gestionnaire de volumes logiques pour créer et gérer les clichés. En raison de la façon dont le gestionnaire de volumes logiques a implémenté la copie à l'écriture, les performances peuvent considérablement diminuer lorsqu'un cliché est pris au moyen du gestionnaire de volumes logiques.
Sauvegardes
Tous les produits de sauvegarde commerciaux sont entièrement pris en charge sur Oracle Cloud Infrastructure. Assurez-vous que vos sauvegardes sont stockées dans un domaine de disponibilité différent de celui de l'instance d'origine.