Matin administrateur: ajoutez de l'espace sur des dizaines de serveurs pour le café

Chaque jour, je dois ajouter de l'espace sur un, deux, trois, cinq et parfois dix serveurs de base de données. Pourquoi? Parce qu'ils se caractérisent par une croissance naturelle des bases. Il existe des centaines de serveurs, tous sont des machines virtuelles avec des disques sur l'allocation dynamique. Si on leur donne beaucoup d'espace à l'avance, alors il y aura certainement une sorte de «fugue», comme une mise à niveau avec débordement de tables, qui dévorera tout cet endroit, et si ce n'est pas le cas, elle grignotera. Comme vous le savez, l'allocation dynamique est un moyen à sens unique, si le lieu est englouti, mais il ne peut pas être retourné.

En conséquence, la plupart des serveurs se trouvent quelque part près de la frontière de 90% d'espace utilisé - précisément parce qu'une alerte est déclenchée à la frontière de 90%. Dès que je donne un peu, juste un peu d'espace - le serveur va dans la région de 80% à 85% utilisée, et après un mois, un autre endroit doit être ajouté à nouveau. Et, néanmoins, je ne donnerai pas grand-chose à la fois - il y a trop de précédents avec les fugueurs.

J'ai fait le travail mécanique d'agrandissement de l'espace disque si souvent que j'en ai eu assez et j'ai décidé de l'automatiser avec Jenkins:



Je m'excuse pour la description un peu fastidieuse et détaillée ci-dessous, mais si cela peut être utile à quelqu'un, ce sont les petits détails qui sont importants - c'est sur eux que vous passez toujours le plus de temps. Si les détails ne sont pas importants, faites défiler immédiatement jusqu'à la dernière photo.

Bien sûr, avant d'ajouter un lieu, je regarde l'espace utilisé% de croissance historique, automatiquement attaché à l'alerte par mon système de surveillance secret . Le plus souvent, la croissance naturelle:



Et ici, il vaut mieux comprendre d'abord:



Revenons à Jenkins, qui n'est qu'une interface avec le script Powershell. Nous avons beaucoup de VMware Vcenters, donc une procédure SQL spéciale utilisant le nom du serveur détermine où se trouve le serveur et s'y connecte:



Maintenant, nous lisons la taille du disque, ajoutons le delta et définissons une nouvelle valeur.



Certes, je profite effrontément du fait que tous les serveurs que nous avons sont castés de la même manière, par exemple, D: toujours le disque dur 2. Si vous ne le faites pas, vous devrez souffrir.

Maintenant, le disque a été étendu en termes de VMware, mais pas en termes d'invité (Windows). Nous devons utiliser l'espace alloué. Pour ce faire, exécutez les commandes DISKPART à l'intérieur de l'invité.



Nous remplissons effrontément le fichier BAT et IN à la racine de D: et utilisons WMIC pour forcer la machine à exécuter ces commandes. Le fichier doresizeX.bat (X est le nom du lecteur) contient uniquement
diskpart <d: \ doresizeX.in> d: \ doresize.out

Et doresizeX.in contient:
réanalyser
sélectionnez le volume X
étendre
sortir

Maintenant, tout est prêt, il suffit d'attendre un peu (la commande est asynchrone!) Et de lire le résultat en filtrant les inutiles:



Et nous attendons une lettre de Jenkins:

Source: https://habr.com/ru/post/fr434678/


All Articles