[gull] RAID 1 + LVM (ex: RAID 10)

Frederic Dumas f.dumas at ellis.siteparc.fr
Tue Aug 13 13:31:30 CEST 2019


Merci Yves, merci Felix pour vos réponses.


> De toute façon avec des PV LVM partout, les "pvresize", "pvmove" et
> "dd" permettent de laisser libre court à son imagination.


Dans mon premier mail, j'essayai de tout faire à base de RAID 0 et RAID 
1 "niché" (nested). Un avis argumenté, reçu en parallèle aux vôtres, me 
fait abandonner cette approche et partir sur une configuration RAID 1 
seule, avec LVM en sandwich.

Voici le chemin garantissant l'évolution de capacité future proposée par 
l'admin avec lequel j'ai échangé par ailleurs. Je donne ce détail sur la 
liste, pensant que ça pourra être utile à d'autres dans des scénarios 
proches.



  - 1 - Configuration de départ (1200 Go)

        HDD storage: 2 x  750 Go (sda ; sdb)
        SSD storage: 1 x 1200 Go (sdc)

        RAID 1 + LVM


sda = sda1 (150) + sda2 (600) (RAID)
sdb = sdb1 (150) + sdb2 (600) (RAID)
sdc = sdc1 (600) + sdc1 (600) (RAID)
md0 = sda1 + sdb1 RAID1 (150) (EXT4 - Système)
md1 = sda2 + sdc1 RAID1 (600) (LVM)
md2 = sdb2 + sdc2 RAID1 (600) (LVM)
vg1 = md1 + md2        (1200) (LVM)
lv1 on vg1             (1200) (EXT4 - Data)


L'option --write-mostly est activée sur md1 et md2, pour profiter en 
lecture des temps d'accès et taux de transfert très supérieurs du SSD.




  - 2 - Doublement de capacité (2400 Go)

        HDD storage: 1 x  750 Go (sda)
        HDD storage: 1 x 2000 Go (sdb - remplacé)
        SSD storage: 2 x 1200 Go (sdc ; sdd - ajouté)


sda = sda1 (150) + sda2 (600)               UNCHANGED
sdb = sdb1 (150) + sdb2 (600) + sdb3 (1200) NEW
sdc = sdc1 (600) + sdc2 (600)               UNCHANGED
sdd = sdd1 (1200)                           NEW
md0 = sda1 + sdb1 RAID1 (150)               UNCHANGED
md1 = sda2 + sdc1 RAID1 (600)               UNCHANGED
md2 = sdb2 + sdc2 RAID1 (600)               UNCHANGED
md3 = sdb3 + sdd1 RAID1 (1200)              NEW
add md3 to vg1 to grow capacity to 2400
resize lv1 out of vg1 to grow to 2400


Option --write-mostly activée sur md1, md2 et md3.




  - 3 - Triplement de capacité (3600 Go)

        HDD storage: 2 x 2000 Go (sda - remplacé ; sdb)
        SSD storage: 1 x 1200 Go (sdc)
        HDD storage: 1 x 3000 Go (sdd - remplacé)


sda = sda1 (150) + sda2 (600) + sda3 (1200) NEW
sdb = sdb1 (150) + sdb2 (600) + sdb3 (1200) UNCHANGED
sdc = sdc1 (600) + sdc2 (600)               UNCHANGED
sdd = sdd1 (1200) + sdd2 (1200)             NEW
md0 = sda1 + sdb1 RAID1 (150)               UNCHANGED
md1 = sda2 + sdc1 RAID1 (600)               UNCHANGED
md2 = sdb2 + sdc2 RAID1 (600)               UNCHANGED
md3 = sdb3 + sdd1 RAID1 (1200)              UNCHANGED
md4 = sda3 + sdd2 RAID1 (1200)              NEW
add md4 to vg1 to grow capacity to 3600
resize lv1 out of vg1 to grow to 3600


Dans cette hypothèse, l'optimisation --write-mostly perd sa pertinence, 
car je suis obligé de remplacer un des deux SSD par un HDD de 3000Go, 
question de coût. La baisse du prix des SSD invalidera peut-être cette 
hypothèse plus vite que les besoins de stockage sur cette machine. Pour 
l'instant:

  :  md1 et md2 restent des grappes RAID1 HDD + SSD, sur lesquelles
     l'option --write-mostly peut rester activée;

  :  md3 et md4 redeviennent des grappes RAID1 HDD + HDD classiques




  - 4 - Décuplement de capacité

Aller au-delà impose d'installer des disques de capacité supérieure à 
2000Go. Une table GPT est obligatoire pour définir des partitions 
supérieures à cette taille. La table MBR est incompatible.

Pour permettre néanmoins au BIOS d'amorcer GRUB sur la partition système 
de 150Go, il faut garder au moins un disque compatible MBR, donc de 
capacité 2000Go maximum. On perd cependant la redondance d'un amorçage 
de GRUB possible indifféremment sur l'un ou l'autre disque de la grappe 
RAID1 md0.

La carte mère ne possède pas de firmware UEFI.




  - 5 - option --write-behind


Avez-vous une expérience de l'option --write-behind, qui permet dans une 
grappe RAID de considérer les écritures faites même lorsque seul le SSD 
a rendu la main, mais pas encore le HDD ?

Les caches en écriture ont toujours leur inconvénient. Dans le scénario 
ci-dessus, les SSD possèdent un condensateur leur permettant de finir 
toutes les écritures en cas de perte d'alimentation. Au moins un des 
deux disques de la grappe RAID aura des données valides. Reste à 
resynchroniser après l'incident. Donc a baser la sécurité des données 
sur une intervention humaine. N'est-ce pas aller au-delà des ennuis, 
pour un gain en performance difficile à quantifier ?

Connaissez-vous des sources sur le web quantifiant par des tests les 
performances supplémentaires de --write-behind face à différents type de 
charge ?


Merci pour vos avis.



--
Frédéric Dumas
f.dumas at ellis.siteparc.fr





More information about the gull mailing list