48 votes

Linux sur VMware - pourquoi utiliser le partitionnement ?

Lors de l'installation de machines virtuelles Linux dans un environnement virtualisé (ESXi dans mon cas), y a-t-il des raisons impérieuses de partitionner les disques (lors de l'utilisation de ext4) plutôt que d'ajouter simplement des disques séparés pour chaque point de montage ?

La seule chose que je vois, c'est qu'il est plus facile de voir s'il y a des données sur un disque avec, par exemple, fdisk.

D'un autre côté, je vois de bonnes raisons pour no l'utilisation de partitions (autres que /boot, évidemment).

  • Il est beaucoup plus facile d'étendre les disques. Il suffit d'augmenter la taille du disque pour la VM (généralement dans VCenter), puis de rescanner le périphérique dans la VM et de redimensionner le système de fichiers en ligne.
  • Plus de problèmes d'alignement des partitions avec les LUN sous-jacents.

Je n'ai pas trouvé grand-chose sur ce sujet. Ai-je manqué quelque chose d'important ?

31voto

ewwhite Points 193555

C'est une question intéressante...

Je ne pense pas qu'il y ait de réponse définitive, mais je peux donner un aperçu historique de la manière dont les meilleures pratiques en la matière ont évolué au fil du temps.

Depuis 2007, j'ai dû prendre en charge des milliers de machines virtuelles Linux déployées sous diverses formes dans des environnements VMware. Mon approche du déploiement a évolué et j'ai eu l'occasion unique ( parfois malheureux ) une expérience de l'héritage et de la refonte de systèmes construits par d'autres ingénieurs.

Le bon vieux temps...

À l'époque (2007), mes premiers systèmes VMware étaient partitionnés comme mes systèmes bare metal. Du côté de VMware, j'utilisais des fichiers épais de 2 Go pour contenir les données de la VM, et je n'avais même pas pensé à la notion de VMDK multiples, parce que j'étais simplement heureux que la virtualisation puisse même fonctionner !

Infrastructure virtuelle...

Avec ESX 3.5 et les premières versions d'ESX/ESXi 4.x (2009-2011), j'utilisais Linux, partitionné comme d'habitude au sommet d'un système d'exploitation monolithique. Épais fichiers VMDK provisionnés. Le fait de devoir pré-allouer le stockage m'a obligé à réfléchir à la conception de Linux de la même manière que je le ferais avec du matériel réel. J'ai créé des VMDK de 36, 72 et 146 Go pour le système d'exploitation, en partitionnant les habituels /, /boot, /usr, /var, /tmp, puis en ajoutant un autre VMDK pour la partition de "données" ou de "croissance" (qu'il s'agisse de /home, /opt ou de quelque chose de spécifique à l'application). Encore une fois, la taille idéale des disques durs physiques à cette époque était de 146 Go, et comme la pré-allocation était obligatoire (à moins d'utiliser NFS), je devais être prudent en ce qui concerne l'espace.

L'avènement du "thin provisioning

VMware a développé de meilleures fonctionnalités autour de Provisionnement fin dans les versions ultérieures d'ESXi 4.x, et cela a changé la façon dont j'ai commencé à installer de nouveaux systèmes. Avec l'ajout de l'ensemble des fonctionnalités dans les versions 5.0/5.1, un nouveau type de flexibilité a permis des conceptions plus créatives. Il ne faut pas oublier que cela allait de pair avec l'augmentation des capacités des machines virtuelles, en termes de nombre de vCPUS et de quantité de mémoire vive pouvant être affectée à des machines virtuelles individuelles. Un plus grand nombre de types de serveurs et d'applications ont pu être virtualisés que par le passé. Et ce, au moment même où les environnements informatiques commençaient à devenir complètement virtuels.

LVM est terrible...

Lorsque la fonctionnalité d'ajout à chaud au niveau des machines virtuelles a été mise en place et généralisée (2011-2012), je travaillais avec une entreprise qui s'efforçait de maintenir le temps de fonctionnement des machines virtuelles de ses clients à n'importe quel prix ( stupide ). Cela comprenait donc les augmentations de CPU/RAM de VMware en ligne et les augmentations de RAM de VMware en ligne. risqué Redimensionnement des disques LVM sur les VMDK existants. La plupart des systèmes Linux dans cet environnement étaient des configurations VMDK uniques avec des partitions ext3 au-dessus de LVM. C'était terrible car la couche LVM ajoutait la complexité et les risques inutiles aux opérations. Le manque d'espace dans le répertoire /usr, par exemple, pouvait entraîner une série de mauvaises décisions qui impliquaient finalement la restauration d'un système à partir de sauvegardes... C'était en partie lié au processus et à la culture, mais tout de même...

Le snobisme de la partition...

J'ai profité de cette occasion pour essayer pour changer cela. Je suis un peu partition-snob sous Linux et j'estime que les systèmes de fichiers doivent être séparés pour des raisons de surveillance et d'exploitation. Je n'aime pas non plus LVM, surtout avec VMware et la possibilité de faire ce que vous demandez. J'ai donc étendu l'ajout de fichiers VMDK aux partitions susceptibles de croître. /opt, /var, /home pourraient avoir leurs propres fichiers de machine virtuelle si nécessaire. Et il s'agirait de disques bruts. Parfois, il s'agissait d'une méthode plus simple pour étendre à la volée une partition particulièrement sous-dimensionnée.

Obamacare...

Avec l'intégration d'un un client très en vue J'ai été chargé de concevoir le modèle de référence de la VM Linux qui serait utilisé pour créer leurs extrêmement l'environnement d'application visible. Les exigences de sécurité de l'application nécessitaient un ensemble unique de supports Les développeurs ont donc essayé de regrouper les partitions non évolutives sur un seul VMDK, puis d'ajouter des VMDK distincts pour chaque montage ayant un potentiel de croissance ou des exigences spécifiques (cryptage, audit, etc.).

Ce que je fais aujourd'hui...

Aujourd'hui, pour Linux et les systèmes de fichiers traditionnels, je conçois généralement le système d'exploitation sur un VMDK mince (partitionné) et des VMDK discrets pour tout le reste. Je procède à des ajouts à chaud si nécessaire. Pour les systèmes de fichiers avancés tels que ZFS, il s'agit d'un VMDK pour le système d'exploitation et d'un autre VMDK qui sert de zpool ZFS et peut être redimensionné, découpé en systèmes de fichiers ZFS supplémentaires, etc.

7voto

Chopper3 Points 99341

Vous avez raison à bien des égards, je comprends l'argument, mais il y a un point qui pourrait s'avérer délicat. Si vous utilisez des pools de ressources (et je sais que je ne le fais pas, des choses détestables), les VM peuvent obtenir plus de temps d'E/S si elles ont plus de disques - dans des situations extrêmes de contraintes de ressources, une VM avec deux disques pourrait obtenir deux fois plus de ressources d'E/S qu'une VM avec un seul disque. Il se peut que cela ne soit pas un problème pour vous, mais j'ai pensé le souligner.

Edit - oh et cela rendrait aussi le snapping légèrement plus lent, mais encore une fois cela ne serait pas un problème.

7voto

rrauenza Points 503

Lorsque je travaillais dans l'infrastructure d'une "grande entreprise de logiciels de virtualisation", nous avions souvent besoin d'augmenter la taille du système de fichiers d'une machine virtuelle. Nous utilisions alors ext3/4.

Augmenter le disque virtuel est très facile, récupérer la nouvelle taille du périphérique dans un système d'exploitation en direct est relativement facile (fouiller dans /sys), redimensionner le système de fichiers ext3/4 en direct était facile, mais ce qui a toujours semblé impossible (à faire en direct) était de redimensionner la partition.

Il fallait utiliser gparted ou réécrire/redimensionner la table de partition à l'aide de fdisk -- mais elle était toujours verrouillée par le noyau et nécessitait un redémarrage pour que le noyau prenne en compte la nouvelle disposition (partprobe ne le faisait pas non plus).

J'ai déplacé de nombreux systèmes vers LVM et le redimensionnement des systèmes de fichiers est devenu une expérience facile, presque agréable !

  • Augmenter l'image du disque virtuel en dehors de la VM
  • Dans la VM,
    • Interroger /sys pour rescanner les métriques du disque (echo "1" > /sys/class/scsi_device/device/rescan)
    • pvresize /dev/sdX (redimensionner le volume physique en LVM)
    • lvresize --extents +100%FREE /dev/VG/lvolXX (redimensionner le volume logique en LVM)
    • resize2fs (redimensionner le système de fichiers)

Tout cela pourrait être fait en toute sécurité sur un système en service -- et aucun redémarrage n'est nécessaire !

Pourquoi pas un disque nu ? Cela me rend nerveux - je ne pense pas que les disques nus soient encore assez largement acceptés, mais je pense que nous sommes sur le point d'une acceptation beaucoup plus large. Il y a eu une discussion sur la liste de diffusion btrfs à ce sujet :

http://www.spinics.net/lists/linux-btrfs/msg24730.html

Mais un disque nu ne nécessiterait que le rescan et le resize2fs.

En résumé, évitez les tables de partition si vous le pouvez.

1voto

Sven Points 95985

Bien que votre question concerne VMWare (ESXi), j'aimerais ajouter une situation dans laquelle je suis revenu à l'utilisation des tables de partition après avoir eu la même idée sur KVM.

Il s'est avéré que si vous avez des volumes LVM comme disques pour les VM et que vous créez un groupe de volumes LVM à l'intérieur de la VM sans utiliser de partitions (en utilisant l'ensemble du disque virtuel comme PV), ce VG sera visible à l'extérieur de la VM sur la machine hôte. Ce n'est pas le cas si vous utilisez des partitions comme PV.

Certes, il s'agit d'un cas particulier, mais il vaut la peine d'être envisagé si vous avez besoin d'une telle configuration.

1voto

La question de savoir s'il est préférable de procéder ainsi ou non dépend de votre système.

Chaque configuration présente des avantages et des inconvénients.

Toutefois, les principaux avantages d'un lecteur unique sont les suivants :

  1. Simplicité : Un seul disque contient un seul fichier, qui peut être facilement distribué et reproduit.
  2. Indices pour le système d'exploitation hôte : Un fichier unique sera traité comme un seul bloc de données, et le système d'exploitation hôte saura donc que les séquences d'accès à la machine invitée se trouvent toutes dans ce fichier unique. Cela peut être réalisé dans certaines configurations du système d'exploitation hôte en plaçant simplement toutes les images de lecteur dans le même fichier, mais ce n'est pas nécessairement le cas.

Cependant, le multi-drive présente des avantages.

  1. Affinité avec le métal nu / localisation manuelle : Avec un seul disque, vous êtes lié à une seule affinité bare-metal du disque.
  2. Limites de taille : Si votre système impose des limites à la taille du disque ou des fichiers, vous risquez de les dépasser sur des systèmes de très grande taille.
  3. Volumes en lecture seule pour des raisons de sécurité : C'est le principal avantage. Si votre volume principal pour le système d'exploitation est en lecture seule du côté de la VM, cela offre des avantages majeurs en matière de sécurité, en bloquant essentiellement la capacité des programmes à l'intérieur de la VM à modifier le système d'exploitation de base de l'invité. L'utilisation d'un disque de données séparé vous permet de créer des disques en lecture seule, qui peuvent être démarrés en lecture-écriture pour la maintenance et les mises à jour sans avoir à nettoyer les données du modèle, empêchant ainsi toute modification des répertoires vitaux du système d'exploitation à partir du serveur.

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