Pull to refresh

Утро админа: добавляем место на десятках серверов за кофе

Reading time2 min
Views6.4K
Каждый день мне приходится добавлять место на одном, двух, трех, пяти, а бывает – и десяти database серверах. Почему? Потому что для них характерен естественный рост баз. Серверов сотни, все они виртуалки с дисками на thin provisioning. Если им заранее выдать много места, то будет обязательно какой нибудь “runaway”, типа апгрейда с переливом таблиц, который пожрет все это место, а если не пожрет, то поднадкусает. Как вы знаете, thin provisioning – это путь в одну сторону, если место сожрано, но то его назад не вернуть.

В итоге большинство серверов болтаются где то у границы 90% space used – именно потому, что на границе 90% срабатывает алерт. Как только я даю немного, именно немного места – сервер отправляется в район 80%-85% used, и через месяц другой место надо добавлять снова. И, тем не менее, много сразу давать не буду – слишком много прецедентов с runaways.

Я так часто делал механическую работу по расширению места на дисках, что мне это надоело и я решил это автоматизировать с помощью Jenkins:



Прошу прощения за несколько занудное и детализированное описание ниже, но если это может быть полезно кому-то, то важны как раз мелкие детали – именно на них всегда тратишь больше всего времени. Если детали не важны, сразу прокрутите на последнюю картинку.

Разумеется, прежде чем добавлять место я смотрю историю роста space used %, автоматически приложенную к алерту моей тайной системой мониторинга. Чаще всего рост естественный:



А вот тут лучше вначале разобраться:



Вернемся к Jenkins, который есть лишь интерфейс к Powershell script. У нас много VMware Vcenters, так что специальная процедура на SQL по имени сервера определяет, где находится данный сервер и коннектится именно к нему:



Теперь мы считываем размер диска, добавляем дельту и устанавливаем новое значение.



Правда, я нагло пользуюсь тем, что все сервера у нас отлиты подобным образом, например, D: всегда Hard disk 2. Если у вас это не так, то придется помучиться.

Теперь диск расширен с точка зрения VMware, но не с точки зрения guest (Windows). Мы должны выделенное место использовать. Для этого надо выполнить внутри guestа команды DISKPART.



Мы нагло запихиваем в корень D: файл BAT и IN, и с помощью WMIC заставляем машинку выполнить эти команды. Файл doresizeX.bat (X – название драйва) содержит лишь
diskpart <d:\doresizeX.in >d:\doresize.out

А doresizeX.in содержит:
rescan
select volume X
extend
exit

Теперь все готово, надо только чуть подождать (команда то асинхронная!) и прочитать результат, отфильтровав ненужное:



И ждем письма от Jenkins:

Tags:
Hubs:
Total votes 17: ↑15 and ↓2+13
Comments26

Articles