Расширяем uptime за пределы daytime

Как известно, в условиях смены дня и ночи время генерации электроэнергии ограничено. Следовательно время генерации электроэнергии не может составлять 24 часа. Исключение - условия полярного дня и открытый космос.

Допустим абстрактная Солнечная Электростанция (СЭС) вырабатывает энергию достаточную для питания компьютера на протяжении 6 часов в течении суток. Оставшееся время дневного времени тратится на зарядку аккумуляторов.

В случае выполнения длительных вычислений (обработка данных, компиляция) возникает необходимость обеспечения беспрерывного питания компьютера (uptime) на протяжении времени которое может время генерации, дневное время (daytime) и суточное время.

Увеличить время беспрерывной работы не прибегая к манипуляции с аккумуляторами (увеличение емкости, напряжения, замена аккумуляторов) может помочь виртуализация!

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

В конце первого дня работы, вирутальной машины её можно отправить в спящий режим (приостановить) и осуществить гибернацию, а сам узел виртуализации выключить.

На следующий день как обычно можно включить узел виртуализации и восстановить виртуальную машину из образа ОЗУ и вывести её из спящего режима (возобновить). Виртуальная машина продолжит работать с момента приостановки как если бы она и не останавливалась. В конце дня машину можно отправить в режим гибернации либо просто выключить.

Таким образом виртуальной машине можно предоставить виртуальное время работы превышающее время генерации предоставляемое СЭС.

В рамках своей СЭС мы используем:

  1. операционная система хоста - CentOS -https://centos.org,
  2. гипервизор - QEMU - https://libvirt.org,
  3. слой абстракции - LibVirt - https://qemu.org,
  4. сервер сбора оперативных данных СЭС и агент потребления - UmVirt SPS - http://umvirt.com/usps.

Используемые команды Libvirt:

  1. virsh suspend - приостановка виртуальной машины
  2. virsh save - гибернация
  3. virsh restore - восстановление виртуальной машины
  4. virsh resume - возобновление работы виртуальной машины

В код агента потребления UmVirt SPS добавлены скрипты:

  1. suspend.py - гибернация всех активных виртуальных машин
  2. restore.py - восстановление конкретной виртуальной машины из гибернации и возобновление её работы

Скрипт suspend.py можно запускать из агента потребления с целью автоматической гибернации активных виртуальных машин не только в конце дня но и в случае работы от аккумулятора при достижении предельного уровня напряжения.

Разделы сайта: