Виртуальный диск виртуальной машины представляет собой образ жёсткого диска. Виртуальные диски хранятся на локальном или сетевом устройстве — хранилище.

В статье приведены описание и функциональные возможности сетевых хранилищ, работу с которыми поддерживает VMmanager.

Поддерживаемые типы сетевых хранилищ:

  • iSCSI;
  • NFS;
  • сетевое LVM-хранилище;
  • RBD;
  • GlusterFS.

RBD и GlusterFS могут быть выделены отдельно как, отказоустойчивые сетевые хранилища.

iSCSI


В качестве хранилища используется удалённый сервер, доступ к которому осуществляется по протоколу блочного уровня — iSCSI. Протокол iSCSI описывает передачу SCSI-пакетов по стеку протоколов TCP/IP.

SCSI (the Small Computer Systems Interface) — семейство протоколов, предназначенных для взаимодействия с устройствами ввода/вывода, в особенности с устройствами хранения информации. Архитектура SCSI — клиент-серверная. Клиенты, называемые "инициаторами", выполняют SCSI-команды для создания запросов к компонентам (логическим единицам) серверов, называемых "таргетами" (или "целевыми устройствами").

VMmanager работает с реализацией iSCSI-протокола для GNU/Linux — Open-iSCSI.

Подробнее о настройке см. в статье Настройка iSCSI-хранилища.

Подробнее об iSCSI см. в официальной документации.

NFS


В качестве хранилища используется удалённый сервер, доступ к которому осуществляется по протоколу файлового уровня — NFS (the Network File System).

NFS в своей основе использует систему удалённого вызова процедур ONC RPC (Open Network Computing Remote Procedure Call), разработанную на основе протокола вызова удалённых процедур RPC (Procedure Call Model).

Модель удалённого вызова процедур описывается следующим образом: поток управления связывает процесс вызова сервера от клиента и процесс сервера. Процесс клиента сначала отправляет сообщение с  вызовом и запросом серверному процессу и ждёт ответное сообщение. Запрос включает параметры процедуры, а ответное сообщение включает в себя результаты процедуры. После получения ответного сообщения результаты процедуры извлекаются и передаются клиенту. На стороне сервера процесс неактивен, ожидая вызова. При вызове серверный процесс извлекает параметры процедуры, вычисляет результаты, отправляет ответное сообщение, а затем ожидает следующий вызов.

Транспортная передача в ONC RPC осуществляется по протоколам TCP, UDP, XDR.

Актуальная версия NFS — NFSv4.

Подробнее о настройке см. в статье Настройка NFS-хранилища.

Подробнее об NFS см. в официальной документации.

Сетевое LVM


Сетевое LVM-хранилище представляет собой аналог обычного LVM, но физический том, на котором находится группа томов, является сетевым устройством.

Подробнее об LVM см. в статье Локальные хранилища. Подробнее о настройке см. в статье Настройка сетевого LVM-хранилища.

Доступ к удалённому серверу осуществляется по протоколу iSCSI.

Отказоустойчивые сетевые хранилища


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

Функции отказоустойчивого хранилища:

  • хранение данные;
  • репликация данных;
  • распределение нагрузки на узлы кластера при чтении и записи данных.

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

VMmanager Cloud поддерживает отказоустойчивые сетевые хранилища Ceph и GlusterFS.

Ceph

Ceph предоставляет для клиента различные варианты доступа к данным: блочное устройство, файловая система или объектное хранилище. VMmanager поддерживает RBD — распределённое блочное устройство с клиентом kernel и QEMU/KVM драйвером. При использовании RBD виртуальные диски распределяются на несколько объектов и в таком виде хранятся в распределённом хранилище Ceph (RADOS).

Сeph RBD предоставляет два способа хранения данных: репликация (replication) и избыточность (erasure). Выбранный способ определяет размер частей данных и количества их копий.

При репликации несколько реплик входящих данных хранятся на различных узлах кластера.

При избыточности входящие данные разбиваются на K частей одинакового размера и создаётся определённое количество частей для восстановления данных (M). M-части по размеру совпадают с K-частями. Все части распределяются среди K+M узлов кластера — одна часть на узел кластера. Кластер может поддерживать работоспособность при отказе M узлов, без потери данных.

Функциональность и работоспособность Ceph-кластера поддерживается Ceph-службами:

  • Monitors (MON);
  • Managers (MGR);
  • Object Storage Daemon (OSD);
  • Metadata Server (MDS).


Ceph RBD не требует MDS.

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

В качестве узла кластера Ceph может быть использован узел кластера VMmanager. Однако это не рекомендуется, так как приводит к высокой нагрузке на сервер и, в случае выхода такого сервера из строя, к необходимости восстановления как хранилища, так и узла кластера VMmanager.

Хранилище RBD может поддерживать только формат образа виртуальных дисков RAW.

Подробнее о настройке см. в разделе Настройка Ceph RBD.

Подробнее о Ceph см. на официальном сайте.

GlusterFS

При использовании GlusterFS виртуальные диски распределяются на несколько объектов и в таком виде хранятся в распределённом хранилище. Распределённое хранилище состоит из томов, физически расположенных на разных серверах. Существуют следующие способы записи данных на тома:

  • Distributed — распределённый том, данные распределяются равномерно по всем серверам без дублирования. Такие тома никак не защищены средствами GlusterFS. В случае выхода из строя сервера или его дисков, данные находящиеся на нём будут недоступны;
  • Replicated — том с репликацией, данные записываются минимум на два сервера;
  • Striped — том с чередованием, все поступающие данные разбиваются на части и параллельно записываются на разные сервера. При запросе данные в обратном порядке считываются с серверов. В результате выхода из строя одного сервера или его диска, том приходит в негодность до восстановления неисправного узла;
  • Distributed Striped — распределение с чередованием, данные распределяются равномерно между подтомами. В рамках каждого подтома данные разбиваются на части и параллельно записываются на разные сервера;
  • Distributed Replicated — распределение с репликацией, данные распределяются равномерно между подтомами. В рамках каждого подтома данные записываются минимум на два сервера. Такой вариант обладает повышенной надёжностью.

GlusterFS не требует централизованного сервера метаданных.

Хранилище GlusterFS может поддерживать как формат образа виртуальных дисков RAW, так и Qcow2.

Подробнее о настройке см. в статье Настройка GlusterFS-хранилища.

Подробнее о GlusterFS см. на официальном сайте.