Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#26 Le 02/11/2011, à 17:59

Havany

Re : Sécuriser mon fonctionnement

Claude LENDREVIE a écrit :

Les conseils d'Haleth sont excellents: utiliser un système Raid-1.
Mais cette méthode nécessite de bien paramétrer les disques lors de l'installation d'Ubuntu, ce qui n'est pas mon cas: seul mon 2ème disque peut être paramétré à souhait (il est vierge). Mais je ne peux absolument pas toucher mon disque 1 !!!
Donc, je pense que cette méthode ne peut pas me convenir. Je vais peut-être me contenter d'utiliser quelque chose comme grsync, mais ce ne sera jamais une solution idéale en cas de panne subite de mon disque 1 !

Bonjour,

Je reviens sur ce qui a été dit au début et confirme que la migration vers du RAID1 est à mon sens la solution la plus pertinente.
Et la migration à chaud est possible sans perte de données. Voilà un petit tuto : Migration à chaud RAID1

J'ai effectué ce type de migration de nombreuses fois sans rencontrer aucun problème sur Ubuntu, Debian et Fedora.

Deux choses auxquelles il faut faire attention :
- la partition /boot : où le RAID doit être créé avec la version 0.90 pour les metadata
- et cette même partition devrait être en ext3
Ces deux points sont important pour le fonctionnement de grub.

Cependant ces deux points ont sûrement été réglés depuis (et si tu es en version 8.04 alors je pense que le problème ne se pose même pas).

Bonne journée

Hors ligne

#27 Le 02/11/2011, à 18:10

Havany

Re : Sécuriser mon fonctionnement

Tiens voici un pense bête que je m'étais fais -> c'est du pas à pas. Désolés pour la mise en forme, c'est du copier collé.

Points IMPORTANTS

Par défaut lors de la création des ARRAY (nom donné aux assemblage de partition pour créer le RAID) mdadm crée par défaut des ARRAY avec une version du superblock 1.2. Hors grub est incapable de booter sur une telle partition. Il faudra donc créer la partition /boot en forçant les metadata en version 0.90 grâce à l'option "--metadata=0.90".
À priori le problème ne devrait plus se poser dans les futures versions de GRUB.


Procédure

Pour l'exemple nous allons partir du postulat suivant : nous avons un serveur avec un disque système partitionné de telle manière :
==> /dev/sda :

    /dev/sda1 /boot
    /dev/sda2 swap
    /dev/sda3 / 

Nous décidons de rajouter un disque (/dev/sdb) de même taille que sda afin de pouvoir construire le raid. --> sdb peut aussi être plus grand

==> L'idée consiste à procéder à ce changement à chaud :

Pour cela nous allons commencer par partitionner le nouveau disque sdb de la même façon que sda :

# sfdisk -d /dev/sda | sfdisk /dev/sdb

Puis nous allons faire passer le type des systèmes de fichiers en raid_auto_detect :

# fdisk /dev/sdb
t
1
fd
t
2
fd
t
3
fd
w

Création des RAID "dégradés"

Il faut d'abord charger les modules permettant de gérer le RAID :

# modprobe raid1
# modprobe md_mod

À partir des nouvelles partitions sur /dev/sdb nous allons créer des partition RAID1 dégradés, c'est à dire des partitions RAID1 ne comportant qu'un seul disque.

Mise à zéro du superblock de la partition

# mdadm --zero-superblock /dev/sdb1
# mdadm --zero-superblock /dev/sdb2
# mdadm --zero-superblock /dev/sdb3

Si il y a une erreur on peut utiliser dd :

# dd if=/dev/zero of=/dev/sdb1 bs=1M count=128
# dd if=/dev/zero of=/dev/sdb2 bs=1M count=128
# dd if=/dev/zero of=/dev/sdb3 bs=1M count=128

On peut ensuite créer les device RAID md0 :

# mdadm --create /dev/md1 --level 1 --raid-devices=2 missing /dev/sdb2
# mdadm --create /dev/md2 --level 1 --raid-devices=2 missing /dev/sdb3
                    ^                                   ^
                    |__Nom de la ressource              |__Spécifie à mdadm que le RAID est construit en mode dégradé et que le second disque est manquant

Comme dit précédemment les metadata de la partition /boot doivent être à la version 0.90 (1.0 fonctionne peut-être aussi) :

# mdadm --create /dev/md0 --level 1 --metadata=0.90 --raid-devices=2 missing /dev/sdb1
                                         ^
                                         |__Force l'utilisation de la version 0.90 pour les meta-données

Nous pouvons maintenant formater les nouvelles partitions :

# mkfs.ext3 /dev/md0
# mkfs.ext3 /dev/md2
# dd if=/dev/zero of=/dev/md1 bs=1M
# mkswap /dev/md1

Préparation du premier reboot

Tout d'abord il faut modifier /etc/fstab pour qu'il monte les nouvelles partition RAID à la place des anciennes. Pour cela on va utiliser l'UUID des disques :

# blkid /dev/md*
/dev/md0 UUID="4148c5c9-c5ec-4907-999b-b96c213388b6" TYPE="ext3"
/dev/md1 UUID="5fed03be-6709-4916-9c58-efb182cc16b7" TYPE="swap"
/dev/md2 UUID="82a3bb51-7b65-4405-8342-1dd658ca7673" TYPE="ext3"

# vim /etc/fstab
# /etc/fstab: static file system information.
#
# <file system> <mount point>   <type>  <options>       <dump>  <pass>
proc            /proc           proc    defaults        0       0
# /dev/md2
UUID="82a3bb51-7b65-4405-8342-1dd658ca7673"       /               ext3    errors=remount-ro 0       1
#/dev/md0
UUID="4148c5c9-c5ec-4907-999b-b96c213388b6"       /boot           ext3    defaults        0       2
#/dev/md1
UUID="5fed03be-6709-4916-9c58-efb182cc16b7"        none            swap    sw              0       0
.....

Puis on modifie le fichier mdadm.conf :

# mdadm  --detail --scan >> /mnt/etc/mdadm/mdadm.conf

On ajoute les modules nécessaire pour l'initrd (raid1 et md_raid) :

# vim /etc/initramfs-tools/modules

# List of modules that you want to include in your initramfs.
#
# Syntax:  module_name [args ...]
#
# You must run update-initramfs(8) to effect this change.
#
# Examples:
#
# raid1
# sd_mod
## Pour faire le boot sur md
raid1
md_mod
###

On va ensuite modifier /etc/mtab afin de pouvoir prendre en compte le RAID lors de la génération de l'initrd et de grub en remplaçant les entrée sda par les raid mdX correspondant. /etc/mtab doit alors ressembler à quelque chose comme :

/dev/md2 / ext3 rw,errors=remount-ro 0 0
tmpfs /lib/init/rw tmpfs rw,nosuid,mode=0755 0 0
proc /proc proc rw,noexec,nosuid,nodev 0 0
sysfs /sys sysfs rw,noexec,nosuid,nodev 0 0
udev /dev tmpfs rw,mode=0755 0 0
tmpfs /dev/shm tmpfs rw,nosuid,nodev 0 0
devpts /dev/pts devpts rw,noexec,nosuid,gid=5,mode=620 0 0
/dev/md0 /boot ext3 rw 0 0
nfsd /proc/fs/nfsd nfsd rw 0 0

On créé un fichier temporaire pour démarrer avec grub sur le RAID pour la racine, à partir d'un squelette :

#  cp /etc/grub.d/40_custom /etc/grub.d/09_swraid1_setup

Dans lequel nous allons rajouter la première section commençant par "menuentry" dans /boot/grub/grub.cfg. On apportera une seule modification, c'est l'UUID de la ligne commençant par linux. Nous allons mettre à la place l'UUID de /dev/md2 correspondant à la racine :

 menuentry 'Debian GNU/Linux, avec Linux 2.6.32-5-amd64' --class debian --class gnu-linux --class gnu --class os {
        insmod raid
        insmod mdraid
        insmod part_msdos
        insmod part_msdos
        insmod ext2
        set root='(md0)'
        search --no-floppy --fs-uuid --set 4148c5c9-c5ec-4907-999b-b96c213388b6
        echo    'Chargement de Linux 2.6.32-5-amd64 ...'
        linux   /vmlinuz-2.6.32-5-amd64 root=UUID=82a3bb51-7b65-4405-8342-1dd658ca7673 ro  quiet rootdelay=15
        echo    'Chargement du disque mémoire initial ...'
        initrd  /initrd.img-2.6.32-5-amd64
}

On obtient donc :

#!/bin/sh
exec tail -n +3 $0
# This file provides an easy way to add custom menu entries.  Simply type the
# menu entries you want to add after this comment.  Be careful not to change
# the 'exec tail' line above.
menuentry 'Debian GNU/Linux, avec Linux 2.6.32-5-amd64' --class debian --class gnu-linux --class gnu --class os {
        insmod raid
        insmod mdraid
        insmod part_msdos
        insmod part_msdos
        insmod ext2
        set root='(md0)'
        search --no-floppy --fs-uuid --set 4148c5c9-c5ec-4907-999b-b96c213388b6
        echo    'Chargement de Linux 2.6.32-5-amd64 ...'
        linux   /vmlinuz-2.6.32-5-amd64 root=UUID=82a3bb51-7b65-4405-8342-1dd658ca7673 ro  quiet rootdelay=15
        echo    'Chargement du disque mémoire initial ...'
        initrd  /initrd.img-2.6.32-5-amd64
}

Ceci va créer une nouvelle entrée dans le menu grub permettant de booter entièrement sur le RAID, tout en conservant les autres entrées par sécurité.

Puis on régénère l'initrd et grub :

# update-initramfs -u
# update-grub
# grub-install /dev/sda
# grub-install /dev/sdb

Et enfin on copie les données sur les partitions mdx et on redémarre :

# mkdir /mnt/racine /mnt/boot
# mount /dev/md0 /mnt/boot
# mount /dev/md2 /mnt/racine
# cp -dpRx /boot/* /mnt/boot
# cp -dprx / /mnt/racine
# reboot

Finalisation

Après le redémarrage on est normalement sur le RAID. Il suffit maintenant de finir la construction du RAID :

# sfdisk -d /dev/sdb | sfdisk /dev/sda
# mdadm --add /dev/md0 /dev/sda1
# mdadm --add /dev/md1 /dev/sda2
# mdadm --add /dev/md2 /dev/sda3

On met à jour mdadm.conf

# mdadm  --detail --scan >> /mnt/etc/mdadm/mdadm.conf

Puis on édite ce fichier afin de retirer les lignes ajouté avec le précédente commande pour ne laisser que les dernières.

Les disques vont alors se synchroniser.
On peut aussi supprimer le fichier temporaire pour grub et régénérer grub et initramfs :

# rm /etc/grub.d/09_swraid1_setup
# update-grub
# update-initramfs -u

Si la commande "update-initramfs -u" retourne une erreur on peut faire :

# update-initramfs -ut

Si la commande grub retourne une erreur on peut reconfigurer grub :

# dpkg-reconfigure grub-pc

Enfin un dernier reboot permet de s'assurer que la configuration est correcte.

Hors ligne

#28 Le 02/11/2011, à 18:26

Claude LENDREVIE

Re : Sécuriser mon fonctionnement

Certes c'est une solution qui a le mérite d'exister. Mais il faut bien avouer que c'est assez complexe comme manipulation.
Merci Havany.

Hors ligne

#29 Le 08/11/2011, à 13:33

Mathieu147

Re : Sécuriser mon fonctionnement

Bonjour,

Je maintiens à jour un tutoriel pour mettre sa partition /home sur un RAID.

C'est une manipulation assez facile qui ne nécessite pas de réinstallation, et qui survit très bien à la mise à jour de Ubuntu (j'ai fait mon RAID avec Ubuntu 10.04, et j'ai mis à jour sans problème vers 10.10, puis 11.04, puis 11.10 sans jamais avoir de souci avec mon RAID). Il y a 2 fichiers de configuration à modifier, mais c'est essentiellement graphique. Tu trouveras ça ici.


Pffff…

Hors ligne

#30 Le 08/11/2011, à 14:50

Claude LENDREVIE

Re : Sécuriser mon fonctionnement

Merci beaucoup Mathieu147.

Hors ligne