2009/04/18

Changer le disque système sur FreeBSD

La manipulation suivante a été faite sur un FreeBSD 8-CURRENT récent "kern.osreldate: 800074" Je ne sais pas si elle fonctionne sur les versions 7.x out of box. Qui plus est gjournal pour la partition / pose des soucis sur les freebsd plus vieux que FreeBSD 7.2.

La disque système de ma machine commençait à faire des siennes dessus il y avait mon / et mon /home le reste était réparti sur les autres disques durs.

Je voulais donc changer de disque dur sans me prendre la tête (ie sans livecd, sans réinstaller) Comme c'est une machine perso je ne me suis pas pris la tête sur le partitionnement, le disque faisant 80Gio j'ai mis :

J'ai donc rajouté un disque de la même taille sur la machine (il m'en restait un qui traînait dans un coin), enfin n'importe quel disque aurait pu faire l'affaire.

Une fois la machine bootée je me retrouve avec mon nouveau disque (ad2) et mon ancien disque (ad3)

Préparation du disque ad2

Pour le fun je me suis dis que j'allais partitionner mon disque au format GPT, puisque c'est à la mode (ça sert à rien dans mon cas, mais je voulais jouer avec)

j'ai donc détruit le partionnement existant :

$ gpart destroy ad2

Puis recréer en précisant le système de partitionnement GPT

$ gpart create -s GPT ad2

Une vérification que tout c'est bien passé :

$ gpart show
=>       34  156301421  ad2  GPT  (75G)
    	 34  156301421        - free -  (75G)

Les BIOS classiques ne sont pas capable de booter sur du GPT, mais sous FreeBSD il y a une astuce qui marche impeccable

$ gpart add -b 34 -s 16 -t freebsd-boot ad2
$ gpart bootcode -b /boot/pmbr ad2
$ cp /boot/gptboot /tmp
$ dd if=/dev/zero bs=641 count=1 >> /tmp/gptboot
$ dd if=/tmp/gptboot of=/dev/ad2p1 bs=512

ainsi le système est bootable;

j'ai plus qu'à recréer mes partitions

$ gpart add -b 50 -s 20971520 -t freebsd-ufs ad2
$ gpart add -b 20971570 -s 4194304 -t freebsd-swap ad2
$ gpart add -b 25165874 -s 131135581 -t freebssd-ufs ad2

Vérification :

$ gpart show
=>       34  156301421  ad2  GPT  (75G)
	 34         16    1  freebsd-boot  (8.0K)
	 50   20971520    2  freebsd-ufs  (10G)
   20971570    4194304    3  freebsd-swap  (2.0G)
   25165874  131135581    4  freebsd-ufs  (63G)

maintenant j'active le gjournal pour les partitions ufs

$ gjournal label /dev/ad2p2
$ gjournal label /dev/ad2p4

On format le tout (pour rappel sous freebsd pas besoin de formatter les partitions swap

$ newfs -J -L root /dev/ad2p2.journal
$ newfs -J -L home /dev/ad2p4.journal

Le -L signifie que l'on écrit un label ainsi les partitions sont facilement montable grâce à GLABEL qui les représente sous la forme : /dev/ufs/LABEL

Migration des données

maintenant il s'agit de migrer le contenu des partitions / et /home sur les nouvelles le tout à chaud :

$ mkdir /newroot
$ mount -o async /dev/ufs/root /newroot
$ cd /newroot
$ dump -0uanL -f - / | restore -rf -
$ mkdir /home2
$ mount -o async /dev/ufs/home /home2
$ cd /home2
$ dump -0uanL -f - /home | restore -rf -

il faut pour finir modifier la fstab du nouveau root pour rajouter :

Le fichier /etc/fstab obtenu est donc :

# Device		Mountpoint	FStype	Options		Dump	Pass#
/dev/ad2p3		none		swap	sw		0	0
/dev/ufs/root		/		ufs	rw,async	1	1
/dev/ufs/bapt		/home	ufs	rw,async	1	1

Il ne reste plus qu'à rebooter dessus.

Name :
URL (optional) :
Write here: "ETOOMUCHSPAM"
Comments :