3 votes

Le fait de faire fonctionner Ceph (ou des systèmes similaires) en mode virtuel va-t-il dégrader ses performances ?

Je suis en train de mettre en place un cluster Ceph. Le client demande que cela soit fait dans des machines virtuelles, un hyperviseur / VM par serveur. Compte tenu de ma précédente expérience (mineure) avec les machines virtuelles, je me demande si cela posera un problème (les hyperviseurs faisant abstraction du matériel et utilisant leurs pilotes intégrés, etc.) Mes inquiétudes sont-elles justifiées ? Y aura-t-il probablement des pénalités de performance en plaçant une VM entre le matériel et une seule machine virtuelle exécutant une application intensive en E/S (disque et contrôleur de disque) et en réseau telle que Ceph ?

2 votes

Veuillez fournir les raisons des votes négatifs - je peux peut-être mieux formuler la question.

1 votes

Parce que tout est basé sur l'opinion. Mais je vais essayer d'y répondre car j'ai déjà fait beaucoup de choses avec Ceph.

2 votes

@Matt - pardonnez mon ignorance - est-ce que l'opinion est basée sur le fait que l'exécution de Ceph (ou d'un produit similaire) dans une VM affecterait ses performances ? Il me semble que c'est quelque chose qui pourrait être quantifié.

4voto

hookenz Points 13952

A ce qu'il semble... votre client ne comprend pas les exigences de Ceph.
Combien d'hôtes de machines virtuelles ont-ils ?

Réponse courte :

Oui, vous pouvez, mais ce n'est pas recommandé.

Longue réponse :

Oui, cela fonctionnera. Mais les performances pourraient être affectées négativement. Et quand je dis négativement, je veux dire potentiellement vraiment négativement.

Veuillez lire le Recommandations sur le matériel .

Détails :

Ceph s'attend réellement à écrire ses données sur des disques dédiés contrôlés par des nœuds de stockage (OSD's). L'ajout d'une autre couche de virtualisation par-dessus cela pourrait vraiment affecter les performances. Surtout lorsqu'il faut partager ce disque avec d'autres machines virtuelles. Mais si c'est pour des tests entre quelques membres de l'équipe, pourquoi pas ?

Mais pour la production. S'IL VOUS PLAÎT, NE LE FAITES PAS.

En plus des OSD, vous avez besoin d'un minimum de 3 moniteurs. Idéalement, ils doivent fonctionner sur des machines complètement séparées. Parce que si ce n'est pas le cas, ils ne sont pas résistants à une panne d'alimentation de l'hôte, n'est-ce pas ? Et si cela arrive, vous perdrez l'accès au cluster Ceph.

Une autre raison est que Ceph est gourmand en E/S lors des lectures/écritures sur les OSD. Plus vous avez d'OSD sur le même hôte physique, plus l'interface réseau de cet hôte sera encombrée. C'est pourquoi vous devez répartir votre charge entre plusieurs OSD et plusieurs serveurs.

Cela dit, j'ai déjà virtualisé les moniteurs et les serveurs de métadonnées sur Xen. Mais l'hôte de la machine virtuelle que j'avais était une bête et j'ai donné beaucoup de ressources à Ceph. J'avais également une grande bande passante réseau disponible sur tous ces hôtes. En fait, il s'agissait de 56Gbit FDR Infiniband. Je ne peux donc pas vraiment dire ce que cela allait donner de l'exécuter sous contrainte, je ne l'ai pas remarqué de cette manière.

Je l'ai également installé sur Amazon EC2. Mais encore une fois, j'ai utilisé une configuration plus sophistiquée pour les tests. Il a fonctionné correctement sur cette configuration, mais nous avons pu constater que la virtualisation lui faisait du tort. Ce premier test avait pour but de voir si nous pouvions obtenir des performances plus rapides que les IOPS provisionnés d'Amazon pour un coût moindre. Nous ne l'avons pas fait, mais c'était un test intéressant.

En ce qui concerne les pilotes paravirtuels, etc. Oui, ils aident mais SR-IOV est une meilleure option à mon avis.

Résumé :

  • Ce n'est pas recommandé, même si ça marche.
  • Les OSD ne devraient pas vraiment être virtualisés.

Il sera intéressant de voir si Sage Weil commente ici. Si je ne me trompe pas, il a déjà fait cela auparavant.

0 votes

Eh bien, oui, mais le fonctionnement des pilotes de réseau SR-IOV est délicat. Nous n'arrivons pas à faire fonctionner Mellanox CX4 dans une VM de manière fiable :((((

1 votes

Je l'ai fait sous Xen 4.1.2. Je vais peut-être publier ma recette un jour. Ce n'était pas simple.

0 votes

Depuis que j'ai écrit ceci. J'ai passé un peu de temps à travailler avec Ceph sous Docker. Toujours en accédant nativement au matériel mais en faisant tourner le logiciel dans un conteneur. Il y avait de nombreuses raisons valables de le faire. Je pense que les conteneurs docker vous permettent maintenant de tester docker localement avec un disque OSD basé sur des fichiers. Cet arrangement ne serait pas utile pour la production mais pour les tests, très utile. github.com/ceph/ceph-container

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X