Autres
AideEnLigne
CahierDeBrouillon
Présentation
Administration

MesLectures
[Journal d'Ophelia]
[Blog Larnac]
[Traitement texte en ligne]
[Kim Khal]

Informations
[Rue 89]
[Tele libre]

DNS etc
[Robtex]
Logins
Votre ID: 111
Nom:
Login utilisateur
Mot de passe éditeur

ZFSViteFait

ZFS on Debian and ZFS administration

https://pthree.org/2012/04/17/install-zfs-on-debian-gnulinux/

ZFS Tuning guide on FreeBSD?

https://wiki.freebsd.org/ZFSTuningGuide

ZFS Remote Mirrors for Home Use & FreeBSD?

Use ZFS to backup export your files remotely [with FreeBSD?] : https://github.com/hughobrien/zfs-remote-mirror

Update: ZFS using the next-gen filesystem on Linux

Another article : http://arstechnica.com/information-technology/2014/02/ars-walkthrough-using-the-zfs-next-gen-filesystem-on-linux/

2014-02-23 23:39:43

ZFS-Fuse sur Linux Debian (Lenny)

Time-stamp: <2010-04-07 16:31:50 cmic>

Sur Debian Lenny, installer fuse : zfs-fuse libaio libattr1-dev scons (pour compiler zfs-fuse)

  • fuse est un module lance par insmod (visible pas lsmod)
  • compilation de zfs-fuse et installation dans /usr/local/sbin
  • lancer le daemon zfs-fuse:

 #/usr/local/sbin/zfs-fuse

NB: pour remonter un pool deja installe faire un zpool import. Le fichier /etc/zfs/zpool.cache maintient la liste des zpools courant. Mais si on fait un zpool export, ce fichier disparait. La config est peut-être sauvegardée dans un secteur du disque ? FIXME

NB: la doc sur http://docs.sun.com/app/docs/doc/819-5461 -en par defaults


Infos

  • toutes les metadata zfs sont en dynamique
  • donc df -g donne l'information d'estimation du nombre de fichiers restant (p54)
  • zfs est un fs transactionnel
  • les montages n'apparaissent plus dans /etc/vfstab (ou /etc/fstab)
  • utilisation des ACLs NFSv4 (mais pas sous Linux...)

Premier galop.

 hda : disque Debian (partitions non utilisees : hda3 et hda4
 hdb : autre disque sans rien.
 hdd : idem.

 #fdisk -l /dev/hda 

   Device Boot      Start         End      Blocks   Id  System
 /dev/hda1   *           1         729     5855661   83  Linux
 /dev/hda2             730         972     1951897+  82  Linux swap / Solaris
 /dev/hda3             973        2796    14651280   83  Linux
 /dev/hda4            2797        4998    17687565   83  Linux

 #fdisk -l /dev/hdb
   Device Boot      Start         End      Blocks   Id  System
 /dev/hdb1   *           1           6       48163+  83  Linux
 /dev/hdb2               7         260     2040255   82  Linux swap / Solaris
 /dev/hdb3             261        4863    36973597+  83  Linux 

 #zpool create tank /dev/hdb3
 #zpool list
 NAME   SIZE   USED  AVAIL    CAP  HEALTH  ALTROOT
 tank  35,2G  25,8M  35,2G     0%  ONLINE  - 

..le pool est monté sur /tank

 #zpool status
   pool: tank
  state: ONLINE
  scrub: none requested
 config:

         NAME        STATE     READ WRITE CKSUM
         tank        ONLINE       0     0     0
           hdb3      ONLINE       0     0     0

 errors: No known data errors

 #zpool history => liste de toutes operations effectuees sur les pools 

 #zfs create tank/mytest
 ...  creation d'un systeme de fichier dans /tank/mytest
 #zfs mount
 tank/mytest   /tank/mytest

..on peut copier des fichiers

 #cp /sbin/* /tank/mytest
 #df -h
 Sys. de fich.         Tail. Occ. Disp. %Occ. MontÃ?© sur
 /dev/hda1             5,5G  3,5G  1,8G  67% /
 tmpfs                 443M     0  443M   0% /lib/init/rw
 udev                   10M  708K  9,4M   7% /dev
 tmpfs                 443M     0  443M   0% /dev/shm
 tank/mytest            35G   26M   35G   1% /tank/mytest

Pour supprimer ce fs :

1- demonter

 #zfs umount /tank/mytest
   NB : remontage par zfs mount tank/mytest

2- supprimer le pool (et supression du répertoire /tank)

 #zpool destroy tank

Modifier un pool (ajouter de l'espace)

  • on ne peut pas faire un shrink d'un pool

 #zpool create tank /dev/hda3

.. operations diverses zfs create, cp fichiers, etc.

 #zpool add tank /dev/hdb3
 #zpool status
   pool: tank
  state: ONLINE
  scrub: none requested
 config:

        NAME        STATE     READ WRITE CKSUM
        tank        ONLINE       0     0     0
          hdb2      ONLINE       0     0     0
          hda3      ONLINE       0     0     0

 errors: No known data errors

Quotas (p194)

 #zfs set quota=10M /tank/aa
 #zfs list => on voit les quotas

  • quota et reservation => par file system et tout ses descendants
  • refquota et ref reservation =>par filesystem pour data *et* snapshots
  • userquota et groupquota => par utilisateur ou par groupe, pas d'heritage sur les fs enfants

 #zfs userspace tank/aa => liste des quotas 

Snapshot

 zorro:/tank# ls -l
 total 5
 drwxr-xr-x 2 bdurant users 2 avr  8 11:48 bdupont
 drwxr-xr-x 2 bdurant users 2 avr  8 11:48 bdurant
 drwxr-xr-x 4 cmic    users 5 avr  8 11:56 cmic

 #zfs snapshot tank/cmic@12h

NB: normalement existence de /tank/cmic/.zfs pour le snapshot ?

modif des fichiers dans /tank/cmic, puis recuperation du snapshot

 #zfs rollback tank/cmic@12h

  Restauration possible uniquement du dernier snapshot !! Restauration par fichier: utiliser les clones.

 #zfs snapshot -r tank@1419 => snapshots de tous les sous-fs de /tank
 (recursivite). Evidemment: #zfs destroy -r tank@1419

 #zfs destroy tank/cmic@12h
 #zfs rename tank/cmic12h tank/cmic@midi (rename dans un meme fs)

 #zfs list snapshot

clones

  • pas de consommation d'espace disque
  • creation du clone a partir du snapshot
  • donc ne pas faire de zfs destroy du snapshot tant que le clone est utilisé

 zorro:~# zfs create tank/aa
 zorro:~# zfs snapshot tank/cmic@1348
 zorro:~# zfs snapshot tank/cmic@1350
 zorro:~# zfs clone tank/cmic@1348 
 zorro:~# zfs clone tank/cmic@1348 tank/aa/clonecmic
 cmic$ rm /tank/cmic/

  • le repertoire /tank/aa/clonecmic contient les memes fichiers que le snapshot tank/cmic@1248. Ce qui permet de récuperer un fichier parmi n depuis le snapshot.

 #zfs destroy tank/aa/clonecmic
 #zfs destroy tank/cmic@1248

 -zfs promote permet de remplacer un fs par un clone. Ensuite uin peut renommer le fs avec zfs rename

Send & receive snapshots

  • send Envoie sur sur la sortie standard
  • on peut de cette manière échanger des fs d'une machine a une autre.

 #zfs send tank/cmi@1248 | ssh myhost zfs recv tank2/cmic2

ACLs

  • utilisation des ACLs NFS4 (et pas des ACLs POSIX) comme sous windows NT
  • utilisateion de chmod A=, ls -v etc. Sous Solaris, mais pas sous Linux...

delegated administation (p243)

  • delegation aux utilisteurs de differents fonctions :create, destroy,mount, snapshot, ..
  • groupes de permissions : permission sets
  • ler permission suivent le pool en cas de migration du pool
  • acces global aux delagations sur un pool

 #zpool set delegation=off|on tank

  • permission sur un dataset ou des descendants de ce dataset (option -d implicite)

 #zfs allow cmic destroy,snapshot,rollback tank/cmic

  • voir les permissions

 #zfs allow tank/cmic
 --
 Local+Descendent permissions on (tank/cmic)
         user cmic destroy,rollback,snapshot

  • NB sous Linux, probleme de lancement de zfs et zpool FIXME

  • delegation par groupe :

 #zfs allow users snapshot tank/aa

  • delegation non descendant-recursive option -l (local seul)

 #zfs allow -l cmic snapshot tank/bdupont

  • suppression des persmissions avec unallow

 #zfs unallow cmic tank/cmic

Mirror, RAIDZ (p61)

  • deux partitions ou disques identiques et creation d'un miroir took (ici deux part. de 100MB d'un meme hd)

 #zpool create took mirror /dev/hd2 /dev/hdb3
 #zpool status
   pool: took
  state: ONLINE
  scrub: none requested
 config:

         NAME        STATE     READ WRITE CKSUM
         took        ONLINE       0     0     0
           mirror    ONLINE       0     0     0
             hdb2    ONLINE       0     0     0
             hdb3    ONLINE       0     0     0

 errors: No known data errors
 # zpool list
 NAME   SIZE   USED  AVAIL    CAP  HEALTH  ALTROOT
 took    97M    75K  96,9M     0%  ONLINE  -

  • possibiliter d'augmenter/diminuer le nb de disques sur le miroir, mais il fera toujours la taille "de base" (attach detach)

 #zpool attach tank /dev/hdb3 /dev/hdb4

.reconstructin du miroir (message resilvered)

 #zpool list
 NAME   SIZE   USED  AVAIL    CAP  HEALTH  ALTROOT
 took    97M    75K  96,9M     0%  ONLINE  -

  • possiblite de faire un mirroir de disques entiers (formatté avec 1 partition)

 #zpool create tank /dev/hdb /dev/hdd

  • possiblite de faire un mirroir avec des disque entiers avec label BSD.

fdisk /dev/hdd -> s -> w

fdisk /dev/hdd -> detruire toutes les partitions sauf la 3

 #zpool create tank miroir /dev/hdb /dev/hdd

Raidz raidz2

  • on peut de la meme maniere que le miroir, creer un raidz ou raidz2 (double parite)

 #zpool create tank raidz /dev/hdd /dev/hdb

  • possible avec des partions (NB hda3 hda4 et hdb[1-4] et hdd[1-4] font toutes 100MB On peut donc creer un raidZ de (N-P)X bytes (N: nb partitions data, P: nb partitions parite, X taille de chaque partition)

 #zpool create tank raidz /dev/hda3 /dev/hdb1 /dev/hdd1

 # zpool list
 NAME   SIZE   USED  AVAIL    CAP  HEALTH  ALTROOT
 tank   290M   138K   290M     0%  ONLINE  -
 # zfs list
 NAME   USED  AVAIL  REFER  MOUNTPOINT
 tank  85,9K   161M  24,0K  /tank

  • rajouter ensuite de l'espace disque (sur un raidz de 3 partitions on ne peut rajouter que 3 autres partitions)

 #zpool add tank raidz /dev/hda4 /dev/hdb2 /dev/hdd2
 # zfs list
 NAME   USED  AVAIL  REFER  MOUNTPOINT
 tank  89,9K   354M  24,0K  /tank

NB: noter la difference de taille

  • autre config avec 6 partitions à la creation

 # zpool create tank raidz /dev/hda3 /dev/hdb1       /dev/hdb2 /dev/hdd1 /dev/hdd2 /dev/hdd3
 # zpool list
 NAME   SIZE   USED  AVAIL    CAP  HEALTH  ALTROOT
 tank   580M   129K   580M     0%  ONLINE  -
 # zfs list
 NAME   USED  AVAIL  REFER  MOUNTPOINT
 tank  99,6K   449M  29,9K  /tank

NB cette fois-ci, avec 6 partitions de 100M, on obient 449MB utiles (au lieu de 354MB avec 3 partitions puis l'ajout de 3 partitions) pour zfs.


import export (p101)

  • au lancement du serveur
  1-#/usr/local/sbin/zfs-fuse
  2-#zpool import tank

  • avant d'arreter le serveur :

 #zpool export tank 

  • on peut connaitre les pools importables en faisant

 #zpool import

  • possibilité de re-importer un pool destroyed !!

 #zpool -import -Df tank

Performance :

  • utiliser le cache de l'OS (zfs-fuse -h)

 #zfs-fuse -a 1000 -e 1000

NB: ce passage de paramètres est maintenant obsolete. Utiliser plutot les parametres suivants de /etc/zfs/zfsrc :

 fuse-attr-timeout = 3600
 fuse-entry-timeout = 3600

  • Mise en place du script de demarrage dans /etc/init.d. Recopie dans les rep. avec la commande (Debian) /usr/sbin/update-rc.d.

Installation de zfs-fuse-0.6.9 avec dedup code. (la version 0.6.0 n'a pas le code dedup intégré) Utilisation :

Le code par defaultsdedup n'est interessant que di l'on dispose de beaucoup de ram. Ce code crée des tables de hachapar defaultsge des écritures par secteur pour eviter de recopier ce qui est deja ecrit sur le hd.


Getting zfs-fuse by git

Add the desired remote repositories to your local repository, e.g. NB: rainemu is Emmanuel Anne git repo.

 git remote add rainemu http://rainemu.swishparty.co.uk/git/zfs
 git remote add MikeHommey? git://git.debian.org/users/glandium/zfs-fuse.git

Update your remotes (fetching any remote branches)

 git remote -v update

Show the available remote branches

 git branch -r

From here you can take several routes, depending on the task at hand. Some typical examples of tasks would be:

Create a local branch to track the remote ('upstream') one:

 git checkout -b myfeaturebranch MikeHommey?/featurebranch

Rebase your patch(es) onto the remote branch so the remote maintainer can easily merge your changes into his branch:

 git checkout my-fixes-branch
 git rebase remote/maintained

Pull changes from the tracked remote branch:

 git remote update remotename
 git pull

Merge changes from another remote branch:

 git checkout my-branch
 git merge --ff --no-commit remote/otherbranch

Note:

  • passing --ff tries to pull commits that are compatible without
      rebasing them. This is actually not a merge but a copy of
      commits. You could --ff-only if you knew everything should be a
      fast forward (your branches have shared ancestors and haven't
      diverged).

  • --no-commit allows you to review the changes (git diff --cached
        and git log --merge) before actually committing the merge on
        your branch

2010-06-25 16:17:14 -- Cmic

Why ZFS is better than btrfs

Un article http://rudd-o.com/linux-and-free-software/ways-in-which-zfs-is-better-than-btrfs qui en parle..

2012-05-16 10:36:43 -- Cmic