Récapitulons [2]
Récapitulatif des réglages zfs.
Précédent : ZFS on Linux - 7
8.1 - Réglages des options ZFS
8.1.1 - vdev_id.conf
Entre 2011 et 2019, le nom et le format du fichier de description des périphériques dédiés à ZFS à changé. Attention, c'est trés rapide.
- /etc/zfs/zdev.conf
1 2 | SATA1 pci-0000:00:1f.2-ata-1 # sda
SATA2 pci-0000:00:1f.2-ata-2 # sdb
|
- /etc/zfs/vdev_id.conf
1 2 | alias SATA1 pci-0000:00:1f.2-ata-1 # sda
alias SATA2 pci-0000:00:1f.2-ata-2 # sdb
|
Voilà, voilà, voilà...
8.1.1.1 - simple attachement : vdev_id.conf
En simple attachement SAS (les disques en façade, par exemple), le fichier /etc/zfs/vdev_id.conf est suffisant. Mon conseil, utilisez le nommage des disques par chemin (/dev/disk/by-path/) :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | # expander sas single-attached, on LSI Logic SAS2008 [Falcon]
# disks 'by-path'
alias sas0 pci-0000:09:00.0-sas-exp0x500262d00b9a733f-phy0-lun-0
alias sas1 pci-0000:09:00.0-sas-exp0x500262d00b9a733f-phy1-lun-0
alias sas2 pci-0000:09:00.0-sas-exp0x500262d00b9a733f-phy2-lun-0
alias sas3 pci-0000:09:00.0-sas-exp0x500262d00b9a733f-phy3-lun-0
alias sas4 pci-0000:09:00.0-sas-exp0x500262d00b9a733f-phy4-lun-0
alias sas5 pci-0000:09:00.0-sas-exp0x500262d00b9a733f-phy5-lun-0
alias sas6 pci-0000:09:00.0-sas-exp0x500262d00b9a733f-phy6-lun-0
alias sas7 pci-0000:09:00.0-sas-exp0x500262d00b9a733f-phy7-lun-0
alias sas8 pci-0000:09:00.0-sas-exp0x500262d00b9a733f-phy8-lun-0
alias sas9 pci-0000:09:00.0-sas-exp0x500262d00b9a733f-phy9-lun-0
alias sas10 pci-0000:09:00.0-sas-exp0x500262d00b9a733f-phy10-lun-0
alias sas11 pci-0000:09:00.0-sas-exp0x500262d00b9a733f-phy11-lun-0
|
8.1.1.2 - double attachement : multipath
En double ou multi-attachement SAS, le fichier /etc/zfs/vdev_id.conf est réduit à sa plus simple expression :
1 2 | multipath yes
# pour la seconde fois, oui, c'est tout.
|
Le fichier /etc/multipath.conf est un peu fastidieux à écrire/maintenir. Mais on peut s'aider du petit outil suivant : gen_multipath_MD3060e.py
Je vous renvoie à l'un des chapitres précédents pour des exemples de multipath.conf.
8.1.2 - pool vs volume(s)
Stricto sensu, le pool (ou Storage Pool), c'est l'assemblage des disques. Il correspond à la partie mdadm (RAID logiciel) additionné de la couche Physical Volumes de LVM.
Les volumes (ou datasets), à l'intérieur du pool, correspondent aux couches Volume Groups et Logical Volumes de LVM fusionnées avec un système de fichiers.
Quand vous créez un pool, il s'accompagne automatiquement d'un premier volume, donc d'un premier système de fichiers, utilisable tel quel.
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 | zfs list
NAME USED AVAIL REFER MOUNTPOINT
data 1,50T 2,88T 1,49T /data
|
Pourquoi AVAIL est différent de FREE ? C'est quoi REFER ? C'est à cause des snapshots (entre autres, avec quota et compression). Je vous renvoie à votre moteur de recherche préféré pour des explications détaillées (Je n'ai toujours pas saisi toutes les subtilités).
8.1.3 - Volumes pour bases de données
En règle générale, on sépare le volume des données du volume dédié aux journaux. Et il y a une série de réglages spécifiques à faire, suivant le moteur de base de données (recordsize, primarycache, logbias...).
8.1.4 - Tuning et Evil Tuning
Vous trouverez beaucoup d'explications et de réglages à partir des pages suivantes :
Le ZFS Evil Tuning Guide a disparu en même temps que solarisinternals.com. Il en reste des copies sur le Grand Ternet :
8.1.5 - 80% de remplissage
Cette règle a été vérifiée plusieurs fois. Ne laissez pas vos pools se remplir au-delà de 80%. Sinon, vous verrez les performances s'écrouler.
Voir Free space (en).
8.2 - Diagnostic de panne disque
Avertissement!
Les manipulations décrites ici sont à vos risques et périls ! Faites des sauvegardes AVANT toute intervention. Et rappellez-vous la règle du menuisier : On mesure cent fois, on ne coupe qu'une fois. Relisez-vous avant d'appuyer sur Enter.
Parce que oui, les disques, ça tombe souvent en panne. zpool et smartmontools sont les outils complémentaires pour surveiller la santé des disques mécaniques.
- Status des disques avec zpool :
8.2.1 - Pannes courantes
- Erreurs de read ou de checksum :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | zpool status baie2
pool: baie2
state: ONLINE
status: One or more devices has experienced an unrecoverable error. An
attempt was made to correct the error. Applications are unaffected.
action: Determine if the device needs to be replaced, and clear the errors
using 'zpool clear' or replace the device with 'zpool replace'.
see: http://zfsonlinux.org/msg/ZFS-8000-9P
scan: scrub repaired 404K in 20h6m with 0 errors on Sat Jun 28 06:17:14 2014
config:
NAME STATE READ WRITE CKSUM
baie2 ONLINE 0 0 0
raidz1-0 ONLINE 0 0 0
sda ONLINE 0 0 0
[ ... ]
sdf ONLINE 8 0 25
raidz1-1 ONLINE 1 0 0
sdg ONLINE 0 0 0
[ ... ]
sdj ONLINE 93 0 563
sdk ONLINE 182K 0 57
sdl ONLINE 1 0 0
errors: No known data errors
|
Ici, le volume contient peu de données, et je n'ai pas changé les disques avec des erreurs de badblocks (Ça n'est pas recommandé en production !!), afin d'observer l'effet sur zpool. Il y a 4 disques a changer, une intervention manuelle est requise (l'un après l'autre, ça va sans dire, pour sdj, sdk et sdl).
- Erreur de write :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | pool: baie3
state: DEGRADED
status: One or more devices are faulted in response to persistent errors.
Sufficient replicas exist for the pool to continue functioning in a
degraded state.
action: Replace the faulted device, or use 'zpool clear' to mark the device
repaired.
scan: scrub repaired 1,78G in 34h21m with 0 errors on Sat Oct 20 22:56:12 2018
config:
NAME STATE READ WRITE CKSUM
baie3 DEGRADED 0 0 0
raidz2-0 ONLINE 0 0 0
B3D0 ONLINE 0 0 0
[ ... ]
B3D5 ONLINE 0 0 0
raidz2-1 DEGRADED 0 0 0
B3D6 ONLINE 0 0 0
[ ... ]
B3D10 ONLINE 0 0 0
B3D11 FAULTED 0 1 0 too many errors
errors: No known data errors
|
Dans ce cas, à la première erreur de write, le disque est marqué comme fautif. Il faut diagnostiquer le disque (avec smartctl) et/ou les outils du contrôleur SAS. On peut soit clear (si smart health status OK, si les tests smart passent sans erreurs (short et long), si pas d'erreur dans dmesg) soit changer le disque (Allo, le SAV ?).
Un disque mécanique FAULTED sans erreurs n'a pas forcément besoin d'être changé immédiatement. Un simple hotswap peut suffire à le remettre en service (pour une durée variable). Invalider le disque dès la première erreur est une forme de prudence qu'on rencontre aussi sur les contrôleurs RAID matériels.
- Disque hors-service :
1 2 | raidz1-1 DEGRADED 0 0 0
sdd UNAVAIL 0 0 0
|
Le disque n'est plus visible par smartctl, sas2ircu ou megasasctl. Il faut le changer. Et vite !
8.2.3 - Changement d'un disque
Note
Il n'existe pas d'outils pour gérer automatiquement le changement d'un disque en panne. Ceci est un appel :o) !!
Après l'échange physique du disque, il faut relever son GUID, mettre à jour multipath.conf et faire prendre en compte cette nouvelle configuration à multipath Après quoi on peut remplacer le disque dans le pool, ce qui lancera une reconstruction automatique (un resilver, dans le langage ZFS).
1 2 3 4 5 6 7 8 9 | # /etc/multipath.conf (extrait)
multipaths {
multipath {
#wwid 35000cca01aa65e50 # old one
wwid 35000cca2697325e0
alias B1D0
#rr_weight priorities
}
}
|
1 2 | multipath -F
multipath -r
|
1 2 3 4 5 6 7 8 | multipath -v2 -ll
B1D0 (35000cca2697325e0) dm-1 SEAGATE,ST4000NM0023
size=3.6T features='1 retain_attached_hw_handler' hwhandler='0' wp=rw
|-+- policy='service-time 0' prio=1 status=active
| `- 1:0:0:0 sdc 8:80 active ready running
`-+- policy='service-time 0' prio=1 status=enabled
`- 2:0:0:0 sdaq 66:144 active ready running
|
1 | zpool replace baie1 B1D0
|
Il faut surveiller le bon déroulement de l'opération avec zpool status baie1 à intervalles réguliers.
Merci de nous avoir lu jusqu'ici.
Précédent : ZFS on Linux - 7
ZFS on Linux - Footnotes
date: | 2019-03-25 |
---|---|
category: | HPC |
tags: | ZFS |
(notes de bas de page des articles ZFS on Linux, pasque DRY)
CBP : Centre Blaise Pascal
CDDL : Common Development and Distribution License
CLI : Command Line Interface (interface en ligne de commande)
COW : Copy On Write (copie sur écriture)
CPU : Central Processing Unit (Processeur Central)
DAS : Direct_Attached_Storage
DIY : Do It Yourself : *Fais-le toi-même.*
DRY : Don't Repeat Yourself : *Ne te repête pas.*
GUID : Global Unique Identifier
HBA : Host Bus Adapter
HT : HyperThreading
JBOD : Just a Bunch Of Disks
LLNL : Laurence Livermore National Laboratory
LVM : Logical Volume Manager ou Gestion par Volumes Logiques
NFS : Network File System
OS : Operating System, ou Système d'Exploitation
PSMN : Pôle Scientifique de Modélisation Numérique (là où je passe l'essentiel de mes journées)
RAID : Redundant Array of Inexpensive Disks
RAM : Random Access Memory, ou Mémoire Vive
SAS : Serial Attached SCSI
SATA : Serial Advanced Technology Attachment
SPL : Solaris Porting Layer, see github
SSD : Solid State Drive
ZFS :
SPDX-License-Identifier : CC-BY-4.0