Почему разрастается размер виртуального диска на Hyper-V?
Недавно столкнулся с такой ситуацией. Есть Hyper-V, на ней гостевая Ubuntu, на ней стек LAMP. Тот кто размещал новую запись на сайте, нечаянно разрешил и анонимное комментирование к этой записи. И понеслось. Но это я обнаружил позже. Mysql выжирает вся память. В систему войти не могу даже с консоли гипервизора, ибо тормоза. Попытка логина отваливается по таймауту. Начал грешить на файловую систему.
На новой виртуалке с Ubuntu развернул сайт из бэкапа, в котором та же дырка, . Тип диска на госте - динамический. Файл диска на Hyper-V начал расшириряться и достиг почти полного размера примерно за час, а это 30 гиг. При чем, df -h в госте говорил, что занято менее 20%. FS теперь исключена. Своп, по идее, тоже не при чем, т.к. ограничен своим размером в 500 MB. Теоритически возможен вариант с заполнением /tmp каталога, но Ubuntu не перегружалась да и Mysql не пишет туда. К тому же, размер дампа весит ~300 MB. Старые дампы (до дырки) весят около 80.
Как обнаружил и закрыл дырку, разростание диска прекратилось. В данный момент на Hyper-V файл диска весит 30 гиг, а Ubuntu занимает около всего 10. Проверял при помощи du, df, считал в mc.
Дыра экплуатировалась простыми POST запросами на добавление текстовых комментариев. На момент обнаружения в базе было ~125 тыс. записей.
Хоть проблема и решена, все же хочется узнать причины данного случая.
Никогда не делайте динамических дисков. И в гипер-в никогда не используйте снимки. работают они, скажем так, плохо.
Динамические диски хороши поначалу, но чем дальше тем больше от них головняка. Основной из них - дефрагментация. Она замедляет доступ к диску очень сильно. Второй косяк - это место на самом гипервизоре. Расслабитесь и сделаете виртуалок больше чем может хранить гипервизор, потом встанут половина виртуалок из-за недостатака места для хранения кэша оперативной памяти.
Снэпшоты - боль. Вместо того чтоб сделать отдельный снэпшот диска, оно делает дополнительный разностный диск. И вуаля. Теперь у вашей виртуалки 2 диска - vhd + avhd, с соответствующими проблемами дефрагментации и скорости доступа (почитайте про avhd). И второй будет бесконтрольно расти. Еще один снимок - 3 диска. ;-) Лечить - только остановкой ВМ + удалением снэпшотов - тогда все изменения сольются в один диск и будет как было.
Остальное - РТФМ.
Диск динамический поэтому автоматически увеличивает размер при записи.
Т.е гостевая ОС записала достаточно данных чтобы размер увеличился.
Какие еще могут быть причины? Это штатное поведение системы.
mureevms: О каких размерах идет речь? Непонятно.
А что послужило причиной - это только вы можете узнать, посмотреть логи например, что у вас там такой объем данных на запись нагенерировало.
mureevms: Ну это то вы зачем спрашиваете - гадалок тут не водится.
А если обойтись без гадания - это надо логи смотреть.
У вас есть доступ к логам, значит вы можете выяснить почему и кем.
А я не могу, ибо доступа к вашим логам у меня нет.
Mysql пишет данные в папку /var/lib/mysql , скачками увеличивая размер контейнера БД (файл ibdata1) до подходящего размера.
Я полагаю, что из-за использования динамического типа диска Hyper-V по достижению лимита дискового контейнера увеличивает его на некоторый размер, в зависимости от темпов прироста.
Так что согласен с АртемЪ насчёт штатного поведения (гипервизора).