Monthly Archives: March 2012

Exécuter un script sous Linux

shell-scripting

Depuis plusieurs mois, je joue pas mal avec mon serveur Linux et du coup je suis amené à faire pas mal de recherche pour trouver comment réaliser certaines commandes de bases comme:

  • rechercher des fichiers
  • supprimer des répertoires de manière redondante
  • exécuter des scripts
  • installer un serveur MySql
  • etc…

Bien sûr, Linux vous offre le MAN pour vous aider et vous guider mais bien souvent cela ne suffit pas. Toute l'information nécessaire pour mener à bien un projet ou pour effectuer une action est disponible sur Internet. Mais encore faut il pouvoir la trouver.

Je vous propose donc de poster une série de tutoriaux tout simples, des sortes de pense bête afin de répondre aux besoins que je rencontre le plus souvent.

Un des premiers besoins que j'ai eu a été de pouvoir exécuter des scripts de maintenance et de copie de fichiers.

Avant de pouvoir exécuter un script, il faut s'assurer que ce dernier dispose des droits d'exécution.

Pour donner les droits d'exécution à un script, il faut utiliser la commande suivante :

chmod +x monscript.sh

Ensuite vous pourrez exécuter votre script via la commande :

./monscript.sh

Vous pouvez également utiliser la commande "sh"

sh monscript.sh

Pour exécuter un script KSH il faut exécuter la commande:

ksh monscript.ksh

Pour exécuter un script BASH il faut exécuter la commande:

bash monscript.bash

Rien de bien compliqué quoi :)

Choisir son serveur DLNA

dlna

Depuis quelques années, le multimédia est omniprésent dans notre environnement: baladeurs numériques, tablettes, smartphones, …

Afin de faciliter la communication entre les différents périphériques pouvant diffuser ou émettre des contenus multimédia, une norme a été mise en place: DLNA.

Qu'est ce que le DLNA?

DLNA, Digital Living Network Alliance est une norme facilitant l'accès aux contenus multimédia, entre différents périphériques, connectés au sein d'un même réseau informatique.

Rapidement adopté par plus de 250 sociétés leaders dans le monde numérique (Sony, Philips, Samsung, LG, etc…), DLNA est devenu le standard pour la diffusion de contenu multimédia entre plusieurs périphériques.

Le DLNA indique comment un périphérique de type Digital Media Server (DMS) partage les fichiers multimédia qu'il contient avec les périphériques Digital Media Player (DMP) au travers de votre réseau.

Par exemple, votre téléviseur (DMP) pourra directement diffuser les photos qui sont sur votre disque dur réseau (DMS). Autre exemple, votre Freebox Player (DMP) pourra lire un film se trouvant sur votre ordinateur (DMS).

DLNA est donc une norme visant à faciliter la communication entre vos différents périphériques multimédia.

Les différents type de serveurs DLNA

Tous les serveurs DLNA que l'on trouve sur Internet fonctionnent plus ou moins de la même manière puisqu'ils se basent tous sur la même norme.

Toutefois, certains se distinguent par des caractéristiques spécifiques tels que le transcodage de la vidéo ou bien le transcodage de l'audio.

Chaque serveur a des avantages et des inconvénients qui lui sont propre. Il n'y aura donc pas de réponse à la question "Quel est le meilleur serveur DLNA?".

L'utilisation que vous ferez de votre réseau multimédia mais aussi les divers périphériques qui composent votre réseau vous guideront dans le choix de votre serveur de diffusion.

Quand installer un serveur DLNA?

Personnellement j'ai eu le besoin d'installer un serveur DLNA lorsque j'ai reçu ma Freebox Révolution. En effet, mon serveur est dans une pièce à l'étage et mon Freebox Player et ma TV au rez de chaussée.

Il est vite devenu lassant de devoir utiliser des périphériques amovibles afin de pouvoir visionner mes films et autres photos sur ma TV.

La freebox supportant la norme DLNA, il m'a semblé être intéressant de partir sur cette solution.

Comparaison des serveurs DLNA

Le choix de votre serveur DLNA va être orienté par plusieurs points:

  • votre système d'exploitation (Windows, Linux ou Mac)
  • la nature de votre réseau et les types de périphériques DMP qui composent votre réseau informatique (tv, ordinateurs, freebox, ps3, xbox, …)
  • les fonctionnalités que vous souhaitez mettre en place (transcodage vidéo, audio, compression, …)

Pour information, le transcodage permet de convertir un format dans un autre format. Par exemple, vous souhaitez lire un fichier MKV sur votre PS3 qui ne gère pas ce format. Votre serveur DLNA va alors convertir le fichier MKV en XVID afin de le rendre lisible par votre PS3.

Le tableau ci-dessous (que j'ai trouvé sur le blog de Robert Green) récapitule bien les différentes solutions disponibles sur le marché.

La colonne "Serveur" correspond au nom du serveur DLNA. La colonne "Prix" correspond au tarif de vente du logiciel (certains sont gratuits et sont tous aussi performants que les payants). Les colonnes "Windows", "Mac" et "Linux"  permettent de savoir sur quel système d'exploitation le serveur DLNA peut être installé. La colonne "Musique" indique si le serveur gère les flux Audio. La colonne "Photo" indique si le serveur gère les photos et autres images. La colonne "Vidéo" indique si le serveur DLNA gère les flux vidéo. Enfin la colonne "Transcoding" indique si le serveur est capable de convertir un format dans un autre format.

Serveur Prix Windows Mac Linux Music Photo Video Transcoding
Allegro Media
Server
39.95 X X
X


Cidero Internet Radio Station
Server (Java)
Gratuit X X X X X X
Cyber Media Gate (Java) Gratuit X X X X X X
Cyberlink Digital Home Enabler Kit 79.95 X

X X X
Elgato Eyeconnect 49.95
X
X X X
Fuppes Gratuit X
X X X X X
Geexbox Gratuit


X X X
GMediaServer Gratuit

X X X X
JRiver Media Center
39.95 X

  X X X
MediaTomb Gratuit
X X X X X X
Mezzmo 24.95 X

X X X X
MiniDLNA Gratuit

X X X X ?
MythTV Gratuit

X X X X X
Nero
MediaHome
79.99 X

X X X X
Nullriver Medialink 20.00
X
X X X X
On2Share 19.95 X

X X X
PS3 Media Server Gratuit X
X X
X X X X
Rhapsody 12.99/mois X X X X


SimpleCenter Premium 19.99 X

X X X X
Tversity Gratuit X

X X X X
TwonkyMedia 39.95 X X X X X X X
uShare Gratuit

X X X X
Wild Media Server $15 X X X X X X X
Winamp Remote Gratuit X

X ? X ?
Windows Media Connect Gratuit X

X X X X
Yahoo Music Jukebox Gratuit X

X


Ce tableau comparatif date de 2008 mais vous donne une bonne idée des solutions disponible.

Mes serveurs DLNA préférés

Avant de me décider sur un serveur DLNA, j'en ai testé une dizaine pour Windows et une dizaine pour Linux.

Sous Windows, le serveur DLNA le plus complet, simple d'utilisation et agréable à utiliser est Wild Media Server. Un petit temps d'adaptation est nécessaire pour prendre le logiciel mais il propose des fonctionnalités de transcoding très complètes, la possibilité d'organiser vos médias par critères (par exemple vos vidéos pourront être organisées par genre, type, année, …) et il propose des parsers (recherche automatique d'informations) pour iMDB, Allocine et j'en passe.

Sous Linux, le serveur DLNA qui m'a le plus séduit est MediaTomb car il propose une interface web afin de gérer votre bibliothèque multimédia. L'interface reste très sommaire mais le logiciel est parfait sur une installation serveur. De plus, il propose de scanner vos dossiers de manière automatique à interval régulier (que vous définissez).

Enfin, je pense qu'il est nécessaire de parler de PS3 Media Server (PMS) car il est gratuit, disponible sous Windows et Linux et offre des fonctionnalités de transcodage qui vous permettra de lire presque tous les formats sur votre PS3 (n'ayant pas de PS3 et la Freebox ne nécessitant pas de transcodage car elle supporte tous les formats je n'en ai pas eu l'utilité :). Facile d'installation et d'utilisation, PMS sera probablement un des serveurs les plus polyvalents et il répondra sûrement à vos besoins.

Sécuriser votre serveur SSH

ssh-logo

SSH Server permet d'administrer votre serveur Linux en ligne de commande. Il est utilisé dans le monde entier par une grande majorité d'administrateurs réseaux, développeurs et autres geeks.

Moi même j'utilise SSH pour administrer et gérer mes serveurs sous Debian et Ubuntu mais je vous conseille de le sécuriser un minimum.

En effet, comme tout service dit "daemon", il peut facilement devenir un point d'entrée à diverses intrusions non désirées (je l'ai vécu il y a quelques années).

Nous allons détailler quelques points et astuces visant à améliorer la sécurité de votre serveur SSH.

1) Installation du client et du serveur SSH

apt-get install openssh-client openssh-server

2) Editer le fichier de configuration pour sécuriser le serveur SSH

nano /etc/ssh/sshd_config

3) Sécuriser SSH: Interdire le login en tant que root

PermitRootLogin no
PasswordAuthentication no

Cette mesure aura pour objectif d'interdire une connexion en tant que root sur votre serveur.

4) Sécuriser SSH: Changer le port de connexion

Port 1234

Par défaut, SSH utilise le port 22. Du coup ce port est fréquemment scanné par divers robots et personnes malintensionnées.

5) Sécuriser SSH: Utiliser une authentification RSA

RSAAuthentication yes
PubkeyAuthentication yes

6) Sécuriser SSH: Configurer Parefeu, Whitelist et Blacklist.

L'utilisation d'iptables permet de restreindre les connexions entrantes à certaines adresses ip et hosts.

Il existe d'autres mesures plus techniques afin de sécuriser votre serveur SSH. Mais ces mesures permettent déjà de limiter les risques. Il est également possible de jouer avec des clés de sécurités client/server, ce qui accentue encore la sécurité du serveur SSH (mais il est plus difficile à mettre en place).

Script de Backup sur GoDaddy

backup

Certains de mes sites sont hébergés sur GoDaddy. Si j'ai choisi cet hébergeur c'est pour ses tarifs, la fiabilité des services proposés et également pour la situation géographique de ses serveurs.

Lorsque l'on a un seul site, il est simple et rapide de sauvegarder l'ensemble du contenu et la base de données. Par contre lorsque vous disposez de plusieurs sites, il peut vite devenir contraignant d'effectuer manuellement toutes ses sauvegardes.

Afin de faciliter le backup de mes sites, j'ai développé un script qui permet de faire une sauvegarde automatique des fichiers mais également de la base de données.

Pour l'utiliser, il vous suffit d'éditer les divers paramètres, de sauvegarder le fichier sur votre serveur mutualisé ou dédié puis de rendre le fichier exécutable via la commande "chmod +x monfichier.sh".

Il ne reste plus qu'à l'exécuter via la commande "./monfichier.sh".

Voici mon petit script bien pratique pour réaliser cette tâche administrative:

#!/bin/bash
#Begin Script
SITE='ZeM.fr'
DBHOST='localhost'
DBNAME='dbname'
DBUSER='dbuser'
DBPASS='dbpass'
NOWDATE=`date +%m%d%y` # Sets the date variable format for zipped file: MMddyy
clear # clears terminal window
echo ""
echo "Hi, $USER!"
echo ""
echo "Clean olds files"
rm -rf $HOME/html/_backups/dailyback/*
echo ""
echo "Beginning backup of files @ `date`"
echo "Backing up content..."
#Copy content
cp -rf $HOME/html/Zem.fr $HOME/html/_backups/dailyback
echo "Done!"
echo ""
echo "Backing up Database"
mysqldump -h $DBHOST -u$DBUSER -p$DBPASS $DBNAME > $HOME/html/_backups/dailyback/$SITE-$NOWDATE.sql
echo ""
echo "Done!"
echo ""
echo "Zipping directory structure..."
tar -cvzf $HOME/html/_backups/archives/$SITE-$NOWDATE.tar.gz $HOME/html/_backups/dailyback/*
echo ""
echo "Backup complete!"
echo ""
echo "Clean olds files"
rm -rf $HOME/html/_backups/dailyback/*
 

Installer ZFS sur Ubuntu

Zfs-linux

Après mon puisant échec d'utilisation de RAID5 sur Ubuntu, j'ai décidé de repartir sur un système plus souple et performant appelé ZFS (Z File System).

Développé par Sun, ZFS est Open Source et un portage est disponible sur Ubuntu. Ce système a été développé pour pouvoir utiliser des capacités de stockage relativement importantes. Il n'est pas rare de voir des sociétés utiliser ZFS pour des systèmes de plusieurs Pétabytes.

Mais ZFS a également séduit le grand public car il permet de réaliser des snapshots à la volée, et surtout car il est robuste et performant. 

De nombreux systèmes utilisent ce système de fichier. On pourra ainsi citer FreeNas qui est basé sur FreeBsd et ZFS.

Juste pour information, il faut savoir que ZFS utilise des zpools qui contiennent des zraid (equivalent de raid5) ou des zraid2 (équivalent de raid6). Chaque conteneur (zpool) peut avoir plusieurs grappes de disques (zraid). Pour plus d'informations théoriques, rendez vous sur wikipédia :).

Le gros avantages est que les différents calculs de checksum et parité se font sur les grappes (raidz) et non sur l'intégralité du zpool. 

Par exemple, si vous avez un zpool qui contient 4 zraids et qu'un des zraids vient à défaillir, alors le rebuild ne portera que sur ce zraid et pas sur tout le zpool.

ATTENTION: si vous perdez un raidz, alors tout votre zpool sera perdu.

Veuillez noter que tous mes tests ont été faits sur Oneiric.

Installation de ZFS sur Ubuntu

Pour installer ZFS sur Ubuntu, il faut installer les packets suivant:

aptitude install build-essential gawk alien fakeroot linux-header-$(uname –r) install zlib1g-dev uuid-dev libblkid-dev libselinux1-dev python-software-properties

Ensuite il faut ajouter dépôt ppa pour pouvoir installer zfs en mode natif (il existe zfsonlinux et zfs-fuse):

add-apt-repository ppa :zfs-native/stable
aptitude update
aptitude install ubuntu-zfs

Vous n'avez plus qu'à rebooter votre Ubuntu et ZFS est installé :)

Préparation des disques durs pour ZFS

Dans notre exemple, nous allons créer un zpool contenant un raidz de 5 disques de 2To.

La première chose à faire est de formatter et préparer les disques pour ZFS. Les commandes suivantes sont à exécuter pour chaque disque (sdb, sdc, sdb, sde et sdf):

parted /dev/sdb   
mklabel gpt

Création du zpool et du zraid

Pour créer le zpool et le zraid c'est super facile. Il suffit de taper la commande suivante:

zpool create -o ashift=12 dataz raidz /dev/sd[bcdef]

ATTENTION: il faut mieux utiliser les id de disques:

ls -l /dev/disk/by-id
zpool create -o ashift=12 zfilms raidz /dev/disk/by-id/scsi-SATA_ST2000DL003-9VT5YD6Y15B /dev/disk/by-id/scsi-SATA_ST2000DL003-9VT5YD718LS /dev/disk/by-id/scsi-SATA_ST2000DM001-9YNZ1E0KV78 /dev/disk/by-id/scsi-SATA_ST2000DM001-9YNZ1E0KX6L /dev/disk/by-id/scsi-SATA_ST2000DM001-9YNZ1E0LE5T

Vous noterez que mon zpool s'appellera "dataz" et qu'il contiendra un raidz de 5 disques. 

L'argument "-o ashift=12" permet de forcer un alignement des partitions sur 4k, ce qui est nécessaire pour certains disques durs (les WD 2to green par exemple).

Par defaut ZFS crée un point de montage du même nom que le zpool. En faisant un "df -H" vous devrez voir votre nouveau point de montage (dataz dans mon exemple)

root@jhdserver:/home/jhd/Downloads# df -H
Filesystem             Size   Used  Avail Use% Mounted on
/dev/sda1              489G    19G   446G   4% /
udev                   2.0G   4.1k   2.0G   1% /dev
tmpfs                  778M   1.6M   777M   1% /run
none                   5.3M   4.1k   5.3M   1% /run/lock
none                   2.0G   103k   2.0G   1% /run/shm
dataz                  7.9T   608G   7.3T   8% /dataz

Quelques commandes utiles

Pour surveiller votre zpool, il existe plusieurs commandes pratiques:

  • zfs list : liste les pools 
  • zpool status -v : donne l’état de chacun des pools. Cette commande détaille les erreurs lorsqu’il y en a. 
  • zpool iostat -v dataz 15: affichage des statistiques d’entrées/sorties des pools tout en  indiquant la répartition des données et de ces entrées/sorties sur  chacun des fichiers ou périphériques constituant le pool. 
  • zpool scrub dataz : sert a verifier les checksums des données et à corriger les erreurs sur l'array. Je vous conseille de lancer cette commande une fois par mois.

Astuce

ZFS utilise principalement de la mémoire. Si votre machine ne dispose pas d'une grande quantité de RAM, il peut être intéressant de limiter son utilisation via la commande suivante:

set zfs:zfs_arc_max:536870912

Cette commande va alors limiter l'utilisation de la mémoire par ZFS à 512Mo

Configuration ultime pour Conky

conky

 Afin de pouvoir monitorer et superviser plus facilement mon serveur Ubuntu, j'ai décidé d'utiliser le logiciel Conky.

Celui ci permet d'afficher sur le fond d'ecran de votre bureau plusieurs informations relatives à votre pc tels que la mémoire utilisée, la capacité de vos disques, l'utilisation de votre processeur, etc…

Ce logiciel est bien conçu car il est totalement configurable, sans limite et qu'il consomme très peu de ressources systèmes.

Je vous partage donc la configuration que j'utilise.

Pour l'utiliser, il faut éditer le fichier "~/.conky"

# conky configuration

# set to yes if you want Conky to be forked in the background
background no

# X font when Xft is disabled, you can pick one with program xfontsel
#font 5x7
#font 6x10
#font 7x13
#font 8x13
#font 9x15
#font *mintsmild.se*
#font -*-*-*-*-*-*-34-*-*-*-*-*-*-*

# Use Xft?
use_xft yes

# Xft font when Xft is enabled
xftfont Bitstream Vera Sans Mono:size=9

# Text alpha when using Xft
xftalpha 0.8

# Update interval in seconds
update_interval 1.0

# This is the number of times Conky will update before quitting.
# Set to zero to run forever.
total_run_times 0

# Create own window instead of using desktop (required in nautilus)
own_window no

# Use double buffering (reduces flicker, may not work for everyone)
double_buffer yes

# Minimum size of text area
minimum_size 300 0
maximum_width 350

# Draw shades?
draw_shades yes

# Draw outlines?
draw_outline no

# Draw borders around text
draw_borders no
draw_graph_borders yes

# Stippled borders?
stippled_borders 8

# border margins
border_margin 4

# border width
border_width 1

# Default colors and also border colors
default_color white
default_shade_color black
default_outline_color white

# own window options
own_window              yes
own_window_transparent  yes
own_window_type         override
own_window_hints        undecorated,below,sticky,skip_taskbar,skip_pager

# Text alignment, other possible values are commented
#alignment top_left
alignment top_right
#alignment bottom_left
#alignment bottom_right

# Gap between borders of screen and text
# same thing as passing -x at command line
gap_x 10
gap_y 35

# Subtract file system buffers from used memory?
no_buffers yes

# set to yes if you want all text to be in uppercase
uppercase no

# number of cpu samples to average
# set to 1 to disable averaging
cpu_avg_samples 2

# number of net samples to average
# set to 1 to disable averaging
net_avg_samples 2

# Force UTF8? note that UTF8 support required XFT
override_utf8_locale yes

# Add spaces to keep things from moving about?  This only affects certain objects.
use_spacer right

# colours
color1 white
color2 orange

text_buffer_size 2048

# variable is given either in format $variable or in ${variable}. Latter
# allows characters right after the variable and must be used in network
# stuff because of an argument

# stuff after 'TEXT' will be formatted on screen

TEXT
${offset -5}${color2}${font StyleBats:size=12}q ${voffset -2}${font Bitstream Vera Sans Mono:style=Bold:size=11}System${font}  ${hr}
Host: ${color1}$nodename${color2} Uptime: ${color1}${uptime}${color2}
OS: ${color1}$sysname $kernel${color2} on ${color1}$machine

${offset -5}${color2}${font StyleBats:size=12}q ${voffset -2}${font Bitstream Vera Sans Mono:style=Bold:size=11}CPU${font}  ${hr}
${color1}${execi 1000 cat /proc/cpuinfo | grep 'model name' | sed -e 's/model name.*: //'}
${freq}MHz   ${color2}Load: ${color1}${loadavg}   ${color2}Temp: ${color1}${acpitemp}°C
${color2}CPU Bar:  ${color1}$cpubar
${color2}Load Bar: ${color1}${cpugraph FFFFFF ffffff}

${offset -5}${color2}${font StyleBats:size=12}q ${voffset -2}${font Bitstream Vera Sans Mono:style=Bold:size=11}Memory${font}  ${hr}
${color2}RAM:      ${color1}$memperc% used ${membar 6}${color2}
${color2}Swap:     ${color1}$swapperc% used ${swapbar 6}${color2}

${offset -5}${color2}${font StyleBats:size=12}q ${voffset -2}${font Bitstream Vera Sans Mono:style=Bold:size=11}Disks${font}  ${hr}
${color2}Root:     ${color1}${fs_free_perc /} % free  ${fs_bar 6 /}
${color2}Freebox:  ${color1}${fs_free_perc /freebox} % free  ${fs_bar 6 /freebox}
${color2}Data:     ${color1}${fs_free_perc /data} % free  ${fs_bar 6 /data}

${offset -5}${color2}${font StyleBats:size=12}q ${voffset -2}${font Bitstream Vera Sans Mono:style=Bold:size=11}Raid Status${font}  ${hr}
${color2}MdStat:   ${execi 60 tail -n3 /proc/mdstat | fold -w46}

${offset -5}${color2}${font StyleBats:size=12}q ${voffset -2}${font Bitstream Vera Sans Mono:style=Bold:size=11}Networks${font}  ${hr}
${color2}Net IP:   ${color1}${execi 3600 wget -O - http://www.whatismyip.org/ | tail}
${color2}Router:   ${color1}${addr eth0}
${color2}Down:     ${color1}${downspeed eth0} k/s ${offset 53}${color2}Up:${color1}   ${upspeed eth0} k/s
${color2}TDown:    ${color1}${totaldown eth0}     ${offset 53}${color2}TUp:${color1}  ${totalup eth0}
${downspeedgraph eth0 25,145 FFFFFF ffffff} ${upspeedgraph eth0 25,145 FFFFFF ffffff}

${offset -5}${color2}${font StyleBats:size=12}q ${voffset -2}${font Bitstream Vera Sans Mono:style=Bold:size=11}Processing${font}  ${hr}
NAME            PID       CPU%      MEM%${color1}
${top name 1} ${top pid 1}   ${top cpu 1}    ${top mem 1}
${top name 2} ${top pid 2}   ${top cpu 2}    ${top mem 2}
${top name 3} ${top pid 3}   ${top cpu 3}    ${top mem 3}
${top name 4} ${top pid 4}   ${top cpu 4}    ${top mem 4}

${offset -5}${color2}${font StyleBats:size=12}q ${voffset -2}${font Bitstream Vera Sans Mono:style=Bold:size=11}Logs${font}  ${hr}
${color1}${execi 30 tail -n3 /var/log/messages | fold -w46}
${color2}${stippled_hr 1}

Voila le rendu sur mon serveur:

Conky Configuration

Avec les infos que j'affiche je sais ainsi en 2 temps 3 mouvements si mon processeur est utilisé à 100%, si mon RAID est opérationnel, si mes disques durs sont pleins et j'en passe.

Pour moi, Conky est juste INDISPENSABLE.

Retours d’expérience sur le RAID

raid5

 

Il y a 2 mois j'ai voulu refaire mon serveur et je me suis dis qu'il serait intéressant de pouvoir bénéficier d'une sécurité en cas de défaillance d'un des disque dur servant au stockage de données.

Après plusieurs recherches, on s'apperçoit qu'il existe plusieurs solutions:

  • faire une copie des données sur des médias externes (disques durs externes, DVD, Bluray, …)
  • sauvegarde en ligne via plusieurs services spécialisés (Dropbox et autres clouds)
  • mise en place d'un système de type RAID

Mon serveur contenant 16To (oui oui 16 TeraOctets), les deux premières solutions n'étaient pas envisageable.

Je me suis alors rabattu sur la mise en place d'un système RAID.

 

Quel RAID choisir ?

Je ne vais pas vous détailler le fonctionnement du RAID, wikipédia le fait déjà, mais il faut tout de même distinguer les différentes possibilités qui s'offrent à nous:

  • RAID0: qui répartit les données sur plusieurs disques. Cela améliore les performances mais n'assure aucune sécurité des données
  • RAID1: qui est du mirorring. Cela signifie qu'on duplique les données sur tous les disques. Pour 1To de données, il vous faut donc 2 disques de 1To.
  • RAID5: Par exemple si votre RAID contient 5 disques de 1To,  vous aurez une capacité de stockage utile de 4To. La tolérance de panne est de 1 disque dur.
  • RAID6: la même chose que le RAID5 mais avec deux disques de parités. Par exemple si votre RAID contient 5 disques de 1To,  vous aurez une capacité de stockage utile de 3To. La tolérance de panne est de 2 disques durs.

Vu le nombre de disques de mon serveur et l'espace de stockage total dont j'ai besoin le choix d'un système RAID5 m'a semblé le plus approprié (vous verrez par la suite que c'était une grossière erreur de ma part).

Raid Logiciel ou Raid Matériel ?

Pour mettre en place un système RAID, deux solutions s'offrent à vous.

La première solution consiste à acheter une carte controlleur supportant le RAID. 

Le principal avantage est que c'est la carte elle même qui s'occupe de la gestion des données. De plus, l'installation, la configuration et la supervision sont souvent assistées par un logiciel spécifique fourni avec la carte controleur.

Les deux inconvénients sont le prix de la carte controleur et la dépendance à cette carte. 

En effet, si la carte controleur vous lâche, vous perdrez toutes vos données, à moins d'avoir exactement la même marque de carte (voir même le même modèle) pour la remplacer.

Les princiales marques de cartes sont Areca, Supermicro, 3Ware, LSI et leur tarif varie en fonction de leurs spécifications, leurs débits et le nombre de ports disponible (entre 30€ et 1000€).

La seconde solution consiste à monter un RAID logiciel. Cela signifie que c'est votre système d'exploitation (et une tierce application) qui va s'occuper de gérer et d'écrire les données sur vos disques.

Les avantages de cette solution est le faible coût car vous n'aurez pas besoin de carte controleur, la possibilité de migrer vos disques de stockages vers un autre serveur si le votre vient à lacher.

Par contre, cette solution solicite davantage les ressources de votre serveur (consommation mémoire et processeur).

 

Première expérience: Windows et RAID Matériel

Pour ma première expérience et tentative d'utilisation de serveur RAID, je décide de garder ma configuration actuelle:

  • Boitier Sharkoo: http://www.pc-look.com/boutik/Prod_Sharkoon_Boitier-Tour-Rebel-9-Economy-Edition-Noir__7832_fr.html
  • Isolateur phonique akasa PaxMate
  • des disques Samsung Ecogreen 1.5To (pour les datas)
  • 1 x Samsung 500Go 7200Rpm (pour l'Os)
  • 3 Modules backplane : http://www.misco.fr/produits/p2586262/startech-com-5-drive-3-5in-removable-sas-sata-mobile-rack-backplane—boitier-de-stockage.htm
  • 1 processeur AMD Athlon X2 4600+
  • 4 Go DDR2
  • Carte Mere Asus M3N WS 
  • Alimentation 550W PCF (je ne sais plus la référence)
  • Windows 7 64Bits

Ne disposant pas de carte RAID, j'en ai donc commandée une, ainsi que plusieurs disques qui vont servir au raid. Et oui je ne pouvais pas utiliser mes disques car ils étaient tous plein.

Après plusieurs recherches sur le net je décide de commander cette carte:

  • Fastrak TX8660: http://www.materiel.net/carte-controleur-sas/promise-fasttrak-tx8660-64465.html

A la réception de la Fastrak, première grosse déception : les câbles fournis sont des cables dual (la connectique data et alimentation est en un seul morceau), ce qui les rend incompatibles avec mes backplanes. De plus, un des câbles est cassé.

Obliger d'acheter des cables SAS de remplacement à 40€ pièce !!!!!

J'installe le tout sur mon serveur, installe le logiciel de gestion fourni avec la carte et je crée un RAID5 avec 5 disques de 2To.

C'est simple à faire, très intuitif et rapide.

Débute alors la copie des données et là, seconde déception: les débits sont minables. On atteind difficilement les 30Mb/s, ce qui est loin des valeurs annoncées par le constructeur (100Mb/s)

Je décide tout de même de continuer la copie des données jusqu'à ce que mon premier disque soit vide.

Une fois vide, je décide d'ajouter le disque dans mon RAID pour augmenter l'espace disponible. Troisième déception, le Rebuild (phase pendant laquelle le RAID reconstruit l'array des données) est très très lent (plusieurs jours !!).

Et le pire arrive: le rebuild se crashe et 2 disques sont deads. J'AI LES BOULES.

J'ouvre un ticket chez Matériel.net pour me faire rembourser cette carte qui de toute évidence n'est pas conforme à ses spécifications. La carte est repartie chez le constructeur et depuis pas de nouvelles…

 

Seconde expérience: Linux et RAID logiciel

Après l'échec sur Windows, je décide de réinstaller mon serveur sous Ubuntu 64 Bits afin de pouvoir tester le RAID logiciel via MdAdm + LVM.

Je vous passe tous les détails d'installation, la communauté est suffisant active pour trouver tous ce dont vous aurez besoin.

Après plusieurs jours de configuration et de copie de données, mon RAID5 est enfin fonctionnel et il affiche mes 16To de données.

Le raid logiciel prend carrément moins de ressources que ce que je pensais et j'en suis super content.

Tout allait bien jusqu'à … ce qu'un disque vienne à me lacher. 

Là je me dis PAS DE SOUCI, j'ai justement mis en place un RAID5 pour que ce genre de situation n'est pas de répercution.

Je remplace donc le disque qui m'a lâché et le rebuild de l'array démarre. Il y en a pour plusieurs jours.

Arrivé à 80%, un autre disque vient à défaillir. LE CIEL EST CONTRE MOI.

Le RAID5 permet une tolérance de panne d'un seul disque et là 2 disques sont offlines.

 

Une triste conclusion

Après avoir tout essayé, j'ai bel et bien perdu mes 16To de données ce qui m'a rendu fou. Je ne peux m'en prendre qu'à moi.

En effet, j'aurai dû faire un RAID6 qui tolère la perte de deux disques, ne pas faire qu'une seule partition mais 2 ou 3 afin de limiter la casse.

De plus, j'aurai dû régulièrement vérifier l'état SMART des disques durs afin de prévenir d'une éventuelle défaillance.

Résultat: 16To de perdu. RAID 1 / JHD 0