Raid mdadm + drdb : quelle solution choisir?

Bonjour,

Soit 2 hyperviseurs :

hv1 => 2 disques physiques de 4 To (en raid1)
hv2 => 6 disques physiques : 2 nvme de 300 Go (en raid1) et 4 disques de 10 To (en raid ?)

Que du raid MDADM possible.

J’ai entre mes 2 hyperviseurs une liaison privée via le vrack OVH, j’ai donc une interface 100 Mb/s entre ces 2 machines, en plus des interfaces 1Gb/s avec les ip publiques.

Je souhaite 2 choses :

  • sur HV2, pour le raid à 4 disques, je n’arrive pas à me décider entre raid 1, raid 6, raid 10 ou raid 50. Même en m’appuyant sur cette doc. Je veux donc savoir quel raid je pourrais mettre en place ici, sachant que ce raid va me servir pour stocker la data de machines virtuelles. Sur le premier raid1, j’ai l’OS et l’OS de mes VM, mais sur ce raid, je mettrai les images qcow2 sur lesquelles il y aura de la data (par exemple nextloud ira taper sur une partition qui sera rangée là).
    Quel raid me conseilleriez-vous sachant que je ne peux pas me permettre de perdre mes données.
  • Je veux avoir une partition DRDB entre mes 2 hyperviseurs, mais du coup, qui sera, sur hv2, très certainement présente sur les 4 disques.
    Du coup, je présente quoi à DRDB pour HV2 ?
    4 partitions de 500 gb (pour mes 4 disques) ou alors je présente un raid1 mdadm ?
    ==> en fait, est-ce qu’il est d’usage de monter un drdb sur une partition qui est en réalité une grappe raid mdadm ?
    Ca me parait être une bonne idée comme ça, mais un peu overkill.

merci !

Bonjour,

je pense que je ferais un RAID 1 pour l’OS de l’hyperviseur, et du raid 10 pour la partie accueillant les VMS. ans dans le cas du hv2, les nvme en raid 1 et le reste en raid 10, mais du coup l’espace utile est faible au regard du volume additionné des disques mais c’est ce qui est le plus sur.
mais encore faut il que le contrôleur le permette.

Sachant que :
1 disque sans raid:
lecture x1, écriture x1

raid0 2 disques:
lecture x2, écriture x2

raid1 2 disques:
lecture x2, écriture x1

raid0 4 disques:
lecture x4, écriture x4

raid1 4 disques:
lecture x4, écriture x1

raid10 forcement 4 disques:
lecture x4, écriture x2

Tout ça bien sur en fonction du controleur, ce qui n’a pas l’air d’être le cas au regard de ce que tu indique.
sans carte controleur tu ne pourras vraiment bénéficiers de la performance d’un raid vis à vis d’un autre, uniquement de la sécurité.
Quand au DRDB, tout va dépendre de ce que tu en attends car la contrainte c’est la liaison entre les deux hyperviseurs.
La partition en elle meme n’est vue que comme telle, peu importante qu’elle soit sur un raid ou pas.

ce dont je suis certain, c’est de ne pas mettre l’OS de l’hyperviseur sur le même emplacement que lesOs des VMs. car sinon les perfs de ton OS hyperviseurs sera impacté par celles cumulées de tes VMs.

@jhfra veut du RAID mdadm. En quoi le contrôleur intervient-il ?

Que signifie xN ? La vitesse de lecture séquentielle du RAID 1 n’est pas multipliée, il faut du striping pour cela (RAID 10 avec le layout qui va bien).

Non, mdadm peut faire du RAID 10 avec deux disques.

Pourquoi ?

parce que sinon on ne s’emmerderait pas à en acheter une au prix où c’est?

Pour le raid 6 vs raid 10, voici de la lecture intéressante, à condition de parler la langue de Shakespear .

Tu bottes en touche. Il peut y avoir d’autres raisons que la performance.

sauf que je parlais spécifiquement de la performance tel que cité dans ta citation

Tu t’enfonces et deviens confus.

Vos arguments à chacun sont intéressants et m’ont aidé à faire un choix. Pour du raid mdadm (je n’ai pas le choix, OVH ne fournit ni vrai raid, ni fake raid), je partirai sur un RAID 10, avec mes 4 disques.

J’ai une tolérance de panne de 2 disques (du moins, si les disques qui pètent ne font pas parti de la même « sous grappe »). Ca me semble plus secure que du RAID5, moins gourmand qu’un RAID1.

Il faut encore que je contrôle les numéros de série, histoire d’être sûre que les disques n’iront pas péter au même moment, je ne sais pas si OVH prends cette initiative de mélanger les séries.

Merci à vous deux pour vos retours.

Les bios/uefi gèrent très bien les raid (si je ne m’abuse)

Donc tu n’as pas une tolérance de panne de 2 disques mais plutôt 1,5. Si tu veux vraiment une tolérance de panne de 2 disques, à capacité utile égale il faut utiliser du RAID 6.

c’est avec deux blocks parité c’est ca?

Une dernière question, si je veux, aussi avec cette grappe, mettre un DRDB, je dois donc sacrifier une partie de ma grappe pour ça. Donc pour mes 4 disques de 10To, j’aurais à la fois sdX1 (de 10T) qui sera utilisé pour le MDADM et sdX2 pour un autre MDADM que je présenterai, lui, à DRDB pour cette patte.
Est-ce que ça peut poser un éventuel souci de faire comme ça ? En dehors du fait qu’il faille bien penser, en cas de défaillance de disque, à sortir le disque des 2 grappes RAID

Créer plusieurs ensembles RAID sur un jeu de disques n’est pas pratique ni nécessaire s’ils sont de même type (ça l’est en revanche si on veut un RAID 1 et un RAID 5 par exemple). Il y a au moins deux solutions pour découper un ensemble RAID :

  • Partitionner l’ensemble RAID comme un disque classique. L’installateur Debian ne le permet pas, mais si ce n’est pas pour le système on peut le faire après l’installation (voir pendant avec fdisk ou parted disponibles en option dans l’installateur).
  • Utiliser l’ensemble RAID avec LVM et créer des volumes logiques. L’installateur le supporte et c’est la solution la plus pratique en cas de besoin de redimensionnement.

Pour la première solution, tu me proposes donc de prendre mes 4 disques, faire un RAID de tout ça, puis, de créer par dessus le RAID 2 partitions, une avec mes datas normales, et une autre qui me servira pour mon DRDB ?
J’ai bien compris ?

Donc j’ai ceci :

Disk /dev/sdc: 10,9 TiB, 12000138625024 bytes, 23437770752 sectors
Disk model: HGST HUH721212AL
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Disklabel type: gpt
Disk identifier: 8C7FC6A0-2691-4AC2-AC5E-5846A6F88F1C


Disk /dev/sde: 10,9 TiB, 12000138625024 bytes, 23437770752 sectors
Disk model: HGST HUH721212AL
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Disklabel type: gpt
Disk identifier: 8C7FC6A0-2691-4AC2-AC5E-5846A6F88F1C


Disk /dev/sdd: 10,9 TiB, 12000138625024 bytes, 23437770752 sectors
Disk model: HGST HUH721212AL
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Disklabel type: gpt
Disk identifier: 8C7FC6A0-2691-4AC2-AC5E-5846A6F88F1C


Disk /dev/sdf: 10,9 TiB, 12000138625024 bytes, 23437770752 sectors
Disk model: HGST HUH721212AL
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Disklabel type: gpt
Disk identifier: 422777F5-A00D-44D5-AB32-AC9478902D25

Faire ça :

mdadm --create --verbose /dev/md3 --level=10 --raid-devices=4 --spare-devices=0 /dev/sde /dev/sdf /dev/sdc /dev/sdd

puis faire une partition sur md3, donc md31 qui me servirait de volume de stockage 10To, et une autre md32, que je présenterai à mon DRDB ?

Ai-je bien compris ? Si oui, cette solution me va très bien, car je n’ai qu’un RAID à gérer et c’est top.

C’est cela, à ceci près que les partitions s’appelleront /dev/md3p1 et /dev/md3p2.
Avec les inconvénients habituels des partitions en cas de besoin de redimensionnement, donc il vaut mieux prévoir large.

Remarque : les disques ont une table de partition (format GPT), cela peut poser des problèmes avec l’utilisation d’un disque entier comme membre RAID. Il est préférable de soit :

  • créer une partition de type RAID (occupant tout le disque) /dev/sdX1 et l’utiliser comme membre (recommandé car plus « visuel »)
  • ou supprimer la table de partition, par exemple avec wipefs et utiliser le disque entier /dev/sdX comme membre.

PS : tu ne parles pas plutôt de DRBD ?

Oui, il s’agit bien de DRBD.

Concernant ta remarque, je n’arrive pas à voir où tu veux en venir.

En partant de zéro, j’ai mes 4 disques, vierges, juste avec une table GPT.

Je pensais prendre l’intégralité des disques et faire mon RAID unique dessus (donc sur les disques, pas sur des partitions des disques).

Tu me proposes ici, au lieu de faire mon RAID sur sdc, sdd, sde, sdf, de créer d’abord sur chaque disque une partition qui prend à chaque fois tout le disque, puis de faire le RAID sur sdc1, sdd1, sde1 et sdf1 ?
Ou alors de faire totalement l’inverse et virer la table GPT et travailler directement sur le disque pour le RAID ? (ce qui serait du coup plus simple) ?

Le problème est que la table de partition GPT et le superbloc RAID se chevauchent et utilisent les mêmes secteurs. L’écriture du superbloc dans sdX va donc corrompre la table de partition GPT, et une « réparation » de la table de partition GPT va corrompre le superbloc RAID.

Tu as le choix entre mes deux propositions, elles sont techniquement valides toutes les deux. Je recommande d’utiliser des partitions car je considère que c’est plus sûr (pas de risque de chevauchement) et plus visible (avec fdisk par exemple), mais ce n’est pas une obligation.

Ok, je comprends mieux la problématique et je crois même que dans mon ancien job, c’est ce qui était mis en place (disque => partition => raid sur partition), je ne comprenais à l’époque pas la raison de ce choix.

En définitive, j’ai donc ceci (en affichant aussi md2, qui est le raid1 des 2 disques nvme), si j’ai bien compris tes explications :

Disk /dev/sdb: 223,6 GiB, 240057409536 bytes, 468862128 sectors
Disk model: INTEL SSDSC2BB24
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Disklabel type: gpt
Disk identifier: 708F3038-B496-482A-AF40-7316C2BDF2F0

Device         Start       End   Sectors   Size Type
/dev/sdb1         34   1046527   1046494   511M EFI System
/dev/sdb2    1046528 467809455 466762928 222,6G Linux RAID
/dev/sdb3  467809456 468858031   1048576   512M Linux filesystem

Partition 1 does not start on physical sector boundary.


Disk /dev/sda: 223,6 GiB, 240057409536 bytes, 468862128 sectors
Disk model: INTEL SSDSC2BB24
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Disklabel type: gpt
Disk identifier: 60C15099-E237-4AFF-9204-0674F4C4F3D1

Device         Start       End   Sectors   Size Type
/dev/sda1         34   1046527   1046494   511M EFI System
/dev/sda2    1046528 467809455 466762928 222,6G Linux RAID
/dev/sda3  467809456 468858031   1048576   512M Linux filesystem
/dev/sda4  468858032 468862094      4063     2M Linux filesystem

Partition 1 does not start on physical sector boundary.


Disk /dev/sdc: 10,9 TiB, 12000138625024 bytes, 23437770752 sectors
Disk model: HGST HUH721212AL
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Disklabel type: gpt
Disk identifier: 8C7FC6A0-2691-4AC2-AC5E-5846A6F88F1C

Device     Start         End     Sectors  Size Type
/dev/sdc1   2048 23437770718 23437768671 10,9T Linux filesystem


Disk /dev/sdf: 10,9 TiB, 12000138625024 bytes, 23437770752 sectors
Disk model: HGST HUH721212AL
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Disklabel type: gpt
Disk identifier: 422777F5-A00D-44D5-AB32-AC9478902D25

Device     Start         End     Sectors  Size Type
/dev/sdf1   2048 23437770718 23437768671 10,9T Linux filesystem


Disk /dev/sdd: 10,9 TiB, 12000138625024 bytes, 23437770752 sectors
Disk model: HGST HUH721212AL
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Disklabel type: gpt
Disk identifier: 8C7FC6A0-2691-4AC2-AC5E-5846A6F88F1C

Device     Start         End     Sectors  Size Type
/dev/sdd1   2048 23437770718 23437768671 10,9T Linux filesystem


Disk /dev/sde: 10,9 TiB, 12000138625024 bytes, 23437770752 sectors
Disk model: HGST HUH721212AL
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Disklabel type: gpt
Disk identifier: 8C7FC6A0-2691-4AC2-AC5E-5846A6F88F1C

Device     Start         End     Sectors  Size Type
/dev/sde1   2048 23437770718 23437768671 10,9T Linux filesystem


Disk /dev/md2: 222,5 GiB, 238848376832 bytes, 466500736 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes


Disk /dev/md3: 21,8 TiB, 24000003571712 bytes, 46875006976 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 524288 bytes / 1048576 bytes
Disklabel type: gpt
Disk identifier: D7B773A2-F3DA-44AC-97F4-B5B5E9BD7E49

Device        Start         End     Sectors  Size Type
/dev/md3p1     2048    20973567    20971520   10G Linux filesystem
/dev/md3p2 20973568 46875006942 46854033375 21,8T Linux filesystem

Si j’ai bien compris ce que tu m’as expliqué, ça devrait être ça, est-ce que ça te semble bon/logique ? (je me planté dans la taille de ma première partition md3p1, je corrigerai mais j’affiche là pour le principe)

/edit: je crois que je me suis gouré, j’ai créé une ext4 sur mes sdx, au lieu de créé du raid comme tu me l’as dis, ou alors je n’ai pas compris. Je regarde ce que me dit gdisk, mais ça devrait être du fd00 au lieu de 8300 sur mes /dev/sdx1

[pub gratuite]
Avec LVM, tu ne te préoccuperais pas de ça. Tu pourrais créer un volume logique de 10 Go et un de 10 To pour commencer et laisser le reste de l’espace libre. Si l’un des deux venait à être trop petit, il suffirait de l’agrandir à chaud le moment venu.
[/pub gratuite]

Si tu veux parler de l’identifiant de type de partition « Linux filesystem » ou « Linux RAID », il est préférable que les partitions RAID aient le type « Linux RAID ». C’est purement cosmétique, mais là encore cela améliore la visibilité. Il suffit de le changer avec fdisk ou équivalent.

A quoi servent les partitions sd[ab]3 et sda4 ?

Pour sd[ab]3 et sda4 , je serais bien incapable de te répondre. C’est venu avec le template OVH, j’aimerais bien mettre ça d’équerre aussi, je pensais virer ces partitions, dégager sd[ab]2 et la recréer avec la taille max en m’appuyant sur le calcul automatique de fdisk. Tu crois que c’est faisable sans trop de casse, avec un petit rsize2fs derrière et un grow du raid ?

Question bonus : je vais faire un raid mdadm + drbd sur un autre hv, les 2 seront reliés par le vrack OVH (pensée émue en ce triste jour), mais sur une liaison 100Mb/s.
Est-ce pour y mettre des données ne nécessitant pas des accès hypers rapides, ça ira ? Alors, évidemment, tu ne peux pas savoir comme ça, mais est-ce que d’office c’est choquant de mettre ça en place et de sure je vais dans le mur ou ça peut le faire si je ne sollicite pas non plus en permanence les I/O ?
Je voudrais mettre mes qcow2 de certaines VM, comme mon serveur de mail ainsi que 2 ou 3 sites web. De cette façon, je peux facilement basculer d’un hyperviseur à l’autre en cas de pépin.