freebsd:zfs
Différences
Ci-dessous, les différences entre deux révisions de la page.
Prochaine révision | Révision précédente | ||
freebsd:zfs [2012/07/12 10:11] – créée sheltem | freebsd:zfs [2018/04/25 08:44] (Version actuelle) – sheltem | ||
---|---|---|---|
Ligne 4: | Ligne 4: | ||
===== Création d'un pool ===== | ===== Création d'un pool ===== | ||
- | Identifier les disques durs : | + | ==== Identifier les disques durs ==== |
SATA : | SATA : | ||
Ligne 17: | Ligne 17: | ||
egrep ' | egrep ' | ||
+ | | ||
+ | ==== Définition d'un pool ==== | ||
Pour créer un pool de 3 disques dur en raidz du nom de " | Pour créer un pool de 3 disques dur en raidz du nom de " | ||
- | | + | |
+ | |||
+ | ==== Propriétés ==== | ||
+ | |||
+ | Voir les propriétés d'un pool : | ||
+ | |||
+ | zfs get all storage/ | ||
+ | |||
+ | Voir le status d'un propriété (compression dans l' | ||
+ | |||
+ | zfs get compression storage/ | ||
+ | |||
+ | Changer une propriété (atime dans l' | ||
+ | |||
+ | zfs set atime=on storage/ | ||
+ | |||
+ | ===== Réparer un pool dégradé ===== | ||
+ | |||
+ | On identifie le disque dur défaillant : | ||
+ | |||
+ | zpool status | ||
+ | |||
+ | ce qui donne : | ||
+ | |||
+ | < | ||
+ | pool: mon_pool | ||
+ | state: DEGRADED | ||
+ | status: One or more devices has been removed by the administrator. | ||
+ | Sufficient replicas exist for the pool to continue functioning in a | ||
+ | degraded state. | ||
+ | action: Online the device using 'zpool online' | ||
+ | ' | ||
+ | scan: resilvered 1.37G in 0h0m with 0 errors on Thu Jul 12 16:01:38 2012 | ||
+ | config: | ||
+ | |||
+ | NAME | ||
+ | mon_pool | ||
+ | raidz1-0 | ||
+ | 4426481649996282313 | ||
+ | ada2 | ||
+ | ada3 | ||
+ | |||
+ | errors: No known data errors | ||
+ | </ | ||
+ | |||
+ | C'est donc " | ||
+ | |||
+ | On éteint la machine, on remplace le disque défaillant, | ||
+ | |||
+ | On indique donc qu'on a remplacé le disque avec cette commande : | ||
+ | |||
+ | zpool replace mon_pool /dev/ada1 | ||
+ | |||
+ | Si vous remplacer le disque défaillant par un ayant déja été utilisé dans un autre pool, la commande le signalera en donnant le nom du pool dont fait parti le disque, si vous êtes sur de vouloir l' | ||
+ | |||
+ | zpool replace -f mon_pool /dev/ada1 | ||
+ | |||
+ | la commande peut prendre quelque seconde pour rendre le prompt. | ||
+ | |||
+ | Une fois fait on peut vérifier de nouveau avec "zpool status" | ||
+ | |||
+ | < | ||
+ | pool: mon_pool | ||
+ | state: DEGRADED | ||
+ | status: One or more devices is currently being resilvered. | ||
+ | continue to function, possibly in a degraded state. | ||
+ | action: Wait for the resilver to complete. | ||
+ | scan: resilver in progress since Thu Jul 12 16:22:34 2012 | ||
+ | 3.17G scanned out of 4.11G at 217M/s, 0h0m to go | ||
+ | 1.06G resilvered, 77.16% done | ||
+ | config: | ||
+ | |||
+ | NAME | ||
+ | mon_pool | ||
+ | raidz1-0 | ||
+ | ada1 | ||
+ | ada2 | ||
+ | replacing-2 | ||
+ | 5739093499366978272 | ||
+ | ada3 | ||
+ | |||
+ | errors: No known data errors | ||
+ | </ | ||
+ | |||
+ | ===== Redimensionner un pool ===== | ||
+ | |||
+ | Imaginons un pool de 3 disques de 250Go (ada1, ada2, ada3), que l'on souhaite remplacer par 3 disques de 1To. | ||
+ | |||
+ | Si le pool ne contient pas le système, il paraît judicieux de tous transférer sur un autre support, puis refaire un pool avec les 3 nouveaux disques, ou si l'on a suffisamment de contrôleurs, | ||
+ | |||
+ | Si le système est dessus et/ou le pool est plein et qu'on a pas de moyen de transférer les données provisoirement ailleurs, il y a une solution, qui peut être longue mais qui fonctionne. | ||
+ | |||
+ | On éteint la machine et on remplace un 250Go par un modèle d'un 1To, et on déclare le remplacement comme indiqué dans le chapitre précédent. | ||
+ | |||
+ | Une fois que le status confirme que le pool est " | ||
+ | |||
+ | Ensuite on fait un : | ||
+ | |||
+ | zpool list | ||
+ | |||
+ | qui confirmera que le pool fait environ 750Go, qui est donc la taille additionné des 3 anciens disques. | ||
+ | |||
+ | ensuite on fais un : | ||
+ | |||
+ | zpool set autoexpand=on mon_pool | ||
+ | |||
+ | Ce qui active la possibilité d'auto redimensionnement du pool, il faut ensuite déconnecter un disque, puis le reconnecter en lui indiquant d' | ||
+ | |||
+ | zpool offline mon_pool ada1 | ||
+ | |||
+ | puis | ||
+ | |||
+ | zpool online -e mon_pool ada1 | ||
+ | |||
+ | L' | ||
+ | |||
+ | Et voila, un : | ||
+ | |||
+ | zpool list | ||
+ | |||
+ | devrait vous montrer cette fois environ 3To (~ 1,8To utilisable en raidz). | ||
+ | |||
+ | on peut ensuite désactivé l' | ||
+ | |||
+ | zpool set autoexpand=off mon_pool | ||
+ | |||
+ | ===== Tuning ===== | ||
+ | |||
+ | ==== Alignement des blocs ==== | ||
+ | |||
+ | Pour résumer, sous freebsd, les disques sont détecté comme ayant des blocs de 512 octets, et la plupart des outils de partitionnements les voient comme ça, sauf que tous les disques durs d' | ||
+ | |||
+ | Pour vérifier : | ||
+ | |||
+ | zdb -C storage | grep ashift | ||
+ | |||
+ | | ||
+ | |||
+ | La valeur " | ||
+ | |||
+ | L' | ||
+ | |||
+ | **Attention, | ||
+ | |||
+ | On crée les " | ||
+ | |||
+ | gnop create -S 4096 /dev/ada1 | ||
+ | gnop create -S 4096 /dev/ada2 | ||
+ | gnop create -S 4096 /dev/ada3 | ||
+ | |||
+ | On crée notre pool avec : | ||
+ | |||
+ | zpool create storage raidz / | ||
+ | |||
+ | On vérifie : | ||
+ | |||
+ | < | ||
+ | zpool status | ||
+ | |||
+ | pool: storage | ||
+ | state: ONLINE | ||
+ | scan: none requested | ||
+ | config: | ||
+ | |||
+ | NAME | ||
+ | storage | ||
+ | raidz1-0 | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | </ | ||
+ | On exporte le pool (sauve les paramètres et stop les lecture/ | ||
+ | |||
+ | zpool export storage | ||
+ | |||
+ | On détruit les " | ||
+ | |||
+ | gnop destroy / | ||
+ | |||
+ | On importe le pool : | ||
+ | |||
+ | zpool import storage | ||
+ | |||
+ | On vérifie : | ||
+ | |||
+ | zpool status | ||
+ | |||
+ | pool: storage | ||
+ | | ||
+ | scan: none requested | ||
+ | | ||
+ | |||
+ | NAME STATE READ WRITE CKSUM | ||
+ | storage | ||
+ | raidz1-0 | ||
+ | ada1 ONLINE | ||
+ | ada2 ONLINE | ||
+ | ada3 ONLINE | ||
+ | |||
+ | Le pool en mode raidz est bien la avec les " | ||
+ | |||
+ | On vérifie également que zfs considère bien nos disques comme ayant des blocs de 4Ko : | ||
+ | |||
+ | zdb -C storage | grep ashift | ||
+ | |||
+ | Ce qui doit donner : | ||
+ | |||
+ | ashift: 12 | ||
+ | |||
+ | et non plus " | ||
+ | |||
+ | ==== Ajuster les propriétés ==== | ||
+ | |||
+ | La déduplication est une propriété qui fera gagné un espace non négligeable sur certain système de fichiers, mais sur un NAS personnel, elle sera la plupart du temps inutile, mais surtout trés gourmande en ressources. | ||
+ | |||
+ | Pour la désactiver : | ||
+ | |||
+ | zfs set dedup=off | ||
+ | |||
+ | Une autre propriété rarement utile, les "acces time", permettant de mettre a jour les dates d' | ||
+ | |||
+ | Pour les désactiver : | ||
+ | |||
+ | zfs set atime=off storage | ||
+ | |||
+ | Et la compression, | ||
+ | |||
+ | Pour la désactiver : | ||
+ | |||
+ | zfs set compression=off storage |
freebsd/zfs.1342087913.txt.gz · Dernière modification : 2012/07/12 10:11 de sheltem