web-dev-qa-db-fra.com

Hébergement d'un serveur ZFS en tant qu'invité virtuel

Je suis toujours nouveau à ZFS. J'utilise Nexenta, mais je pense à passer à Openindiana ou à Solaris 11 Express. À l'heure actuelle, je suis au point de considérer virtualiser le serveur ZFS en tant qu'invité dans ESXI, Hyper-V ou Xenserver (je n'ai pas encore décidé lequel - je m'appuyais vers ESXI pour VMDirectPathe et Soutien FreeBSD).

La principale raison étant qu'il semble que j'ai assez de ressources pour faire le tour de ce que je pourrais facilement avoir 1 à 3 autres VMS fonctionnant simultanément. Principalement Windows Server. Peut-être un Linux/BSD VM aussi. J'aimerais que le serveur ZFS virtualisé héberge toutes les données de l'autre VMS afin que leurs données puissent être conservées sur des disques physiquement séparés des disques ZFS (montage comme ISCSI ou NFS).

Le serveur a actuellement un phénom II AMD avec 6 cœurs totaux (2 déverrouillés), 16 Go RAM (maximé) et un LSI SAS 1068E HBA avec (7) disques SATA II de 1 To. (Planification sur RAIDZ2 avec Speed ​​Hot). J'ai aussi (4) SSD SATA II SATA II de 32 Go attachées à la carte mère. J'espère refléter deux des SDS à un miroir de démarrage (pour l'hôte virtuel) et laisser les deux autres SSD pour ZIL et L2ARC (pour le ZFS VM. Je suis prêt à ajouter deux autres disques pour stocker les invités VM et allouer les sept des disques actuels en tant que stockage ZFS. Remarque: la carte mère fait non Demandez à Iommu Soutien car le 880G ne le supporte pas, mais j'ai une carte 890FX qui a un iommu si cela fait une différence énorme.

Mes questions sont:

1) Est-il sage de faire cela? Je ne vois pas évidemment des inconvénients (ce qui me fait me demander pourquoi personne d'autre ne l'a mentionné). Je me sens comme si je pouvais faire une supervision énorme et je détesterais s'engager à m'engager, déplacez-vous sur toutes mes données uniquement pour aller au FUBAR à partir de moindres détails que j'ai manqués.

2) Performance d'invité virtuelle ZFS? Je suis disposé à prendre un petit coup de performance, mais je penserais que si l'invité VM a accès à un disque complet aux disques qui à tout le moins, les performances d'E/S sur disque seront négligeables (par rapport à courir ZFS non virtualisé). Quelqu'un peut-il parler de cela de l'expérience hébergeant un serveur ZFS en tant qu'invité VM?

23
osij2is

J'ai construit un certain nombre de ces configurations de stockage ZFS "tout-en-un". Initialement inspiré par les excellents messages à Talk omniprésent , ma solution prend une approche légèrement différente de la conception matérielle, mais donne le résultat d'un stockage de ZFS virtualisé encapsulé.

Pour répondre à tes questions:

  • Déterminer si c'est une approche sage dépend vraiment de vos objectifs. Qu'est-ce que vous essayez d'accomplir? Si vous avez une technologie (ZFS) et recherchez une application pour cela, c'est une mauvaise idée. Vous ferez mieux d'utiliser un contrôleur de raid de matériel approprié et d'exécuter votre VMS sur une partition VMFS locale. C'est le chemin du moindre résistance. Toutefois, si vous avez une raison spécifique de vouloir utiliser des ZFS (réplication, compression, sécurité des données, portabilité, etc.), cela est définitivement possible si vous êtes prêt à mettre dans l'effort.

  • Les performances dépendent fortement de votre conception, que vous soyez sur le métal nu ou virtuel. En utilisant PCI-passthrough (ou AMD IOMMU dans votre cas) est essentielle, comme vous fournirez ZFS VM accès direct à un SAS contrôleur de stockage et des disques. Tant que votre VM est alloué une quantité appropriée de RAM et les ressources CPU, la performance est quasi-native. Bien sûr, votre conception de la piscine compte. Veuillez envisager des miroirs versus raid z2. ZFS échelle sur VDEV et non le nombre de disques .


Ma plate-forme est VMware ESXI 5 et mon système d'exploitation préféré ZFS-Capable est Nexentastor Community Edition .

C'est mon domicile serveur . C'est un HP ProLiant DL370 G6 exécutant ESXI Fron une carte SD interne. Les deux disques de 72 Go en miroir dans le centre sont liés au contrôleur RAID P410 interne P410 et forment un volume VMFS. Ce volume détient un vm Nexempastor. N'oubliez pas que la machine virtuelle ZFS doit vivre quelque part sur le stockage stable.

Il y a un contrôleur LSI 9211-8i SAS relié au boîtier de la cage d'entraînement de six disques SATA de 1 To à droite. Il est transmis à la machine virtuelle Nexentastor, permettant à Nexenta de voir les disques comme une configuration RAID 1 + 0. Les disques sont el-cheapo Digital Western Green WD10earsaligné correctement avec un _ modifié zpool binaire.

Je n'utilise pas de périphérique zil ni de cache L2ARC dans cette installation.

enter image description here

Le VM a 6GB de RAM et 2 vCPU de alloué. Dans ESXi, si vous utilisez PCI-passthrough, une réservation de mémoire pour le montant de la machine virtuelle assignée de RAM sera créé.

Je donne les NexentaStor VM deux interfaces réseau. L'un est pour le trafic de gestion. L'autre fait partie d'un vswitch distinct et a une interface VMKernel (sans liaison montante externe). Cela permet à la VM pour fournir montable de stockage NFS par ESXi via un réseau privé. Vous pouvez facilement ajouter une interface de liaison montante pour fournir un accès aux hôtes extérieurs.

Installez votre nouveau VMS sur le magasin de données exporté ZFS. Assurez-vous de définir les paramètres "Démarrage de la machine virtuelle/arrêt" dans ESXI. Vous voulez que le stockage VM pour démarrer avant que les systèmes invités et la dernière fermeture.


enter image description here

Voici le Bonnie ++ et iozone résultats d'une course directement sur le Nexentastor VM. La compression ZFS est désactivée pour le test pour afficher des nombres plus relativables, mais en pratique, la compression par défaut ZFS (non gzip) devrait toujours être activée.

# bonnie++ -u root -n 64:100000:16:64

Version  1.96       ------Sequential Output------ --Sequential Input- --Random-
Concurrency   1     -Per Chr- --Block-- -Rewrite- -Per Chr- --Block-- --Seeks--
Machine        Size K/sec %CP K/sec %CP K/sec %CP K/sec %CP K/sec %CP  /sec %CP
saint           12G   156  98 206597  26 135609  24   410  97 367498  21  1478  17
Latency               280ms    3177ms    1019ms     163ms     180ms     225ms
Version  1.96       ------Sequential Create------ --------Random Create--------
saint               -Create-- --Read--- -Delete-- -Create-- --Read--- -Delete--
files:max:min        /sec %CP  /sec %CP  /sec %CP  /sec %CP  /sec %CP  /sec %CP
    64:100000:16/64  6585  60 58754 100 32272  79  9827  58 38709 100 27189  80
Latency              1032ms     469us    1080us     101ms     375us   16108us

# iozone -t1 -i0 -i1 -i2 -r1m -s12g

    Iozone: Performance Test of File I/O

    Run began: Wed Jun 13 22:36:14 2012

    Record Size 1024 KB
    File size set to 12582912 KB
    Command line used: iozone -t1 -i0 -i1 -i2 -r1m -s12g
    Output is in Kbytes/sec
    Time Resolution = 0.000001 seconds.
    Throughput test with 1 process
    Each process writes a 12582912 Kbyte file in 1024 Kbyte records

    Children see throughput for  1 initial writers  =  234459.41 KB/sec
    Children see throughput for  1 rewriters        =  235029.34 KB/sec
    Children see throughput for  1 readers          =  359297.38 KB/sec
    Children see throughput for 1 re-readers        =  359821.19 KB/sec
    Children see throughput for 1 random readers    =   57756.71 KB/sec
    Children see throughput for 1 random writers    =  232716.19 KB/sec

Il s'agit d'un graphique Nexentastor DTrace montrant les tirages et les tarifs de transfert du VM de stockage pendant le test. 4000 iops et plus de 400 mégaoctets/seconde sont assez raisonnables pour de tels disques bas de gamme. (grande taille de bloc, bien que) enter image description here

Autres notes.

  • Vous voulez tester vos disques SSD pour voir si elles peuvent être présentées directement à un VM ou si le DirectPath choisit l'ensemble du contrôleur de la carte mère.
  • Vous n'avez pas beaucoup de puissance CPU, alors limitez l'unité de stockage à 2 VCPU.
  • N'utilisez pas RAIDZ1/Z2/Z3, sauf si vous avez vraiment besoin de l'espace disque.
  • N'utilisez pas de déduplication. La compression est gratuite et très utile pour VMS. Déduplication nécessiterait beaucoup plus RAM + L2ARC afin d'être efficace.
  • Commencez sans les SSD et ajoutez-les si nécessaire. Certaines charges de travail ne frappez pas le zil ou le l2arc .
  • Nexentastor est un package complet. Toutefois, il y a un avantage à avoir une forte interface graphique de la solide, j'ai entendu parler de succès avec Napp-IT .
38
ewwhite