Question Disque partagé dans un centre de données moderne (SAN, virtualisation, etc.)


Je suis un développeur ... marchant ici sur un terrain étranger. S'il vous plaît pardonnez toute naïveté.

Je travaille sur une application qui stocke des données à la fois dans une base de données et dans le système de fichiers.

Contexte: mise en cluster et partages réseau

Dans le passé, lorsque nous exécutions l’application en cluster (c’est-à-dire plusieurs serveurs d’applications confrontant les données), nous avons géré le système de fichiers comme suit:

  • Noeud A: partage le "répertoire de données" (via samba ou nfs)
  • Nœuds B, C, D, etc.: monte le "partage réseau" et l’utilise dans son "répertoire de données"

La "vitesse de disque" réduite pour les nœuds B, C, D était sous-optimale, mais ce n’était pas un gros problème.

Notez aussi: L'application utilise son propre mécanisme de verrouillage de fichier. Les écritures simultanées ne sont pas un problème.

Questions

  • Ainsi, dans un centre de données moderne, le canal de fibres relie les serveurs à SANS, quel est le meilleur moyen de partager un "morceau de disque" entre plusieurs serveurs?

  • Un tel «partage de disque» est-il largement utilisé?

  • Problèmes spécifiques à votre système d'exploitation ("fonctionne sous Linux, mais n'est pas disponible sous Windows")

  • Des mises en garde? Difficile à configurer, peu fiable, etc.?

J'ai entendu beaucoup de "nous ne pouvons pas faire cela" de la part de nos administrateurs système ... qui, finalement, quand j'ai demandé plus de détails, ils m'ont dit "bon, techniquement c'est possible, mais ce n'est pas comme nous le faisons ici"

Merci d'avance,

Mise à jour: Merci pour les réponses. (Ils étaient tous bons: je devais en choisir un. Désolé si ce n'était pas le vôtre) Tout comme je m'y attendais (un peu): j'espère que vous pourrez simplement attacher NTFS ou XFS ou n'importe quel système de fichiers "normal" au même 'morceau' de 'disque' s'est avéré naïf. Le système de fichiers en cluster est le ticket. Et les systèmes de fichiers sophistiqués ne font pas partie des priorités de notre équipe d'hébergement).


6
2017-09-24 19:58


origine


Les réseaux de stockage facilitent la connexion de plusieurs serveurs à un périphérique en mode bloc. toutefois... cela ne signifie pas que vous pouvez simplement connecter un groupe de serveurs à un système de fichiers ext4 et vous attendre à ce que tout fonctionne. Ce n'est pas le cas. Si vous devez avoir un accès simultané, vous avez besoin d'un système de fichiers de cluster ou vous devez faire quelque chose comme ce que vous avez fait dans le passé avec NFS. - EEAA


Réponses:


"bon, techniquement c'est possible, mais ce n'est pas comme ça qu'on fait ici"

Cela ressemble beaucoup à ce que je dis régulièrement aux développeurs;)

D'un point de vue opérationnel, vous souhaitez que les applications utilisent autant que possible des solutions répétables standard. Si votre demande n'a pas besoin / ne nécessite pas de traitement spécial, vous ne l'obtiendrez pas. Les solutions non standard requièrent des compétences spécialisées, plus onéreuses ou simplement plus d'équipements et, si elles sont «à la pointe de la technologie», les échecs sont souvent aussi catastrophiques.

Pour de nombreuses applications, un partage de fichiers (hautement disponible) reste une solution très appropriée et couramment déployée.

Les solutions de rechange HA les plus courantes pour utiliser un partage de fichiers sont les suivantes:

  • Ne stockez pas de fichiers sur des systèmes de fichiers, mais utilisez une base de données hautement disponible et stockez-les en tant que BLOB. Une approche très commune. De toute façon, vous avez déjà de toute façon déjà besoin d’une base de données, ce qui rend les serveurs d’applications presque sans état, résout de nombreux problèmes de verrouillage, de réplication, de haute disponibilité, de cohérence et d’accès en les déplaçant vers la couche base de données, dans laquelle bon nombre de ces problèmes ne sont que vieux, résolu. Il peut être coûteux de maintenir une fois que vous avez atteint (une fraction considérable) la plage de pétaoctets.

  • Un système de fichiers en cluster approprié, qui permet un accès simultané au niveau du bloc en lecture-écriture à votre stockage partagé via Fibre Channel ou iSCSI. Les baies de stockage d'entreprise ont tendance à être assez cher mais cela peut très bien évoluer. Souvent, le système de fichiers du cluster nécessite des licences (coûteuses) pour chaque nœud du logiciel FS du cluster. Également assez courant dans les environnements d'entreprise pour des applications spécialisées.

  • Utilisez un magasin d'objets distribué. C’est la solution la plus ouverte, avec du matériel bas de gamme, créant de la redondance et de l’évolutivité dans le logiciel. Il s’agit d’une approche «nuage» commune.


4
2017-09-24 20:49





Si vous connectez plusieurs serveurs à un périphérique bloc partagé (DASD / SAN), vous devez toujours gérer manuellement l'accès aux fragments de disque (certaines bases de données le font sur des disques bruts, LVM est également une option, avec un accès LV géré). utilisez un système de fichiers en cluster, qui gérera les accès simultanés.

Même avec des verrous en écriture gérés fichier par fichier, vous pourriez être corrompu par FS si deux hôtes tentaient d’apporter des modifications de métadonnées FS simultanément, sur un système de fichiers non mis en cluster. Rien de moderne à ce sujet, BTW, SAN et accès simultanés aux blocs existent depuis les années 80 (si ce n’est les années 70).

Tous les systèmes d’exploitation modernes ont des implémentations FS en cluster, et l’isolation de blocs bloqués est également possible si vous souhaitez tout écrire vous-même; elle est donc très spécifique à ce que vous souhaitez utiliser.

EDIT: Votre "ancienne" approche de partage réseau est encore tout à fait réalisable, et le serveur de fichiers s’occupe des verrous de fichiers, vous n’avez donc pas besoin de mécanismes de verrouillage supplémentaires. Si vous n'êtes pas à la recherche de performances supplémentaires et souhaitez un déploiement simple, c'est probablement la voie la plus facile.

Maintenant, si vous voulez parler de «moderne», commencez à penser au stockage d'objets et à l'architecture évolutive de votre application.


3
2017-09-24 20:40



+1 pour le stockage d'objets. Cela semble être au cœur de la question, c’est-à-dire le stockage évolutif de blocs de données irréguliers. - Dmitri Chubarov


Vous avez besoin non seulement du matériel partagé, mais également d'un système de fichiers en cluster.

Les systèmes de fichiers ordinaires ne fonctionneront pas - deux ordinateurs finiraient par écraser leurs modifications respectives et un système de fichiers corrompu.

Les systèmes de fichiers en cluster permettent aux ordinateurs de s'informer mutuellement des modifications qu'ils apportent et de gérer le verrouillage des fichiers en cas de besoin, de manière à ne pas se marcher sur les pieds.

Certains de ces systèmes de fichiers sont spécifiques à une application - VMware a VMFS par exemple, et Hyper-V a des volumes partagés en cluster - ils fonctionnent parfaitement pour le stockage de machines virtuelles, mais ne constituent pas un stockage de fichiers général. Il y en a d'autres qui sont conçus pour stocker des fichiers. Chacune présente des avantages et des inconvénients, le meilleur dépend donc de l’utilisation que vous en faites. Ils sont tous (autant que je sache) spécifiques à votre système d'exploitation - vous ne pourrez pas partager un système de fichiers entre Windows et Linux de cette façon.

Pour certaines choses comme le basculement de machine virtuelle haute disponibilité, vous en avez vraiment besoin. Pour les applications où SMB ou NFS fera l'affaire, celles-ci sont généralement préférées - elles peuvent être légèrement plus lentes, mais il y a beaucoup moins de choses qui pourraient mal se passer et plus faciles à récupérer quand elles se cassent.


2
2017-09-24 20:40



Le basculement de machine virtuelle de ces jours peut être effectué à l'aide d'un stockage non partagé. En outre, les systèmes de fichiers en cluster ne sont pas la seule solution au stockage en bloc partagé. En fait, les systèmes tels que VMFS sont gravement compromis en termes d'évolutivité, contrairement aux systèmes à accès direct en bloc. C'est pourquoi oVirt peut avoir des centaines d'hôtes dans un même cluster, et vsphere seulement 32 (la dernière fois que j'ai vérifié, il n'y en avait que 32, mais pas plus de 20 recommandés). - dyasny