Voici un tuto pour la création d’une réplication en ZFS avec Proxmox 6

Source :

  • https://opensourceforu.com/2019/05/setting-up-proxmox-ve-on-two-servers-for-storage-replication/
  • https://memo-linux.com/proxmox-5-cluster-2-noeuds-avec-un-stockage-replique/ -> Pratique pour la mise en réseau privé
  • https://blog.elao.com/fr/infra/creer-un-cluster-2-nodes-proxmox/ -> Pratique pour l’histoire du quorum
  • https://linux-note.com/proxmox-cluster-a-2-noeuds/ -> Pratique pour la mise en place du 2 noeuds
  • LA SOLUTION : https://wiki.virtit.fr/doku.php/kb:linux:proxmox:cluster_deux_n%C5%93uds_proxmox

Jamais réussi, je suis bloqué a l’étape ci-dessous :

Le serveur SRVPHY1 est planté lorsque j’enlève le cable sur serveur SRVPHY12 en NOQUORUM mm après un pvem expected 1

Nous partons du principe des deux PC suivants :

  • 1 PC : SRVPHY1
    • 1 disque de 240GO
    • 1 disque de 500GO
    • RAM : 16GO
    • 1 carte Réseau
  • 1 PC : SRVPHY12
    • 1 disque de 240GO
    • 1 disque de 500GO
    • RAM : 16GO
    • 1 carte Réseau
    • LAN: 1Gbps Ethernet port

Les deux Proxmox 6 sont installé sur le disque de 240GO chacun

La seule contrainte afin de mettre en place la réplication de stockage, il faut que le système de fichier du stockage local de chaque nœud Proxmox soit en ZFS.

0 ) Info ZFS

Source : https://medium.com/@cq94/zfs-vous-connaissez-vous-devriez-1d2611e7dad6

Pour obtenir une liste équivalente sous Linux avec un file-system classique comme l’habituel ext4, il faudrait faire appel à des briques supplémentaires telles que :

  • lvm (gestion des disques physiques, snapshots),
  • mdadm (redondance),
  • lucks (chiffrement),
  • bcache (caches), etc
  • Amélioration des performances en lecture : ZFS gère son propre cache en RAM pour limiter les accès aux disques, c’est le ARC (Adaptative Replacement Cache)
  • Compression : les fichiers sont compressés a l’aide de l’algorithme lz4 qui fera gagner de l’espace de stockage
  • Réduction des I/O : Grace a la compression
  • Processeur : Attention celui-ci est un peu solicité
  • Intégration : S’intégre trés bien avec Docker, LXC ou Proxmox
  • Monitoring : Pour être informé en cas d’erreur (erreur détectées dans un scrub ou à l’usage, disque physique indisponible ou présentant des problèmes), ZFS possède un démon dédié qui pourra envoyer un email : ZFS Event Daemon ou “zed”.

Pour les petites configs :

  • ZFS sur un seul disque : Ceci permet tout de même de bénéficier des autres fonctionnalités de plus haut niveau de notre liste du début car nous n’avons vu que 2 items: la redondance et les caches !
  • Mémoire NON ECC : ZFS ne nécessite pas plus de mémoire vive ECC que d’autres systèmes de fichiers. Cela dit, il est toujours préférable d’utiliser de la RAM ECC quel que soit le système de fichiers utilisé

1 ) Création du cluster

Étape 1 : La création du cluster maitre

Se rendre sur l’interface

Cliquer sur « Create Cluster »

Étape 2 : Rejoindre le cluster

A droite le coté SRVPHY92 et a gauche le SRVPHY9

Une fois l’action faite, penser a réactualiser la page du SRVPHY92

Le cluster est ensuite créé

Étape 3 : Ajout d’un NFS

Le partage NFS s’ajoute sur tous les membres du cluster

2 ) Création de la réplication ZFS

Dans cette étape nous allons mettre en relation les 2 disques durs secondaires afin de les répliquer

Étape 1 : Formater les disques durs secondaire

Voici les commandes pour formater les disques

Shell

Etape 2 : Créer la partition ZFS sur les disques

Pour créer la partition il faut effectuer l’opréation suivante sur les deux disques

Menu Datacenter -> Stockage -> Ajouter -> ZFS

Étape 3 : Gestion de la RAM/Cache de ZFS Tuning de la RAM

https://dlford.io/memory-tuning-proxmox-zfs/

Le problème : ZFS prend pas mal de RAM

  • Choix 1 : Si argent : il vous suffit d’obtenir plus de mémoire vive
  • Choix 2 : Si vous ne pouvez ou ne voulez pas le faire, les conseils ci-dessous vous aideront à gérer la mémoire dont vous disposez

ssd, utilisez ashift 12

A : Allocation RAM de la VM

Chose a ne pas faire :

  • Ne pas surdimensionner la VM -> Stabilité
  • KSM and memory ballooning -> Permet de surdimensionner mais a pas utiliser

Chose a faire :

  • Laisser suffisamment de RAM pour l’ARC (Adaptive Replacement Cache) ZFS non allouée,
  • Laisser 1 GiB ou plus pour l’hôte Proxmox
  • La taille maximale par défaut de l’ARC est de 50% de la RAM totale installée dans le système.

B : Modification de l’ARC

Outils de check de ARC -> Arc_summary : https://github.com/zfsonlinux/zfs/blob/384328e544b1847236a07df231e1b7b10e4cc6ce/cmd/arc_summary/arc_summary.py

Info

La taille maximale par défaut de l’ARC est de 50% de la RAM totale du système.

ARC (Adaptive Replacement Cache) est une fonction de ZFS qui stocke les données les plus fréquemment consultées dans la RAM, ce qui permet une lecture extrêmement rapide de ces ressources.

Il y a des réponses mitigées quant à la quantité de RAM que vous devriez consacrer à l’ARC, j’ai cependant vu assez souvent des références à :

  • Voici mon calcul idéal : [base of ARC 2GB] + [1 GB par TB d’espace disque ] + [5GB par TB for Dedupe]
  • Pour : 500 Gb : 2Gb + 0,5 + Osef déduplication -> 4GB (par sécurité)

Exemple :

  • Pour 7,5 TiB d’espace disque total -> 8 GiB pour la taille maximale d’ARC
  • Pour 500 Gb de disque -> 4 GiB pour la taille maximale d’ARC
  • Fixer le minimum pour que le maximum prenne effet : 2GB pour minimum ( Au pif)

Calcul :

  • 8 GiB * 1024 = 8192 MiB — 8192 MiB * 1024 = 8388608 KiB — 8388608 KiB * 1024 = 8589934592 Octets
  • 4 Gib * 1024 = 4096 MiB — 4096 * 1024 = 4 194 304‬ KiB — 4 194 304 * 1024 = 4 294 967 296 Octets
  • Pour le minimal : 2 Gib * 1024 = 2048 MiB — 2048 * 1024 = 2 097 152‬ KiB — 4 194 304 * 1024 = 2 147 483 648‬ Octets

Étape 1 : Création du fichier

A faire sur les deux hôtes

Créez le fichier /etc/modprobe.d/zfs.conf, et ajoutez les lignes suivantes.

Remplacez les valeurs numériques par vos calculs ci-dessus, dans notre cas :

Shell

Redémarrer le système

Étape 2 : Le test

Utiliser la commande arcstat : la valeur de la dernière colonne (c) doit être la taille maximale de l’ARC que vous avez définie dans /etc/modprobe.d/zfs.conf (exprimée en GiB)

Si votre système démarre à partir de ZFS, ce fichier ne sera disponible qu’après le démarrage de ZFS puisqu’il est stocké sur un volume ZFS. Vous devrez donc mettre à jour le système de fichiers RAM initial pour prendre en compte les changements avant le montage du volume ZFS racine.

update-initramfs -u

4 – La maintenance

a ) Un hôte tombe

Dans ce cas il faut mettre l’autre hote en quorum a 1

Ok,. Vous pouvez alors mettre les votes attendus à 1, mais vous devez vous assurer que l’autre noeud est en bas (sinon vous allez tomber sur un cerveau divisé…)

Shell

(Facultatif) Étape 3 : KSM Tuning

Fonctionnement : KSM fonctionne en réduisant les pages de mémoire dupliquées à une seule page, de sorte que lorsque plusieurs VM ont la même ressource stockée en mémoire, elle n’est stockée qu’une seule fois dans la RAM.

  • KSM (Kernel Same-page Merging) -> outil pour obtenir un peu plus de votre précieuse mémoire vive
  • activé par défaut dans Proxmox
  • les paramètres par défaut ne sont pas idéaux pour une utilisation sur un système ZFS où l’utilisation de la mémoire vive peut atteindre des sommets la première fois qu’une opération lourde sur le disque a lieu
  • Fonctionne mieux lorsque OS identique sur un noeu
  • La valeur par défaut de KSM_THRES_COEF est 20, ce qui signifie que KSM se déclenchera si moins de 20 % de la mémoire vive totale du système est libre
  • Désactivation : systemctl disable ksmtuned
Autre info

OOM : OOM Killer est un processus Linux qui empêche le système de s’épuiser entièrement en mémoire en tuant un processus (probablement une de vos VM) pour libérer de l’espace en RAM.

j’ai dû faire quelques recherches rapides sur le réglage de la mémoire pour repousser le tristement célèbre tueur OOM (Out Of Memory), et c’est ce que je vais partager avec vous aujourd’hui. Idéalement, j’ajouterais juste assez de RAM pour couvrir toutes mes allocations de VM plus environ 50 à 55 % pour ZFS et Proxmox, mais je ne peux pas justifier cette dépense pour l’instant.

Pourquoi ne pas ajouter de swap :

le OOM Killer peut être tenu à distance en ajoutant de l’espace de swap, mais le swap sur ZFS est instable au moment de la rédaction et bien connu pour provoquer un blocage complet du système dans les scénarios de forte pression de la mémoire. Il ne reste donc que quelques options pour utiliser l’espace de pagination ; vous pouvez ajouter de l’espace de pagination sur un autre disque sans RAID, ce qui n’est pas souhaitable car, en raison du manque de redondance, la perte de ce disque pourrait potentiellement faire planter l’ensemble du système, ou installer une matrice RAID MD sur deux autres disques pour l’espace de pagination.

Tous les ports SATA sont utilisés sur mon système, ce n’est donc pas une option non plus. J’aurais probablement dû réduire la taille du volume ZFS racine lors de l’installation pour faire de la place pour une paire de partitions MD RAID à utiliser comme espace de swap sur les mêmes disques que l’installation, mais avec le recul, c’est 20/20, non ? Donc dans mon cas, je vais juste utiliser un système sans swap, ce qui signifie que le réglage de la mémoire qui devrait probablement être fait même avec le swap est d’autant plus important.