Un cours (4 h) et un TD (3 h) sur les systèmes de fichiers et ZFS : le support de cours, le sujet des travaux pratiques, et les machines virtuelles qui les accompagnent.

Ce navigateur n'affiche pas les PDF dans la page : ouvrir le support de cours (708 Kio).

Supports

Les travaux pratiques se font dans une machine virtuelle VirtualBox (format OVA) sous FreeBSD.

Historique

Historique de ZFS, de 2001 à 2019
Année Événement
2001 Début du projet par deux ingénieurs de Sun Microsystems
2005 Diffusion du code source dans OpenSolaris (licence CDDL)
2006 Début du portage sous Linux via FUSE
incompatibilité déclarée entre la licence CDDL et GPL
2007 Apple commence son portage sous Mac OS X
2007 NetApp attaque Sun pour violation de brevet (WAFL)
2008 ZFS est intégré à FreeBSD 7.0
2008 Début d'un portage natif sous Linux (ZFS-on-Linux)
2009 Rachat de Sun Microsystems par Oracle
2009 Apple arrête l'intégration de ZFS à OS X
le projet MacZFS continue à développer le code
2010 OpenSolaris est arrêté par Oracle
le développement de ZFS continue de façon fermée
2010 Illumos, un fork d'OpenSolaris est créé par la communauté
le développement continue sous licence CDDL
les portages de ZFS se basent sur la version d'Illumos
2012 Introduction de feature-flags (fin des numéros de version)
facilite l'évolution du format sur-disque
2013 Prototype de ZFS pour Mac OS X, basé sur ZFS-on-Linux
MacZFS va progressivement céder la place
2013 Début du projet OpenZFS
coordonne le développement et le partage du code entre Illumos et les ports sur les différentes plateformes
2016 Ubuntu 16.04 inclut par défault ZFS-on-Linux
2019 FreeBSD rebase son code ZFS de Illumos vers ZFS-on-Linux

Exemples

Revenir à un checkpoint

# Import the pool read-only until the checkpoint
zpool import -o readonly=on --rewind-to-checkpoint tank

# Rewind the pool to the checkpoint, destroying data
zpool import --rewind-to-checkpoint tank

Envoi incrémental et reprise après interruption

# Envoi d’un flux incrémental de @yesterday à @today, incluant
# les snapshots intermédiaires, sur la machine ’remote-host’
# En cas d’erreur de transmission les données sont conservées
zfs send -I @yesterday tank/data@today |
  ssh remote-host zfs recv -s pool/backup

# La connexion réseau a été interrompue, récupère
# le jeton permettant de reprendre la transmission
token=$(zfs get -Hp receive_resume_token pool/backup | cut -f3)

# Poursuite de la transmission à partir des informations
# contenues dans le jeton
zfs send -t $token | ssh remote-host zfs recv -s pool/backup

# Ou suppression des données partiellement transférées
# si l’on ne souhaite pas poursuivre
zfs recv -A pool/backup