web-dev-qa-db-fra.com

Meilleures pratiques ZFS avec RAID matériel

S'il arrive qu'un matériel de qualité serveur soit à votre disposition, est-il jamais conseillé d'exécuter ZFS sur un RAID1 matériel ou autre? Faut-il désactiver le RAID matériel et exécuter ZFS sur un mirror ou un raidzzpool à la place?

Avec la fonctionnalité RAID matérielle désactivée, les contrôleurs SATA2 basés sur le matériel RAID et SAS sont-ils plus ou moins susceptibles de masquer les erreurs de lecture et d'écriture que les contrôleurs non matériels-RAID le feraient?

En termes de serveurs non personnalisables, si l'on se trouve dans une situation où un contrôleur RAID matériel est effectivement neutre en termes de coûts (ou même réduit le coût de l'offre de serveur pré-construite, car sa présence améliore la probabilité que la société d'hébergement fournisse IPMI complémentaire doit-elle être évitée? Mais doit-elle être recherchée?

30
cnst

L'idée avec ZFS est de lui faire savoir autant que possible le comportement des disques. Du pire au meilleur:

  • Raid matériel (ZFS n'a absolument aucune idée du vrai matériel),
  • Mode JBOD (le problème étant plus sur tout expander potentiel: moins de bande passante),
  • Le mode HBA étant l'idéal (ZFS sait tout sur les disques)

Comme ZFS est assez paranoïaque à propos du matériel, moins il se cache, plus il peut faire face à des problèmes matériels. Et comme indiqué par Sammitch, les configurations de contrôleur RAID et ZFS peuvent être très difficiles à restaurer ou à reconfigurer en cas d'échec (c'est-à-dire une défaillance matérielle).

À propos du problème de matériel standardisé avec un contrôleur RAID matériel, assurez-vous simplement que le contrôleur matériel a un véritable mode d'intercommunication ou JBOD.

18
Ouki

Q. S'il arrive qu'un matériel de qualité serveur soit à votre disposition, est-il toujours conseillé d'exécuter ZFS sur un RAID1 matériel ou quelque chose du genre?

A. Il est fortement préférable d'exécuter ZFS directement sur le disque et de ne pas utiliser de forme RAID entre les deux. Le fait qu'un système qui nécessite effectivement l'utilisation de la carte RAID empêche ou non l'utilisation de ZFS a plus à voir avec les AUTRES avantages de ZFS qu'avec la résilience des données. À vrai dire, s'il existe une carte RAID sous-jacente chargée de fournir un seul LUN à ZFS, ZFS n'améliorera pas la résilience des données. Si votre seule raison d'utiliser ZFS est en premier lieu l'amélioration de la résilience des données, vous venez de perdre toute raison de l'utiliser. Cependant, ZFS fournit également ARC/L2ARC, la compression, les instantanés, les clones et diverses autres améliorations que vous pourriez également souhaiter, et dans ce cas, c'est peut-être toujours votre système de fichiers de choix.

Q. Doit-on désactiver le RAID matériel et exécuter ZFS sur un miroir ou un zpool raidz à la place?

R. Oui, si possible. Certaines cartes RAID autorisent le mode d'intercommunication. Si c'est le cas, c'est la chose préférable à faire.

Q. Avec la fonctionnalité RAID matérielle désactivée, les contrôleurs SATA2 et RAID SAS basés sur le matériel sont-ils plus ou moins susceptibles de masquer les erreurs de lecture et d'écriture que les contrôleurs RAID non matériels le feraient?

A. Cela dépend entièrement de la carte RAID en question. Vous devrez parcourir le manuel ou contacter le fabricant/vendeur de la carte RAID pour le savoir. Certains le font beaucoup, oui, surtout si "désactiver" la fonctionnalité RAID ne la désactive pas complètement.

Q. En termes de serveurs non personnalisables, si l'on se trouve dans une situation où un contrôleur RAID matériel est effectivement neutre en termes de coûts (ou même réduit le coût de l'offre de serveur pré-construite, car sa présence améliore les chances de la société d'hébergement fournissant accès IPMI complémentaire), faut-il l'éviter? Mais doit-elle être recherchée?

R. C'est à peu près la même question que la première. Encore une fois - si votre seul désir d'utiliser ZFS est une amélioration de la résilience des données, et que votre plate-forme matérielle choisie nécessite une carte RAID fournissant un seul LUN à ZFS (ou plusieurs LUN, mais vous avez une bande ZFS sur eux), alors vous faites rien pour améliorer la résilience des données et donc votre choix de ZFS peut ne pas être approprié. Si, toutefois, vous trouvez l'une des autres fonctionnalités ZFS utile, elle peut toujours l'être.

Je veux ajouter une préoccupation supplémentaire - les réponses ci-dessus reposent sur l'idée que l'utilisation d'une carte RAID matérielle sous ZFS ne fait rien pour nuire à ZFS au-delà de la suppression de sa capacité à améliorer la résilience des données. La vérité est qu'il s'agit plutôt d'une zone grise. Il existe divers réglages et hypothèses au sein de ZFS qui ne fonctionnent pas nécessairement aussi bien lors de la remise de LUN multi-disques au lieu de disques bruts. La plupart de cela peut être annulé avec un réglage approprié, mais hors de la boîte, vous ne serez pas aussi efficace sur ZFS au-dessus de grands LUN RAID que vous l'auriez été au-dessus de broches individuelles.

De plus, certaines preuves suggèrent que la manière très différente dont ZFS parle aux LUN par opposition aux systèmes de fichiers plus traditionnels invoque souvent des chemins de code dans le contrôleur RAID et des charges de travail auxquelles ils ne sont pas habitués, ce qui peut conduire à des bizarreries. Plus particulièrement, vous vous rendrez probablement service en désactivant la fonctionnalité ZIL entièrement sur n'importe quel pool que vous placez au-dessus d'un seul LUN si vous ne fournissez pas également un périphérique de journal distinct, bien que je vous recommande fortement Fournissez au pool un périphérique de journal brut distinct (si ce n'est pas un LUN de la carte RAID, si possible).

15
Nex7

J'exécute ZFS sur les configurations RAID HP ProLiant Smart Array assez souvent.

Pourquoi?

  • Parce que j'aime ZFS pour les partitions de données, pas les partitions de démarrage.
  • Parce que le démarrage Linux et ZFS n'est probablement pas à toute épreuve pour moi en ce moment.
  • Parce que les contrôleurs RAID HP n'autorisent pas relais de périphérique RAW . La configuration de plusieurs volumes RAID 0 n'est pas la même chose que les disques RAW.
  • Parce que les fonds de panier des serveurs ne sont généralement pas assez flexibles pour dédier des baies de disques à un contrôleur spécifique ou répartir les tâches entre deux contrôleurs. Ces jours-ci, vous voyez le plus souvent des configurations à 8 et 16 baies. Pas toujours suffisant pour segmenter la façon dont les choses devraient être.
  • Mais j'aime toujours les capacités de gestion de volume de ZFS. Le zpool me permet de découper les choses dynamiquement et de tirer le meilleur parti de l'espace disque disponible.
  • La compression, l'ARC et le L2ARC sont des fonctionnalités qui tuent!
  • Une configuration ZFS correctement conçue au-dessus du RAID matériel donne toujours de bons avertissements et alertes de panne, mais surpasse la solution uniquement matérielle.

Un exemple:

Configuration du contrôleur RAID.

[root@Hapco ~]# hpacucli ctrl all show config

Smart Array P410i in Slot 0 (Embedded)    (sn: 50014380233859A0)

   array B (Solid State SATA, Unused Space: 250016  MB)
      logicaldrive 3 (325.0 GB, RAID 1+0, OK)

      physicaldrive 1I:1:3 (port 1I:box 1:bay 3, Solid State SATA, 240.0 GB, OK)
      physicaldrive 1I:1:4 (port 1I:box 1:bay 4, Solid State SATA, 240.0 GB, OK)
      physicaldrive 2I:1:7 (port 2I:box 1:bay 7, Solid State SATA, 240.0 GB, OK)
      physicaldrive 2I:1:8 (port 2I:box 1:bay 8, Solid State SATA, 240.0 GB, OK)

bloquer la liste des appareils

[root@Hapco ~]# fdisk  -l /dev/sdc

Disk /dev/sdc: 349.0 GB, 348967140864 bytes
256 heads, 63 sectors/track, 42260 cylinders
Units = cylinders of 16128 * 512 = 8257536 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000

   Device Boot      Start         End      Blocks   Id  System
/dev/sdc1               1       42261   340788223   ee  GPT

Configuration de zpool

[root@Hapco ~]# zpool  list
NAME   SIZE  ALLOC   FREE    CAP  DEDUP  HEALTH  ALTROOT
vol1   324G  84.8G   239G    26%  1.00x  ONLINE  -

détail zpool

  pool: vol1
 state: ONLINE
  scan: scrub repaired 0 in 0h4m with 0 errors on Sun May 19 08:47:46 2013
config:

        NAME                                      STATE     READ WRITE CKSUM
        vol1                                      ONLINE       0     0     0
          wwn-0x600508b1001cc25fb5d48e3e7c918950  ONLINE       0     0     0

Liste des systèmes de fichiers zfs

[root@Hapco ~]# zfs list
NAME             USED  AVAIL  REFER  MOUNTPOINT
vol1            84.8G   234G    30K  /vol1
vol1/pprovol    84.5G   234G  84.5G  -
9
ewwhite

En règle générale, vous ne devez jamais exécuter ZFS sur des disques configurés dans une matrice RAID. Notez que ZFS n'a pas à s'exécuter en mode RAID. Vous pouvez simplement utiliser des disques individuels. Cependant, pratiquement 99% des personnes exécutent ZFS pour la partie RAID de celui-ci. Vous pouvez simplement exécuter vos disques en mode entrelacé, mais c'est une mauvaise utilisation de ZFS. Comme d'autres affiches l'ont dit, ZFS veut en savoir beaucoup sur le matériel. ZFS ne doit être connecté qu'à une carte RAID pouvant être réglée en mode JBOD, ou de préférence connectée à un HBA. Sautez sur IRC Freenode channel #openindiana; l'un des experts ZFS du canal vous dira la même chose. Demandez à votre hébergeur de fournir le mode JBOD s'il ne donnera pas de HBA.

6
chris

Pour vous tous ... ZFS sur n'importe quel raid est une DOULEUR totale et n'est effectué que par des personnes MAD! ... comme utiliser ZFS avec une mémoire non ECC.

Avec des échantillons, vous comprendrez mieux:

  • ZFS sur Raid1, un disque a un peu changé lorsqu'il n'était pas éteint ... faites levier, vous savez, ZFS verra des dommages ou ne dépendra pas du disque lu (le contrôleur Raid n'a pas vu ce bit changé et pense que les deux disques sont OK ) ... si l'échec est dans la partie VDEV ... tout le ZPOOL perd toutes ses données pour toujours.
  • ZFS sur Raid0, un disque a un peu changé quand il n'était pas éteint ... faites levier tout ce que vous savez, (le contrôleur Raid n'a pas vu ce bit changé et pense que les deux disques sont OK) ... ZFS verra ces dommages mais si le l'échec est dans la partie VDEV ... l'ensemble du ZPOOL perd toutes ses données pour toujours.

Là où ZFS est bon, c'est en détectant les bits qui ont changé lorsque le disque était sans alimentation (les contrôleurs RAID ne peuvent pas le faire), également quand quelque chose change sans qu'on le lui demande, etc.

C'est le même problème que lorsqu'un bit dans un module RAM change spontanément sans qu'on lui demande ... si la mémoire est ECC, la mémoire se corrige d'elle-même; sinon, ces données avaient changé, donc ces données seront envoyées sur des disques modifiés; faites levier pour que le changement ne soit pas sur la partie UDEV, si l'échec est dans la partie VDEV ... tout le ZPOOL perd toutes ses données pour toujours.

C'est une faiblesse sur ZFS ... VDEV échoue implique que toutes les données sont perdues à jamais.

Hardware Raid et Software Raid ne peuvent pas détecter les changements de bits spontanés, ils n'ont pas de somme de contrôle, pire sur les niveaux Raid1 (mirros), ils ne lisent pas toutes les parties et les comparent, ils supposent que toutes les parties auront toujours les mêmes données, TOUJOURS (je dis il bruyamment) Raid suppose que les données n'ont pas changé par autre chose/manière ... mais les disques (comme la mémoire) sont sujets à des changements de bits spontanés.

N'utilisez jamais un ZFS sur un non-ECC RAM et n'utilisez jamais ZFS sur des disques pillés, laissez ZFS voir tous les disques, n'ajoutez pas de couche qui peut ruiner votre VDEV et POOL.

Comment simuler un tel échec ... éteindre le PC, sortir un disque de ce Raid1 et modifier un seul bit ... reconecter et voir comment le contrôleur Raid ne peut pas savoir que cela a changé ... ZFS peut car toutes les lectures sont testées contre la somme de contrôle et s'il ne correspond pas, lisez une autre partie ... Raid ne relit plus jamais car un échec (sauf matériel impossible, la lecture échoue) ... si Raid peut lire, il pense que les données sont OK (mais ce n'est pas dans de tels cas ) ... Raid essaie seulement de lire à partir d'un autre disque si où il lit dit "hé, je ne peux pas lire à partir de là, le matériel tombe en panne" ... ZFS lit à partir d'un autre disque si la somme de contrôle ne correspond pas aussi comme si où il lit dit "hé, je ne peux pas lire à partir de là, le matériel tombe en panne".

J'espère que je le dis très clairement ... ZFS sur n'importe quel niveau de Raid est une douleur totale et un risque total pour vos données! ainsi que ZFS sur les mémoires non ECC.

Mais ce que personne ne dit (sauf moi) est:

  • N'utilisez pas de disques avec cache interne (non seulement ceux SHDD, aussi certains qui ont 8 Mo à 32 Mo de cache, etc.) ... certains d'entre eux utilisent de la mémoire non ECC pour ce cache
  • N'utilisez pas SATA NCQ (un moyen de mettre en file d'attente les écritures) car cela peut ruiner ZFS en cas de coupure de courant

Alors quels disques utiliser?

  • Tout disque avec batterie interne qui garantit que toute la file d'attente sera écrit sur le disque en cas de panne de courant et utilise de la mémoire ECC à l'intérieur (désolé, il y en a très peu avec tout cela et coûte cher).

Mais bon, la plupart des gens ne savent pas tout cela et n'ont jamais eu de problème ... je leur dis: wow, quelle chance vous avez, achetez des billets de loterie, avant que la chance ne s'en aille.

Les risques sont là ... de telles défaillances peuvent se produire ... alors la meilleure réponse est:

  • Essayez de ne pas mettre de couche entre ZFS et où les données sont réellement stockées (RAM, Raid, NCQ, cache disque interne, etc.) ... autant que vous le pouvez.

Que fais-je personnellement?

  • Mettez des couches de plus ... j'utilise chaque disque SATA III 2.500 7200 tr/min sur un boîtier USB 3.1 Gen2 type C, je connecte certains boîtiers à un hub USB 3.1 Gen 2 Type A que je connecte au PC; d'autres à un autre hub que je me connecte à un autre port racine sur le PC, etc.
  • Pour le système, j'utilise des connecteurs SATA internes sur un ZFS (niveau Raid0) parce que j'utilise un système Linux inmutable (comme un LiveCD), chaque démarrage démarre un contenu identique sur des disques internes ... et j'ai une image Clone du système que je peux restaurer (système inférieur à 1 Go) ... j'utilise aussi l'astuce pour avoir le système contenu dans un fichier et utiliser RAM lecteur mappé où je le clone au démarrage, donc après le démarrage, tout le système fonctionne dans la RAM ... en mettant un tel fichier sur un DVD, je peux également démarrer de la même manière, donc en cas de défaillance des disques internes, je démarre simplement avec le DVD et le système est à nouveau en ligne ... astuce similaire à SystemRescueCD mais un peu un fichier ISO beacuse plus complexe peut être sur le ZFS interne ou simplement être le vrai DVD et je ne veux pas deux versions différentes.

J'espère que je pourrais donner un peu de lumière sur ZFS contre Raid, c'est vraiment une douleur quand les choses tournent mal!

2
Claudio

En bref: utiliser RAID sous ZFS tue simplement l'idée d'utiliser ZFS. Pourquoi? - Parce qu'il est conçu pour fonctionner sur des disques purs, pas sur des RAID.

2
poige