В OpenNebula система хранения данных построена на концепции хранилищ данных (datastores). Хранилище данных — это любой носитель информации, предназначенный для хранения образов дисков и вспомогательных файлов.
OpenNebula использует три типа хранилищ данных:
Хранилище образов (Images Datastore) — используется для хранения образов операционных систем, постоянных томов данных и образов CD-ROM.
Системное хранилище (System Datastore) — хранит диски работающих ВМ. При запуске ВМ её диски копируются из хранилища образов, а при остановке — удаляются (если образ непостоянный).
Хранилище файлов и ядер (Files & Kernels Datastore) — хранит вспомогательные файлы, например, ядра Linux (vmlinuz), образы initrd/initramfs, а также файлы контекстуализации.
В зависимости от назначения выделяют два типа образов:
Постоянные (persistent) — предназначены для хранения пользовательских данных (например, баз данных). Изменения, внесённые в такие образы, сохраняются после завершения работы ВМ. В каждый момент времени постоянный образ может быть подключён только к одной ВМ.
Непостоянные (non-persistent) — используются для хранения дисков ВМ, работающих в текущий момент. Образы копируются или клонируются из хранилища образов при запуске ВМ и удаляются при её завершении, отключении диска или удалении ВМ. После удаления ВМ копия образа в системном хранилище также удаляется.
Передача образов дисков между хранилищем образов и системным хранилищем осуществляется с помощью драйверов Transfer Manager (TM). Эти драйверы представляют собой специализированные программные компоненты, выполняющие низкоуровневые операции хранения и передачи данных.
Образы хранятся в соответствующих каталогах хранилищ (/var/lib/one/datastores/<ID_хранилища>). Кроме того, для каждой запущенной ВМ в системном хранилище создаётся каталог /var/lib/one/datastores/<ID_хранилища>/<ID_ВМ>. В этих каталогах размещаются диски ВМ и дополнительные файлы, например контрольные точки и снимки.
Например, система с хранилищем образов с идентификатором 1, содержащим три образа, и тремя ВМ (ВМ 0 и 2 работают, ВМ 7 остановлена), развёрнутыми в системном хранилище с идентификатором 0, будет иметь следующую структуру:
/var/lib/one/datastores
|-- 0/
| |-- 0/
| | |-- disk.0
| | `-- disk.1
| |-- 2/
| | `-- disk.0
| `-- 7/
| |-- checkpoint
| `-- disk.0
`-- 1
|-- 19217fdaaa715b04f1c740557826514b
|-- 99f93bd825f8387144356143dc69787d
`-- da8023daf074d0de3c1204e562b8d8d2
Базовый путь /var/lib/one/datastores можно изменить в файле /etc/one/oned.conf с помощью параметра DATASTORE_LOCATION.