Blog personnel d'Alex Sbille sur les technologies, et autres de mes centres d’intérêts.

Aller au contenu | Aller au menu | Aller à la recherche

lundi 24 février 2014

Move a system from single hdd to software raid

Tested into a Debian 8 distro with raid5 and raid1.

Migrate any existing system ext3 (multiple or single partitions) with a stand alone hdd on a Software replicated raid.

Install mdadm before the system is replicated on the new array or chrooting will be neccesary for booting the future system on the raid.

apt-get install mdadm

#with ubuntu like

sudo apt-get remove dmraid

Retrive disks infos

fdisk -l

Create partitions on the new drives before building the array.

Grub partition need at lest of 1MB but it can be more in the future.

parted /dev/sda
unit kb
p free
#if needed with fresh drives : mklabel gpt
mkpart primary ext3 0 10M
mkpart primary ext3 10M 100%
#(very important)
set 1 bios_grub on
p free
q
partprobe /dev/sda
partprobe /dev/sdb

And do th same for each drives of the future array, grub will be installed on each disks.

Other way for flag grub_on

parted /dev/sda1 set 1 bios_grub on
parted /dev/sdb1 set 1 bios_grub on

Create the filesystem for raid on all disks

mkfs -t ext3 /dev/sda2
mkfs -t ext3 /dev/sdb2

Create the array (here raid1)

mdadm --create --verbose /dev/md0 --level=1 --raid-devices=2 /dev/sda2 /dev/sdb2

View live progression very long for 2TB drives

watch -n 1 cat /proc/mdstat

Create filesystem on the raid.

-m 2 for 2% of inodes

-m 2 pour 2% d'inodes

mkfs.ext3 /dev/md0 -m 2

Put a new line in the fstab

blkid
nano /etc/fstab

UUID=87b54395-1737-435b-b2a8-b4120ee4060d /             ext3 relatime 0 0

Update mdadm.

cat /etc/mdadm/mdadm.conf
mdadm --detail --scan --verbose >> /etc/mdadm/mdadm.conf
cat /etc/mdadm/mdadm.conf

Mount it.

mkdir /media/raid1/ && mount /dev/md0 /media/raid1/ &&  df -h && cd  /media/raid1/

At this time, synchronize the actual system on the raid.

rsync -aAXv --stats --progress /* /media/raid1/ --exclude={/dev/*,/proc/*,/sys/*,/tmp/*,/run/*,/mnt/*,/media/*,/net*,/lost+found}

Chroot in the future live system.

cd /media/raid1/
mount -t proc proc proc/
mount --rbind /sys sys/
mount --rbind /dev dev/
chroot /media/raid1 /bin/bash

Update the fstab with goods uuid.

blkid
cp /etc/fstab /etc/fstab.bkp
nano /etc/fstab

Install grub on all drives of the array.

grub-install /dev/sda
grub-install /dev/sdb
update-grub
#or
update-grub2

Update the initial ram disk for automount the array during boot

update-initramfs -u

Exit from chroot and reboot, in my case, I unplug the old harddrive

All should run like a charm included grub.

fdisk -l

Attention : identifiant de table de partitions GPT (GUID) détecté sur « /dev/sdb » ! L'utilitaire sfdisk ne prend pas GPT en charge. Utilisez GNU Parted.

Disque /dev/sdb : 2000.4 Go, 2000398934016 octets

255 têtes, 63 secteurs/piste, 243201 cylindres, total 3907029168 secteurs

Unités = secteurs de 1 * 512 = 512 octets

Taille de secteur (logique / physique) : 512 octets / 4096 octets

taille d'E/S (minimale / optimale) : 4096 octets / 4096 octets

Identifiant de disque : 0x00000000

Périphérique Amorce  Début        Fin      Blocs     Id  Système

/dev/sdb1               1  3907029167  1953514583+  ee  GPT

La partition 1 ne commence pas sur une frontière de cylindre physique.

Attention : identifiant de table de partitions GPT (GUID) détecté sur « /dev/sda » ! L'utilitaire sfdisk ne prend pas GPT en charge. Utilisez GNU Parted.

Disque /dev/sda : 2000.4 Go, 2000398934016 octets

255 têtes, 63 secteurs/piste, 243201 cylindres, total 3907029168 secteurs

Unités = secteurs de 1 * 512 = 512 octets

Taille de secteur (logique / physique) : 512 octets / 512 octets

taille d'E/S (minimale / optimale) : 512 octets / 512 octets

Identifiant de disque : 0x00000000

Périphérique Amorce  Début        Fin      Blocs     Id  Système

/dev/sda1               1  3907029167  1953514583+  ee  GPT

Disque /dev/md0 : 2000.3 Go, 2000262529024 octets

2 têtes, 4 secteurs/piste, 488345344 cylindres, total 3906762752 secteurs

Unités = secteurs de 1 * 512 = 512 octets

Taille de secteur (logique / physique) : 512 octets / 4096 octets

taille d'E/S (minimale / optimale) : 4096 octets / 4096 octets

Identifiant de disque : 0x00000000

Le disque /dev/md0 ne contient pas une table de partitions valable

Links helped me:

http://velenux.wordpress.com/2012/07/12/grub-failing-to-install-on-debianubuntu-with-gpt-partitions/

http://forums.linuxmint.com/viewtopic.php?f=90&t=95928

http://forums.debian.net/viewtopic.php?f=5&t=92810

http://unix.stackexchange.com/questions/28443/does-grub2-support-putting-boot-on-a-raid5-partition

http://askubuntu.com/questions/252795/convert-running-system-to-raid-5

https://wiki.archlinux.org/index.php/Full_System_Backup_with_rsync

https://wiki.archlinux.org/index.php/Change_Root

https://wiki.archlinux.org/index.php/Convert_a_single_drive_system_to_RAID

Partage

dimanche 23 février 2014

Migrer d'un système mono-disque vers raid logiciel

Testé avec une distro Debian 8 en raid5 puis raid1.

Migrer d'un système en ext3 (avec une ou plusieurs partitions) avec un seul disque vers un raid logiciel.

Installer mdadm avant la synchronisation pour que lorsque l'on bootera plus tard dans le système répliqué, autrement, il faudrait chrooter pour l'installer pour pouvoir booter avec le système sur raid logiciel.

apt-get install mdadm

#with ubuntu like

sudo apt-get remove dmraid

Etat des lieux des disques

fdisk -l

Créer les partitions sur les nouveaux disques avant de crée le raid logiciel.

Une partition de 1MB est normalement suffisante pour grub mais dans le futur cela pourrait augmenter.

parted /dev/sda
unit kb
p free
#si besoin avec des disques vierges : mklabel gpt
mkpart primary ext3 0 10M
mkpart primary ext3 10M 100%
#(vital pour grub)
set 1 bios_grub on
p free
q
partprobe /dev/sda
partprobe /dev/sdb

Et faire de même pour tous les disques du futur raid car nous installerons grub sur chacun des disques.

Autre méthode pour le flag grub_on

parted /dev/sda1 set 1 bios_grub on
parted /dev/sdb1 set 1 bios_grub on

Créer système de fichier sur lequel sera hébergé le raid sur tous les disques.

mkfs -t ext3 /dev/sda2
mkfs -t ext3 /dev/sdb2

Créer le raid (ici raid1).

mdadm --create --verbose /dev/md0 --level=1 --raid-devices=2 /dev/sda2 /dev/sdb2

Voir la progression en temps réél, c'est long pour des disques 2TB.

watch -n 1 cat /proc/mdstat

Créer le système de fichiers sur le raid.

-m 2 for 2% of inodes

-m 2 pour 2% d'inodes

mkfs.ext3 /dev/md0 -m 2

Mettre le raid dans le fstab

blkid
nano /etc/fstab

UUID=87b54395-1737-435b-b2a8-b4120ee4060d /             ext3 relatime 0 0

Mettre à jour mdadm.

cat /etc/mdadm/mdadm.conf
mdadm --detail --scan --verbose >> /etc/mdadm/mdadm.conf
cat /etc/mdadm/mdadm.conf

Monter le.

mkdir /media/raid1/ && mount /dev/md0 /media/raid1/ &&  df -h && cd  /media/raid1/

Une fois le raid vierge en place, synchroniser le système actuel vers le raid.

rsync -aAXv --stats --progress /* /media/raid1/ --exclude={/dev/*,/proc/*,/sys/*,/tmp/*,/run/*,/mnt/*,/media/*,/net*,/lost+found}

Chroot dans le future système live.

cd /media/raid1/
mount -t proc proc proc/
mount --rbind /sys sys/
mount --rbind /dev dev/
chroot /media/raid1 /bin/bash

Mettre à jour le fstab avec les bons uuid.

blkid
cp /etc/fstab /etc/fstab.bkp
nano /etc/fstab

Install grub on all drives of the array.

Installer grub sur tous les disques du raid.

grub-install /dev/sda
grub-install /dev/sdb
update-grub
#or
update-grub2

Mettre à jour le ram disk pour que le raid soit automatiquement monté durant le boot

update-initramfs -u

Sortir du chroot et redemarrer, dans mon cas, je débranche le vieux disque.

Tout devrait tourner sur le nouveau raid sans accroc avec grub opérationel.

fdisk -l

Attention : identifiant de table de partitions GPT (GUID) détecté sur « /dev/sdb » ! L'utilitaire sfdisk ne prend pas GPT en charge. Utilisez GNU Parted.

Disque /dev/sdb : 2000.4 Go, 2000398934016 octets

255 têtes, 63 secteurs/piste, 243201 cylindres, total 3907029168 secteurs

Unités = secteurs de 1 * 512 = 512 octets

Taille de secteur (logique / physique) : 512 octets / 4096 octets

taille d'E/S (minimale / optimale) : 4096 octets / 4096 octets

Identifiant de disque : 0x00000000

Périphérique Amorce  Début        Fin      Blocs     Id  Système

/dev/sdb1               1  3907029167  1953514583+  ee  GPT

La partition 1 ne commence pas sur une frontière de cylindre physique.

Attention : identifiant de table de partitions GPT (GUID) détecté sur « /dev/sda » ! L'utilitaire sfdisk ne prend pas GPT en charge. Utilisez GNU Parted.

Disque /dev/sda : 2000.4 Go, 2000398934016 octets

255 têtes, 63 secteurs/piste, 243201 cylindres, total 3907029168 secteurs

Unités = secteurs de 1 * 512 = 512 octets

Taille de secteur (logique / physique) : 512 octets / 512 octets

taille d'E/S (minimale / optimale) : 512 octets / 512 octets

Identifiant de disque : 0x00000000

Périphérique Amorce  Début        Fin      Blocs     Id  Système

/dev/sda1               1  3907029167  1953514583+  ee  GPT

Disque /dev/md0 : 2000.3 Go, 2000262529024 octets

2 têtes, 4 secteurs/piste, 488345344 cylindres, total 3906762752 secteurs

Unités = secteurs de 1 * 512 = 512 octets

Taille de secteur (logique / physique) : 512 octets / 4096 octets

taille d'E/S (minimale / optimale) : 4096 octets / 4096 octets

Identifiant de disque : 0x00000000

Le disque /dev/md0 ne contient pas une table de partitions valable

Les liens qui m'ont aidés:

http://velenux.wordpress.com/2012/07/12/grub-failing-to-install-on-debianubuntu-with-gpt-partitions/

http://forums.linuxmint.com/viewtopic.php?f=90&t=95928

http://forums.debian.net/viewtopic.php?f=5&t=92810

http://unix.stackexchange.com/questions/28443/does-grub2-support-putting-boot-on-a-raid5-partition

http://askubuntu.com/questions/252795/convert-running-system-to-raid-5

https://wiki.archlinux.org/index.php/Full_System_Backup_with_rsync

https://wiki.archlinux.org/index.php/Change_Root

https://wiki.archlinux.org/index.php/Convert_a_single_drive_system_to_RAID

Partage