Календарь на Май 2024 года: calendar2008.ru/2024/may/
Навигация
Главная »  Windows 

Гибернация на PROXMOX2


Источник: habrahabr
siv237

Для чего это надо


Гибернация (спящий режим) - это режим выключения системы при котором её текущее состояние, включая состояние ОЗУ, сохраняется на энергонезависимое хранилище.  Этот режим при использовании совместно с Proxmox позволяет значительно ускорить процесс завершения работы основной - хост-системы без необходимости завершать работу гостевых виртуальных систем. Особенно удобно, когда в качестве гостевой системы развернуты терминальные сервера на Windows. Ведь при штатном завершении работы такой системы, в окнах пользователей появляется запрос на сохранение редактируемого документа и если у пользователя тоже отключился свет вместе с его компьютером и монитором пользователь отсутствует на месте, принудительное завершение системы вызоветпредынфарктное состояние потерю редактируемых сотрудником/ми данных. Вот тут и спасет гибернация хостовых нод и после восстановления электроснабжения пользователи смогут продолжить работать с того-же места!
Конечно, что-бы такое произошло нужно еще настроить ИБП сервера. Переход в режим гибернации удобно назначить в качестве события при разряде батареи ИБП, а благодаря скорости перехода в этот режим можно серьезно снизить требования к ёмкости его батарей.

Как это работает


Proxmox 2.2 работает на базе debian 6 и практически всё, что описано ниже в той или иной степени относится и к нему. Активация режима гибернации требует наличия выделенного диска который будет виден GRUB напрямую при загрузке или отдельного раздела swap на системном диске. С логическим томом swap создающимся автоматически при установке внутри LVM, мне запустить гибернацию не удалось. При этом proxmox не позволяет создать нужную для такого режима структуру диска в процессе установки. Связанно это вероятно с концепцией максимальной простоты развертывания системы с которой может справится даже домохозяйка. Самое простое решение, это просто добавить еще один жесткий диск в сервер и назначить его хранилищем для режима гибернации, но мы рассмотрим более сложный вариант с изысканием свободного места на том-же диске куда поставился proxmox.

Исходные данные


При установке proxmox полностью задействует 1 из дисков уничтожая всю информацию на нём и создавая определенную структуру разделов:
# parted /dev/sda print free  Model: ATA WDC WD3200AAKS-7 (scsi) Disk /dev/sda: 320GB Sector size (logical/physical): 512B/512B Partition Table: msdos  Number  Start   End     Size    Type     File system  Flags 32.3kB  1049kB  1016kB           Free Space 1      1049kB  537MB   536MB   primary  ext3         boot 2      537MB   320GB   320GB   primary               lvm 320GB   320GB   352kB            Free Space 
Таким образом мы узнали, что на физическом диске место не занятое под разделы составляет всего 352kB, что явно не достаточно для раздела подкачки на который система будет сохранять состояние занятой оперативной памяти при гибернации. Такой раздел должен иметь размер не менее чем размер ОЗУ ноды. Примем, что необходимый нам размер, это 32 Гб. Посмотрим теперь, из каких логических томов состоит наш физический том расположенный на втором разделе 
 # lvs 

видим
 LV   VG   Attr     LSize   Pool Origin Data%  Move Log Copy%  Convert data pve  -wi-ao-- 203.09g root pve  -wi-ao--  74.50g swap pve  -wi-ao--   4.00g 

Подготовка носителя


Выясним то, сколько свободного места уже сейчас внутри физического тома LVM2.
# pvs 

Смотрим значение PFree
   PV         VG   Fmt  Attr PSize   PFree /dev/sda2  pve  lvm2 a--  297.59g 16.00g 

Это значит, что мы сразу можем уменьшить раздел на физическом диске на 16.00 Гб, но наша задача получить 32 Гб, поэтому будем изыскивать дополнительные данные.
Будем отбирать нужное нам пространство у логического тома data. Для этого мы уменьшим размер /dev/pve/data на 16 Гб. 
Данный процесс выполняется в 2 этапа. Сначала уменьшается размер файловой системы, а уже затем уменьшается размер самого логического тома. Так как процедура потенциально не безопасная, то будет выполнено отмонтирование файловой системы на период ресайзинга, соответственно все виртуальные машины, расположенные в /var/lib/vz должны быть остановлены на это время.
# lvresize /dev/pve/data -r -L-16Gb  Do you want to unmount "/var/lib/vz"? [Y/n] 

Ответим y Теперь вновь выполним
 # pvs  PV         VG   Fmt  Attr PSize   PFree /dev/sda2  pve  lvm2 a--  297.59g 32.00g 

Мы видим, что объем свободного места внутри физического тома возрос до 32 Гб.  Теперь мы можем спокойно сократить его размер размер на размер доступного свободного места + 1 Гб для подстраховки: Подсчитаем итоговый размер физического тома 297-32+1=266
# pvresize /dev/sda2 --setphysicalvolumesize 266Gb 

Вновь посмотрим, что у нас получилось
 # pvs  PV         VG   Fmt  Attr PSize   PFree /dev/sda2  pve  lvm2 a--  266.00g 412.00m 

Размер физического тома LVM сократился на: 
297.59 - 266 + 0.412 = 32,002 Гб
Но несмотря на это, размер раздела содержащего структуру LVM на жестком диске остался неизменным:
 # parted /dev/sda print free   Number  Start   End     Size    Type     File system  Flags 32.3kB  1049kB  1016kB           Free Space 1      1049kB  537MB   536MB   primary  ext3         boot 2      537MB   320GB   320GB   primary               lvm 320GB   320GB   352kB            Free Space 

Это нас не устраивает, так как необходимо получить свободное место под новый раздел в таблице разделов физического диска. На данный момент не удалось обнаружить готовых утилит, способных изменять разделы содержащие структуру lvm2, поэтому просто удалим и заново создадим раздел на жестком диске с началом как у исходного но меньшего размера. Это потенциально довольно опасная процедура. Рассчитаем параметры 2-го раздела, который мы в результате хотим получить. Он должен быть меньше текущего на 32 Гб
320 - 32 = 288 Гб
Таким образом 2-й раздел будет иметь параметры: Тип primary
Начало 537MB
Конец 288Gb Удалим раздел 2 подверждая игнорирование предупреждений
# parted /dev/sda rm 2 

Создаем раздел заного, но меньшего размера чем было
# parted /dev/sda mkpart primary 537MB 288GB 

Назначим флаг lvm разделу
# parted /dev/sda set 2 lvm on 

Смотрим результат
#  parted /dev/sda print free 

Видим, что на физическом диске появилось свободное место под будущий раздел
 Number  Start   End     Size    Type     File system  Flags 32.3kB  1049kB  1016kB           Free Space 1      1049kB  537MB   536MB   primary  ext3         boot 2      537MB   288GB   287GB   primary               lvm 288GB   320GB   32.1GB           Free Space 
Создаем раздел типа swap. Его параметры: Тип primary
fs linux-swap
Начало 288GB
Конец 320GB  Выполним:
# parted /dev/sda mkpart primary linux-swap 288GB 320GB # mkswap /dev/sda3 
Подготовительная работа закончена и теперь можно приступать непосредственно к настройке гибернации

Активация hibernate


Установка компонентов
# apt-get update # apt-get install pm-utils 

Добавление параметров в grub и fstab
# echo 'GRUB_CMDLINE_LINUX_DEFAULT="resume=/dev/sda3"' >> /etc/default/grub # echo '/dev/sda3 none swap sw 0 0' >> /etc/fstab 

Подключим новый раздел в качестве файла подкачки к системе
# swapon /dev/sda3 

Обновим загрузчик
# update-grub 

Можно приступать к тестированию непосредственно режима гибернации. Но прежде очень желательно выполнить перезагрузку сервера, если такая возможность имеется, так как произошли довольно серьезные изменения в структуре носителя!
# reboot 

Выполним полную гибернацию с выключением питания системы
# pm-hibernate 
Теперь осталось назначить выполнение этой команды при событии разряда батареи на ИБП, но это уже другая история которую я надеюсь опишу в следующей статье.



 

 Компания ESET выпустила предрелизную версию продукта для SharePoint Server.
 Аналитики настаивают: Рынок ПК рушится.
 Почему MySQL?.
 Применение концепции DevOps в разработке мобильных приложений.
 Доктор Веб: март 2012 - политический спам и новые угрозы для Mac OS X и Android.


Главная »  Windows 

© 2024 Team.Furia.Ru.
Частичное копирование материалов разрешено.