41. О виртуализации.





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

    Для умного дома управляемого локально, необходимо иметь отдельный сервер, на котором будет "крутиться" вся система. Применительно к рассматриваемому здесь Home Assistant, этот сервер может быть как виртуальным, так и физическим

Софт.

В самом первом материале был рассмотрен пример установки системы на гипервизор VMWare.


Базовой ОС для которого являлась Windows.

Минутка Википедии:
Гиперви́зор (англ. Hypervisor; от др.-греч. ὑπέρ «над, выше, сверх» + лат. vīsio «зрение; видение») или монито́р виртуа́льных маши́н (в компьютерах), низкоуровневая оболочка — программа или аппаратная схема, обеспечивающая или позволяющая одновременное, параллельное выполнение нескольких операционных систем на одном и том же хост-компьютере. Гипервизор также обеспечивает изоляцию операционных систем друг от друга, защиту и безопасность, разделение ресурсов между различными запущенными ОС и управление ресурсами.

Гипервизор также обязан предоставлять работающим под его управлением на одном хост-компьютере ОС средства связи и взаимодействия между собой (например, через обмен файлами или сетевые соединения) так, как если бы эти ОС выполнялись на разных физических компьютерах.

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



Конечно же у такого способа есть свои плюсы и минусы. И главным минусом является высокое энергопотребление системы. Т.к. даже ноутбук (не говоря уже об обычном десктопе) "кушает" достаточно много энергии. А на фоне того, что бОльшая часть ресурсов такого компьютера не задействована, то эта энергия уходит в никуда.

А ещё стоит учесть что операционную систему тоже надо обслуживать, ставить обновления, заботиться о её безопасности и т.д. Как например в случае с Windows, которому нужна перезагрузка по поводу и без.
Антивирус, который может попросить перезагрузку системы после своего обновления.
В конце концов сам гипервизор тоже просит выключать виртуальные машины при глобальных обновлениях версий.
Таким образом складывается классическая ситуация - чем больше элементов в какой-либо системе или устройстве, тем больше шансов чему-то сломаться и/или сломать другие компоненты.

Контейнеры.

Все привыкли работать с программами или службами на компьютере. Для их работы нужна некая среда, в которой те самые программы или сервисы могут работать. Чаще всего такой средой является операционная система и имеющиеся в ней разные модули или вспомогательные библиотеки, благодаря которым программа может работать.


Контейнер же, представляет собой некую изолированную и независимую среду, внутри которой находится код программы и все необходимые элементы для запуска самой программы. 
Да, для работы контейнера тоже должен присутствовать некий элемент, который будет им управлять. Зачастую, такой элемент уже встроен в сам гипервизор.

Самым популярным механизмом контейнеров на конец 2022 года является Docker.
Docker - программное обеспечение с открытым исходным кодом, предназначенное для упрощения и ускорения разработки приложений. Это набор продуктов, которые создают изолированные виртуализированные среды для создания, развертывания и тестирования приложений. Контейнеры работают автономно, изолированно от основной системы и других контейнеров, и потому ошибка в одном из них не влияет на другие работающие контейнеры, а также поддерживающий их сервер. Docker утверждает, что эти блоки «обеспечивают самые сильные возможности изоляции в отрасли».


- Можно ли установить Docker (или любой другой "контейнеровоз") на Windows? Да. Но для поставленной задачи это бессмысленное нагромождение технологий. Имеет смысл ставить его если вы занимаетесь тестированием или разработкой приложений.

 Ознакомившись с виртуальной частью, не стоит забывать что всё виртуальное, так или иначе всё равно работает на чём-то физическом.

Железо.

В первую очередь это процессор.

А точнее, поддерживаемые им технологии.
Т.к. на рынке процессоров для персональных компьютеров есть два ведущих игрока/конкурента, то технологии используемые ими чуть-чуть отличаются в названии. Хотя и подразумевают примерно один и тот же результат (не будем углубляться в глубь реализации самих технологий и их сравнения).
Для Intel технология получила кодовое название Vanderpool и официальное Intel Virtualization Technology (сокращенно Intel VT). Она содержит в себе некоторое множество техник различного класса, имеющих номера версий VT-x, где x — буква, указывающая на подвид аппаратной техники.
Для AMD - AMD Virtualization (сокращенно AMD-V).
Стоит обращать внимание на поддержку этих технологий при выборе железа.

Так же, говоря о виртуализации, нельзя пройти мимо такой важной технологии как RAID массивы.

RAID массив.

Это технология хранения данных, позволяющая объединить 2 и более физических диска в один логический. Делается это как для повышения скорости всей системы в целом, так и для сохранности данных. Существуют два основных вида рэйд массивов. Это программный и аппаратный.
В аппаратном - массив создаётся и управляется на уровне железа (например управление контроллером из BIOS). И тогда операционная система или гипервизор воспринимают всё дисковое пространство как один физический диск.
В программном массиве всё делается силами операционной системы или гипервизором.

Так же есть несколько уровней массивов. Снова обратимся к Википедии.

- RAID 0 (striping — «чередование»).

Дисковый массив из двух или более жёстких дисков. Информация разбивается на блоки данных фиксированной длины и записывается на все диски поочередно, то есть один блок на первый диск, а второй блок на второй, и т.д. .
Достоинства: Скорость считывания файлов увеличивается в n раз, где n — количество дисков. При этом такая оптимальная производительность достигается только для больших запросов, когда фрагменты файла находятся на каждом из дисков.
Недостатки: Увеличивается риск потери данных по причине отказа одного из устройств массива.  

- RAID 1 (mirroring — «зеркалирование»)
Это массив из двух (или более) дисков, являющихся полными копиями друг друга.
Достоинства: Обеспечивает приемлемую скорость записи (такую же, как и без дублирования) и выигрыш по скорости чтения.
Имеет высокую надёжность — работает до тех пор, пока функционирует хотя бы один диск в массиве.
Недостатки: По цене двух жестких дисков получаем объём одного.

- RAID 5 —  Минимальное количество используемых дисков равно трём.
Вся записываемая на такой массив информация делится на части и каждая из этих частей сохраняется на отдельный физический диск. Так же создаётся дополнительный блок о записанной информации (проверка чётности - parity), который так же сохраняется на один из дисков.
Достоинства:  Совместное использование чередования данных и контроля чётности не позволяет одному диску стать узким местом. Обеспечивает хорошую пропускную способность и производительность, равную RAID 0. Является одним из самых надежных типов RAID, обеспечивая избыточность данных и надежность. Диски RAID 5 можно заменять в горячем режиме, что исключает простои.
Недостатки: Скорость записи на диски ниже скорости чтения из-за вычисления данных чётности. Также страдает от более длительного времени восстановления и потенциальной потери данных, если второй диск выходит из строя во время восстановления. Для него также требуется более сложный контроллер, чем для других уровней RAID.

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

- RAID 10 - (mirrored striping — «зеркалирование с чередованием»).
Диски делятся на 2 группы, по паре штук в каждой.
Например 4 диска по 1ТБ.
Внутри каждой группы диски зеркалятся (RAID 1).
Между собой группы работают как RAID 0.
Данные при записи сначала разбиваются на блоки между группами как при чередовании, а внутри них уже дублируются на физические носители.

Достоинства:
Высокая отказоустойчивость: Т.к. данные дублируются на зеркальные диски. Если один диск выходит из строя, данные остаются доступными на зеркальном диске.

Высокая производительность чтения/записи: комбинация преимуществ чередования  и зеркалирования, обеспечивает высокую производительность как для операций чтения, так и для операций записи.

Недостатки:
Использование большего количества дисков: Необходимо минимум, 4 диска для создания массива. Это означает, что стоимость реализации выше, т.к. требуется больше физических дисков.

Потеря емкости хранения: Поскольку используется зеркалирование данных, половина ёмкости дисков используется для создания зеркальной копии. Это означает, что эффективная емкость хранения в массиве будет в два раза меньше, чем суммарная емкость всех дисков.

Ограничения расширения: Добавление дополнительных дисков может быть сложным и ограниченным. Для расширения массива требуется добавление парных зеркал, что может привести к ограничениям в случае недоступности точно таких же дисков.

Не защищает от всех видов сбоев: Хотя этот вид массива и обеспечивает высокую отказоустойчивость относительно сбоев дисков, он не обеспечивает защиту от всех видов сбоев. Например, если оба диска в зеркале одновременно выйдут из строя, данные могут быть потеряны.

Требуется больше ресурсов для восстановления: В случае сбоя диска и восстановления данных, процесс восстановления может быть более затратным и занимать больше времени, чем в других режимах RAID, особенно при использовании большого количества дисков.

Повышенное энергопотребление: Большое количество дисков приводит к повышенному потреблению энергии. В сравнении с другими режимами RAID, такими как RAID 5 или RAID 6, RAID 10 может быть менее энергоэффективным.


В последующих статьях определимся с "железом", а потом и с самим гипервизором, в котором будет произведена установка сервера умного дома.

Комментарии