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?
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.
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.
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)
Autres notes.