<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>ZFSonLinux on Zwindler's Reflection</title><link>https://blog.zwindler.fr/tags/zfsonlinux/</link><description>Recent content in ZFSonLinux on Zwindler's Reflection</description><generator>Hugo -- gohugo.io</generator><language>fr-fr</language><copyright>Licensed under CC BY-SA 4.0</copyright><lastBuildDate>Thu, 28 Aug 2014 10:08:49 +0000</lastBuildDate><atom:link href="https://blog.zwindler.fr/tags/zfsonlinux/index.xml" rel="self" type="application/rss+xml"/><item><title>Erreur lors du remplacement d’un disque avec ZFSonLinux : devices have different sector alignment</title><link>https://blog.zwindler.fr/2014/08/28/erreur-lors-du-remplacement-dun-disque-avec-zfsonlinux-devices-have-different-sector-alignment/</link><pubDate>Thu, 28 Aug 2014 10:08:49 +0000</pubDate><guid>https://blog.zwindler.fr/2014/08/28/erreur-lors-du-remplacement-dun-disque-avec-zfsonlinux-devices-have-different-sector-alignment/</guid><description>&lt;img src="https://blog.zwindler.fr/2014/08/zfs-linux.webp" alt="Featured image of post Erreur lors du remplacement d’un disque avec ZFSonLinux : devices have different sector alignment" /&gt;&lt;p&gt;Ceux qui me lisent savent que j’adore ZFS.&lt;/p&gt;
&lt;p&gt;ZFS, c’est juste génial.&lt;/p&gt;
&lt;p&gt;Les types qui ont inventé ce FS ont pris toutes les fonctionnalités intéressantes qu’on peut trouver dans un FS moderne, et les ont intégrés. Pour rappel, quelques unes qui me tiennent à cœur :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;b-tree FS&lt;/li&gt;
&lt;li&gt;transactions en mode copy-on-write&lt;/li&gt;
&lt;li&gt;abstraction du stockage, création de FS simplifiée&lt;/li&gt;
&lt;li&gt;gestion des snapshots&lt;/li&gt;
&lt;li&gt;partages NFS/CIFS natifs&lt;/li&gt;
&lt;li&gt;compression/déduplication native&lt;/li&gt;
&lt;li&gt;gestion de caches SSD native&lt;/li&gt;
&lt;li&gt;&amp;hellip;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Mais ils ont aussi eu le malheur de le développer pour Solaris &amp;hellip; et lui coller la malédiction d’un OS en perdition avec une licence le rendant difficilement compatible à un portable sur le kernel Linux&amp;hellip; C’est la vie ;-)&lt;/p&gt;
&lt;p&gt;Toujours est-il que ça n’a pas arrêté certaines personnes pour le porter, avec le projet ZFSonLinux, et permettre au ZFS fanboy que je suis d’avoir du ZFS sur mon NAS sous Linux, sans passer par la méthode ZFS/fuse en userland.&lt;/p&gt;
&lt;p&gt;Cependant, ce projet relativement confidentiel n’est pas sans ses petits accros. C’est notamment ce que j’ai pu constater amèrement l’an dernier, quand ma grappe Z-RAID s’est dégradée suite à la perte d’un disque&amp;hellip;&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;zpool status tank
pool: tank
state: DEGRADED
status: One or more devices could not be used because the label is missing or
invalid. Sufficient replicas exist for the pool to continue
functioning in a degraded state.
action: Replace the device using &amp;#39;zpool replace&amp;#39;.
see: http://zfsonlinux.org/msg/ZFS-8000-4J
scan: resilvered 31,5K in 0h0m with 0 errors on Sun Mar 24 12:44:41 2013
config:
&lt;/code&gt;&lt;/pre&gt;&lt;pre tabindex="0"&gt;&lt;code&gt;NAME STATE READ WRITE CKSUM
tank DEGRADED 0 0 0
raidz1-0 DEGRADED 0 0 0
ata-WDC_WD20EARX-00PASB0_WD-WCAZAH899460 ONLINE 0 0 0
scsi-SATA_SAMSUNG_HD204UIS2HGJ90B632655 ONLINE 0 0 0
ata-ST2000DL003-9VT166_5YD769R0-part3 UNAVAIL 0 0 1
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;OK. J’ai un disque HS. J’en achète un autre, et je le remplace. Finger in ze noz !&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;zpool replace tank ata-ST2000DL003-9VT166_5YD769R0-part3 ata-ST2000DL003-9VT166_5YD769R0
cannot replace ata-ST2000DL003-9VT166_5YD769R0-part3 with ata-ST2000DL003-9VT166_5YD769R0: devices have different sector alignment
zpool get ashift tank
NAME PROPERTY VALUE SOURCE
tank ashift 0 default
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Malheureusement, à la création du pool, j’avais des vieux disques ne supportant pas les blocs de 4K (Advanced format), qui a donc été créé par défaut en mode legacy, à savoir 512 octets. Jusque là, rien de critique : le disque récent en 4k devra fonctionner sur des blocs de 512, ce qui restreindra ses performances brutes mais je ne suis pas à ça près, je veux juste remplacer mon fichu disque&amp;hellip; Bien sur, j’ai testé &amp;hellip;&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;zpool set ashift=12 tank
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&amp;hellip; et ça ne fonctionne pas. Faut pas croire au père noël, ce paramètre est malheureusement inscrit en dur lors de la création du pool, et ne peux pas être modifié à postériori.&lt;/p&gt;
&lt;p&gt;Cependant, ça n’explique pas pourquoi je ne pouvais pas ajouter mon disque 4k dans un pool en 512.&lt;/p&gt;
&lt;p&gt;Et là, c’est le drame&amp;hellip;en fait il s’agit d’un bug qui avait été introduit dans ZFSonLinux qui empêche le remplacement d’un disque de format différent de celui du pool :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class="link" href="https://github.com/zfsonlinux/zfs/issues/1328" target="_blank" rel="noopener"
&gt;github.com/zfsonlinux/zfs/issues/1328&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://groups.google.com/a/zfsonlinux.org/forum/?fromgroups=#!topic/zfs-discuss/igoAmmKXz5E" target="_blank" rel="noopener"
&gt;groups.google.com/a/zfsonlinux.org/forum/?fromgroups=#!topic/zfs-discuss/igoAmmKXz5E&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Plutôt gênant&amp;hellip; Heureusement, je suis tombé sur des gens suffisamment calé en code pour comprendre le problème, et proposer une solution. Voici ce que j’ai du faire pour remplacer la version ZFSonLinux officielle d’Ubuntu par une version patchée qui elle acceptait le remplacement.&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;apt-get install git uuid-dev alien
git clone https://github.com/murrayju/zfs
cd zfs
./autogen.sh
./configure
apt-get install uuid-dev
./configure
make deb
dpkg -l | grep zfs
apt-get remove zfsutils zfs-fuse zfs-dkms ubuntu-zfs libzfs1
dpkg -i *.deb
dpkg -l | grep zfs
init 6 #dans le doute
zpool status
zpool replace tank ata-ST2000DL003-9VT166_5YD769R0-part3 ata-ST2000DL003-9VT166_5YD769R0
zpool status
pool: tank
state: DEGRADED
status: One or more devices is currently being resilvered. The pool will
continue to function, possibly in a degraded state.
action: Wait for the resilver to complete.
scan: resilver in progress since Sun Mar 24 14:00:28 2013
20,8M scanned out of 2,59T at 2,98M/s, 253h10m to go
6,25M resilvered, 0,00% done
config:
NAME STATE READ WRITE CKSUM
tank DEGRADED 0 0 0
raidz1-0 DEGRADED 0 0 0
ata-WDC_WD20EARX-00PASB0_WD-WCAZAH899460 ONLINE 0 0 0
scsi-SATA_SAMSUNG_HD204UIS2HGJ90B632655 ONLINE 0 0 0
replacing-2 UNAVAIL 0 0 0
ata-ST2000DL003-9VT166_5YD769R0-part3 UNAVAIL 0 0 0
ata-ST2000DL003-9VT166_5YD769R0 ONLINE 0 0 0 (resilvering)
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Je ne vous raconte pas le soupir de soulagement que j’ai poussé lorsque j’ai vu ceci à l’écran&lt;/p&gt;</description></item><item><title>ZFS on Linux : cannot replace X with Y: devices have different sector alignment</title><link>https://blog.zwindler.fr/2013/03/24/zfs-on-linux-cannot-replace-x-with-y-devices-have-different-sector-alignment/</link><pubDate>Sun, 24 Mar 2013 14:27:45 +0000</pubDate><guid>https://blog.zwindler.fr/2013/03/24/zfs-on-linux-cannot-replace-x-with-y-devices-have-different-sector-alignment/</guid><description>&lt;img src="https://blog.zwindler.fr/2014/08/zfs-linux.webp" alt="Featured image of post ZFS on Linux : cannot replace X with Y: devices have different sector alignment" /&gt;&lt;p&gt;Pour une obscure raison que je détaillerai dans un prochain article je me suis retrouvé avec un disque de ma grappe RAID-Z1 avec 2 partitions, une en ext4 et l’autre pour la grappe ZFS. Vous savez surement que pour des raisons de performances et de taille utile de la grappe ZFS, il est préférable de disposer d’un disque entier pour la création des VDEV.&lt;/p&gt;
&lt;p&gt;Une fois le nettoyage fait au niveau de la partition non ZFS, je me suis retrouvé face à un dilemme. Comment remplacer le device &lt;strong&gt;disque3-part2&lt;/strong&gt; par &lt;strong&gt;disque3&lt;/strong&gt;. Et c’est ainsi qu’a commencé ma descente aux enfers (relativement brève heureusement).&lt;/p&gt;
&lt;p&gt;La première idée que j’ai essayé pour me débarrasser du disque a été le &lt;strong&gt;zpool replace&lt;/strong&gt;, mais forcément ça ne peut pas marcher, puisque c’est le même disque, il est donc &lt;strong&gt;busy&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;Ma seconde idée a été de passer &lt;strong&gt;disque3-part2&lt;/strong&gt; en &lt;strong&gt;offline&lt;/strong&gt;, mais là encore, comme &lt;strong&gt;offline&lt;/strong&gt; ne correspond pas à un état « détruit », mais plutôt « mis de côté pour plus tard », ça n’a pas été bien loin.&lt;/p&gt;
&lt;p&gt;Ma troisième idée a été de profiter du fait que le &lt;strong&gt;disque3-part2&lt;/strong&gt; était offline pour passer disque3 comme &lt;em&gt;spare&lt;/em&gt; de mon zpool. Alors effectivement, au final ça a marché mais ce n’est pas tout à fait la façon dont je voulais le faire. En fait, le disque a été entièrement formaté&amp;hellip;&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;zpool status tank
pool: tank
state: DEGRADED
status: One or more devices could not be used because the label is missing or
invalid.  Sufficient replicas exist for the pool to continue
functioning in a degraded state.
action: Replace the device using &amp;#39;zpool replace&amp;#39;.
see: http://zfsonlinux.org/msg/ZFS-8000-4J
scan: resilvered 31,5K in 0h0m with 0 errors on Sun Mar 24 12:44:41 2013
config:
NAME            STATE     READ WRITE CKSUM
tank            DEGRADED     0     0     0
raidz1-0      DEGRADED     0     0     0
disque1  ONLINE       0     0     0
disque2   ONLINE   0     0     0
disque3-part2    UNAVAIL      0     0     1
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Bon « ce qui est fait est fait », le &lt;strong&gt;disque3-part2&lt;/strong&gt; étant pour toujours indisponible (paix à son âme), je me suis dis que j’allais au moins enfin pouvoir importer le &lt;strong&gt;disque3&lt;/strong&gt; en entier pour ma grappe. Mais comme une bonne nouvelle n’arrive jamais seule, voilà en face de quoi je me suis retrouvé.&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;zpool replace tank disque3-part2 disque3
cannot replace disque3-part2 with disque3: devices have different sector alignment
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;OMG&amp;hellip; Je sens que ça va me plaire cette histoire&amp;hellip; En fait il s’agit d’un module de ZFS qui cherche à savoir si vos disques utilisent des tailles physiques de bloc de 512 octets ou de 4ko (les plus récents), pour pallier à des problèmes de performances rencontrés&amp;hellip; Normalement je suis bien en default, la zpool doit choisir elle même&amp;hellip;&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;zpool get ashift tank
NAME  PROPERTY  VALUE   SOURCE
tank  ashift    0       default
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Le soucis c’est que ce paramètre indique juste qu’à la création, la zpool choisit toute seule son alignement (9 pour 512 ou 12 pour 4k), ce qui est vraiment facheux car à mon humble avis mes disques sont tous en 4k&amp;hellip; Et bien sûr, plus moyen de modifier à la volée&amp;hellip;&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;zpool set ashift=12 tank
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Après avoir sué a grosses gouttes avec une grappe en DEGRADED pendant quelques minutes (surtout parce que je ne savais pas si j’allais savoir le fixer), j’ai quand même réussi à récupérer la « solution » grâce à la communautés, en attendant un vrai patch des développeurs.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class="link" href="https://github.com/zfsonlinux/zfs/issues/1328" target="_blank" rel="noopener"
&gt;ZfSonLinux issue 1328&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://groups.google.com/a/zfsonlinux.org/forum/?fromgroups=#!topic/zfs-discuss/igoAmmKXz5E" target="_blank" rel="noopener"
&gt;ZFSonLinux google group&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;En gros, &lt;strong&gt;murrayju&lt;/strong&gt; a patché le code, et il « suffit » de compiler ses propres modules ZFS pour contourner le problème&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;apt-get install git uuid-dev alien
git clone https://github.com/murrayju/zfs
cd zfs
./autogen.sh
./configure
make deb
dpkg -l | grep zfs
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Les packages existant provoquent (forcément) des conflits avec ceux qui viennent d’être compilés, il faut donc se débarrasser de tout ce qui ressemble de près ou de loin à un module ZFS&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;apt-get remove zfsutils zfs-fuse zfs-dkms ubuntu-zfs libzfs1
dpkg -i *.deb
dpkg -l | grep zfs
apt-get remove zfsutils
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;A partir de là, un reboot permet de se débarraser des modules noyaux encore chargés et de booter sur l’ancien code, qui lui accepte bien mes disque 4K sur mon pool 512&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;init 6
zpool replace tank disque3-part2 disque3
zpool status
pool: tank
state: DEGRADED
status: One or more devices is currently being resilvered.  The pool will
continue to function, possibly in a degraded state.
action: Wait for the resilver to complete.
scan: resilver in progress since Sun Mar 24 14:00:28 2013
20,8M scanned out of 2,59T at 2,98M/s, 253h10m to go
6,25M resilvered, 0,00% done
config:
NAME            STATE     READ WRITE CKSUM
tank            DEGRADED     0     0     0
raidz1-0      DEGRADED     0     0     0
disque1  ONLINE       0     0     0
disque2   ONLINE       0     0     0
replacing-2 UNAVAIL      0     0     0
disque3-part2   UNAVAIL      0     0     0
disque3         ONLINE       0     0     0  (resilvering)
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Elle est pas belle la vie?&lt;/p&gt;
&lt;p&gt;Bon &amp;hellip; par contre &amp;hellip; après ça, j’imagine que vous ne serez pas surpris d’apprendre que je suis passé en ext4 avec mdadm &amp;hellip;&lt;/p&gt;</description></item><item><title>Du ZFS à la maison avec ZFSonLinux et un coup de main pour comprendre grâce à Aaron Toponce</title><link>https://blog.zwindler.fr/2013/01/07/du-zfs-a-la-maison-avec-zfsonlinux-et-un-coup-de-main-pour-comprendre-grace-a-aaron-toponce/</link><pubDate>Mon, 07 Jan 2013 17:59:37 +0000</pubDate><guid>https://blog.zwindler.fr/2013/01/07/du-zfs-a-la-maison-avec-zfsonlinux-et-un-coup-de-main-pour-comprendre-grace-a-aaron-toponce/</guid><description>&lt;img src="https://blog.zwindler.fr/2014/08/zfs-linux.webp" alt="Featured image of post Du ZFS à la maison avec ZFSonLinux et un coup de main pour comprendre grâce à Aaron Toponce" /&gt;&lt;p&gt;Je l’ai déjà dis, je suis un sysadmin/technophile. Et comme je ne peux rien faire comme tout le monde, quand j’ai décidé de me monter mon NAS/MediaCenter perso, j’ai voulu le faire aussi bien au niveau hardware que software. Ceci m’a permis, à coût égal, de faire au moins aussi bien qu’un NAS tout prêt, et même beaucoup mieux dans certains domaines&amp;hellip; au prix de multiples passes/améliorations/prises de tête ;-).&lt;/p&gt;
&lt;p&gt;Pour toutes ces raisons, je ne pouvais PAS passer à côté de ZFSonLinux, une implémentation du FS introduit par Sun dans Solaris, car ZFS et à mon sens un des filesystems les plus aboutis en terme de fonctionnalités et surtout de sécurité des données :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;b-tree file system&lt;/li&gt;
&lt;li&gt;checksuming de tous les blocks à 256 bits (eux même checksumés) et équivalent du fsck à chaud&lt;/li&gt;
&lt;li&gt;équivalent de parité/RAID en natif&lt;/li&gt;
&lt;li&gt;gestion de FS simplifiée avec des propriétés qui peuvent être héritées ou modifiées&lt;/li&gt;
&lt;li&gt;compression et même déduplication (!!!) en natif&lt;/li&gt;
&lt;li&gt;protocoles de présentations sur le réseau en natif&lt;/li&gt;
&lt;li&gt;snapshots quasiment illimités&lt;/li&gt;
&lt;li&gt;&amp;hellip; (j’en oublie sûrement beaucoup =&amp;gt; go site officiel/wikipédia)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Sans aller plus loin, je vous propose juste d’aller voir un travail assez complet sur ZFSonLinux, qui regroupe l’équivalent de plusieurs documentations ZFS expliquées et appliquées au cas qu’est ZFSonLinux :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Rappel des concepts de ZFS&lt;/li&gt;
&lt;li&gt;Mise en place étape par étape&lt;/li&gt;
&lt;li&gt;Best Practices et ressenti de l’auteur sur la techno et la stabilité des fonctionnalités délivrées par cet implémentation&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Je ne ferais pas mieux que lui pour expliquer, c’est un must-read pour tout ceux qui voudraient en savoir plus sans savoir où commencer&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class="link" href="https://web.archive.org/web/20230904234829/https://pthree.org/2012/04/17/install-zfs-on-debian-gnulinux/" target="_blank" rel="noopener"
&gt;Install ZFS on Debian (lien mort, j&amp;rsquo;utilise Internet Archive)&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;En bonus track, je vous linke aussi la documentation officielle Oracle pour aller plus loin dans l’utilisation de la CLI et un bon vieux troll de 2007 ;-)&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class="link" href="http://docs.oracle.com/cd/E19253-01/819-5461/index.html" target="_blank" rel="noopener"
&gt;Docs Oracle&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://web.archive.org/web/20130909121359/https://blogs.oracle.com/bonwick/entry/rampant_layering_violation" target="_blank" rel="noopener"
&gt;blogs.oracle.com/bonwick/entry/rampant_layering_violation (lien mort, j&amp;rsquo;utilise Internet Archive)&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description></item></channel></rss>