ZFS on Linux - 5


Dell PowerEdge R510, R720xd

Note

Edit 2019 : Cette partie est mise à jour. Et j'ai ajouté les baies DAS.


Précédent : ZFS on Linux - 4 | Suivant : ZFS on Linux - 6


Ces deux modèles de serveurs, bien que de générations différentes, se configurent de la même manière.

5.1 - Description du matériel

5.1.2 - Dell PowerEdge R510

  • 2x "Quad core Intel Xeon E5540" @ 2,53 GHz (HT actif, 16 processeurs logiques))
  • 32 Go RAM
  • 2x 146 Go SAS 10kt/m (sur PERC H300, RAID1)
  • 12x 2 To SATA (1x PERC H310, mode nonRaid)
  • 2x Broadcom Corporation NetXtreme II BCM5716 Gigabit Ethernet Controller
  • 1x SAS 6Gbps HBA (LSI SAS2008 Fusion-MPT SAS-2 [Falcon])

Mise en service 2010. Debian 7 Squeeze jusqu'à Debian 9 Stretch.

5.1.2 - Dell PowerEdge R720xd

  • 2x "Octo Core Intel Xeon E5-2670" @ 2,60 GHz (HT actif, 32 processeurs logiques)
  • 192 Go RAM (ou 128 Go RAM)
  • 2x 146 Go SAS 15kt/m (sur PERC H310 Mini, RAID1)
  • 24x 1 To MDL SAS 7.2kt/m (sur PERC H310 Mini, mode nonRaid)
  • ou 12x 4 To MDL SAS 7.2kt/m (sur PERC H310 Mini, mode nonRaid)
  • 2x Ethernet Intel I350 Gigabit + 2x Ethernet Intel X520 82599EB 10-Gigabit SFP+
  • 2x SAS 6Gbps HBA (LSI SAS2008 Fusion-MPT SAS-2 [Falcon])

Mise en service 2012 et 2013. Debian 7 Squeeze jusqu'à Debian 9 Stretch.

5.1.3 - Dell PowerVault MD1200

  • 2x SAS EMM (modules de gestion du boîtier)
  • 12x 3 To MDL SAS 7.2kt/m
  • ou 12x 4 To MDL SAS 7.2kt/m

Mise en service 2010.

5.1.4 - Dell PowerVault MD3060e

  • 2x SAS EMM (modules de gestion du boîtier)
  • 60x 4 To MDL SAS 7.2kt/m

Mise en service 2013.

5.2 - Configuration de ZFS avec multipath

Après une installation Debian des plus standard, voyons comment il est possible de lier serveurs et baies DAS.

5.2.1 - Installation

1
apt install zfs-dkms zfs-zed zfsutils-linux multipath-tools

5.2.2 - Attachements

  • DAS simple attachement (illustration Dell) :
single linked DAS (courtesy of Dell)
Cette disposition est la plus simple (avec une ou plusieurs baies) et ne nécessite aucune configuration particulière. Un fichier vdev_id.conf avec la liste des disques et c'est tout. Merci, au revoir.
  • DAS double attachement (ici, sur le même contrôleur, illustration Dell) :
double linked DAS (courtesy of Dell)
Cette disposition est la plus courante, avec un ou plusieurs contrôleurs RAID matériel. Avec de simples contrôleurs HBA, elle nécessite l'usage du logiciel multipath.
  • DAS daisy-chain ou attachement en anneau :
ring linked DAS
Cette disposition n'est pas toujours supportée par les contrôleurs RAID matériel. Elle fonctionne pourtant parfaitement avec des contrôleurs HBA et multipath.

En fait, avec multipath, le type d'attachement physique importe peu. Il suffit d'indiquer quels disques doivent être gérés et c'est le logiciel qui va découvrir les chemins (la topologie). Le modèle, ou la génération, de contrôleur SAS, supportant plus ou moins de disques (le LSI SAS2008 supporte de 256 à 512 devices), on pourra attacher plus ou moins de baies DAS (jusqu'à 8 baies MD1200, soit 96 disques, ou 4 baies MD3060e, soit 240 disques !).

5.2.3 - Configuration de ZFS

  • /etc/zfs/vdev_id.conf en multi-attachement :

Il est réduit à sa plus simple expression, tout sera géré via multipath.

1
2
multipath yes
# Oui, c'est tout.

Par contre, on ne peut pas mélanger des disques dans vdev_id.conf et d'autres avec multipath. Dans ce cas de figure, même les disques en simple attachement, ceux de la baie frontale du serveur par exemple, devront être gérés par multipath.

5.2.4 - Configuration de multipath

  • /etc/multipath.conf :

De la même manière qu'avec le fichier vdev_id.conf, on doit décrire les disques, les nommer (leur donner un alias). Il est fortement recommandé de blacklister le disque système.

Avertissement!

Une option par défaut a changé dans Debian 10, et il faut maintenant préciser le comportement de find_multipaths.

 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
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
# /etc/multipath.conf
# see /usr/share/doc/multipath-tools/examples/multipath.conf.annotated.gz

defaults {
    verbosity 1
    user_friendly_names no
    find_multipaths yes  # or greedy, or smart
}

blacklist {
    wwid  6d4ae5209ffc6500177de2aa11b3e85e
}

multipaths {
# baie1 MD1200 double attachement
# 12x 4 To
    multipath {
        wwid  35000cca01aa65e50
        alias  B1D0
    }
    multipath {
        wwid  35000cca01aa7a0d0
        alias  B1D1
    }

[ ... ]

    multipath {
        wwid  35000cca01aa68344
        alias  B1D11
    }
# baie frontale (simple attachement)
# 24x 1 To
    multipath {
        wwid  350000394081beff0
        alias  SRV_D0
    }
    multipath {
        wwid  3500003940828c18c
        alias  SRV_D1
    }

[ ... ]

    multipath {
        wwid  350000394081bc094
        alias  SRV_D23
    }
}

On retrouve l'association entre un GUID (préfixé d'un '3') et un alias humainement compréhensible. Quelques outils pour simplifier ces tâches sont décrit en partie 7.

Après vérification que multipathd a bien démarré lors de son installation, il faut lui faire prendre en compte sa nouvelle configuration :

1
2
ps faxu | grep [m]ulti
root      3210  0.0  0.0 2687520 22752 ?       SLsl  2013 124:16 /sbin/multipathd -d -s
1
multipath -F # Flush all unused multipath device maps.
1
2
multipath -r # Force devmap reload.
[ ... output may differ ... ]
 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
multipath -v2 -ll
# -v2 : be verbose
# -ll : Show the current multipath topology from all available sources

B1D8 (35000039518d23afc) dm-6 TOSHIBA,MG03SCA400
size=3.6T features='1 retain_attached_hw_handler' hwhandler='0' wp=rw
|-+- policy='service-time 0' prio=1 status=active
| `- 1:0:4:0  sdf  8:80   active ready running
`-+- policy='service-time 0' prio=1 status=enabled
  `- 2:0:4:0  sdap 66:144 active ready running
SRV_D13 (35000c50056580d03) dm-17 SEAGATE,ST91000640SS
size=932G features='1 retain_attached_hw_handler' hwhandler='0' wp=rw
`-+- policy='service-time 0' prio=1 status=active
  `- 0:0:13:0 sdz  65:144 active ready running
B1D7 (350000c0f01ba2f44) dm-7 WD,WD4001FYYG
size=3.6T features='1 retain_attached_hw_handler' hwhandler='0' wp=rw
|-+- policy='service-time 0' prio=1 status=active
| `- 1:0:5:0  sdg  8:96   active ready running
`-+- policy='service-time 0' prio=1 status=enabled
  `- 2:0:5:0  sdaq 66:160 active ready running

[ ... ]

SRV_D12 (35000c50056594ebb) dm-16 SEAGATE,ST91000640SS
size=932G features='1 retain_attached_hw_handler' hwhandler='0' wp=rw
`-+- policy='service-time 0' prio=1 status=active
  `- 0:0:12:0 sdy  65:128 active ready running

On retrouve pour chaque disque, une ligne rappelant l'alias, le GUID, le device mappé, VENDOR et MODEL. Puis une deuxième ligne avec la taille et les options. Enfin le chemin (ou les chemins) vers le device, ainsi que son état. Fun fact : La sortie n'est jamais dans le même ordre.

On retrouve les alias des disques dans /dev/mapper/.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
ls -l /dev/mapper/
total 0
lrwxrwxrwx 1 root root       8 nov.  15 16:38 B1D0 -> ../dm-11
lrwxrwxrwx 1 root root       8 nov.  15 16:38 B1D1 -> ../dm-10
lrwxrwxrwx 1 root root       7 nov.  15 16:38 B1D10 -> ../dm-2
lrwxrwxrwx 1 root root       7 nov.  15 16:38 B1D11 -> ../dm-3
lrwxrwxrwx 1 root root       7 nov.  15 16:39 B1D2 -> ../dm-0
lrwxrwxrwx 1 root root       7 nov.  15 16:38 B1D3 -> ../dm-5
lrwxrwxrwx 1 root root       7 nov.  15 16:38 B1D4 -> ../dm-4
lrwxrwxrwx 1 root root       7 nov.  15 16:38 B1D5 -> ../dm-1
lrwxrwxrwx 1 root root       7 nov.  15 16:38 B1D6 -> ../dm-8
lrwxrwxrwx 1 root root       7 nov.  15 16:38 B1D7 -> ../dm-7
lrwxrwxrwx 1 root root       7 nov.  15 16:38 B1D8 -> ../dm-6
lrwxrwxrwx 1 root root       7 nov.  15 16:38 B1D9 -> ../dm-9
crw------- 1 root root 10, 236 oct.  19 12:28 control
lrwxrwxrwx 1 root root       8 nov.  15 16:38 SRV_D0 -> ../dm-12
lrwxrwxrwx 1 root root       8 nov.  15 16:38 SRV_D1 -> ../dm-13
[ ... ]
lrwxrwxrwx 1 root root       8 nov.  15 16:38 SRV_D8 -> ../dm-34
lrwxrwxrwx 1 root root       8 nov.  15 16:38 SRV_D9 -> ../dm-35

C'est prêt !

5.2.5 - Création du pool

C'est le même principe qu'avec les alias de vdev_id.conf :

1
2
zpool create -f baie1 raidz2 B1D0 B1D1 B1D2 B1D3 B1D4 B1D5 \
raidz2 B1D6 B1D7 B1D8 B1D9 B1D10 B1D11
1
2
3
zpool list
NAME     SIZE  ALLOC   FREE  EXPANDSZ   FRAG    CAP  DEDUP  HEALTH  ALTROOT
baie1   43,5T  32,8T  10,7T         -    17%    75%  1.00x  ONLINE  -

(Oui, celui-là est déjà utilisé)


Précédent : ZFS on Linux - 4 | Suivant : ZFS on Linux - 6