SunFire X4150
Note
Edit 2019 : Cette partie est mise à jour. La X4150 est une vieille (fin 2007 !) machine, mais reste une merveille pour les petits serveurs de fichiers.
Précédent : ZFS on Linux - 3 | Suivant : ZFS on Linux - 5
4.1 - Description du matériel : SunFire X4150
- 2x "Quad core Intel Xeon E5440" @ 2,83 GHz (8 processeurs)
- 16 Go RAM (ou 24 Go)
- 8x 146 Go SAS 10kt/m (sur LSI Logic SAS1068E)
- ou 2x 146 Go SAS + 6x 1To SATA (sur LSI Logic SAS1068E)
- 4x Intel (80003ES2LAN/82571EB) Gigabit Ethernet Controller
Mise en service 2007. Debian 7 Squeeze jusqu'à Debian 9 Stretch.
4.2 - Configuration de ZFS
Pour installer ZFS, nous sommes passé d'une compilation des versions Release Candidate, à l'installation des paquets du dépot de zfsonlinux.org, puis aux paquets intégrés dans Debian Stable.
1 | apt install zfs-dkms zfs-zed zfsutils-linux |
- vdev_id.conf (anciennement zdev.conf, léger changement de format) :
1 2 3 4 5 6 7 8 | # sda et sdb, raid1 mdadm, pour l'OS # disks 'by-path' alias SAS2 pci-0000:07:00.0-sas-0x1221000002000000-lun-0 #sdc alias SAS3 pci-0000:07:00.0-sas-0x1221000003000000-lun-0 #sdd alias SAS4 pci-0000:07:00.0-sas-0x1221000004000000-lun-0 #sde alias SAS5 pci-0000:07:00.0-sas-0x1221000005000000-lun-0 #sdf alias SAS6 pci-0000:07:00.0-sas-0x1221000006000000-lun-0 #sdg alias SAS7 pci-0000:07:00.0-sas-0x1221000007000000-lun-0 #sdh |
- Création du pool :
1 | zpool create -f data raidz2 SAS2 SAS3 SAS4 SAS5 SAS6 SAS7 |
- Options par défaut :
Sur un serveur de fichiers (type NFS), les options suivantes peuvent être configurés par défaut sur le volume principal. Les systèmes de fichiers enfants en hériteront.
1 2 3 | for i in atime=off relatime=off compression=on xattr=sa snapdir=hidden snapdev=hidden ; do zfs set $i data done |
À partir de maintenant, on peut créer des volumes, modifier leurs options (quota, refquota, mountpoint, ...) et jouer avec.
4.3 - Tuning spécifique
Note
Edit 2019 : Cette partie a été mise à jour.
- Installez irqbalance plutôt que s'emmerder avec smp_affinity,
- Quelques réglages utiles dans /etc/rc.local,
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 27 | for device in /dev/sd? ; do disk=$(basename $device) # Désactiver le cache en écriture # /usr/bin/sdparm -q --clear=WCE $device # activer le cache en écriture /usr/bin/sdparm -q --save --set=WCE $device # Set read-ahead to 8 MiB (secteurs de 512o) blockdev --setra 16384 $device # https://www.kernel.org/doc/Documentation/block/queue-sysfs.txt echo 1 > /sys/block/$disk/queue/rotational echo 2 > /sys/block/$disk/queue/rq_affinity # 1 or 2 echo cfq > /sys/block/$disk/queue/scheduler # noop, deadline, cfq echo 1024 > /sys/block/$disk/queue/read_ahead_kb # from 128 to 8192 echo 256 > /sys/block/$disk/queue/nr_requests # from 128 to 8192 # Disable NCQ on disks # echo 1 > /sys/block/$disk/device/queue_depth done # Tuning mdadm for mdevice in /dev/md? ; do mdisk=$(basename $mdevice) # Set read-ahead to 32 MiB blockdev --setra 65536 $mdevice # Set stripe-cache_size for RAID>1 to 16MiB echo 16384 > /sys/block/$mdisk/md/stripe_cache_size echo 8192 > /sys/block/$mdisk/md/stripe_cache_active done |
- Quelques réglages utiles via sysctl (/etc/sysctl.d/psmn.conf),
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 27 | # speed limits for mdadm raid dev.raid.speed_limit_min = 50000 dev.raid.speed_limit_max = 500000 ## force the Linux VM to keep a minimum number of kilobytes free vm.min_free_kbytes = 1048576 vm.min_slab_ratio = 5 # https://www.percona.com/blog/2014/04/28/oom-relation-vm-swappiness0-new-kernel/ # https://community.hortonworks.com/articles/33522/swappiness-setting-recommendation.html # vm.swappiness, from 60 vm.swappiness = 20 # https://major.io/2008/08/07/reduce-disk-io-for-small-reads-using-memory/ # vm.dirty_ratio, from 40 vm.dirty_ratio = 70 # vm.dirty_bytes, from 0 ? #vm.dirty_bytes = 15000000 # vm.dirty_background_ratio, from 10 vm.dirty_background_ratio = 5 # vm.dirty_background_bytes, from 0 vm.dirty_background_bytes = 15000000 # vm.dirty_expire_centisecs, from 3000 vm.dirty_expire_centisecs = 6000 # http://www.backwardcompatible.net/139-Reducing-dentry-slab-usage-on-machines-with-a-lot-of-RAM # http://serverfault.com/questions/362589/effects-of-configuring-vm-overcommit-memory # vm.overcommit=2 # vm.overcommit_ratio=80 ? vm.vfs_cache_pressure = 10 |
- Quelques réglages utiles via modprobe (/etc/modprobe.d/zfs.conf),
1 2 3 4 5 | options spl spl_kmem_cache_slab_limit=16384 ## standard 8G (miniserv) zfs >0.6.3 # http://www.linux-mag.com/id/7572/ : deadline n'est plus une si bonne idée que ça. options zfs zfs_vdev_scheduler=cfq zfs_arc_max=8589934592 |
- Rappel des liens (explications) qui nous ont menés vers ces choix :
- https://www.kernel.org/doc/Documentation/block/queue-sysfs.txt
- https://www.percona.com/blog/2014/04/28/oom-relation-vm-swappiness0-new-kernel/
- https://community.hortonworks.com/articles/33522/swappiness-setting-recommendation.html
- https://major.io/2008/08/07/reduce-disk-io-for-small-reads-using-memory/
- http://www.backwardcompatible.net/139-Reducing-dentry-slab-usage-on-machines-with-a-lot-of-RAM
- http://serverfault.com/questions/362589/effects-of-configuring-vm-overcommit-memory
- http://www.linux-mag.com/id/7572/
Avec six disques 2,5" SAS ou SATA 7.2kt/m de 1 To, en raidz2, on dispose d'à peu prés 4 To pour faire joujou. Ce modèle de machine est trés bien équilibré. En 2019, il y en a encore une petite dizaine en production (12 ans !) entre le CBP et le PSMN.
Précédent : ZFS on Linux - 3 | Suivant : ZFS on Linux - 5
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