Projet

Général

Profil

BtrFs » Historique » Version 1

Fabien Dupont, 09/05/2013 13:01

1 1 Fabien Dupont
h1. BtrFs
2 1 Fabien Dupont
3 1 Fabien Dupont
h2. Présentation
4 1 Fabien Dupont
5 1 Fabien Dupont
BtrFs (se prononce « Butter FS ») est un filesystem de type CoW (« Copy on Write »). C'est à dire que deux données identiques (même CRC32) ne sont écrites qu'une seule fois sur le filesystem jusqu'à ce qu'une des deux soit modifiées.
6 1 Fabien Dupont
7 1 Fabien Dupont
Exemple :
8 1 Fabien Dupont
9 1 Fabien Dupont
<pre>
10 1 Fabien Dupont
$ cat toto > fichier1        # « toto » est écrit quelque part sur le disque dur
11 1 Fabien Dupont
$ cat toto > fichier2        # fichier2 devient un pointeur vers fichier1
12 1 Fabien Dupont
$ sed -ie 's/o/a/g' fichier2 # « tata » est écrit quelque part sur le disque dur
13 1 Fabien Dupont
                             # et fichier2 n'est plus un pointeur vers fichier1
14 1 Fabien Dupont
</pre>
15 1 Fabien Dupont
16 1 Fabien Dupont
De plus, BtrFs est différents des systèmes de fichiers « classiques » (ext2/3/4) car il offre les fonctionnalités suivantes :
17 1 Fabien Dupont
18 1 Fabien Dupont
* possibilité d'écrire le filesystem sur plusieurs disques : raid1, raid0, raid10 et depuis le kernel 3.9, raid5 ou raid6.
19 1 Fabien Dupont
* sous-volumes : il n'y a pas de notion de partitions mais un répertoire peut devenir la racine d'un nouveau volume.
20 1 Fabien Dupont
* snapshots : une image peut être créée et utilisée pour sauvegarder ou restaurer l'état d'un filesystem (ou d'un sous-volume) à un instant T.
21 1 Fabien Dupont
22 1 Fabien Dupont
h2. Création d'un filesystem BtrFs sous debian
23 1 Fabien Dupont
24 1 Fabien Dupont
Le paquet « btrfs-tools » offre les outils permettant la création et la gestion d'un filesystem BtrFs.
25 1 Fabien Dupont
26 1 Fabien Dupont
<pre>
27 1 Fabien Dupont
# apt-get install btrfs-tools
28 1 Fabien Dupont
</pre>
29 1 Fabien Dupont
30 1 Fabien Dupont
h3. Single
31 1 Fabien Dupont
32 1 Fabien Dupont
Les données et les métadonnées sont écrites sur un seul disque.
33 1 Fabien Dupont
34 1 Fabien Dupont
<pre>
35 1 Fabien Dupont
# mkfs.btrfs -d single /dev/sdb
36 1 Fabien Dupont
</pre>
37 1 Fabien Dupont
38 1 Fabien Dupont
h3. raid0
39 1 Fabien Dupont
40 1 Fabien Dupont
Les données sont « stripées » sur deux disques. Il faut donc un minimum de 2 disques.
41 1 Fabien Dupont
42 1 Fabien Dupont
<pre>
43 1 Fabien Dupont
# mkfs.btrfs -d raid0 -m raid0 /dev/sdb /dev/sdc
44 1 Fabien Dupont
</pre>
45 1 Fabien Dupont
46 1 Fabien Dupont
Par exemple pour un fichier contenant « abcdefgh », on aura sur les disques :
47 1 Fabien Dupont
48 1 Fabien Dupont
<pre>
49 1 Fabien Dupont
+-----+   +-----+
50 1 Fabien Dupont
| sdb |   | sdc |
51 1 Fabien Dupont
+-----+   +-----+
52 1 Fabien Dupont
|  a  |   |  b  |
53 1 Fabien Dupont
|  c  |   |  d  |
54 1 Fabien Dupont
|  e  |   |  f  |
55 1 Fabien Dupont
|  g  |   |  h  |
56 1 Fabien Dupont
+-----+   +-----+
57 1 Fabien Dupont
</pre>
58 1 Fabien Dupont
59 1 Fabien Dupont
Pros :
60 1 Fabien Dupont
61 1 Fabien Dupont
* Performance accrue en lecture, un fichier est lue sur deux disques, débit doublé.
62 1 Fabien Dupont
* Plusieurs disques sont vus en un seul volume.
63 1 Fabien Dupont
64 1 Fabien Dupont
Cons :
65 1 Fabien Dupont
66 1 Fabien Dupont
* Sécurité des données faible, si un seul disque tombe en panne, l'ensemble des données est perdue.
67 1 Fabien Dupont
68 1 Fabien Dupont
h3. raid1
69 1 Fabien Dupont
70 1 Fabien Dupont
Les données sont « mirrorées » sur deux disques. Il faut donc un minimum de 2 disques.
71 1 Fabien Dupont
72 1 Fabien Dupont
<pre>
73 1 Fabien Dupont
# mkfs.btrfs -d raid1 -m raid1 /dev/sdb /dev/sdc
74 1 Fabien Dupont
</pre>
75 1 Fabien Dupont
76 1 Fabien Dupont
Par exemple pour un fichier contenant « abcdefgh », on aura sur les disques :
77 1 Fabien Dupont
78 1 Fabien Dupont
<pre>
79 1 Fabien Dupont
+-----+   +-----+
80 1 Fabien Dupont
| sdb |   | sdc |
81 1 Fabien Dupont
+-----+   +-----+
82 1 Fabien Dupont
|  a  |   |  a  |
83 1 Fabien Dupont
|  b  |   |  b  |
84 1 Fabien Dupont
|  c  |   |  c  |
85 1 Fabien Dupont
|  d  |   |  d  |
86 1 Fabien Dupont
|  e  |   |  e  |
87 1 Fabien Dupont
|  f  |   |  f  |
88 1 Fabien Dupont
|  g  |   |  g  |
89 1 Fabien Dupont
|  h  |   |  h  |
90 1 Fabien Dupont
+-----+   +-----+
91 1 Fabien Dupont
</pre>
92 1 Fabien Dupont
93 1 Fabien Dupont
Pros :
94 1 Fabien Dupont
95 1 Fabien Dupont
* Sécurité des données forte, N-1 disques peuvent tomber en panne avant de perdre les données.
96 1 Fabien Dupont
97 1 Fabien Dupont
Cons :
98 1 Fabien Dupont
99 1 Fabien Dupont
* Pour N disques de taille T, on n'a que T octets à disposition.
100 1 Fabien Dupont
101 1 Fabien Dupont
h4. raid10
102 1 Fabien Dupont
103 1 Fabien Dupont
Les données sont « mirrorées » sur N/2 disques puis « stripées » entre les 2 N/2 disques. Il faut donc un minimum de 4 disques.
104 1 Fabien Dupont
105 1 Fabien Dupont
<pre>
106 1 Fabien Dupont
# mkfs.btrfs -d raid10 -m raid10 /dev/sdb /dev/sdc /dev/sdd /dev/sde
107 1 Fabien Dupont
</pre>
108 1 Fabien Dupont
109 1 Fabien Dupont
Par exemple pour un fichier contenant « abcdefgh », on aura sur les disques :
110 1 Fabien Dupont
111 1 Fabien Dupont
<pre>
112 1 Fabien Dupont
        <-------raid0------->
113 1 Fabien Dupont
<-----raid1----->   <-----raid1----->
114 1 Fabien Dupont
+-----+   +-----+   +-----+   +-----+
115 1 Fabien Dupont
| sdb |   | sdc |   | sdd |   | sde |
116 1 Fabien Dupont
+-----+   +-----+   +-----+   +-----+
117 1 Fabien Dupont
|  a  |   |  a  |   |  b  |   |  b  |
118 1 Fabien Dupont
|  c  |   |  c  |   |  d  |   |  d  |
119 1 Fabien Dupont
|  e  |   |  e  |   |  f  |   |  f  |
120 1 Fabien Dupont
|  g  |   |  g  |   |  h  |   |  h  |
121 1 Fabien Dupont
+-----+   +-----+   +-----+   +-----+
122 1 Fabien Dupont
</pre>
123 1 Fabien Dupont
124 1 Fabien Dupont
Pros :
125 1 Fabien Dupont
126 1 Fabien Dupont
* Sécurité des données forte, N-1 disques dans chaque morceau du raid0 peuvent tomber en panne avant de perdre les données.
127 1 Fabien Dupont
* Performance accrue en lecture, un fichier est lue sur deux disques, débit doublé.
128 1 Fabien Dupont
* Plusieurs disques sont vus en un seul volume.
129 1 Fabien Dupont
130 1 Fabien Dupont
Cons : 
131 1 Fabien Dupont
132 1 Fabien Dupont
* Pour N disques de taille T, on n'a que (N×T)/2 octets à disposition.