ZFS on Linux - 1


Présentation & Installation

Note

La première version date de 2012, donc, les informations présentées dans ces premières pages sont outdated.

TL;DR: Pour les plus pressés, j'ai déjà répondu à un certain nombre de questions, et le récapitulatif des réglages commence en partie 7.


Suivant : ZFS on Linux - 2


1.0 - Introduction

Cette série d'articles sur ZFS a été écrite courant 2012 par Emmanuel Quemener, Kevin Reverchon et moi-même. Le site d'origine n'étant plus accessible, je la reprends ici à mon compte, en la mettant un peu à jour. J'ai viré la partie benchmarks et conservé le côté DIY.

Argument d'autorité : (en 2012) Le LLNL participe activement à ZFS on Linux en employant un développeur à plein temps.

Licence : ZFS est soumis à la licence CDDL, incompatible avec la GPL. Cela oblige à une petite circonvolution : L'interface SPL. (quand à la licence de ces articles, c'est du CC-BY-4.0)

La première partie traite trés rapidement de l'installation de ZFS on Linux sur Debian, à l'époque des Release Candidate (2012, Squeeze, Wheezy).

Les parties suivantes décriront les plateformes matérielles sur lesquelles nous avons installé et testé ZFS on Linux.

Les dernières parties traiteront des configurations (tips & tricks, tuning) de Linux, ZFS et les outils autour entre 2012 et aujourd'hui (2019).

1.1 - ZFS, qu'est-ce que c'est ?

ZFS intègre le RAID logiciel, le gestionnaire de volume et le système de fichiers dans un tout unifié accessible en deux commandes CLI : zpool et zfs.

ZFS prends tout son sens dès qu'on veut adresser des volumétries importantes (jusqu'à plusieurs centaines de Téra-octets par volume) ou un grand nombre de disques (120 ou plus, c'est le matériel qui devient limitant).

Cela étant dit, avec deux disques, on a un mode mirroir (ou RAID1) qui permet déjà de s'amuser. Et si on a plein de disques SATA, SAS, dans des DAS connectés via un HBA, pour avoir du JBOD, c'est encore mieux !

(C'est pas du chinois, c'est juste pour placer un maximum de notes de bas de pages tout de suite ;o)

  • zpool va remplacer un contrôleur RAID matériel, et/ou mdadm. Il n'y a pas vraiment de limite (si 2^128 est une limite...) au nombre de disques qu'il peut gérer. Il aggrège les disques selon l'équivalent RAID1 (mirror), RAID5 (raidz1), RAID6 (raidz2), mieux-que-RAID6 (raidz3), et assure la gestion des disques de spare et des disques de cache (en écriture et en lecture).

L'aggrégat (ou volume primaire, ou pool) est déjà un système de fichiers, utilisable en l'état. Ça n'est pas recommandé ! Il sera nommé pool dans la suite de ces articles.

  • zfs va remplacer LVM et votre système de fichiers préféré (ext2/3/4, xfs, jfs, ...). Il intègre des fonctions de prise d'instantané(s) (snapshot, clone) et de réplication (send | receive). Il gère aussi les quotas.

C'est à l'intérieur du pool que seront créés les systèmes de fichiers (ou volumes, ou datasets).

Exemples :

1
2
3
4
zpool list

NAME   SIZE  ALLOC   FREE  EXPANDSZ   FRAG    CAP  DEDUP  HEALTH  ALTROOT
data  5,44T  1,80T  3,63T         -     4%    33%  1.00x  ONLINE  -
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
zpool status -L data

  pool: data
 state: ONLINE
  scan: scrub repaired 0 in 1h18m with 0 errors on Sun Mar 2 01:42:44 2013
config:

    NAME        STATE     READ WRITE CKSUM
    data        ONLINE       0     0     0
      raidz1-0  ONLINE       0     0     0
        sdc     ONLINE       0     0     0
        sdd     ONLINE       0     0     0
        sde     ONLINE       0     0     0
        sdf     ONLINE       0     0     0
        sdg     ONLINE       0     0     0
        sdh     ONLINE       0     0     0

errors: No known data errors
1
2
3
4
5
6
7
zfs list

NAME         USED  AVAIL  REFER  MOUNTPOINT
data        1,50T  2,87T  33,2K  /data
data/test1  1,47T   542G  1,47T  /data/test1
data/proto  27,2G  22,8G  26,7G  /data/proto
data/toto   61,5M  2,87T  61,5M  /data/toto

1.2 - Installation sur Debian

Note

La première version de ces articles date de 2012, donc, les informations présentées ici sont outdated.

Système support : Debian 7 Squeeze out of the box, (valable aussi sur Debian 8 Wheezy, aux différences du noyau (3.2) et du gcc (4.7) par défaut).

  • Nettoyage et Préparation :
1
2
apt-get purge nano vim-tiny nfs-common portmap
apt-get install vim tmux htop smartmontools

et mettez-vous dans un tmux pour la suite.

  • Création d'un répertoire temporaire et récupération des sources :
1
2
3
4
mkdir -p zol && cd zol/
wget http://github.com/downloads/zfsonlinux/spl/spl-0.6.0-rc6.tar.gz
wget http://github.com/downloads/zfsonlinux/zfs/zfs-0.6.0-rc6.tar.gz
tar -xzf *-0.6.0-rc6.tar.gz
  • Solaris Porting Layer :
1
2
3
4
5
apt-get install build-essential gawk alien fakeroot linux-headers-2.6.32-5-amd64
cd ~/zol/spl-0.6.0-rc6/
./configure
make deb
dpkg -i *_amd64.deb

Tester tout de suite si ça fonctionne avec la SPL regression test suite :

1
2
modprobe splat
/usr/sbin/splat -a

Tout doit être à Pass.

  • ZFS on Linux :
1
2
3
4
5
apt-get install zlib1g-dev uuid-dev libblkid-dev libselinux-dev parted lsscsi
cd ~/zol/zfs-0.6.0-rc6/
./configure
make deb
dpkg -i *_amd64.deb

Et on teste avec la ZFS regression test suite :

1
2
3
4
5
6
7
/usr/libexec/zfs/zfault.sh -c
                                        raid0   raid10  raidz   raidz2  raidz3
1    soft write error                   Pass    Pass    Pass    Pass    Pass
2    hard write error                   Pass    Pass    Pass    Pass    Pass
3    all write errors                   Pass    Pass    Pass    Pass    Pass
4    soft read error                    Pass    Pass    Pass    Pass    Pass
5    hard read error                    Fail (33)

Le dernier test peut failed sans conséquence.

Note

Edit 2019 : Maintenant, oubliez tout ça !

Sur une Debian Stable, installez spl, spl-dkms, zfs-dkms, zfs-zed et zfsutils-linux.


Suivant : ZFS on Linux - 2