Installer Calculate Linux Server Scratch en RAID1 logiciel



Introduction



Le RAID1 n'est ni plus ni moins qu'un "mirroring". C'est deux disques ou plus qui ont les mêmes données en miroir.
La perte d'un disque est possible (panne) et l'espace maximal utilisable est celui du plus petit disque.
Il existe des contrôleurs RAID matériels qui coutent cher.
J'illustre ici la solution "du pauvre" qui consiste à installer Calculate Linux sur une solution logicielle de RAID (mdadm)


La préparation



Première étape, s'assurer que deux disques durs sont présents dans la machine de destination.
Dans mon cas, il s'agit d'un serveur DELL avec deux disques de 160Go.

J'ai récupéré la version CD de CSS ici : http://www.calculate-linux.org/main/en/download

Je démarre sur le CD et je suis sur la console, prêt à installer.


Préparation des disques



Dans un premier temps, je charge les modules raid1 et dm-raid :

Code BASH :
modprobe raid1
modprobe dm-raid


Je partitionne le premier disque avec cfdisk :

Code BASH :
cfdisk /dev/sda


Je créé une partition de taille maximum, de type fd (Linux raid auto-détecté)

Je m'assure de garder un peu de place avant la partition, car le GRUB est un peu plus gros car il embarque les modules RAID et LVM.

Je copie ensuite la table de partition de sda sur sdb (si les disques sont identiques) :

Code BASH :
 sfdisk -d /dev/sda | sfdisk /dev/sdb


Si les disques ne sont pas de la même taille, laisser un peu de marge à la fin de disque aussi, ou commencer par le disque qui est plus petit à quelques octets près.

Vérifier les partitions avec la commande :

Code BASH :
fdisk -l


Caché:
Code TEXT :
Disk /dev/sda: 149.1 GiB, 160041885696 bytes, 312581808 sectors
Unités : secteur de 1 × 512 = 512 octets                                                                                                                     
Taille de secteur (logique / physique) : 512 octets / 512 octets
taille d'E/S (minimale / optimale) : 512 octets / 512 octets
Type d'étiquette de disque : dos
Identifiant de disque : 0x4c12be3b
 
Périphérique Amorçage Début       Fin     Blocs  Id Système
/dev/sda1              2048 312500000 156248976+ fd Linux raid autodetect
 
 
Disk /dev/sdb: 149.1 GiB, 160041885696 bytes, 312581808 sectors
Unités : secteur de 1 × 512 = 512 octets
Taille de secteur (logique / physique) : 512 octets / 512 octets
taille d'E/S (minimale / optimale) : 512 octets / 512 octets
Type d'étiquette de disque : dos
Identifiant de disque : 0x3c4f3c4e
 
Périphérique Amorçage Début       Fin     Blocs  Id Système
/dev/sdb1              2048 312500000 156248976+ fd Linux raid autodetect
 
 



Mise en oeuvre du RAID1 logiciel avec mdadm



On créé dans un premier temps le périphérique md0 :

Code BASH :
mknod /dev/md0 b 9 0


Puis on créé notre RAID1 avec la commande mdadm :

Code BASH :
mdadm --create /dev/md0 --level=1 --raid-devices=2 --metadata=0.90 /dev/sda1 /dev/sdb1


La console nous confirme que ça fonctionne : mdadm: array /dev/md0 started.

On peut revérifier avec fdisk :

Code BASH :
fdisk -l


Caché:
Code TEXT :
Disk /dev/md0: 149 GiB, 159998869504 bytes, 312497792 sectors
Unités : secteur de 1 × 512 = 512 octets
Taille de secteur (logique / physique) : 512 octets / 512 octets
taille d'E/S (minimale / optimale) : 512 octets / 512 octets
Type d'étiquette de disque : dos
Identifiant de disque : 0x4d544f4f
 


Maintenant, on attend que mdadm synchronise les deux disques. Pour voir la progression :

Code BASH :
cat /proc/mdstat


Une vue de ce type s'affiche :
Code TEXT :
Personalities : [raid1] [raid10] [raid6] [raid5] [raid4] 
md0 : active raid1 sdb1[1] sda1[0]
      156248896 blocks [2/2] [UU]
      [==========>..........]  resync = 53.2% (83150400/156248896) finish=14.6min speed=82875K/sec
      bitmap: 2/2 pages [8KB], 65536KB chunk
 
unused devices: <none>
 


Il faut attendre que la barre soit à 100%.

Plutôt que de taper la commande
Code BASH :
cat /proc/mdstat

de manière régulière, on peut utiliser la commande watch qui va rafraichir le résultat toutes les 2 secondes :
Code BASH :
watch cat /proc/mdstat


Une fois la synchronisation terminée, une vue similaire à celle-ci s'affiche :

Code TEXT :
Personalities : [raid1] [raid10] [raid6] [raid5] [raid4]
md0 : active raid1 sdb1[1] sda1[0]
      156248896 blocks [2/2] [UU]
      bitmap: 0/2 pages [0KB], 65536KB chunk
 
unused devices: <none>


Le RAID1 est donc prêt à être utilisé.


Création des systèmes de fichiers sur le RAID1



Option LVM




On créé notre "Physical Volume" (PV) sur /dev/md0 :

Code BASH :
pvcreate /dev/md0 


La console confirme le bon déroulement de la commande : Physical volume "/dev/md0" successfully created

Les curieux peuvent jeter un œil sur le pv précédemment créé :

Caché:
Code BASH :
pvdisplay /dev/md0
 
  "/dev/md0" is a new physical volume of "74.41 GiB"
   - - - NEW Physical volume - - -
  PV Name               /dev/md0
  VG Name               
  PV Size               74.41 GiB
  Allocatable           NO
  PE Size               0   
  Total PE              0
  Free PE               0
  Allocated PE          0
  PV UUID               tFfeW2-mX5d-91mB-SqPz-GspF-tXeM-dN0h8m
 


On créé ensuite le "Volum Group" (VG) sur le PV précédent. Ici, je le nomme systemvg :

Code BASH :
vgcreate systemvg /dev/md0 


La console confirme le bon déroulement de la commande : Volume group "systemvg" successfully created

Les curieux peuvent jeter un œil sur le vg précédemment créé :

Caché:
Code BASH :
vgdisplay
   - - - Volume group - - -
  VG Name               system
  System ID             
  Format                lvm2
  Metadata Areas        1
  Metadata Sequence No  1
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                0
  Open LV               0
  Max PV                0
  Cur PV                1
  Act PV                1
  VG Size               74.41 GiB
  PE Size               4.00 MiB
  Total PE              19049
  Alloc PE / Size       0 / 0   
  Free  PE / Size       19049 / 74.41 GiB
  VG UUID               FA1w2o-JqJa-G1Aa-Kdoq-rolA-9WkI-GR4WoF
 


Et ensuite, on créé nos "Logical Volumes" (LV) dans le VG précédent :

Code BASH :
lvcreate -n rootlv -L 30G systemvg
 
lvcreate -n swaplv -L 1G systemvg
 
lvcreate -n homelv -L 40G systemvg


Faites à votre guise ;)

Les curieux peuvent encore voir leurs LV via la commande suivante :

Code BASH :
lvdisplay systemvg


Caché:
Code BASH :
  - - - Logical volume - - -
  LV Path                /dev/systemvg/rootlv
  LV Name                rootlv
  VG Name                systemvg
  LV UUID                6zgg13-rM45-xQRo-uiEQ-duja-0aKt-kSpkQl
  LV Write Access        read/write
  LV Creation host, time calculate, 2015-01-14 17:09:15 +0100
  LV Status              available
  # open                 0
  LV Size                30.00 GiB
  Current LE             7680
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     256
  Block device           254:0
 
- - - Logical volume - - -
  LV Path                /dev/systemvg/swaplv
  LV Name                swaplv
  VG Name                systemvg
  LV UUID                mVyzCQ-id9D-x2Hd-3DWv-vMcz-fAUd-Y4cWdD
  LV Write Access        read/write
  LV Creation host, time calculate, 2015-01-14 17:09:26 +0100
  LV Status              available
  # open                 0
  LV Size                1.00 GiB
  Current LE             256
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     256
  Block device           254:1
 
- - - Logical volume - - -
  LV Path                /dev/systemvg/homelv
  LV Name                homelv
  VG Name                systemvg
  LV UUID                QIGXo2-SuoA-txX8-qJSK-Yxl5-yUqV-P7fNWY
  LV Write Access        read/write
  LV Creation host, time calculate, 2015-01-14 17:11:01 +0100
  LV Status              available
  # open                 0
  LV Size                40.00 GiB
  Current LE             10240
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     256
  Block device           254:2


Et on créé enfin les systèmes de fichiers sur ses LV :

Code BASH :
mkfs.ext4 /dev/systemvg/rootlv 
 
mkfs.ext4 /dev/systemvg/homelv 
 
mkswap /dev/systemvg/swaplv 


Adaptez avec vos précédents LV créés ;)


Option partitions classiques



On partitione md0 comme un disque classique :

Code BASH :
cfdisk /dev/md0


Si un message indique une partition non valide, on peut initialiser tout md0 comme un volume ext4 puis relancer la création des partitions :
Code BASH :
mkfs.ext4 /dev/md0
cfdisk /dev/md0


A la fin, md0 ressemble à ceci :

Code TEXT :
isk /dev/md0: 149 GiB, 159998869504 bytes, 312497792 sectors
Unités : secteur de 1 × 512 = 512 octets
Taille de secteur (logique / physique) : 512 octets / 512 octets
taille d'E/S (minimale / optimale) : 512 octets / 512 octets
Type d'étiquette de disque : dos
Identifiant de disque : 0x00000000
 
Périphérique Amorçage    Début       Fin     Blocs  Id Système
/dev/md0p1   *                4  58593751  29296874  83 Linux
/dev/md0p2             58593752  66406255   3906252  82 Linux swap / Solaris
/dev/md0p3             66406256 312497791 123045768  83 Linux
 



Lancement de l'installation



Et bien, maintenant que les disques sont prêts on lance l'installation avec la commande cl-install :

En LVM :
Code BASH :
 cl-install -d /dev/systemvg/rootlv -d /dev/systemvg/swaplv:swap -d /dev/systemvg/homelv:/home --mbr=/dev/sda,/dev/sdb


En partitions classiques :
Code BASH :
 cl-install -d /dev/md0p1 -d /dev/md0p2:swap -d /dev/md0p3:/home --mbr=/dev/sda,/dev/sdb



Encore une fois de plus, adaptez avec le partitionnement choisi.

Le récapitulatif montre bien ce qui va s'installer :
Caché:
Code TEXT :
cl-install -d /dev/md0p1 -d /dev/md0p2:swap -d /dev/md0p3:/home --mbr=/dev/sda,/dev/sdb -u adrien
Le mot de passe de l'utilisateur root est absent
Mot de passe :
Réessayez : 
Le mot de passe de l'utilisateur adrien est absent
Mot de passe :
Réessayez : 
 
Langue et locale
 * Langue : Français
 * Fuseau horaire : Europe/Brussels (+01:00)
Distribution
 * Image d'installation : Calculate Scratch Server 14.12.1 x86_64 20141230
Organiser l'espace disque
 * Partitions : Utiliser les partitions existantes
Point de montage
 * Mise en page : 
+--------------------+----------------+-------------------+--------+------+
|Disque ou répertoire|Point de montage|Système de fichiers|Formater|Taille|
+--------------------+----------------+-------------------+--------+------+
|/dev/md0p1          |       /        |       ext4        |  oui   |27.9G |
|/dev/md0p2          |      swap      |       swap        |  oui   |3.7G  |
|/dev/md0p3          |     /home      |       ext4        |  oui   |117.3G|
+--------------------+----------------+-------------------+--------+------+
 * Chargeur d'amorçage : /dev/sda (ATA WDC WD1600AAJS-0),/dev/sdb (ATA WDC WD1600AAJS-0)
 * Amorçage UEFI : non
 * Utiliser UUID : oui
 * Type d'installation : Disque dur
 * Ordonnanceur d'E/S : CFQ
Paramètres réseau
 * Gestionnaire de réseau : OpenRC
 * Adresses : 
+---------+----------+-------------+------------------+-----------------+
|Interface|Adresse IP|   Masque    |       Nom        |MAC              |
+---------+----------+-------------+------------------+-----------------+
|enp2s0   |   DHCP   |255.255.255.0|Broadcom NetXtreme|00:19:B9:10:24:19|
+---------+----------+-------------+------------------+-----------------+
 * Nom d'hôte : calculate.local
 * Serveur NTP : ntp0.zenon.net
 * Serveur de noms de domaine : Récupérer via DHCP
 * Domaines recherchés : Récupérer via DHCP
Utilisateurs
 * On transfère les utilisateurs : 
+------------+----------------------------------------------+
|Utilisateurs|Groupes                                       |
+------------+----------------------------------------------+
|adrien      |wheel,uucp,users,cdrw,video,lp,cdrom,audio,usb|
+------------+----------------------------------------------+
 * Auto-identification : Non utilisé
 * Chiffrer les profils utilisateurs : non
Graphisme
 * Pilote vidéo : Détection automatique par le serveur X.Org
 * Résolution du framebuffer : 1280x1024
 * Terminal Grub : gfxterm
Mise à jour
 * Vérifier les mises à jour automatiquement : oui
 * Intervalle de vérification de mises à jour : toutes les douze heures
 * Supprimer les archives logicielles obsolètes : non
 * Actualiser les autres overlays : non
 
Lancer le processus ? (Yes/No): yes
 


On redémarre.

Et voila, Calculate est installée sur un RAID1 logiciel :magic:


Réinstaller un nouveau disque en cas de défaillance



Il peut arriver en effet qu'un disque vienne à défaillir mais la solution mise en place précédemment ne fera pas "planter" la machine.

Imaginons qu'il s'agisse de /dev/sda.

On met en défaut le disque dur sda :
Code BASH :
mdadm --manage /dev/md0 --set-faulty /dev/sda1


Puis on le retire du raid :
Code BASH :
mdadm --manage /dev/md0 --remove /dev/sda


On met le nouveau disque, de même taille au minimum (à chaud ou à froid, peu importe).
Si le disque est remis à chaud, lancer la commande suivante pour détecter le nouveau disque :
Code BASH :
rescan-scsi-bus


On repartitionne le disque ou on copie la table de partitions (avec un peu de place au début du disque comme lors de la création pour embarquer GRUB et ses modules) :

Code BASH :
cfdisk /dev/sda


ou

Code BASH :
sfdisk -d /dev/sdb | /dev/sda


Et ensuite on ajoute le disque au raid :

Code BASH :
mdadm --manage /dev/md0 --add /dev/sda1


Ne pas oublier de réinstaller GRUB sur sda avec les modules raid et lvm :
Code BASH :
grub-install --modules="lvm mdraid09" /dev/sda


Se reporter à l'article mdadm pour gérer le RAID1 convenablement par la suite ou en cas de soucis de disque ;)
Cette page a été vue 3717 fois