[Tuto/HowTo] [Linux] systeme Raid

Avatar du membre
voxdemonix
Messages : 1237
Enregistré le : lun. févr. 02, 2015 7:28 pm

[Tuto/HowTo] [Linux] systeme Raid

Message par voxdemonix » lun. avr. 25, 2016 10:31 pm

Licence des tutoriaux : _ [WTFPL] _

Type de RAID :
  • JBOD : fusion des disques pour créer une plus grosse partition. Attention, si ce n'est pas du raid linéaire il peut y avoir pertes de donnée en cas de défaillance d'un ou plusieurs disques.
    Espace disque = Disque1 + Disque2 + Disque3 + etc, etc, etc
    RAID0 non-strip: min 2 disques, fusion des disques pour créer une plus grosse partition mais avec répartition des fichiers a 50/50.
    Espace disque = Taille Plus Petit Disque * nombre Disques

    RAID0 strip: min 2 disques, fusion des disques pour créer une plus grosse partition mais avec répartition des données de chaque fichiers à 50/50 sur chaque disque afin d'augmenter les performances en lecture, attention en cas de panne d'un disque les données des autres disques sont aussi perdues. Espace disque = Taille Plus Petit Disque * nombre Disques
    RAID1 : min 2 disques, haute disponibilité, en effet les data sont dupliquées sur au moins un disque et en cas de panne elles sont toujours accessible, divise par deux la quantité maximale de mémoire disponible (taille max disque étant définie par taille max du plus petit disque) utilisation de l'ensemble des disques en lecture pour augmenter la bande passante
    RAID2 : min 2 disques, haute disponibilité, en effet les data sont dupliquées sur au moins un disque et en cas de panne elles sont toujours accessible, divise par deux la quantité maximale de mémoire disponible (taille max disque étant définie par taille max du plus petit disque) utilisation d'un seul disque en lecture (plus économe que raid1)
    RAID3 : min 3 disques, copie les fichiers sur deux disques (taille max définie par le plus petit disque) et utilise le 3ème pour ranger les sommes de contrôles (souvent appelé parité de données)
    RAID4 : min 3 disques, copie les fichiers sur deux disques (taille max définie par le plus petit disque) et utilise le 3ème pour ranger les sommes de contrôles (souvent appelé parité de données), diffère du raid 3 car "la taille des segment peut être variable ce qui implique de devoir recalculer les données de parité liées"
    RAID5 : min 3 disque, augmentation des performances et protection contre la perte d’un seul disque dur
    RAID6 : min 4 disques, protection contre la perte d’un seul disque dur via double redondance des données de parité
    RAID7 : min 4 disques, répartition sur multiple disque de données de parité et multiple disque de données (avec une meilleure souplesse de configuration que RAID4)
    RAID10 (1 + 0) : min 4 disques, taille max = (taille max plus petit disque * nombre disque) / 2, haute disponibilité, utilisation des mécanismes de raid 1 et de raid0



Farm Link :
Modifié en dernier par voxdemonix le sam. août 12, 2017 5:46 pm, modifié 13 fois.
~ Infernalis Creatorem ~
  • Rejoins le côté obscure, on a des cookies !
Donation Bitcoin : 1N8QGrhJGWdZNQNSspm3rSGjtXaXv9Ngat
Donation Dash : XmowiBRku3tsEREp7PhpheY4TgeLLDyKdM

Avatar du membre
voxdemonix
Messages : 1237
Enregistré le : lun. févr. 02, 2015 7:28 pm

Re: [Tuto/HowTo] [Linux] systeme Raid

Message par voxdemonix » jeu. mai 05, 2016 11:09 pm

[Tuto/HowTo] Mise en place d'un système JBOD avec mhddfs sur Raspberry Pi
  • Introduction :
    • JBOD est un mécanisme consistant à créer une partition virtuelle à cheval sur une quantité indéterminée de disque dur. Si des fichiers/dossiers sont déjà présent sur un disque lorsque vous l'ajoutez à la partition virtuelle, les fichiers/dossiers seront automatiquement accessible depuis la dite partition. Si un disque dur de la partition tombe en panne, les datas présent sur les autres disques sont toujours valable. Par contre ça lag un peu.
      La formule pour calculer l'espace est très simple : Capacité Disque 1 + Capacité Disque 2 + Capacité Disque 3 + etc
      À tester :
      • Qu''est-ce qu'il se passe si on autoboot une partition JBOD et qu'on débranche un disque [avant le boot] | [en pleine utilisation] ?
        Réponse : la partition ne se monte pas si disque pas présent au boot.

    Installation :
    Logiciel utilisé : mhddfs
    1. Installez mhddfs :
    2. Montez automatiquement vos disques au démarrage : voir [Tuto/HowTo] Raspberry Pi monter automatique disque dur externe
    3. Créez le point de montage de votre "super partition virtuelle" et attribuez lui les bons droits :
      • Code : Tout sélectionner

        sudo mkdir /media/monNouveauMontage
        
        Si vous oubliez cette étape vous aurez l'erreur "fuse: bad mount point `/media/monNouveauMontage': No such file or directory"
    4. Listez les disques ainsi que leur point de montage respectif :
    5. Créez le montage unique en ligne de commande pour tester :
      • Code : Tout sélectionner

        mhddfs /media/disque1,/media/disque2,/media/disque3 /media/monNouveauMontage -o allow_other
        retirez le -o allow_other si vous voulez restreindre l'accès à la partition virtuelle uniquement à son utilisateur créateur.
        Si vous avez l'erreur suivante : "fusermount: option allow_other only allowed if 'user_allow_other' is set in /etc/fuse.conf" :
        • Accordez à votre utilisateur l'accès au dossier une fois monté
          • Code : Tout sélectionner

            sudo chown monUser:monGroupe -R /media/monNouveauMontage
            sudo chmod 774 -R /media/monNouveauMontage
            Remplacez monUser par l'utilisateur système qui sera propriétaire et remplacez monGroupe par le groupe d'utilisateur qui pourra accéder aux fichiers/dossiers.
            Rappel tout utilisateur est en même temps un groupe.
          Ouvrez le fichier de configuration de fuse :

          Code : Tout sélectionner

          sudo nano /etc/fuse.conf
          et décommentez (enlevez le # devant) user_allow_other. Enfin tapez CTRL+X pour sauvegarder et quitter.
    6. Ajoutez le montage automatique en éditant le fichier /etc/fstab :
      • Code : Tout sélectionner

        sudo nano /etc/fstab
        Et ajoutez la ligne suivante en l'adaptant à vos besoins :
        mhddfs#/media/disque1,/media/disque2,/media/disque3 /media/monNouveauMontage fuse defaults,nofail,allow_other 0 0
      Attention : cette méthode de montage automatique ne fonctionne pas. En effet dans la séquence de boot (démarrage) Fuse essaye de monter la super partition AVANT que les disques ne soient monté. Branchez un écran et observez la séquence de boot pour voir le phénomène ;)
      Solution :Utilisez simplement la commande du point 5 à ajouter dans le fichier /etc/rc.local (juste AVANT exit 0 ) pour monter votre répertoire au démarrage :)
    Instabilité de JBOD avec mhddfs :
    • Si la partition plante certains fichiers peuvent être corrompu
      • Phénomène observé sur le owncloud d'0rion, alors qu'une utilisatrice uploadait deux fichiers (1 déjà réussi, 1 en cours), la partition JBOD a planté (raison inconnue) et les deux fichiers sont devenu inaccessible (complètement introuvable sur les disques dur, même lorsque la partition JBOD fut ré-activée).
      Instabilité de la partition
      • Owncloud annonce une incapacité à accéder a certains fichiers via JBOD en prétextant un "permission denied, résolvez en accordant les bons droits d'accès à owncloud sur la racine", les fichiers étant accessible via simple disque pour les mêmes permissions.
        Le système aussi refuse de modifier certains droits sur la partition JBOD alors qu'elle semble bien monté (testé en y accédant avec Thunar puis en lançant une vidéos avec VLC).
      Impossible de changer les permissions/propriétaires d'un ou plusieurs dossiers/fichiers
      • Ce bug étrange qui renvoi "permission denied" lorsqu'on tente de faire une modification au niveau des droits, et qui peut bloquer complètement owncloud s'est auto résolu après trois redémarrage. Une des solutions mises en place (avant de s'apercevoir que le bug pouvait s'auto résoudre/apparaître par magie) fut de recopier le dossier qui foirait, d'appliquer les modifications sur la copies et de remplacer l'original par la copie.
Modifié en dernier par voxdemonix le sam. août 12, 2017 9:03 pm, modifié 5 fois.
~ Infernalis Creatorem ~
  • Rejoins le côté obscure, on a des cookies !
Donation Bitcoin : 1N8QGrhJGWdZNQNSspm3rSGjtXaXv9Ngat
Donation Dash : XmowiBRku3tsEREp7PhpheY4TgeLLDyKdM

Avatar du membre
voxdemonix
Messages : 1237
Enregistré le : lun. févr. 02, 2015 7:28 pm

Re: [Tuto/HowTo] [Linux] systeme Raid

Message par voxdemonix » mer. mai 11, 2016 1:50 pm

Créer un raid0 strip avec ZFS sur Ubuntu
  • Les fichiers sont découpé (strip) en X part ou X est le nombre de disque, en cas de pertes d'un disque vous perdez l'ensemble des données. La valeur d'un volume virtuel est égal à la taille du plus petit disque multiplié par le nombre de disque.
    Note : d'après ce lien zfs sur raspberry pi semble surconsommer les ressources du raspberry pi et utilisable seulement jusqu'à 5 disques. Par contre il faut compiler le programme soit même car les logiciels nécessaires ( zfs-fuse et zfsutils-linux ) ne sont pas dans les dépôts (repository) de Raspbian.
Farm Link
Les partitions sont fusionnés pour faire un JBOD ensuite les fichiers sont découpés en N disques et réparti sur chaque disque lors de l'écriture. Lors d'une lecture/écriture tout les disques sont utilisés. En cas de perte d'un disque l'ensemble des fichiers sont touché. QUOIQUE, d'après ce lien ce serait non striped par défaut. (les fichiers ne sont pas découpé mais répartis, en cas de perte d'un disque on perd 50% des fichiers et non l'ensemble)
  1. Listez vos disques
  2. Créez votre pool
    • Code : Tout sélectionner

      sudo zpool create -f monPoolPerso /dev/sdb /dev/sdc /dev/sdd
      • monPoolPerso le nom de votre Pool
        /dev/sdb /dev/sdc /dev/sdd vos disques
  3. Vérifiez que votre pool a bien été créé
  4. Indiquez le point de montage
  5. Montez le pool
  6. Accordez les bons propriétaires à votre point de montage
  7. Accordez les bons droits à votre point de montage
Modifié en dernier par voxdemonix le ven. nov. 18, 2016 10:12 pm, modifié 7 fois.
~ Infernalis Creatorem ~
  • Rejoins le côté obscure, on a des cookies !
Donation Bitcoin : 1N8QGrhJGWdZNQNSspm3rSGjtXaXv9Ngat
Donation Dash : XmowiBRku3tsEREp7PhpheY4TgeLLDyKdM

Avatar du membre
voxdemonix
Messages : 1237
Enregistré le : lun. févr. 02, 2015 7:28 pm

[Tuto/HowTo] [Debian] Créer un Raid0 avec glusterfs

Message par voxdemonix » mer. mai 25, 2016 1:16 am

[Tuto/HowTo] [Debian] Créer un Raid0 avec glusterfs
[_lolycat_]
Introduction :
  • Gluster est normalement utilisé pour monter des raid réseaux en utilisant se qu'ils appellent des bricks. Chaque bricks est un point de montage sur un Node où stocker les données d'un volume.
    Si un des disques/bricks tombe en panne, la partition continue de fonctionner avec les disques/bricks restant. Vous ne pouvez PAS concevoir un bricks dans un autre bricks (systèmes de poupées russes).
    Par défaut le système utilisé est stockage distribué: si vous possédez deux disques monté avec glusterfs, si vous uploadez deux fichiers alors chaque disque en accueillera un.
    Vous pouvez à la place spécifier à glusterfs de découper chaque fichiers en xPartie et placer une partie par disque (augmente les perfs en lecture sur tout les fichiers) grâce à l'argument
    stripe xPartie comme vous pouvez aussi spécifier un nombre de copie pour chaque fichiers (raid1) grâce à l'argument replication nombreCopie. Gluster vous offre une forte capacité de mouvement/parametrage.

    Note : glusterfs n'est PAS compatible poupée russe (vous ne pouvez pas créer un volume contenant un autre volume)
Liens utile : Pré-requis :
  1. Installez glusterfs-server et glusterfs-client :
  2. Donnez le droits d'accès (rw) au fichiers log :
  3. Lancez le démon :
  4. Montez vos disques
  5. Créez votre volume virtuel contenant vos disques :
    • Code : Tout sélectionner

      sudo gluster volume create NomVolume transport tcp hostnamePerso:/media/Disque1 hostnamePerso:/media/Disque2 hostnamePerso:/media/Disque3 force
      • NomVolume => le nom du volume dans dans la grille GlusterFS
        hostnamePerso:/media/Disque1 hostnamePerso:/media/Disque2 hostnamePerso:/media/Disque3 => les points de montages de vos disques, indiquez en autant que vous voulez
        Note : si vous voulez faire du raid1 avec une replication indiquez replica 2 entre "transport" et "tcp".
      Si hostnamePerso est différent de l'hostname de votre machine, éditez le fichier /etc/hosts et ajoutez
  6. Par sécurité vous pouvez restreindre l'accès à votre volume uniquement depuis la boucle local
    • Code : Tout sélectionner

      sudo gluster volume set NomVolume auth.allow 127.0.*.1
      NomVolume => le nom du volume dans dans la grille GlusterFS
  7. Démarrez votre volume/répertoire :
    • Code : Tout sélectionner

      sudo gluster volume start NomVolume
      • Note : remplacez start par stop pour arrêter un volume (c'est un umount version gluster)
  8. Créez le point de montage local :
    • Code : Tout sélectionner

      sudo mkdir /media/superPartition
      sudo chown pi:root -R /media/superPartition
      sudo chmod 774 -R /media/superPartition
      
      • /media/superPartition => le point de montage de votre choix
        774 => les droits d'accès de votre choix. L'utilisateur qui monte doit y avoir accès. (infos)
Montage en ligne de commande pour le test :
Monter le répertoire au démarrage/boot via script fait maison:
  1. Ouvrez votre éditeur de texte en créant votre script /home/$USER/scripts/mountGlusterPartition.sh :
    • Code : Tout sélectionner

      nano /opt/scripts/mountGlusterPartition.sh
      • $USER => votre user
      ( CTRL + X => Save&Quit )
  2. Ajoutez dedans les lignes après les avoir adapté à votre config :
    • Code : Tout sélectionner

      #!/bin/bash
      sleep 10 #req if system is on SSD
      sudo gluster volume start NomVolume
      sudo mount -t glusterfs 127.0.0.1:/NomVolume /media/superPartition
  3. Rendez votre script exécutable :
  4. Ajoutez au fichier /etc/rc.local juste avant exit 0 l'appel de votre script afin de la lancer votre script au démarrage. Pour se faire éditez /etc/rc.local
    [NE FONCTIONNE PAS] Monter le répertoire au démarrage/boot via /etc/fstab :
    1. Ouvrez votre fichier /etc/fstab en root :
    2. Ajoutez dedans cette ligne après l'avoir adaptez à votre config :
      • Code : Tout sélectionner

        127.0.0.1:/NomVolume /media/superPartition glusterfs defaults,_netdev,nofail,allow_other 0 0
        • 127.0.0.1 =>votre boucle locale
          :/NomVolume => le nom du volume dans dans la grille GlusterFS
          /media/superPartition => mon point de montage local
          _netdev => attend que le réseau soit prêt pour tenter le montage
          nofail => empêche le boot de crasher si le montage échoue
          Infos : Gluster 3.2: Automatically Mounting Volumes
    Questions :
    • Quid de la consommation ressources ?
      • Réponse : Testé sur un quadcore i5-2400 @ 3.1Ghz, en écriture on squat vers les 30Mo/s (le même fichier en upload direct sur le disque monte a +100Mo/s) pour un gros ficher avec une consommation de plus de 40% des processeurs (en multithread) soit +-28% pour glusterfs et +-14% pour glusterfsd. Pour la suppression de fichiers glusterfsd consomme entre 1% et 5%.
      Peut-on utiliser localhost ou 127.0.0.1 lors de la création d'un volume virtuel?
      • Réponse : Non, vous aurez une erreur du type "Please provide a valid hostname/ip other than localhost, 127.0.0.1 or loopback address (0.0.0.0 to 0.255.255.255).". Vous devez passer par un nom de domaine et modifier votre fichier host comme spécifié.
      Comment régler l'erreur "WARNING: getfattr not found, certain checks will be skipped..." ? Gluster accepte de monter la partition manuellement mais la commande ne fonctionne pas via le script maison au boot, pourquoi ?
      • Réponse : Avez vous bien ajoutez le sleep 10 juste avant la commande de montage? Si votre système est en SSD, il est probable que votre OS soit démarré (y compris gluster) AVANT d'avoir fini de monter les disques mécanique. La pause avant le montage est OBLIGATOIRE à partir du moment où votre disque système est plus rapide que vos disques complémentaires.
~ Infernalis Creatorem ~
  • Rejoins le côté obscure, on a des cookies !
Donation Bitcoin : 1N8QGrhJGWdZNQNSspm3rSGjtXaXv9Ngat
Donation Dash : XmowiBRku3tsEREp7PhpheY4TgeLLDyKdM

Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 0 invité