BtrFs » Historique » Version 4
Fabien Dupont, 09/05/2013 14:26
1 | 1 | Fabien Dupont | h1. BtrFs |
---|---|---|---|
2 | 1 | Fabien Dupont | |
3 | 2 | Fabien Dupont | {{>toc}} |
4 | 2 | Fabien Dupont | |
5 | 1 | Fabien Dupont | h2. Présentation |
6 | 1 | Fabien Dupont | |
7 | 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. |
8 | 1 | Fabien Dupont | |
9 | 1 | Fabien Dupont | Exemple : |
10 | 1 | Fabien Dupont | |
11 | 1 | Fabien Dupont | <pre> |
12 | 1 | Fabien Dupont | $ cat toto > fichier1 # « toto » est écrit quelque part sur le disque dur |
13 | 1 | Fabien Dupont | $ cat toto > fichier2 # fichier2 devient un pointeur vers fichier1 |
14 | 1 | Fabien Dupont | $ sed -ie 's/o/a/g' fichier2 # « tata » est écrit quelque part sur le disque dur |
15 | 1 | Fabien Dupont | # et fichier2 n'est plus un pointeur vers fichier1 |
16 | 1 | Fabien Dupont | </pre> |
17 | 1 | Fabien Dupont | |
18 | 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 : |
19 | 1 | Fabien Dupont | |
20 | 1 | Fabien Dupont | * possibilité d'écrire le filesystem sur plusieurs disques : raid1, raid0, raid10 et depuis le kernel 3.9, raid5 ou raid6. |
21 | 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. |
22 | 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. |
23 | 1 | Fabien Dupont | |
24 | 1 | Fabien Dupont | h2. Création d'un filesystem BtrFs sous debian |
25 | 1 | Fabien Dupont | |
26 | 1 | Fabien Dupont | Le paquet « btrfs-tools » offre les outils permettant la création et la gestion d'un filesystem BtrFs. |
27 | 1 | Fabien Dupont | |
28 | 1 | Fabien Dupont | <pre> |
29 | 1 | Fabien Dupont | # apt-get install btrfs-tools |
30 | 1 | Fabien Dupont | </pre> |
31 | 1 | Fabien Dupont | |
32 | 1 | Fabien Dupont | h3. Single |
33 | 1 | Fabien Dupont | |
34 | 1 | Fabien Dupont | Les données et les métadonnées sont écrites sur un seul disque. |
35 | 1 | Fabien Dupont | |
36 | 1 | Fabien Dupont | <pre> |
37 | 1 | Fabien Dupont | # mkfs.btrfs -d single /dev/sdb |
38 | 1 | Fabien Dupont | </pre> |
39 | 1 | Fabien Dupont | |
40 | 1 | Fabien Dupont | h3. raid0 |
41 | 1 | Fabien Dupont | |
42 | 1 | Fabien Dupont | Les données sont « stripées » sur deux disques. Il faut donc un minimum de 2 disques. |
43 | 1 | Fabien Dupont | |
44 | 1 | Fabien Dupont | <pre> |
45 | 1 | Fabien Dupont | # mkfs.btrfs -d raid0 -m raid0 /dev/sdb /dev/sdc |
46 | 1 | Fabien Dupont | </pre> |
47 | 1 | Fabien Dupont | |
48 | 1 | Fabien Dupont | Par exemple pour un fichier contenant « abcdefgh », on aura sur les disques : |
49 | 1 | Fabien Dupont | |
50 | 1 | Fabien Dupont | <pre> |
51 | 1 | Fabien Dupont | +-----+ +-----+ |
52 | 1 | Fabien Dupont | | sdb | | sdc | |
53 | 1 | Fabien Dupont | +-----+ +-----+ |
54 | 1 | Fabien Dupont | | a | | b | |
55 | 1 | Fabien Dupont | | c | | d | |
56 | 1 | Fabien Dupont | | e | | f | |
57 | 1 | Fabien Dupont | | g | | h | |
58 | 1 | Fabien Dupont | +-----+ +-----+ |
59 | 1 | Fabien Dupont | </pre> |
60 | 1 | Fabien Dupont | |
61 | 1 | Fabien Dupont | Pros : |
62 | 1 | Fabien Dupont | |
63 | 1 | Fabien Dupont | * Performance accrue en lecture, un fichier est lue sur deux disques, débit doublé. |
64 | 1 | Fabien Dupont | * Plusieurs disques sont vus en un seul volume. |
65 | 1 | Fabien Dupont | |
66 | 1 | Fabien Dupont | Cons : |
67 | 1 | Fabien Dupont | |
68 | 1 | Fabien Dupont | * Sécurité des données faible, si un seul disque tombe en panne, l'ensemble des données est perdue. |
69 | 1 | Fabien Dupont | |
70 | 1 | Fabien Dupont | h3. raid1 |
71 | 1 | Fabien Dupont | |
72 | 1 | Fabien Dupont | Les données sont « mirrorées » sur deux disques. Il faut donc un minimum de 2 disques. |
73 | 1 | Fabien Dupont | |
74 | 1 | Fabien Dupont | <pre> |
75 | 1 | Fabien Dupont | # mkfs.btrfs -d raid1 -m raid1 /dev/sdb /dev/sdc |
76 | 1 | Fabien Dupont | </pre> |
77 | 1 | Fabien Dupont | |
78 | 1 | Fabien Dupont | Par exemple pour un fichier contenant « abcdefgh », on aura sur les disques : |
79 | 1 | Fabien Dupont | |
80 | 1 | Fabien Dupont | <pre> |
81 | 1 | Fabien Dupont | +-----+ +-----+ |
82 | 1 | Fabien Dupont | | sdb | | sdc | |
83 | 1 | Fabien Dupont | +-----+ +-----+ |
84 | 1 | Fabien Dupont | | a | | a | |
85 | 1 | Fabien Dupont | | b | | b | |
86 | 1 | Fabien Dupont | | c | | c | |
87 | 1 | Fabien Dupont | | d | | d | |
88 | 1 | Fabien Dupont | | e | | e | |
89 | 1 | Fabien Dupont | | f | | f | |
90 | 1 | Fabien Dupont | | g | | g | |
91 | 1 | Fabien Dupont | | h | | h | |
92 | 1 | Fabien Dupont | +-----+ +-----+ |
93 | 1 | Fabien Dupont | </pre> |
94 | 1 | Fabien Dupont | |
95 | 1 | Fabien Dupont | Pros : |
96 | 1 | Fabien Dupont | |
97 | 1 | Fabien Dupont | * Sécurité des données forte, N-1 disques peuvent tomber en panne avant de perdre les données. |
98 | 1 | Fabien Dupont | |
99 | 1 | Fabien Dupont | Cons : |
100 | 1 | Fabien Dupont | |
101 | 1 | Fabien Dupont | * Pour N disques de taille T, on n'a que T octets à disposition. |
102 | 1 | Fabien Dupont | |
103 | 3 | Fabien Dupont | h3. raid10 |
104 | 1 | Fabien Dupont | |
105 | 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. |
106 | 1 | Fabien Dupont | |
107 | 1 | Fabien Dupont | <pre> |
108 | 1 | Fabien Dupont | # mkfs.btrfs -d raid10 -m raid10 /dev/sdb /dev/sdc /dev/sdd /dev/sde |
109 | 1 | Fabien Dupont | </pre> |
110 | 1 | Fabien Dupont | |
111 | 1 | Fabien Dupont | Par exemple pour un fichier contenant « abcdefgh », on aura sur les disques : |
112 | 1 | Fabien Dupont | |
113 | 1 | Fabien Dupont | <pre> |
114 | 1 | Fabien Dupont | <-------raid0-------> |
115 | 1 | Fabien Dupont | <-----raid1-----> <-----raid1-----> |
116 | 1 | Fabien Dupont | +-----+ +-----+ +-----+ +-----+ |
117 | 1 | Fabien Dupont | | sdb | | sdc | | sdd | | sde | |
118 | 1 | Fabien Dupont | +-----+ +-----+ +-----+ +-----+ |
119 | 1 | Fabien Dupont | | a | | a | | b | | b | |
120 | 1 | Fabien Dupont | | c | | c | | d | | d | |
121 | 1 | Fabien Dupont | | e | | e | | f | | f | |
122 | 1 | Fabien Dupont | | g | | g | | h | | h | |
123 | 1 | Fabien Dupont | +-----+ +-----+ +-----+ +-----+ |
124 | 1 | Fabien Dupont | </pre> |
125 | 1 | Fabien Dupont | |
126 | 1 | Fabien Dupont | Pros : |
127 | 1 | Fabien Dupont | |
128 | 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. |
129 | 1 | Fabien Dupont | * Performance accrue en lecture, un fichier est lue sur deux disques, débit doublé. |
130 | 1 | Fabien Dupont | * Plusieurs disques sont vus en un seul volume. |
131 | 1 | Fabien Dupont | |
132 | 1 | Fabien Dupont | Cons : |
133 | 1 | Fabien Dupont | |
134 | 1 | Fabien Dupont | * Pour N disques de taille T, on n'a que (NÃT)/2 octets à disposition. |
135 | 2 | Fabien Dupont | |
136 | 3 | Fabien Dupont | h3. raid5 (kernel >= 3.9) |
137 | 2 | Fabien Dupont | |
138 | 2 | Fabien Dupont | Les données sont « stripées » sur N-1 disques puis la parité d'un « stripe » est écrite sur le dernier disque. Il faut donc un minimum de 3 disques. |
139 | 2 | Fabien Dupont | |
140 | 2 | Fabien Dupont | <pre> |
141 | 2 | Fabien Dupont | # mkfs.btrfs -d raid5 -m raid5 /dev/sdb /dev/sdc /dev/sdd |
142 | 2 | Fabien Dupont | </pre> |
143 | 2 | Fabien Dupont | |
144 | 2 | Fabien Dupont | Par exemple pour un fichier contenant « abcdefgh », on aura sur les disques : |
145 | 2 | Fabien Dupont | |
146 | 2 | Fabien Dupont | <pre> |
147 | 2 | Fabien Dupont | +-----+ +-----+ +-----+ |
148 | 2 | Fabien Dupont | | sdb | | sdc | | sdd | |
149 | 2 | Fabien Dupont | +-----+ +-----+ +-----+ |
150 | 2 | Fabien Dupont | | a | | b | | p1 | |
151 | 2 | Fabien Dupont | | p2 | | c | | d | |
152 | 2 | Fabien Dupont | | e | | p3 | | f | |
153 | 2 | Fabien Dupont | | g | | h | | p4 | |
154 | 2 | Fabien Dupont | +-----+ +-----+ +-----+ |
155 | 2 | Fabien Dupont | </pre> |
156 | 2 | Fabien Dupont | |
157 | 2 | Fabien Dupont | Pros : |
158 | 2 | Fabien Dupont | |
159 | 2 | Fabien Dupont | * Sécurité des données forte, 1 disque peut tomber en panne avant de perdre les données. |
160 | 2 | Fabien Dupont | * Plusieurs disques sont vus en un seul volume. |
161 | 2 | Fabien Dupont | |
162 | 2 | Fabien Dupont | Cons : |
163 | 2 | Fabien Dupont | |
164 | 2 | Fabien Dupont | * Pour N disques de taille T, on n'a que (N-1)ÃT octets à disposition. |
165 | 2 | Fabien Dupont | |
166 | 2 | Fabien Dupont | |
167 | 3 | Fabien Dupont | h3. raid6 (kernel >= 3.9) |
168 | 2 | Fabien Dupont | |
169 | 2 | Fabien Dupont | Les données sont « stripées » sur N-2 disques puis la parité d'un « stripe » est « mirrorée » sur 2 disques. Il faut donc un minimum de 4 disques. |
170 | 2 | Fabien Dupont | |
171 | 2 | Fabien Dupont | <pre> |
172 | 2 | Fabien Dupont | # mkfs.btrfs -d raid6 -m raid6 /dev/sdb /dev/sdc /dev/sdd |
173 | 2 | Fabien Dupont | </pre> |
174 | 2 | Fabien Dupont | |
175 | 2 | Fabien Dupont | Par exemple pour un fichier contenant « abcdefgh », on aura sur les disques : |
176 | 2 | Fabien Dupont | |
177 | 2 | Fabien Dupont | <pre> |
178 | 2 | Fabien Dupont | +-----+ +-----+ +-----+ +-----+ |
179 | 2 | Fabien Dupont | | sdb | | sdc | | sdd | | sde | |
180 | 2 | Fabien Dupont | +-----+ +-----+ +-----+ +-----+ |
181 | 2 | Fabien Dupont | | a | | b | | p1 | | p1 | |
182 | 2 | Fabien Dupont | | p2 | | c | | d | | p2 | |
183 | 2 | Fabien Dupont | | p3 | | p3 | | e | | f | |
184 | 2 | Fabien Dupont | | g | | p4 | | p4 | | h | |
185 | 2 | Fabien Dupont | +-----+ +-----+ +-----+ +-----+ |
186 | 2 | Fabien Dupont | </pre> |
187 | 2 | Fabien Dupont | |
188 | 2 | Fabien Dupont | Pros : |
189 | 2 | Fabien Dupont | |
190 | 2 | Fabien Dupont | * Sécurité des données forte, 2 disques peut tomber en panne avant de perdre les données. |
191 | 2 | Fabien Dupont | * Plusieurs disques sont vus en un seul volume. |
192 | 2 | Fabien Dupont | |
193 | 2 | Fabien Dupont | Cons : |
194 | 2 | Fabien Dupont | |
195 | 2 | Fabien Dupont | * Pour N disques de taille T, on n'a que (N-2)ÃT octets à disposition. |
196 | 2 | Fabien Dupont | |
197 | 2 | Fabien Dupont | h2. Administration d'un volume BtrFs |
198 | 2 | Fabien Dupont | |
199 | 2 | Fabien Dupont | h3. Sous-volumes (subvolumes) |
200 | 2 | Fabien Dupont | |
201 | 2 | Fabien Dupont | Un sous-volume n'est _pas_ équivalent à LVM. C'est une racine sous la racine. |
202 | 2 | Fabien Dupont | |
203 | 2 | Fabien Dupont | Un sous-volume peut contenir une hierarchie de fichiers ou bien une image (« snapshot ») d'un autre sous-volume à un instant T. |
204 | 2 | Fabien Dupont | |
205 | 2 | Fabien Dupont | Par exemple, dans un même volume, on peut avoir : |
206 | 2 | Fabien Dupont | |
207 | 2 | Fabien Dupont | <pre> |
208 | 2 | Fabien Dupont | +-+- root (sous volume par défaut) |
209 | 2 | Fabien Dupont | | +-- /bin |
210 | 2 | Fabien Dupont | | +-- /usr |
211 | 2 | Fabien Dupont | | +-- ... |
212 | 2 | Fabien Dupont | | |
213 | 2 | Fabien Dupont | +-+- home |
214 | 2 | Fabien Dupont | | +-- /home |
215 | 2 | Fabien Dupont | | |
216 | 2 | Fabien Dupont | +-+- snapshot_root1 |
217 | 2 | Fabien Dupont | | +-- /bin |
218 | 2 | Fabien Dupont | | +-- /usr |
219 | 2 | Fabien Dupont | | +-- ... |
220 | 2 | Fabien Dupont | | |
221 | 2 | Fabien Dupont | . |
222 | 2 | Fabien Dupont | . |
223 | 2 | Fabien Dupont | </pre> |
224 | 2 | Fabien Dupont | |
225 | 2 | Fabien Dupont | h4. Création d'un sous-volume |
226 | 2 | Fabien Dupont | |
227 | 2 | Fabien Dupont | Par exemple, pour créer un sous-volume /mnt/home dans le volume BtrFs monté dans /mnt : |
228 | 2 | Fabien Dupont | |
229 | 2 | Fabien Dupont | <pre> |
230 | 2 | Fabien Dupont | # btrfs subvolume create /mnt/home |
231 | 2 | Fabien Dupont | </pre> |
232 | 2 | Fabien Dupont | |
233 | 2 | Fabien Dupont | /!\ /mnt/home ne doit _pas_ exister. Il apparaîtra tel un répertoire, du point de vue de l'utilisateur mais ce n'en n'est pas un. |
234 | 2 | Fabien Dupont | |
235 | 2 | Fabien Dupont | h4. Création d'un snapshot dans un sous-volume : |
236 | 2 | Fabien Dupont | |
237 | 2 | Fabien Dupont | Par exemple, pour créer un snapshot de /mnt/home : |
238 | 2 | Fabien Dupont | |
239 | 2 | Fabien Dupont | <pre> |
240 | 2 | Fabien Dupont | # ls -l /mnt/home/fab |
241 | 2 | Fabien Dupont | /mnt/home/fab: |
242 | 2 | Fabien Dupont | total 0 |
243 | 2 | Fabien Dupont | # btrfs subvolume snapshot /mnt/home /mnt/snapshot_of_home |
244 | 2 | Fabien Dupont | # touch /mnt/home/fab/toto |
245 | 2 | Fabien Dupont | # ls -l /mnt/home/fab /mnt/snapshot_of_home/fab |
246 | 2 | Fabien Dupont | /mnt/home/fab: |
247 | 2 | Fabien Dupont | total 0 |
248 | 2 | Fabien Dupont | -rw-r--r-- 1 root root 0 May 9 13:49 toto |
249 | 2 | Fabien Dupont | |
250 | 2 | Fabien Dupont | /mnt/snapshot_of_home/fab: |
251 | 2 | Fabien Dupont | total 0 |
252 | 2 | Fabien Dupont | </pre> |
253 | 2 | Fabien Dupont | |
254 | 2 | Fabien Dupont | On voit bien que le snapshot contient l'état de /mnt/home avant la création du fichier toto. |
255 | 2 | Fabien Dupont | |
256 | 2 | Fabien Dupont | h4. Monter un sous-volume |
257 | 2 | Fabien Dupont | |
258 | 2 | Fabien Dupont | Pour monter un sous-volume précédement créé : |
259 | 2 | Fabien Dupont | |
260 | 2 | Fabien Dupont | <pre> |
261 | 2 | Fabien Dupont | # btrfs subvolume list /mnt |
262 | 2 | Fabien Dupont | ID 261 gen 37 top level 5 path home |
263 | 2 | Fabien Dupont | ID 262 gen 41 top level 5 path snapshot_of_home |
264 | 2 | Fabien Dupont | # mount /dev/sdb1 /home -o subvolume=home |
265 | 2 | Fabien Dupont | # df -HTP | grep sdb1 |
266 | 2 | Fabien Dupont | /dev/sdb1 btrfs 8.0T 6.7G 8.0T 1% /home |
267 | 2 | Fabien Dupont | /dev/sdb1 btrfs 8.0T 6.7G 8.0T 1% /mnt |
268 | 2 | Fabien Dupont | # mkdir /home/fab |
269 | 2 | Fabien Dupont | # chown fab:fab /home/fab |
270 | 2 | Fabien Dupont | # ls -ld /mnt/home/fab /home/fab |
271 | 1 | Fabien Dupont | drwxr-xr-x 1 fab fab 8 May 9 13:49 /mnt/home/fab |
272 | 1 | Fabien Dupont | drwxr-xr-x 1 fab fab 8 May 9 13:49 /home/fab |
273 | 1 | Fabien Dupont | </pre> |
274 | 3 | Fabien Dupont | |
275 | 3 | Fabien Dupont | h3. Monter un volume au boot (/etc/fstab) |
276 | 3 | Fabien Dupont | |
277 | 3 | Fabien Dupont | h4. Monter un volume |
278 | 3 | Fabien Dupont | |
279 | 3 | Fabien Dupont | N'importe lequel des disques d'un volume raid* peut être monté. BtrFs déduira le type de volume et les autres disques utilisés. |
280 | 3 | Fabien Dupont | |
281 | 3 | Fabien Dupont | Par exemple, pour un volume en raid1 sur /dev/sdb et /dev/sdc monté dans /pub au boot : |
282 | 3 | Fabien Dupont | |
283 | 3 | Fabien Dupont | <pre> |
284 | 3 | Fabien Dupont | # grep btrfs /etc/fstab |
285 | 3 | Fabien Dupont | /dev/sdb /pub btrfs defaults 0 0 |
286 | 3 | Fabien Dupont | </pre> |
287 | 3 | Fabien Dupont | |
288 | 3 | Fabien Dupont | h4. Monter un sous-volume (ou un snapshot) |
289 | 3 | Fabien Dupont | |
290 | 3 | Fabien Dupont | Par exemple, pour monter le sous-volume home du volume précédent : |
291 | 3 | Fabien Dupont | |
292 | 3 | Fabien Dupont | <pre> |
293 | 3 | Fabien Dupont | # grep btrfs /etc/fstab |
294 | 3 | Fabien Dupont | /dev/sdb /pub btrfs defaults 0 0 |
295 | 3 | Fabien Dupont | /dev/sdb /home btrfs defaults,subvolume=home 0 0 |
296 | 3 | Fabien Dupont | </pre> |
297 | 3 | Fabien Dupont | |
298 | 3 | Fabien Dupont | h3. Gérer les disques d'un raid |
299 | 3 | Fabien Dupont | |
300 | 3 | Fabien Dupont | h4. Remplacer un disque défaillant |
301 | 3 | Fabien Dupont | |
302 | 3 | Fabien Dupont | Par exemple, pour un raid10 sur /dev/sdb, /dev/sdc, /dev/sdd et /dev/sde monté dans /pub, soudainement /dev/sdc tombe en panne. |
303 | 3 | Fabien Dupont | Il doit être remplacé physiquement puis : |
304 | 3 | Fabien Dupont | |
305 | 3 | Fabien Dupont | <pre> |
306 | 3 | Fabien Dupont | # mkfs.btrfs /dev/sdc |
307 | 3 | Fabien Dupont | # mount -o remount,degraded /dev/sdb |
308 | 3 | Fabien Dupont | # btrfs device add /dev/sdc /pub |
309 | 3 | Fabien Dupont | # btrfs device delete missing /pub |
310 | 4 | Fabien Dupont | # mount -o remount /dev/sdb |
311 | 3 | Fabien Dupont | </pre> |
312 | 3 | Fabien Dupont | |
313 | 3 | Fabien Dupont | Il faut toujours exécuter les opérations dans cet ordre : remonter le filesystem en mode dégradé, ajouter le nouveau disque, supprimer le disque « missing ». Ceci permet de ne jamais avoir un volume comprenant moins de disques que ce que le type de raid permet. |
314 | 3 | Fabien Dupont | |
315 | 3 | Fabien Dupont | h4. Convertir un volume single en raid1 |
316 | 3 | Fabien Dupont | |
317 | 3 | Fabien Dupont | Par exemple, pour convertir le volume /dev/sdb monté dans /pub en raid1 avec /dev/sdc en plus : |
318 | 3 | Fabien Dupont | |
319 | 3 | Fabien Dupont | <pre> |
320 | 3 | Fabien Dupont | # mkfs.btrfs /dev/sdc |
321 | 3 | Fabien Dupont | # btrfs device add /dev/sdc /pub |
322 | 3 | Fabien Dupont | # btrfs balance start -dconvert=raid1 -mconvert=raid1 /pub |
323 | 3 | Fabien Dupont | </pre> |
324 | 3 | Fabien Dupont | |
325 | 3 | Fabien Dupont | La commande « balance » permet de redistribuer les données d'un volume BtrFs en fonction du type de raid. |
326 | 3 | Fabien Dupont | |
327 | 3 | Fabien Dupont | Cette opération est similaire pour convertir en raid0, raid10, etc. |
328 | 3 | Fabien Dupont | |
329 | 3 | Fabien Dupont | h2. Pour plus d'informations |
330 | 3 | Fabien Dupont | |
331 | 3 | Fabien Dupont | https://btrfs.wiki.kernel.org/ |
332 | 3 | Fabien Dupont | http://en.wikipedia.org/wiki/Btrfs |
333 | 3 | Fabien Dupont | http://manpages.debian.net/cgi-bin/man.cgi?sektion=8&query=mkfs.btrfs&apropos=0&manpath=sid&locale=en |
334 | 3 | Fabien Dupont | http://manpages.debian.net/cgi-bin/man.cgi?sektion=8&query=btrfs&apropos=0&manpath=sid&locale=en |