vendredi 2 novembre 2012

Installation d'un micro-serveur, part 3: SPACE (the final frontier...)

Bon... un micro-server avec seulement 250Go de stockage, c'est assez peu...
Du coup, un petit passage chez Amazon, et deux jours plus tard, me voilà avec 2 beaux disque durs Seagate Barracuda de 3To chacun !
De quoi voir venir question stockage, même si j'arrive à trouver le temps de numériser mes Laserdiscs !

Bon, mais les disques, il faut aussi les installer !

Comme j'aime bien que les choses soient bien rangées, on va créer une partition par type de fichier, c'est-à-dire :
- musiques
- vidéos
- photos
- documents (ceux de la famille !)
- doc_lydie et doc_tigrosaure (les documents un peu plus "perso")
- web (pour le stockage des pages du site qui sera hébergé sur le serveur)

J'ai beau avoir une petite idée de l'espace de stockage nécessaire à chacune de partitions... rien de mieux qu'un peu de souplesse ! On va donc créer une partition LVM (Logical Volume Manager).
Pour le moment, pas de RAID... je me contenterais d'un petit script qui effectuera une synchronisation automatique (Faut que je confirme cela... mais je n'aime pas trop l'idée du RAID, car, si le serveur tombe en panne... on a beau avoir deux disques redondés... on ne sait plus trop comment les exploiter !)

Aller, c'est parti !



Installation et partitionnement des disque


Installation physique

L'installation physique des disques est on ne peut plus simple :

  • Extraction du rack amovible du micro-serveur
  • Fixation du disque avec les disques fournies, insérées, avec la clé qui va bien, dans la porte du micro-serveur
  • Ré-insertion des racks disques.
Attention : Le micro-serveur ne gère pas le "hot-plug"... alors, penser à l'éteindre avant cette opération !

Une fois le serveur re-démarré, vérification que les disques sont bien détectés avec fdisk -l

Après la liste des partitions déjà configurées/formatées/utilisées précédemment, on doit voir les lignes suivantes pour chacun des nouveaux disques (avec des nom de "device" et des tailles différentes si les disques sont différents, bien sûr) :

Disk /dev/sdc: 3000.6 GB, 3000592982016 bytes
255 heads, 63 sectors/track, 364801 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Disk identifier: 0x00000000

Disk /dev/sdc doesn't contain a valid partition table


Partitionnement des disques
(Merci au site TCPdump pour son excellent tutoriel sur LVM)

On va donc créer une partition de type 8E (Linux LVM) sur chacun de ces disques (/dev/sdb et /dev/sdc dans mon cas) .

Problème: fdisk ou cfdisk ne gère pas les partitions d'une taille supérieure à 2To :(
On va donc installer GPT fdisk: aptitude intall gdisk

On peut alors créer les partitions voulue en lançant gdisk /dev/sdb puis gdisk /dev/sdc.
Les commandes principales de gdisk:

  • p: print, liste les partitions disponbiles
  • n: new, créé une partition (par défaut qui prend l'ensemble du disque. Dans notre cas, pour le type de partition, il faudra choisir 8e00 (GTP / Linux LVM)
  • o: reset the GPT partition table. Ceci reset également le sector alignement à la valeur par défaut de 2048.
  • w: write, permet d'enregistrer les modification effectuée
  • q: quit, quitte gdisk.

Donc, une seule partition, de type Linux LVM, non bootable, est créé sur l'ensemble du disque.
Nous avons maintenant une partition sur chaque disque, comme nous l'indique fdisk :


WARNING: GPT (GUID Partition Table) detected on '/dev/sdb'! The util fdisk doesn't support GPT. Use GNU Parted.

Disk /dev/sdb: 3000.6 GB, 3000592982016 bytes
256 heads, 63 sectors/track, 363376 cylinders
Units = cylinders of 16128 * 512 = 8257536 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Disk identifier: 0x00000000

Device Boot      Start         End      Blocks   Id  System
/dev/sdb1               1      266306  2147483647+  ee  GPT
Partition 1 does not start on physical sector boundary.

Fdisk nous averti qu'il n'est pas en mesure de gérer les disques utilisant GPT, mais on peut malgré tout constater que la partition est bien créée :)



Création du LVM


Installation et configuration de lvm2

On installe le package LVM : aptitude install lvm2
On vérifie que le type des métadonnées est format = "lvm2" dans /etc/lvm/lvm.conf et on redémarre le démon /etc/init.d/lvm2 restart


Création des Physical Volume

On va créer un seul Physical Volume par disque (et donc par partition, puisqu'on n'a qu'une seule partition sur chaque disque).

pvcreate /dev/sdb1
puis
pvcreate /dev/sdc1

On vérifie que les PV sont bien créés avec pvdisplay

Pour chaque disque on obtient ceci :

  "/dev/sdb1" is a new physical volume of "2.73 TiB"
  --- NEW Physical volume ---
  PV Name               /dev/sdb1
  VG Name               
  PV Size               2.73 TiB
  Allocatable           NO
  PE Size               0   
  Total PE              0
  Free PE               0
  Allocated PE          0
  PV UUID               2u0EeQ-Ps3d-nTSh-moOC-3Yat-SOlW-mXmCh1


Création des Volume Group

On va créer un seul Volume Group sur chaque Physical Volume. Le premier aura comme nom "vgDataMain", le second "vgDataMirror".
Comme on utilise le noyau Linux 2.6 sur une machine 64bits, on garde la taille par défaut des Physical Extent de 4Mo.

vgcreate vgDataMain /dev/sdb1
puis
vgcreate vgDataMirror /dev/sdc1

On vérifie que les VG sont bien créés avec vgdisplay

Pour chaque disque on obtient ceci:


 --- Volume group ---
  VG Name               vgDataMain
  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               2.73 TiB
  PE Size               4.00 MiB
  Total PE              715396
  Alloc PE / Size       0 / 0   
  Free  PE / Size       715396 / 2.73 TiB
  VG UUID               oa288G-788k-dQvX-njPy-IMa1-RoVA-mI5fLZ

On vérifie que les Physical Extent font 4Mo (PE Size) que le Volume Group fait bien (approximativement...) 3To (VG Size) et l'on voit le nombre total de PE (Total PE) et le nombre libres (Free PE / Size) et alloués (Alloc PE / Size).


Création des Logical Volume

Maintenant que le Volume Group est créé, on peut créé les Logical Volume, sur lesquels nous créerons les partitions "standard" à formater pour pouvoir enfin y stocker des données :)

 On va créer 4 Logical Volume pour stocker les 4 types de données du serveur :

  • lvMusique, pour la musique, taille 750Go
  • lvPhotos, pour les photos, taille 750Go
  • lvVideos, pour les vidéos, taille 1To
  • lvDocuments, pour les documents, taille 500Go (un peu moins en fait... ce sera le reste :))
L'avantage de LVM, c'est que si l'on s'aperçoit que la répartition de ces données ne suit pas ce que l'on a imaginé (moins de vidéo et plus de musique par exemple), on pourra re-dimensionner ces Logical Volume pour s'adapter à la réalité :)

lvcreate -L 750GB -n lvMusique vgDataMain
lvcreate -L 750GB -n lvPhotos vgDataMain
lvcreate -L 1TB -n lvVideos vgDataMain

On peut alors déterminer combien de PE restent disponibles et les allouer au dernier Logical Volume:
vgdisplay (et on cherche la ligne "Free PE / Size") puis
lvcreate -l 69252 -n lvMusique vgDataMain

Si on refait un vgdisplay, on constate que l'intégralité du Volume Group a bien été utilisé :)


Formatage des partitions

Les Logical Volume étant créés, on peut maintenant les formater.
On choisi le format ext4.

mke2fs -t ext4 /dev/vgDataMain/lvMusique
mke2fs -t ext4 /dev/vgDataMain/lvPhotos
mke2fs -t ext4 /dev/vgDataMain/lvVideos
mke2fs -t ext4 /dev/vgDataMain/lvDocuments


Montage des partitions

Avant de pouvoir utiliser les partitions, nous devons encore les monter ;)
Pour cela, nous créons pour commencer un créer le répertoire par lequel nous souhaitons pouvoir accéder à ces partitions.
Pour ma part ce sera :
/mnt/musique pour /dev/vgDataMain/lvMusique
/mnt/photos pour /dev/vgDataMain/lvPhotos
/mnt/videos pour /dev/vgDataMain/lvVideos
/mnt/documents pour /dev/vgDataMain/lvDocuments
et

/mnt/_backup/musique pour /dev/vgDataMirror/lvMusique
/mnt/_backup/photos pour /dev/vgDataMirror/lvPhotos
/mnt/_backup/videos pour /dev/vgDataMirror/lvVideos
/mnt/_backup/documents pour /dev/vgDataMirror/lvDocuments

Donc :
mkdir /mnt/musique /mnt/photos /mnt/videos /mnt/documents
mkdir /mnt/_backup/musique /mnt/_backup/photos /mnt/_backup/videos /mnt/_backup/documents

Si on ne veut pas que ces dossiers ne restent accesibles QUE à l'utilisateur ROOT... il faut alors penser à changer leur propriétaire, avec un petit coup de "chown owner:group /mnt/dossier" :)

Et maintenant le montage des partitions:
mount /dev/vgDataMain/lvMusique /mnt/musique
mount /dev/vgDataMain/lvPhotos /mnt/photos 
mount /dev/vgDataMain/lvVideos /mnt/videos
mount /dev/vgDataMain/lvDocuments /mnt/documents
et

mount /dev/vgDataMirror/lvMusique /mnt/_backup/musique
mount /dev/vgDataMirror/lvPhotos /mnt/_backup/photos 
mount /dev/vgDataMirror/lvVideos /mnt/_backup/videos
mount /dev/vgDataMirror/lvDocuments /mnt/_backup/documents

On peut vérifier que tout est monté correctement en listant les file-system à l'aide de df


Ajout dans fstab

C'est bien gentil de monter les partitions... mais on ne va pas le faire "à la main" à chaque re-démarrage !
Alors pour s'éviter du travail, on va ajouter ces partitions dans le fstab qui permet de monter automatiquement ces partitions au démarrage !

On va donc ajouter la ligne suivante pour chacune des partitions à monter dans le fichier /etc/fstab :
/dev/mapper/vgDataMain-lvMusique /mnt/musique ext4 defaults,nofail 0 0

L'option "nofail" permet de ne pas bloquer le démarrage du serveur si par malheur l'un des disque de Data venait à ne plus fonctionner.

Une fois les modifications effectuées, on peut vérifier qu'il n'y a pas d'erreur de syntaxe en démontant manuellement les partition et en les remontant à l'aide de ce fichier :
umount /mnt/musique
umount /mnt/photos
umount /mnt/videos
umount /mnt/documents
umount /mnt/_backup/musique
umount /mnt/_backup/photos
umount /mnt/_backup/videos
umount /mnt/_backup/documents
puis
mount -a
et enfin 
df -h
pour vérifer que toutes les partitions sont à nouveau là :)


Et voilà, elle est pas belle la vie ?
 :)

Aucun commentaire:

Enregistrer un commentaire