Блочные хранилища

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

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

Не существует ничего специфичного для OpenStack в понимании шагов, необходимых операционной системе экземпляра для доступа к блочному устройству: потенциально необходимое форматирование устройства перед его первым использованием и предосторожности при его удалении. Вот что действительно специфично, так это процесс создания нового тома, а также присоединение и отключение его от экземпляров. Все эти операции могут быть выполнены на странице Volumes инструментальной панели (Dashboard) или с использованием клиента командной строки.

Для добавления новых томов вам потребуется только имя и размер тома в гигабайтах. Либо поместите их в веб-форму create volume (создать том), либо с помощью командной строки:

$ cinder create --display-name test-volume 10

Данная команда создает том объемом 10ГБ с названием test-volume. Чтобы вывести список томов и экземпляров, к которым они присоединены, если присоединение выполнялось:

$ cinder list
+------------+---------+--------------------+------+-------------+-------------+
|     ID     | Status  |    Display Name    | Size | Volume Type | Attached to |
+------------+---------+--------------------+------+-------------+-------------+
| 0821...19f |  active |    test-volume     |  10  |     None    |             |
+------------+---------+--------------------+------+-------------+-------------+

Служба блочных хранилищ также позволяет создавать моментальные снимки томов. Помните, что это моментальные снимки выполняются именно на блочном уровне, который является чувствительным к согласованности при сбоях, так что лучше, если том не подключен к экземпляру при создании моментального снимка и, если он все-таки присоединен: лучше будет, если том не будет использоваться экземпляром к которому он присоединен. Если том интенсивно используется, то моментальный снимок может иметь не согласованную файловую систему. На самом деле, по умолчанию служба тома не выполняет создание моментального снимка присоединенного к экземпляру тома, хотя это и может быть выполнено принудительно. Для получения моментального снимка тома либо выберите на странице тома (volume) инструментальной панели Create Snapshot (Создать снимок) в столбце действия (action), следующем за именем тома, или выполните в командной строке:

usage: cinder snapshot-create [--force <True|False>]
[--display-name <display-name>]
[--display-description <display-description>]
<volume-id>
Add a new snapshot.
Positional arguments:  <volume-id>         ID of the volume to snapshot
Optional arguments:  --force <True|False>  Optional flag to indicate whether to
                                           snapshot a volume even if its
                                           attached to an instance.
                                           (Default=False)
--display-name <display-name>              Optional snapshot name.
                                           (Default=None)
--display-description <display-description>
Optional snapshot description. (Default=None)

Перевод на русский язык:

Добавить новый снимок. 
Позиционные аргументы:
<volume-id> ID тома для моментального снимка
Дополнительные аргументы:
--force <True|False> опциональный флаг, указывающий на необходимость создания моментального 
снимка тома, даже если он подключен к экземпляру (по умолчанию =False).
--display-name <display-name> опциональное имя моментального снимка (по умолчанию =None).
--display-description <display-description> опциональное описание моментального снимка 
(по умолчанию =None).
[Замечание]Замечание

Для дополнительной информации об обновлении томов блочных хранилищ (например, изменение размера или перемещение), обратитесь к Руководству по OpenStack конечного пользователяё.

 Отказы создания блочных хранилищ

Если пользователь пытается создать объем и сразу переходит в состояние ошибки, лучшим способ для устранения проблемы является вычленение из файла журналов cinder утилитой grep строк, содержащих UUID тома. Сначала проверьте файлы журналов в контроллере облака, а затем попробуйте на узле хранилища, на котором выполнялась попытка создания тома:

# grep  903b85d0-bacc-4855-a261-10843fc2d65b /var/log/cinder/*.log