Raid 1 logicielle sous Linux – Comment mettre en place une solution de mirroring

Disclaimer
Attention cette procédure est fournit telle quelle. En aucun cas l’auteur ne pourra être tenu responsable en cas de pannes logicielles et/ou matérielles. Aucun support n’est fournit.

Introduction

Cet article vise à mettre en place un solution logicielle de mirroring.
Le RAID 1 logiciel sous Linux permet d’avoir un niveau de redondance de vos données.
Le RAID 1  nécessitent 2 disques physiques de même tailles.

Avantages:

  • les données accepte une défaillance de n-1
    Lors de la défaillance de l’un des disques, le contrôleur RAID logicielle désactive, de manière transparente pour l’accès aux données, le disque incriminé. Une fois le disque défectueux remplacé, le contrôleur RAID logicielle reconstitue, soit automatiquement, soit sur intervention manuelle, le miroir. Une fois la synchronisation effectuée, le RAID retrouve son niveau initial de redondance.

Inconvénients:

  • cout de stockage élevé

Informations Systèmes

  • OS: Debian Etch
  • /dev/hda et /dev/hdb de 160 Go

Procédure: environ 3h

Installer mdam

apt-get install mdadm

Configuration des modules Noyau

Charger les modules au démarrage:

echo raid1 >> /etc/modules
echo md >> /etc/modules

Charger les modules au Noyau:
On peut vérifier si les modules raid1 et md sont chargés dans le Noyau:
lsmod | grep raid1
cat /proc/mdstat

Pour les charger:
modprobe raid1
modprobe md

Préparer le second disque dur (hdb) pour le RAID

A cette étape nous avons besoin d’ajouter notre second disque hdb dans le RAID 1.
La première étape consiste à copier la table de partition de hda -> hdb.
Nous utiliserons pour cela la commande sfdisk.

!! ATTENTION !!
sfdisk écrasera toutes les données contenues dans /dev/hdb

sfdisk -d /dev/hda | sfdisk /dev/hdb

Notre second disque hdb est presque prêt.
Afin de terminer notre préparation nous devons changer les Identifiants de partions (ID) en fd (Linux raid autodetect):

for partition in 1 2; do sfdisk --change-id /dev/hdb $partition fd; done

Configurer les Volumes RAID 1

Création des Volumes RAID 1:

for partition in 1 2; do mdadm --create /dev/md$partition --level=1 \
--raid-disks=2 missing /dev/hdb$partition; done

Création des Systèmes de fichiers:
for partition in 1 2; do mkfs.ext3 /dev/md$partition; done

Modifier le fichier de configuration mdadm.conf
cp /etc/mdadm/mdadm.conf /etc/mdadm/mdadm.conf_orig
mdadm --detail --scan >> /etc/mdadm/mdadm.conf

Modifier la table de partionnement /etc/fstab

La table de partitionnement doit être de cette forme au final:

proc               /proc         proc         defaults             0          0
/dev/md1       /                ext3         defaults,errors=remount-ro 0       1
/dev/hda5      none         swap        sw                      0          0

Configuration du Boot Manager (GRUB)

On fait d’abord une sauvegarde:
cp /boot/grub/menu.lst /boot/grub/menu.lst_orig

On remplace ensuite toute les occurrence de hda1 en md1:
sed 's/hda1/md1/' < /boot/grub/menu.lst_orig > /boot/grub/menu.lst

On mets à jour GRUB:
update-grub

Copier les données de hda -> hdb

(Re)démmarrage en single mode:
NB: tous les services vont « tomber » et resteront inaccessibles.
init 1

Copie de la partition /:
mount /dev/md1 /media
rsync -aqxP / /media
umount /media

Mise en place du nouveau Boot Manager (GRUB)

grub
Les commandes permettant de démarrer (boot) correctement:
device (hd0) /dev/sdb
root (hd0,0)
setup (hd0)
quit

Redémarrage

mount
doit donner:
/dev/md1 on / type ext3 (rw,errors=remount-ro)

Ajout du premier disque dur (hda) au Volume RAID 1

Changer les ID des partitions avec sfdisk
Comme nous l’avons précédemment effectué il nous faut changer les ID des partitions:
for partition in 1 2 ; do sfdisk --change-id /dev/hda $partition fd; done

Ajouter les partitions avec mdadm au Volume RAID 1
for partition in 1 2 ; do mdadm --add /dev/md$partition /dev/hda$partition; done

A partir de cette dernière commande le RAID 1 doit être actif et commence à reconstruire chaque /dev/md*.
On suivra cette opération avec la commande watch:
watch cat /proc/mdstat

Finaliser la configuration /etc/mdadm/mdadm.conf
cp /etc/mdadm/mdadm.conf /etc/mdadm/mdadm.conf_orig1
cp /etc/mdadm/mdadm.conf_orig /etc/mdadm/mdadm.conf
mdadm --detail --scan >> /etc/mdadm/mdadm.conf

Fin

Tout est à présent en ordre. La machine doit être redémarrer afin de s’assurer du bon fonctionnement du RAID 1.

A tout moment l’état du raid1 sera donné par:
cat /proc/mdstat

La sortie d’un RAID 1 en mode nominal est de cette forme:

md1 : active raid1 hda1[0] hdb1[1]
153637504 blocks [2/2] [UU]

Consommation électrique et cout annuel d’un serveur Linux

Ces mesures ont été effectués avec un appareil prêté par Cyril et acheté en grande surface:

En instantanée :
U=185 Volt, R=0,47 Ohms, P=89 W

En continu:
20h35 (1235 min) = 3,13 kw

Consommation moyenne: ( ( 3,13 / 1 235 ) x 60 ) = 0,152064777 kw/h

Consommation annuelle : ( ( ( 0,152064777 x 24 ) x 31 ) x 12 ) = 1358 kw/h

Le prix du kwH est de 0,1085 €

Cout mensuel: 12 €

Cout annuel: 147 €

Cela reste toujours abordable.
Environ 50 % moins chère qu’un serveur dédié:

  • Cout mensuel OVH: 24,90 €
  • Cout mensuel Dedibox (Free): 34,90 €

Tuning LAMP

Article traitant du Tuning d’un environnement LAMP.

Source IBM

App

PHP va de plus en plus vite

Voici un graphe montrant l’évolution depuis PHP  3

App

Analyser graphiquement votre séquence de boot

L’idée principale est d’optimiser la séquence de boot sous linux.

Pré-requis: java installé.
Un article décrit comment Installer Java 2 sur debian etch

Installation du paquet bootchart:
sudo apt-get install bootchart

Aprés avoir installé bootchart il suffit de rebooter.
Un graphique au format PNG sera ainsi généré dans:
/var/log/bootchart

bootchart

La phase d’optimisation peut commencer.
Aprés l’analyse du graphique certains services trop couteux peuvent ainsi être désinstallé du boot.

Debian:
/etc/default

En savoir plus

Benchmark – Langage de programmation

Question récurrente pour un développeur suffisamment proche du système pour si intéresser:
quel est le cout processeur & ram de mon langage de programmation ?

Un élément de réponse avec ce graphique comparatif:

Benchmark linux – dbench

Matériel

  • processeur: VIA C7 2 GHz
  • disque dur: 160 Go SATA
  • ram: 1024 Mo DDR2

#dbench 1
Throughput 156.652 MB/sec 1 procs

Le taux de tranfert d’un disque dur sur une dedibox est d’environ 150Mo/sec

Compression Apache 2, activer mod_deflate

Une étude de IBM conclut par le fait que la compression offre à l’utilisateur un confort précieux lors de la consultation de pages web sur Internet. Voici comment l’implémenter sur un serveur apache2.

Installation

mod_deflate est installé par défaut avec apache2

Paramétrage

Dans /etc/apache2/conf.d/mod_deflate.conf, ajoutez :

 

#
## Mod Deflate
#

<Location />
# Insert filter
SetOutputFilter DEFLATE
BrowserMatch ^Mozilla/4 gzip-only-text/html
BrowserMatch ^Mozilla/4.0[678] no-gzip
       BrowserMatch bMSI[E] !no-gzip !gzip-only-text/html
# Don't compress images
SetEnvIfNoCase Request_URI .(?:gif|jpe?g|png)$ no-gzip dont-vary
# Make sure proxies don't deliver the wrong content
Header append Vary User-Agent env=!dont-vary
</Location>

 

Mise en production

Activez les deux modules suivants :

a2enmod headers
a2enmod deflate

Relancez Apache

/etc/init.d/apache2 force-reload ou restart

Tester

Gidnetwork

Source

App

Recent Tweets

Catégories