Browse Source

relecture et ajout des infos sur checkarray

master
Ludovic Poujol 3 years ago
parent
commit
2e43b4dfac
1 changed files with 86 additions and 32 deletions
  1. +86
    -32
      HowtoRAIDLogiciel.md

+ 86
- 32
HowtoRAIDLogiciel.md View File

@@ -3,12 +3,28 @@ title: Howto RAID logiciel
categories: RAID
...

Sous Linux, le RAID logiciel se gère avec *mdadm* :
* Documentation : <https://raid.wiki.kernel.org/index.php/Linux_Raid>

Sous Linux, on peut utiliser du [RAID](https://fr.wikipedia.org/wiki/RAID_%28informatique%29) logiciel : c'est géré via le module noyau **md-mod** qui permet de faire des volumes RAID0/1/5 sur des périphériques bloc.


## Installation

~~~
# aptitude install mdadm

$ /sbin/mdadm -V
mdadm - v3.3.2 - 21st August 2014
$ /sbin/modinfo md_mod
filename: /lib/modules/3.16.0-4-amd64/kernel/drivers/md/md-mod.ko
alias: block-major-9-*
alias: md
description: MD RAID framework
license: GPL
depends:
intree: Y
vermagic: 3.16.0-4-amd64 SMP mod_unload modversions
parm: start_dirty_degraded:int
~~~

## Création d'un volume RAID
@@ -18,7 +34,7 @@ On doit ensuite créer des partitions de type *Linux raid autodetect* (code *'FD
Par exemple avec `parted` :

~~~
# parted /dev/sda
# parted /dev/sdz
(parted) mkpart logical 51,5GB 200GB
(parted) align-check optimal 8
8 aligned
@@ -28,14 +44,14 @@ Par exemple avec `parted` :
8 51,5GB 200GB 148GB logical raid
~~~

Par exemple 2 partitions */dev/sda1* et */dev/sdb1* de tailles identiques pour créer un volume RAID1.
Par exemple 2 partitions */dev/sdy1* et */dev/sdz1* de tailles identiques pour créer un volume RAID1.
On initialise le ainsi le RAID :

~~~
# mdadm --create /dev/md0 --chunk=64 --metadata=default --level=raid1 --raid-devices=2 /dev/sda1 /dev/sdb1
# mdadm --query /dev/md0
# mdadm --create /dev/md42 --chunk=64 --metadata=default --level=raid1 --raid-devices=2 /dev/sdy1 /dev/sdz1
# mdadm --query /dev/md42
/dev/md0: 1332.53GiB raid1 2 devices, 0 spares. Use mdadm --detail for more detail.
# mdadm --detail /dev/md0
# mdadm --detail /dev/md42
/dev/md0:
Version : 1.2
Creation Time : Fri Nov 19 17:22:46 2010
@@ -58,21 +74,22 @@ Working Devices : 2
Events : 35

Number Major Minor RaidDevice State
0 8 33 0 active sync /dev/sda1
1 8 49 1 active sync /dev/sdb1
0 8 33 0 active sync /dev/sdy1
1 8 49 1 active sync /dev/sdz1
~~~

Vous avez donc */dev/md0* : un périphérique de stockage utilisable.
Vous pouvez maintenant le formater :
Vous avez donc */dev/md42* : un périphérique de stockage utilisable.
Vous pouvez maintenant le formater, par exemple en _ext4_ :

~~~
# mkfs.ext4 /dev/md0
# mkfs.ext4 /dev/md42
~~~

Vous devez répéter cette opération pour avoir plusieurs volumes RAID, notamment
pour avoir plusieurs partitions (/var, /usr/, /home, etc.), vous aurez donc de
multiples partitions *Linux raid autodetect* sur vos disques.


## Opération sur les disques et volumes RAID

### Remplacer un disque
@@ -109,26 +126,24 @@ mdadm: added /dev/sdd5
mdadm: added /dev/sdd7
~~~

Note : `sfdisk` peut nécessiter d'avoir un disque déjà partitionné, le
contournement est donc de créer une partition quelconque avant de l'utiliser
avec un disque vierge.
> *Note* : `sfdisk` peut nécessiter d'avoir un disque déjà partitionné, le contournement est de créer une partition quelconque avant de l'utiliser avec un disque vierge.

### Sortir une partition d'un volume RAID

Si vous devez sortir un disque d'un volume RAID pour une raison ou une autre :

~~~
# mdadm /dev/md1 --fail /dev/sdd1
mdadm: set /dev/sdd1 faulty in /dev/md1
# mdadm /dev/md1 --remove /dev/sdd1
mdadm: re-added /dev/sdd1
# mdadm /dev/md42 --fail /dev/sdz1
mdadm: set /dev/sdz1 faulty in /dev/md42
# mdadm /dev/md42 --remove /dev/sdz1
mdadm: re-added /dev/sdz1
~~~

### Désactiver un volume RAID

~~~
# mdadm --stop /dev/md123
mdadm: stopped /dev/md123
# mdadm --stop /dev/md42
mdadm: stopped /dev/md42
~~~


@@ -137,21 +152,45 @@ mdadm: stopped /dev/md123
On peut vouloir (re-)créer un volume RAID sans pour autant disposer de tous les disques au moment de l'opération (récupération des données d'un ancien disque lorsqu'on ne dispose que de deux emplacements par exemple) :

~~~
# mdadm --create /dev/md1 --level=1 --force --raid-devices=1 /dev/sdc3
# mdadm --create /dev/md42 --level=1 --force --raid-devices=1 /dev/sdy1
~~~

On peut alors formater */dev/md1*, et copier les fichiers dessus, avant d'ajouter le disque manquant à la grappe (remplacement du disque original dans cet exemple) :
On peut alors formater */dev/md42*, et copier les fichiers dessus, avant d'ajouter le disque manquant à la grappe (remplacement du disque original dans cet exemple) :

~~~
# mdadm --manage /dev/md1 --add /dev/sdb3
# mdadm --grow /dev/md1 --raid-devices=2
# mdadm --manage /dev/md42 --add /dev/sdz1
# mdadm --grow /dev/md42 --raid-devices=2
# cat /proc/mdstat
Personalities : [raid1]
md1 : active raid1 sdb3[1] sdc3[0]
md42: active raid1 sdy1[1] sdz1[0]
1893933820 blocks super 1.2 [2/1] [U_]
[>....................] recovery = 4.0% (75859776/1893933820) finish=493.5min speed=61391K/sec
~~~

### Vérification d'un volume RAID

Pour lancer une vérification d'un volume RAID :

~~~
# /usr/share/mdadm/checkarray /dev/md42
checkarray: I: check queued for array md42.

# cat /proc/mdstat
md42: active raid1 sdw1[3] sdx1[0] sdy1[1] sdy1[2]
203712 blocks [4/4] [UUUU]
[==========>..........] check = 52.0% (106240/203712) finish=1.5min speed=1032K/sec
~~~

> *Note* : attention, cette vérification est évidemment gourmande en I/O disque

Pour annuler une vérification en cours :

~~~
# /usr/share/mdadm/checkarray --cancel /dev/md42
checkarray: I: cancel request queued for array md42.
~~~


## Monitorer un RAID logiciel

Pour voir les volumes RAID en activité :
@@ -162,7 +201,7 @@ Pour voir les volumes RAID en activité :

### Le fichier /proc/mdstat

Ce pseudo fichier contient la liste des grappes de disques (généralement dénommées *mdX*), avec pour chaque grappe le type de raid, l'état, les disques qui le compose et leur état.
Ce pseudo fichier contient la liste des volumes RAID avec le type, l'état, les disques utilisée :

~~~
# cat /proc/mdstat
@@ -178,9 +217,10 @@ md3 : active raid1 sdb3[1] sda3[0]

Le *[UU]* indique que les disques sont opérationnels. Si un des disques est en erreur, le *U* sera remplacé par un _.

### Le démon mdadm

Un démon `mdadm` est lancé par défaut pour détecter la panne d'un disque dur (entre autre), et envoyer un email le cas échéant.
## Le démon mdadm

Un démon _mdadm_ est lancé par défaut pour détecter la panne d'un disque dur (entre autre), et envoyer un email le cas échéant.

~~~
# ps -ef |grep mdadm
@@ -199,15 +239,28 @@ START_DAEMON=true
Dès qu'une panne disque est détectée, mdadm inscrit l'information dans syslog :

~~~
May 10 14:28:44 serveur mdadm[3858]: Fail event detected on md device /dev/md8, component device /dev/sda8
May 10 14:28:44 serveur mdadm[3858]: Fail event detected on md device /dev/md42, component device /dev/sdz1
~~~

Un mail est également envoyé à root (par défaut) pour l'informer de la situation. Le destinataire du mail peut se changer dans le fichier de configuration */etc/mdadm/mdadm.conf* grâce à la directive *MAILADDR* :

~~~
MAILADDR jdoe@example.com
MAILADDR notification@example.com
~~~

### mdadm day

Tous les 1er dimanches du mois, un script est lancé en crontab pour lancer une vérification de tous les volumes RAID :

~~~
$ grep -v ^# /etc/cron.d/mdadm

57 0 * * 0 root if [ -x /usr/share/mdadm/checkarray ] && [ $(date +\%d) -le 7 ]; then /usr/share/mdadm/checkarray --cron --all --idle --quiet; fi
~~~

Si nécessaire d'interrompre cette vérification : `/usr/share/mdadm/checkarray --cancel --all`


## Interprétation des erreurs

### does not have a valid v0.90 superblock
@@ -272,6 +325,7 @@ mdadm: /dev/md9 has been started with 3 drives (out of 4).

Votre volume est désormais actif, il vous reste qu'à ajouter le nouveau disque pour lancer la reconstruction.


## Trucs & astuces

### Changer la taille du cache
@@ -279,7 +333,7 @@ Votre volume est désormais actif, il vous reste qu'à ajouter le nouveau disque
Permet de synchroniser plus rapidement le RAID. Attention, influence sur l'utilisation RAM et CPU. Valeur par défaut de 4096K.

~~~
# echo 32768 > /sys/block/mdX/md/stripe_cache_size
# echo 32768 > /sys/block/md42/md/stripe_cache_size
~~~

### Activer le bitmap
@@ -287,6 +341,6 @@ Permet de synchroniser plus rapidement le RAID. Attention, influence sur l'utili
Cela permet d'identifier les blocs modifiés et gagner énormément de temps en cas de resynchronisation.

~~~
# mdadm --grow --bitmap=internal /dev/mdX
# mdadm --grow --bitmap=internal /dev/md42
~~~


Loading…
Cancel
Save