Subscribe RSS

Spydemon's personal blog

  • Clef GPG

Installation d’une Debian dans un sous-volume btrfs

15 avril 2017 Posté par Spydemon sous Sysadmin
Pas de commentaire

Salut tout le monde. 🙂 Voici un petit article qui explique brièvement comment installer Debian dans un sous-volume btrfs. L’idĂ©e est donc d’avoir la racine de notre OS « ailleurs » qu’Ă  celle du système de fichiers. De cette façon, il sera simple de faire des instantanĂ©s de tout notre OS et de pouvoir effectuer facilement des restaurations en cas de problème.

Mise en place du système

Pour commencer, je vous invite Ă  tĂ©lĂ©charger un Live CD de Debian Archlinux, puis de dĂ©marrer dessus. Je prĂ©fère utiliser celui d’Arch, car il possède dĂ©jĂ  de base pas mal de commandes bien pratiques qui permettent de rendre la tâche plus aisĂ©e.

Voici une procĂ©dure permettant l’installation. Toutes ces commandes sont Ă  Ă©crire une fois Archlinux correctement initialisĂ© :

1.1 > loadkeys fr-bepo
1.2 > mkfs.btrfs /dev/sda
1.3 > mount -t btrfs -o compress=lzo /dev/sda /mnt
1.4 > btrfs subvolume create /mnt/host
1.5 > mount -t btrfs -o compress=lzo,subvol=host /dev/sda /mnt/host 
1.6 > pacman -Sy debootstrap
1.7 > debootstrap --arch amd64 --variant minbase jessie /mnt/host http://ftp.fr.debian.org/debian
1.8 > mount -t proc none /mnt/host/proc
1.9 > mount -o bind /dev /mnt/host/dev
1.10 > genfstab -U /mnt/host > /mnt/host/etc/fstab 
1.11 > chroot /mnt/host /bin/bash
1.12 > passwd
1.13 > export PATH=$PATH:/bin:/sbin:/usr/sbin
1.14 > apt-get update
1.15 > apt-get install linux-image-amd64 grub2 btrfs-tools
1.16 > exit
1.17 > reboot

La première chose Ă  faire est de configurer la disposition du clavier pour Ă©viter les frustrations (commande 1.1). ^^ » Puis nous formatons directement le volume qui contiendra notre système (1.2). Ă€ prĂ©sent, nous avons Ă  configurer notre volume btrfs pour contenir le sous-volume qui accueillera la racine de l’OS (commande 1.3 Ă  1.5). On notera d’ailleurs que j’utilise la compression lzo pour les volumes, c’est facultatif. Ici, il peut ĂŞtre intĂ©ressant de crĂ©er d’autres sous-volumes pour Ă©viter de faire de futurs snapshots sur des Ă©lĂ©ments indĂ©sirables, ou pour gĂ©rer leurs rĂ©visions de façon sĂ©parĂ©es. Par exemple pour moi, cette vm me servira d’hyperviseur lxc. J’aurais donc des snapshots pour chaque rĂ©pertoire de /var/lib/lxc/. De cette façon, effectuer une restauration de l’hĂ´te n’impactera pas mes conteneurs, et il en va de mĂŞme pour la rĂ©ciproque. Une fois le système de fichier correctement configurĂ©, on a plus qu’Ă  y installer Debian via l’utilitaire debootstrap prĂ©vu Ă  cet effet (1.7).

Ă€ prĂ©sent, il est temps de configurer le fstab de notre futur OS, pour ce faire, on peut dĂ©jĂ  commencĂ© par monter manuellement /proc et /dev dans la racine du système de fichier utilisĂ© par l’OS (1.8 et 1.9), puis d’utiliser la commande genfstab pour nous gĂ©nĂ©rer une partie de notre fstab (1.10). Il faudra le mettre Ă  jour pour qu’au final, il ressemble Ă  ça :

UUID=b2187236-694a-40a0-a9ca-10f0838b0ca7	/ 	btrfs rw,relatime,compress=lzo,space_cache,subvol=host 0 0        btrfs 	rw,relatime,compress=lzo,space_cache,subvol=host 0 0    rw,relatime,compress=lzo,space_cache,subvol=host	0 0
UUID=b2187236-694a-40a0-a9ca-10f0838b0ca7	/mnt/volume 	btrfs rw,relatime,compress=lzo,space_cache 0 0   btrfs 	rw,relatime,compress=lzo,space_cache 0 0    rw,relatime,compress=lzo,space_cache	0 0
proc						/proc		proc	defaults

Bien entendu, il faudra conserver l’UUID correspondant Ă  votre disque, mais je vous invite Ă  faire deux modifications : enlever l’option subvolumid de l’entrĂ©e /, et d’ajouter un point de montage sur /mnt/volume correspondant Ă  la racine du volume btrfs. En ne conservant qu’une notion de nom de sous-volume au niveau du fstab, il nous sera permis de changer celui-ci sans avoir Ă  rééditer le fichier (ce qui aurait Ă©tĂ© nĂ©cessaire dans le premier cas, car l’id du sous-volume aurait changĂ©).

La dernière Ă©tape consiste Ă  la configuration et Ă  l’installation des derniers paquets au niveau de notre nouveau système. On commencera par faire un chroot pour changer notre contexte du Live CD, Ă  celui de notre nouveau système (commande 1.11). On pourra ensuite dĂ©finir un mot de passe pour le compte root (1.12) et mettre Ă  jour la variable d’environnement $PATH pour qu’elle ressemble plus Ă  ce que l’on peut trouver sur un système Debian (1.13). Enfin, il nous restera plus qu’Ă  installer une image du kernel, et Grub qui devrait ĂŞtre capable de se configurer automatiquement et d’ĂŞtre en mesure de booter le système. Le programme btrfs-tools servira Ă  encore avoir accès Ă  la commande btrfs, qui n’est pas prĂ©sente par dĂ©faut.

Testons tout ça une fois notre premier redĂ©marrage d’effectuĂ© :

2.1 > btrfs subvolume show /
/
	Name: 			host
	uuid: 			93c4231a-c61c-d246-9bbf-4b9cfcc4d8bd
	Parent uuid: 		-
	Creation time: 		2017-04-09 10:10:29
	Object ID: 		258
	Generation (Gen): 	4466
	Gen at creation: 	8
	Parent: 		5
	Top Level: 		5
	Flags: 			-
	Snapshot(s):

Réalisation des instantanés et restauration

3.1 > btrfs subvolume snapshot -r / /mnt/volume/host-snap1
Create a readonly snapshot of '/' in '/mnt/volume/host-snap1'

3.2 > btrfs subvolume list /
ID 258 gen 4469 top level 5 path host
[…]
ID 272 gen 4500 top level 5 path host-snap1

3.3 >  ls -lah /mnt/volume/
total 16K
drwxr-xr-x 1 root root 378 Apr 14 13:22 .
drwxr-xr-x 1 root root  42 Apr 14 13:17 ..
drwxr-xr-x 1 root root 186 Apr 14 13:21 host
drwxr-xr-x 1 root root 186 Apr 14 13:21 host-snap1
[…]

La commande 3.1 créé notre instantanĂ© de / Ă  l’emplacement /mnt/volume/host-snap1. Ce qui signifie, Ă  l’emplacement /host-snap1 du volume btrfs. La seconde commande (3.2) permet de confirmer la bonne crĂ©ation de celui-ci : on voit bien la crĂ©ation d’un nouveau sous-volume dont l’id est le 272. Ă€ prĂ©sent, toutes les modifications que l’on fera sur / n’impacterons pas /mnt/volume/host-snap1. Enfin, la commande 3.3 n’est lĂ  que pour nous montrer Ă  quel point la gestion interne de btrfs est transparente, car notre instantanĂ© peu s’utiliser de la mĂŞme façon que n’importe quel dossier.

Vu que dĂ©monter / n’est pas très faisable sur un système en cours d’utilisation, pour restaurer un instantanĂ© Ă  ce niveau, on aura d’autres choix que de le faire de façon « externe » (c’est-Ă -dire depuis un autre OS). La plus simple des façons est donc de remonter notre Live CD d’Archlinux et d’y effectuer les commandes suivantes :

4.1 > mount -t btrfs /dev/sda /mnt
4.2 > btrfs subvolume delete /mnt/host
Delete subvolume (no-commit): '/mnt/host'
4.3 > btrfs subvolume snapshot /mnt/host-snap1 /mnt/host
Create a snapshot of '/mnt/host-snap1' in '/mnt/host'
4.4 > reboot

Comme pour la première fois, on monte notre système de fichier (4.1). Ensuite, on supprime le sous-volume que l’on utilisait prĂ©cĂ©demment (4.2), puis nous en crĂ©ons un nouveau, en lecture-Ă©criture cette fois, de notre backup vers le point de montage /mnt/host sur lequel on redĂ©marrera les fois futures. Après un reboot et un retrait du CD, nous pouvons constatĂ© le succès du rollback :

5.1 > btrfs subvolume list /
ID 272 gen 4500 top level 5 path host-snap1
ID 273 gen 4534 top level 5 path host

5.2 > btrfs subvolume show /
/
	Name: 			host
	uuid: 			0a63e313-9561-794c-8bf7-adc34a361d29
	Parent uuid: 		9bd74b18-3405-174a-b413-961086c9a712
	Creation time: 		2017-04-14 13:45:16
	Object ID: 		273
	Generation (Gen): 	4535
	Gen at creation: 	4500
	Parent: 		5
	Top Level: 		5
	Flags: 			-
	Snapshot(s):

L’object ID du sous-volume montĂ© Ă  la racine est bien le 273, qui n’est autre qu’un sous-volume en lecture/Ă©criture de 272, reprĂ©sentant un instantanĂ© de 258, qui n’existe plus, car on l’a supprimĂ©.


Crédit image :
  • Les bonhommes en couverture, du site yourgenome.org.
    Tags: btrfs, restauration

Laisser un commentaire Annuler la réponse

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

*

*

Code Anti-spam
Rafraîchir

*

Click to cancel reply
« Comprendre AppArmor
Petite introduction Ă  ZFS »
Catégories
  • DIY (4)
  • Electronique (3)
  • Expatriations (15)
    • 1. Squat Grenoble 2010 (8)
    • 2. Camping Haspelschiedt 2010 (5)
  • Informations (1)
  • LTDI (4)
  • PensĂ©s abstraites (8)
  • PĂ©riples (7)
  • Programmation (22)
    • EmbarquĂ© (2)
    • Maintenance (1)
    • Sysadmin (7)
    • ThĂ©orie (6)
  • VIA (3)
Étiquettes
amplificateur ampoule ancien AOP Atmel bac backup blog C++ carton convertion crous Danemark DBus denmark dut début développeur facebook France GIO GTK Horsens infixe lampe led Linux lucie M1280 opérationnel orientation photo podcast postbac postfixe profil présentation Raspberry Pi réseaux sondage sécurité tension VIA voyage économie
Archives
  • aoĂ»t 2018 (1)
  • juin 2018 (1)
  • novembre 2017 (1)
  • juillet 2017 (1)
  • juin 2017 (1)
  • avril 2017 (1)
  • janvier 2017 (1)
  • juillet 2016 (1)
  • juin 2016 (1)
  • avril 2016 (1)
  • novembre 2015 (2)
  • mai 2015 (2)
  • avril 2015 (1)
  • fĂ©vrier 2015 (1)
  • dĂ©cembre 2014 (1)
  • dĂ©cembre 2013 (1)
  • novembre 2013 (2)
  • septembre 2013 (2)
  • juin 2013 (1)
  • mai 2013 (1)
  • avril 2013 (1)
  • janvier 2013 (1)
  • novembre 2012 (1)
  • aoĂ»t 2012 (1)
  • juillet 2012 (2)
  • mai 2012 (2)
  • avril 2012 (2)
  • mars 2012 (1)
  • fĂ©vrier 2012 (1)
  • janvier 2012 (2)
  • dĂ©cembre 2011 (4)
  • novembre 2011 (1)
  • octobre 2011 (1)
  • juin 2011 (1)
  • mai 2011 (1)
  • dĂ©cembre 2010 (1)
  • aoĂ»t 2010 (2)
  • juillet 2010 (4)
  • mai 2010 (9)
  • mars 2010 (3)
Blogs d'amis
  • Choix Libres
  • Johnn'y Space
  • Shades of blue
  • Soulou's blog
Articles récents
  • L’histoire de la crĂ©ation de Linux
  • Comment juger de la qualitĂ© de la connectivitĂ© d’un site Web ?
  • Une introduction aux graphiques avec R
  • RĂ©alisation d’une (grosse) armoire en carton
  • Comprendre AppArmor
Commentaires récents
  • Raclet dans Bookeen et leur foutage de gueule
  • Gregory dans Bookeen et leur foutage de gueule
  • chataigne dans Bookeen et leur foutage de gueule
  • Alain Riou dans Bookeen et leur foutage de gueule
  • Rodrigues dans Bookeen et leur foutage de gueule
Spydemon's personal blog powered by WordPress and The Clear Line Theme

Compression Plugin created by Jake Ruston's Wordpress Plugins - Powered by Protection Racket and Kanye West.