Глава 2. Работа с блочными устройствами Ceph

В данной главе мы охватим:

  • Работу с блочными устройствами Ceph

  • Настройку клиента Ceph

  • Создание блочного устройства Ceph

  • Отображение блочного устройства Ceph

  • Изменение размеров RBD Ceph

  • Работу со снимками RBD

  • Работу с клонами RBD

  • Быстрый осмотр OpenStack

  • Ceph - наилучшее соответствие OpenStack

  • Настройку OpenStack

  • Настройку OpenStack в качестве клиента Ceph

  • Настройку Glance под поддержку Ceph

  • Настройку Cinder под поддержку Ceph

  • Настройку Nova для подключения Ceph RBD

  • Настройку Nova для загрузки экземпляров из Ceph RBD

 Введение

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

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

 

Рисунок 2.1. Форматы хранения Ceph и варианты применения



Мы обсудим в этой книге все варианты, однако в данной главе мы сосредоточимся на блочных хранилищах Ceph.

 Работа с блочными устройствами Ceph

Блочные устройства Ceph (Ceph Block Device), ранее называвшиеся блочными устройствами RADOS, предоставляют клиентам надёжные распределённые и высокопроизводительные блочные диски хранения. Блочные устройства хранения RADOS применяют библиотеку librbd и хранят блоки данных в последовательном виде чередуя их по множеству OSD в кластере Ceph. RBD поддерживаются уровнем RADOS в Ceph, таким образом каждое блочное устройство распределяется по множеству узлов Ceph, поставляя высокую производительность и исключительную надёжность. RBD имеет встроенную поддержку для ядра Linux, что означает, что драйверы RBD хорошо интегрированы с ядром Linux на протяжении последних нескольких лет. Помимо надёжности и производительности RBD также предоставляет функциональность корпоративного уровня подобную полным и инкрементальным снимкам, динамичному выделению (thin provisioning), клонированию копированием при записи (copy on write), динамическое изменение размеров и тому подобное. RBD также поддерживает кэширование в памяти, которое драматично улучшает производительность.

 

Рисунок 2.2. Форматы хранения Ceph и варианты применения



Лидеры в индустрии гипервизоров с открытым исходным кодом, подобные KVM и Zen {Прим. пер.: а также, например, набирающий популярность Proxmox}, предоставляют полную поддержку RBD и повышают мощь функциональности своих гостевых виртуальных машин. Прочие проприетарные гипервизоры, например, VMWare и Microsoft HyperV будут поддерживать их в скором времени. Для поддержки этих гипервизоров в сообществе была проведена колоссальная работа. Блочные устройства Ceph предоставляют полную поддержку облачным платформам, таким как OpenStack, Cloud Stack и ряду других {Прим. пер.: например, Proxmox}. Для этих облачных платформ были доказаны успешность и функциональная полнота. В OpenStack вы можете применять блочные устройства Ceph с компонентами cinder (для блоков) и glance (для образов). Работая таким образом вы можете раскручивать тысячи Виртуальных Машин (ВМ, VM) за очень короткие промежутки времени, применяя преимущества функциональности копирования при записи блочных устройств Ceph.

Вся эта функциональность делает RBD идеальным кандидатом для облачных платформ OpenStack, CloudStack {Прим. пер.: Proxmox и прочих}. Теперь мы изучим как создавать блочные устройства Ceph и применять их.

 Настройка клиента Ceph

Все обычные хосты Linux (RHEL или основанные на Debian) могут выступать в роли клиентов Ceph. Клиент взаимодействует с кластером хранения Ceph через сетевую среду для сохранения или выборки данных пользователя. Поддержка RBD Ceph была добавлена в магистральное ядро Linux, начиная с 2.6.34 и последующих версий.

  Как это сделать...

Как мы это уже делали ранее, мы установим машину клиента Ceph с применением Vagrant и VirtualBox. Мы воспользуемся тем же самым Vagrantfile, который мы клонировали в нашей прошлой главе. Затем Vagrant запустит виртуальную машину Ubuntu 14.04, которую мы настроим в качестве клиента Ceph:

  1. Из каталога, в который мы клонировали ceph-cookbook git repository, запустим клиентскую машину с помощью Vagrant:

    $ vagrant status client-node1
    $ vagrant up client-node1
    
    	HOST:ceph-cookbook ksinghS vagrant status client-node1 
    	Current machine states: 
    	
    	client-node1              not created (virtualbox)
    	
    	The environment has not yet been created. Run `vagrant up` to 
    	create the environment. If a machine is not created, only the 
    	default provider will be shown. so if a provider is not listed, 
    	then the machine is not created for that environment. 
    	HOST:ceph-cookbook ksinghS vagrant up client-node1 
    	Bringing machine 'client-node1' up with 'virtualhox' provider... 
    	==> client-node1: Importing base box 'ubuntu/trusty64'... 
    	==> client-node1: Matching MAC address for NAT networking... 
    	==> client-node1: Checking if box 'ubuntu/trusty64' is up to date... 
    	==> client-node1: setting the name of the vm: client-node1
     	   
  2. Зарегистрируйтесь на ceph-node1:

    $ vagrant ssh client-node1
     	   
    [Замечание]Замечание

    Имя и пароль которые Vagrant применяет для настройки виртуальной машины vagrant и Vagrant имеет права sudo. Пароль по умолчанию для пользователя root установлен в vagrant.

  3. Проверьте редакции ОС и ядра (это не является обязательным):

    $ lsb_release -a
    $ uname -r
     	   
  4. Убедитесь что RBD поддерживается ядром:

    $ sudo modprobe rbd
    
    	vagrant@client-node1:~$ lsb_release -a 
    	No LSB modules are available. 
    	Distributor ID: Ubuntu 
    	Description: Ubuntu 14.04.2 LTS 
    	Release: 14.04 
    	Codename: trusty 
    	vagrant@client-node1:~$ 
    	vagrant@client-node1:~$ uname -r 
    	3.13.0-46-generic 
    	vagrant@client-node1:~$ 
    	vagrant@client-node1:~$ sudo modprobe rbd 
    	vagrant@client-node1:~$ echo $? 
    	0 
    	vagrant@client-node1:~$ 
     	   
  5. Разрешите доступ машины монитора ceph-node1 к client-node1 через ssh. Для этого скопируйте ключи ssh root с ceph-node1 на client-node1 пользователя Vagrant. Выполните следующие команды на машине ceph-node1 если не предписано другого:

    ## Login to ceph-node1 machine
    $ vagrant ssh ceph-node1
    $ sudo su -
    # ssh-copy-id vagrant@client-node1
     	   

    Предоставьте одноразовый пароль пользователя Vagrant, т.е. vagrant для ceph-node1. Когда ключи ssh скопированы с ceph-node1 на client-node1, вы должны получить возможность регистрироваться на client-node1 без пароля.

  6. Для установки исполняемых файлов Ceph на client-node1 выполните ceph-deploy на ceph-node1:

    # cd /etc/ceph
    # ceph-deploy --username vagrant install client-node1
    
    	[root@client-node1 ceph]# ceph-deploy --username vagrant install client-node1 
    	[ceph_deploy.conf][DEBUG ] found configuration file at: /root/.cephdeploy.conf 
    	[ceph_deploy.cli][INFO ] Invoked (1.5.22): /bin/ceph-deploy --username vagrant install client-node1 
    	[ceph_deploy.install][DEBUG ] Installing stable version giant on cluster ceph hosts client-node1 
    	[ceph_deploy.install][DEBUG ] Detecting platform for host client-node1 
    	[client-node1][DEBUG ] connection detected need for sudo 
    	[client-node1][DEBUG ] connected to host: vagrant@client-node1 
    	[client-node1][DEBUG ] detect platform information from remote host 
    	[client-node1][DEBUG ] detect machine type 
    	[ceph_deploy.install][INFO ] Distro info: ubuntu 14.04 trusty 
    	[client-node1][INFO ] installing ceph on client-node1 
     	   
  7. Скопируйте файл настроек (ceph.conf) на client-node1:

    # ceph-deploy --username vagrant config push client-node1
     	   
  8. Клиентской машине требуется ключ Ceph для доступа к кластеру Ceph. Ceph создёт пользователя по умолчанию, client.admin, который имеет полный доступ к кластеру Ceph. Не рекомендуется применять ключ client.admin совместно на клиентских узлах. Лучшим решением будет создать нового пользователя Ceph с отдельным ключом и разрешить его доступ к определённым пулам Ceph.

    В нашем случае мы создадим пользователя Ceph client.rbd с правом доступа к пулу rbd. По умолчанию, блочные устройства Ceph создаются в пуле rbd:

    # ceph auth get-or-create client.rbd mon 'allow r' osd 'allow class-read object_prefix rbd_children, allow rwx pool=rbd'
    
    	[root@ceph-node1 ceph]# ceph auth get-or-create client.rbd mon 'allow r' osd 'allow class-read object_prefix rbd_children, allow rwx pool=rbd' 
    	[client.rbd] 
    	        key = AQCLEg5VeAbGARAAE4ULXC7M$Fwd3BGFDiHRTw== 
    	[root@client-node1 ceph]# 
     	   
  9. Добавьте ключ на машине client-node1 для пользователя client.rbd:

    # ceph auth get-or-create client.rbd | ssh vagrant@client-node1 sudo tee /etc/ceph/ceph.client.rbd.keyring
    
    	[root@client-node1 ceph]# ceph auth get-or-create client.rbd | ssh vagrant@client-node1 sudo tee /etc/ceph/ceph.client.rbd.keyring 
    	[client.rbd] 
    	        key = AQCLEg5VeAbGARAAE4ULXC7M$Fwd3BGFDiHRTw== 
    	[root@client-node1 ceph]# 
     	   
  10. На данном этапе client-node1 должен быть готов к работе в качестве клиента Ceph. Проверьте состояние на машине client-node1 предоставив имя пользователя и ключ безопасности:

    $ vagrant ssh client-node1
    $ sudo su -
    # cat /etc/ceph/ceph.client.rbd.keyring >> /etc/ceph/keyring
    ### Since we are not using the default user client.admin we need
    to supply username that will connect to Ceph cluster.
    # ceph -s --name client.rbd
    
    	root@client-node1:~# ceph -s --name client.rbd 
    	    cluster 9609b429-eee2-4e23-af31-28a24fcf5cbc 
    		health HEALTH_OK 
    		monmap e3: 3 mons at {ceph-node1=192.168.1.101:6789/0,ceph-node2=192.168.1.102:6789/0, ceph-node3=192.168.1.103:6789/0}, election epoch 82, quorum 0,1,2 ceph-node1,ceph-node2,cep h-node3 
    		osdmap e142: 9 osds: 9 up, 9 in 
    		 pgmap v378: 180 pgs, 1 pools, 0 bytes data, 0 objects 
    		       322 MB used, 134 GB / 134 GB avail 
    	                180 active+clean 
    	root@client-node1:~# 
     	   

 Создание блочного устройства Ceph

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

  Как это сделать...

  1. Создайте блочное устройство RADOS с именем rbd1 и размером 10240МБ:

    # rbd create rbd1 --size 10240 --name client.rbd
     	   
  2. Существует множество вариантов отображения списка образов RBD:

    ## The default pool to store block device images is "rbd", you can
    also specify the pool name with the rbd command using -p option:
    # rbd ls --name client.rbd
    # rbd ls -p rbd --name client.rbd
    # rbd list --name client.rbd
     	   
  3. Осмотрите подробности образа rbd:

    # rbd --image rbd1 info --name client.rbd
    
    	root@client-node1:~# rbd create rbdl --size 10240 --name client.rbd 
    	root@client-node1:~# rbd is --name client.rbd 
    	rbdl 
    	root@client-node1:~# rbd --image rbdl info --name client.rbd 
    	rbd image 'rbdl': 
    	        size 10240 MB in 2560 objects 
    	        order 22 (4096 kB objects) 
    	        block_name_prefix: rb.0.14f1.238e1f29 
    	        format: 1 
    	root@client-node1:~# 
     	   

 Отображение блочного устройства Ceph

Теперь когда у нас есть созданное блочное устройство в кластере Ceph, чтобы воспользоваться этим блочным устройством нам надо отобразить его на клиентской машине. Чтобы достичь этого, выполните следующие команды на машине client-node1.

  Как это сделать...

  1. Отобразите ваше блочное устройство на client-node1:

    # rbd map --image rbd1 --name client.rbd
     	   
  2. Проверьте отображённое блочное устройство:

    # rbd showmapped --name client.rbd
    
    	root@client-node1:~# rbd map --image rbdl --name client.rbd /dev/rbdl 
    	root@client-node1:—# rbd showmapped --name client.rbd 
    	id pool image snap device 
    	1  rbd  rbdl  -    /dev/rbdl 
    	root@client-node1:~# 
     	   
  3. Чтобы воспользоваться этим блочным устройством, нам следует создать на нём файловую систему и смонтировать её:

    # fdisk -l /dev/rbd1
    # mkfs.xfs /dev/rbd1
    # mkdir /mnt/ceph-disk1
    # mount /dev/rbd1 /mnt/ceph-disk1
    # df -h /mnt/ceph-disk1
    
    	root@client-node1:~# df -h /mnt/ceph-diskl 
    	Filesystem      Size  Used Avail Use% Mounted on 
    	/dev/rbdl        10G   33M   10G   1% /mnt/ceph-diskl 
    	root@client-node1:~# 
     	   
  4. Проверьте блочное устройство записав на него данные:

    # dd if=/dev/zero of=/mnt/ceph-disk1/file1 count=100 bs=1M
    
    	root@client-node1:~# dd if=/dev/zero of=/mnt/ceph-disk1/file1 count=100 bs=1M 
    	100+0 records in 
    	100+0 records out 
    	104857600 bytes (105 MB) copied, 7.16309 s, 14.6 MB/s 
    	root@client-node1:~# df -h /mnt/ceph-disk1 
    	Filesystem      Size  Used Avail Use% Mounted on 
    	/dev/rbdl        10G  133M  9.9G   2% /mnt/ceph-disk1 
    	root@client-node1:~# 
     	   
  5. Чтобы отображать блочное устройство после перезагрузок, вам следует добавить сценарий init-rbdmap в запуск системы, добавьте пользователя Ceph и подробности кольца ключей (keyring) в /etc/ceph/rbdmap, и, наконец, обновите файл /etc/fstab:

    # wget https://raw.githubusercontent.com/ksingh7/ceph-cookbook/master/rbdmap -O /etc/init.d/rbdmap
    # chmod +x /etc/init.d/rbdmap
    # update-rc.d rbdmap defaults
    
    ## Make sure you use correct keyring value in /etc/ceph/rbdmap file, which is generally unique for an environment.
    # echo "rbd/rbd1 id=rbd,keyring=AQCLEg5VeAbGARAAE4ULXC7M5Fwd3BGFDiHRTw==" >> /etc/ceph/rbdmap
    # echo "/dev/rbd1 /mnt/ceph-disk1 xfs defaults, _netdev 0 0 " >> /etc/fstab
    # mkdir /mnt/ceph-disk1
    # /etc/init.d/rbdmap start
     	   

 Изменение размеров RBD Ceph

Ceph поддерживает динамично выделяемые (thin provisioned) блочные устройства, что означает, что физическое пространство хранения не занимается пока вы не начинаете сохранять данные на свои блочные устройства. Ваши блочные устройства Ceph очень гибки; вы можете увеличивать или уменьшать размер RBD на лету со стороны хранилища Ceph. Однако, лежащие в основе файловые системы должны поддерживать изменение размеров. Современные файловые системы, такие как XFS, Btrfs, EXT, ZFS и другие поддерживают изменение размера файловой системы до определённой степени. Для получения дополнительной информации об изменении размера, пожалуйста, обратитесь к соответствующей документации по файловой системе.

  Как это сделать...

Для увеличения или уменьшения размера образа RBD Ceph воспользуйтесь параметром --size <New_Size_in_MB> в команде rbd resize, она тогда установит новый размер для вашего образа RBD:

  1. Первоначальный размер созданного нами ранее образа RBD составляло 10ГБ. Теперь мы увеличим его размер до 20ГБ:

    # rbd resize --image rbd1 --size 20480 --name client.rbd
    # rbd info --image rbd1 --name client.rbd
    
    	rootgclient-node1:~# rbd resize --image rbdl --size 20480 --name client.rbd 
    	Resizing image: 100% complete...done. 
    	rootgclient-node1:~# rbd info --image rbdl --name client.rbd 
    	rbd image 'rbdl': 
    	        size 20480 MB in 5120 objects 
    	        order 22 (4096 kB objects) 
    	        block_name_prefix: rb.0.14f1.238e1f29 
    	        format: 1 
    	root@client-node1:~# 
     	   
  2. Увеличение файловой системы в размере приводит к тому, что мы используем больше пространства хранения. Следует знать, что изменение размера файловой системы является функциональной особенностью как ОС, так и вашего устройства файловой системы. Вам следует прочитать документацию по файловой системе перед изменением размера любого раздела. Файловая система XFS поддерживает изменение размера в реальном масштабе времени. Проверьте системные сообщения чтобы узнать об изменениях размера файловой системы:

    # dmesg | grep -i capacity
    # xfs_growfs -d /mnt/ceph-disk1
    
    	root@client-node1:~# xfs_growfs -d /mnt/ceph-diskl 
    	meta-data=/dev/rbd1              isize=256    agcount=17, agsize=162816 blks 
    	         =                       sectsz=512   attr=2 
    	data     =                       bsize=4096   blocks=2621440, imaxpct=25 
    	         =                       sunit=1024   swidth=1024 blks 
    	naming   =version 2              bsize=4096   ascii-ci=0 
    	log      =internal               bsize=4096   blocks=2560, version=2 
    	         =                       sectsz=512   sunit=8 blks, lazy-count=1 
    	realtime =none                   extsz=4096   blocks=0, rtextents=0 
    	data blocks changed from 2621440 to 5242880 
    	root@client-node1:~# df -h /mnt/ceph-disk1 
    	Filesystem      Size  Used Avail Use% Mounted on 
    	/dev/rbdl        20G  134M   20G   1% /mnt/ceph-disk1 
    	root@client-node1:~# 
     	   

 Работа со снимками RBD

Ceph распространяет полную поддержку на снимки, которые являются копией образа RBD в определённый момент времени доступной только для чтения. Вы можете сохранять состояние образа RBD сохраняя снимки и восстанавливая определённый снимок для получения первоначальных данных.

  Как это сделать...

Давайте рассмотрим как работает снимок в Ceph.

  1. Чтобы проверить функциональность снимка Ceph давайте создадим в сделанном нами ранее блочном устройстве некий файл:

    # echo "Hello Ceph This is snapshot test" > /mnt/ceph-disk1/snapshot_test_file
    
    	root@client-node1:~# echo "Hello Ceph This is snapshot test" > /mnt/ceph-disk1/snapshot_test_file 
    	root@client-node1:~# is -1 /mnt/ceph-disk1 
    	total 102404 
    	rw r r 1 root root 104857600 Mar 22 16:07 file1 
    	rw r r 1 root root 33 Mar 22 21:45 snapshot_test_file 
    	root@client-node1:~# 
    	root@client-node1:~# cat /mnt/ceph-disk1/snapshot_test_file 
    	Hello Ceph This is snapshot test 
    	root@client-node1:~# 
     	   
  2. Создайте снимок для блочного устройства Ceph:

    Синтаксис: rbd snap create <pool-name>/<image-name>@<snap-name>
    # rbd snap create rbd/rbd1@snapshot1 --name client.rbd
     	   
  3. Для отображения списка снимков образов воспользуйтесь следующим:

    Синтаксис: rbd snap ls <pool-name>/<image-name>
    # rbd snap ls rbd/rbd1 --name client.rbd
    
    	root@client-node1:~# rbd snap create rbd/rbdl@snapshotl --name client.rbd 
    	root@client-node1:~# rbd snap is rbd/rbdl --name client.rbd 
    	SNAPID NAME              SIZE 
    	     2 snapshot1     20480 MB 
    	root@client-node1:~# 
     	   
  4. Чтобы проверить функциональность восстановления снимка Ceph давайте удалим в файловой системе файлы:

    # rm -f /mnt/ceph-disk1/*
     	   
  5. Теперь мы восстановим снимок нашего RBD Ceph для возврата только что на последнем шаге удалённых файлов. Отметьте, пожалуйста, что операция отката перепишет текущую версию вашего образа RBD и его данные версией из снимка. Вы должны аккуратно выполнять эту операцию:

    Синтаксис: rbd snap rollback <pool-name>/<image-name>@<snap-name>
    # rbd snap rollback rbd/rbd1@snapshot1 --name client.rbd
     	   
  6. По окончанию операции отката снимка перемонтируйте файловую систему RBD Ceph для обновления состояния файловой системы. Вы должны иметь возможность получить назад свои удалённые файлы:

    # umount /mnt/ceph-disk1
    # mount /dev/rbd1 /mnt/ceph-disk1
    # ls -l /mnt/ceph-disk1
    
    	root@client-node1:~# rbd snap rollback rbd/rbd1@snapshot1 --name client.rbd 
    	Rolling back to snapshot: 100% complete...done. 
    	root@client-node1:~# umount /mnt/ceph-disk1 
    	root@client-node1:~# mount /dev/rbd1 /mnt/ceph-disk1 
    	root@client-node1:~# is /mnt/ceph-disk1 
    	total 102404 
    	-rw-r--r-- 1 root root 104857600 Mar 22 16:07 file1 
    	-rw-r--r-- 1 root root 33 Mar 22 21:45 snapshot_test_file 
    	root@client-node1:~# 
     	   
  7. Когда вам больше не нужны снимки, вы можете удалять определённый снимок с применением следующего синтаксиса. Удаление снимка не удаляет текущие данные в вашем образе RBD Ceph:

    Синтаксис: rbd snap rm <pool-name>/<image-name>@<snap-name>
    # rbd snap rm rbd/rbd1@snapshot1 --name client.rbd
     	   
  8. Если у вас имеется множество снимков образов RBD и вы хотите удалить их все одной командой, тогда применяйте подкоманду purge:

    Синтаксис: rbd snap purge <pool-name>/<image-name>
    # rbd snap purge rbd/rbd1 --name client.rbd
     	   

 Работа с клонами RBD

Ceph поддерживает очень приятную возможность для создания копируемых- при- записи (COW, Copy-On-Write {Прим. пер.: при изменении новых данных эти данные вначале копируются в новую область}) клонов из снимков RBD. Эту операцию в Ceph также называют расслоением снимков (Snapshot Layering). Расслоение делает возможным клиентам создавать множественные экземпляры клонов RBD Ceph. Данная функциональность чрезвычайно полезна для облачных и виртуальных платформ, таких как {Прим. пер.: например, OpenStack}, CloudStack, Qemu/KVM и тому подобных {Прим. пер.: например, Proxmox}. Эти платформы обычно предохраняют содержащие отображение ОС/ВМ образы RBD Ceph в виде снимка. Позже этот снимок многократно клонируется для порождения новых виртуальных машин/ экземпляров. Снимки являются доступными только для чтения, однако COW клоны полностью доступны для записи; данная функциональность Ceph предоставляет более высокий уровень гибкости и чрезвычайно полезна в облачных платформах. В последующих главах мы дополнительно исследуем клоны COW при порождении экземпляров OpenStack:

 

Рисунок 2.3. COW клоны снимка


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

Образы в Ceph бывают двух типов: format-1 и format-2. Функциональность RBD доступна в обоих типах, а именно, как в образах RBD format-1, так и в образах RBD format-2. Однако, функциональность расслоения (свойство клонирования COW) доступна только для образа RBD в format-2. Форматом образа RBD по умолчанию является format-1.

  Как это сделать...

Для демонстрации клонирования RBD мы намеренно создадим образ RBD format-2, затем создадим и защитим его снимок и, наконец, создадим из него клоны COW.

  1. Создайте образ RBD format-2 и осмотрите его детали:

    # rbd create rbd2 --size 10240 --image-format 2 --name client.rbd
    # rbd info --image rbd2 --name client.rbd
    
    	root@client-node1:/# rbd create rbd2 --size 10240 --image-format 2 --name client.rbd 
    	root@client-node1:/# 
    	root@client-node1:/# rbd info --image rbd2 --name client.rbd 
    	rbd image 'rbd2': 
    	        size 10240 MB in 2560 objects 
    	        order 22 (4096 kB objects) 
    	        block_name_prefix: rbd_data.20f42ae8944a 
    	        format: 2 
    	        features: layering 
    	root@client-node1:/# 
     	   
  2. Создайте снимок этого образа RBD:

    # rbd snap create rbd/rbd2@snapshot_for_cloning --name client.rbd
     	   
  3. Для создания клона COW защитите снимок. Это важный шаг, мы должны предохранять снимок, так как если снимок будет удалён, будут разрушены все присоединённые клоны:

    # rbd snap protect rbd/rbd2@snapshot_for_cloning --name client.rbd
     	   
  4. Далее при помощи этого снимка мы создадим клонированный образ RBD:

    Синтаксис: rbd clone <pool-name>/
    	 
  5. Созание клона является быстрым процессом. Как только он завершится, проверьте информацию вашего нового образа. Вы отметите, что будут отображена информация о его родительском пуле, образе и снимке:

    # rbd info rbd/clone_rbd2 --name client.rbd
    
    	root@client-node1:/# rbd snap create rbd/rbd2@snapshot_for_cloning --name client.rbd 
    	root@client-node1:/# rbd snap protect rbd/rbd2@snapshot_for_cloning --name client.rbd 
    	root@client-node1:/# rbd clone rbd/rbd2@snapshot_for_cloning rbd/clone_rbd2 --name client.rbd 
    	root@client-node1:/# rbd info rbd/clone_rbd2 --name client.rbd 
    	rbd image 'clone_rbd2': 
    	        size 10240 MB in 2560 objects 
    	        order 22 (4096 kB objects) 
    	        block_name_prefix: rbd_data.220b3d1b58ba 
    	        format: 2 
    	        features: layering 
    	        parent: rbd/rbd2@snapshot_for_cloning 
    	        overlap: 10240 MB 
    	root@client-node1:/# 
     	   

    На данный момент у нас имеется клонированный образ RBD, который зависит от своего снимка образа родителя. Чтобы сделать клонированный образ RBD независимым от его родителей нам нужно выровнять (flatten) этот образ, которое выполнит копирование данных из родительского снимка в его дочерний образ. Время, которое займет выполнение процесса выравнивания зависит от размера данных, расположенных в родительском снимке. Когда процесс выравнивания завершится, зависимости между клонированным образом и его родительским снимком больше не будет.

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

    # rbd flatten rbd/clone_rbd2 --name client.rbd
    # rbd info --image clone_rbd2 --name client.rbd
     	   

    После завершения процесса выравнивания, если вы проверите информацию об образе, вы отметите, что имя родительского образа/ снимка отсутствует и клон является независимым.

    	root@client-node1:/# rbd flatten rbd/clone_rbd2 --name client.rbd 
    	Image flatten: 100% complete...done. 
    	root@client-node1:/# rbd info --image clone_rbd2 --name client.rbd rbd 
    	image 'clone_rbd2': 
    	    size 10240 MB in 2560 objects 
    		order 22 (4096 kB objects) 
    		block_name_prefix: rbd_data.220b3d1b58ba 
    		format: 2 
    		features: layering 
    	root@client-node1:/# 
     	   
  7. Вы также можете удалить свой родительский снимок если он вам больше не требуется. Перед удалением снимка вам сначала необходимо снять с него защиту:

    # rbd snap unprotect rbd/rbd2@snapshot_for_cloning --name client.rbd
     	   
  8. Когда со снимка снята защита, вы можете удалить его: purge:

    Синтаксис: rbd snap purge <pool-name>/<image-name>
    # rbd snap rm rbd/rbd2@snapshot_for_cloning --name client.rbd
     	   

 Быстрый осмотр OpenStack

OpenStack является платформой с открытым исходным кодом для построения и управления общедоступной и частной облачной инфраструктуры. Он управляется независимым, некоммерческим фондом, называемым фондом OpenStack. Это самое большое и наиболее активное сообщество, которое поддерживается такими технологическими гигантами как HP, Red Hat, Dell, Cisco, IBM, Rackspace и многими другими. Идея OpenStack для облачных решений состоит в том, что оно должно быть простым в реализации и массивно масштабируемым.

OpenStack рассматривается как облачная операционная система в которой пользователи имеют возможность мгновенно развёртывать сотни виртуальных машин автоматизированным способом. Она также предоставляет эффективный способ заботы о бесплатном управлении этими машинами. OpenStack своим динамичным увеличения и уменьшения в масштабе, а также возможностями распределённой архитектуры, которые делают вашу облачную среду надёжной и готовой к будущему. OpenStack представляет платформу инфраструктуры- как- службы (IaaS, Infrastructure-as-a-Service) для любых ваших потребностей в облачных решениях.

 

Рисунок 2.4. Компоненты OpenStack


Как показано на приведённой выше схеме, OpenStack состоит из отдельных различных программных компонентов, которые совместно работают для предоставления служб облака. В данной главе из всех этих компонент мы сосредоточимся на Cinder и Glance, которые соответственно предоставляют службы блочного хранения и образов. Для получения дополнительной информации по компонентам, пожалуйста, обращайтесь к http://www.openstack.org/ {Прим. пер.: у нас на сайте вы можете ознакомиться с переводом 2й редакции OpenStack Operations Guide (на момент перевода данной книги доступна 3я редакция: 2016-03-03, последняя версия достуна тут )}.

 Ceph - наилучшее соответствие OpenStack

В последние несколько лет OpenStack приобрёл впечатляющую популярность благодаря своей основанной на программно определяемой поддержке широкого диапазона вычислений, сетевых сред и даже систем хранения. И когда вы рассуждаете о системах хранения для OpenStack, Ceph привлекает всё внимание. Проведённый в сентябре 2015г опрос пользователей OpenStack показал, что Ceph доминирует на рынке устройств блочного хранения с колоссальными 62% применения.

Ceph предоставляет устойчивую, нодёжную основу хранения, которую искал OpenStack. Его бесшовная интеграция с компонентами OpenStack такими, как cinder, glance, nova и keystone предоставляет всю- в- одном основу хранения для OpenStack. Вот некоторые ключевые преимущества, делающие Ceph наилучшим соответствием для OpenStack:

  • Ceph предоставляет основу хранения уровня предприятия с богатым функционалом при очень умеренной стоимости за гигабайт, что помогает сохранять снижению стоимости развёртывания облачного решения OpenStack.

  • Ceph является унифицированным решением хранения для хранения Блоков, Файлов и Объектов для OpenStack, позволяя приложениям использовать хранилище в соответствии со своими потребностями.

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

  • Она предоставляет по умолчанию постоянные тома для экземпляров OpenStack, которые могут работать как традиционные серверы, в которых данные не наполняются при загрузке.

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

  • Она предоставляет томам OpenStack функциональность снимков, которая может также применяться как средство резервного копирования.

  • Функциональность клонирования копированием- при- записи (COW) Ceph позволяет OpenStack раскручивать множество экземпляров за один раз, что помогает быстрее работать механизму продвижения.

  • Ceph поддерживает богатые API как для интерфейсов хранения объектов Swift, так и для S3.

Сообщества Ceph и OpenStack в последние несколько лет тесно работали для создания интеграции ещё более бесшовной и применения новых функциональностей по мере их появления. В будущем мы ожидаем что OpenStack и Ceph будут ещё более тесно ассоциироваться благодаря приобретению Red Hat Inktank, компании, лежащей в основе Ceph; Red Hat один из основных вкладчиков в проекте OpenStack.

OpenStack является модульной системой, которая имеет уникальные компоненты для особых наборов задач. Существуют различные компоненты, которым требуется надёжная основа для хранения, подобная Ceph, и расширяющая полную интеграцию в неё, как отображено на следующей схеме. Все эти компоненты используют Ceph для своих собственных потребностей в хранении блочных устройств и объектов. Большинство основанных на OpenStack и Ceph облачных решений применяют интеграцию Cinder, Glance и Swift c Ceph. Интеграция с Keystone применяется когда вам нужна S3- совместимость хранения объектов в вашей поддержке Ceph. Интеграция Nova делает возможной загрузку с томов Ceph для ваших экземпляров OpenStack.

 

Рисунок 2.5. Интегрированные в Ceph компоненты OpenStack


 Настройка OpenStack

Установка и настройка OpenStack выходят за пределы рассмотрения данной книги, однако, просто для демонстрации мы применим виртуальную машину с предустановленной редакцией OpenStack RDO Juno. Если вы захотите, вы можете использовать вашу собственную среду OpenStack и можете выполнить интеграцию Ceph. {Прим. пер.: отсылаем к нашему переводу Руководства по эксплуатации OpenStack за подробностями инициализации и развертывания.}

  Как это сделать...

В этом рецепте мы продемонстрируем как установить предварительно настроенную среду OpenStack с применением Vagrant и получить к ней доступ через CLI и GUI.

  1. Запустите openstack-node1 применив Vagrantfile как мы это делали для узлов Ceph в предыдущей главе. Убедитесь, что вы находитесь на машине хоста и под репозиторием ceph-cookbook прежде чем поднимете openstack-node1 с помощью Vagrant:

    # cd ceph-cookbook
    # vagrant up openstack-node1
    
    	HOST:ceph-cookbook ksingh$ vagrant up openstack-node1 
    	Bringing machine 'openstack-node1' up with 'virtualbox' provider... 
    	==> openstack-node1: Clearing any previously set forwarded ports... 
    	==> openstack-node1: Clearing any previously set network interfaces... 
    	=> openstack-node1: Preparing network interfaces based on configuration... 
    	      openstack-node1: 
    	      Adapter 1: nat openstack-node1: 
    	      Adapter 2: hostonly 
    	=> openstack-node1: Forwarding ports... 
    	      openstack-node1: 22 
    	=> 2222 (adapter 1) 
    	=> openstack-node1: Running 'pre-boot' VM customizations... 
    	=> openstack-node1: Booting vm... 
    	=> openstack-node1: waiting for machine to boot. This may take a few minutes... 
     	   
  2. Когда openstack-node1 запущен, проверьте состояние Vagrant, а затем зарегистрируйтесь на этом узле:

    $ vagrant status openstack-node1
    $ vagrant ssh openstack-node1
    
    	HOST:ceph-cookbook ksingh$ vagrant status openstack-node1 
    	Current machine states: 
    
        openstack-node1           running (virtualbox)
    
        The VM is running. To stop this vm, you can run `vagrant halt` to 
    	shut it down forcefully, or you can run `vagrant suspend` to simply 
    	suspend the virtual machine. In either case, to restart it again, 
    	simply run `vagrant up`. 
    	HOST:ceph-cookbook ksingh$ 
    	HOST:ceph-cookbook ksingh$ 
    	HOST:ceph-cookbook ksingh$ vagrant ssh openstack-node1 
    	Last login: Sat Mar 28 21:38:07 2015 from 10.0.2.2 
    	[vagrant@os-node1 ~]$ 
     	   
  3. Мы предполагаем, что у вас есть некое понимание OpenStack и представление о его работе. Мы подключим файл keystone_admin, который был размещён в /root, а затем нам нужно переключиться в корень:

    $ sudo su -
    $ source keystone_admin
     	   

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

    # nova list
    # cinder list
    # glance image-list
    
    	[vagrant@os-node1 ~]$ sudo su -
    	Last login: Sat Mar 28 22:34:52 EET 2015 on pts/0 
    	[root@os-node1 ~]# source keystonerc_admin 
    	[root@os-node1 ~(keystone_admin)]# 
    	[root@os-node1 ~(keystone_admin)]# nova list 
    	+----+------+--------+------------+-------------+----------+ 
    	| ID | Name | Status | Task State | Power State | Networks |
    	+----+------+--------+------------+-------------+----------+ 
    	+----+------+--------+------------+-------------+----------+ 
    	[root@os-node1 ~(keystone_admin)]# 
    	[root@os-node1 ~(keystone_admin)]# cinder list 
    	+----+--------+--------------+------+-------------+----------+-------------+ 
    	| ID | Status | Display Name | Size | Volume Type | Bootable | Attached to | 
    	+----+--------+--------------+------+-------------+----------+-------------+ 
    	+----+--------+--------------+------+-------------+----------+-------------+ 
    	[root@os-node1 ~(keystone_admin)]# glance image-list 
    	+--------------------------------------+--------+-------------+------------------+----------+--------+ 
    	| ID                                   | Name   | Disk Format | Container Format | Size     | Status |
    	| Sc261af7-9388-44ad-a8ce-f9ebdad2e5cb | cirros I qcow2       | bare             | 13200896 | active | 
    	+--------------------------------------+--------+-------------+------------------+----------+--------+ 
    	[root@os-node1 ~(keystone_admin)]# 
     	   
  4. Вы можете также зарегистрироваться в веб- интерфейсе horizon OpenStack https://192.168.1.111/dashboard с именем пользователя admin и паролем vagrant.

  5. После регистрации мы откроем страницу Общего обзора:

 Настройка OpenStack в качестве клиента Ceph

Узлы OpenStack должны быть настроены клиентами Ceph чтобы получить доступ к кластеру Ceph. Для этого установите пакеты Ceph на узлах OpenStack и проверьте что вы можете осуществить доступ к кластеру Ceph.

  Как это сделать...

В данном рецепте мы собираемся настроить OpenStack в качестве клиента Ceph, который позжебудет использоваться для настройки cinder, glance и nova:

  1. Мы воспользуемся ceph-node1 для установки исполняемых файлов Ceph на os-node1 с использованием ceph-deploy, как мы это уже делали ранее в Главе 1. Введение и за его пределами. Чтобы сделать это, мы должны установить регистрацию ssh без пароля для os-node1. Пароль для root опять тот же (vagrant ):

    $ vagrant ssh ceph-node1
    $ sudo su -
    # ping os-node1 -c 1
    # ssh-copy-id root@os-node1
    
    	HOST:ceph-cookbook ksingh$ vagrant ssh ceph-node1 
    	Last login: Sun mar 29 11:27:53 2015 from 10.0.2.2 
    	[vagrant@ceph-node1 ~]$ sudo su -
    	Last login: Sun Mar 29 11:27:57 EEST 2015 on pts/1 
    	[root@ceph-node1 ~]# ping os-node1 -c 1 
    	PING os-node1.cephcookbook.com (192.168.1.111) 56(84) bytes of data. 
    	64 bytes from os-node1.cephcookbook.com (192.168.1.111): icmp_seq=1 tt1=64 time=0.568 ms 
    	
    	--- os node1.cephcookbook.com ping statistics --- 
    	1 packets transmitted, 1 received, 0% packet loss, time 0ms 
    	rtt min/avg/max/mdev = 0.568/0.568/0.568/0.000 ms 
    	[root@ceph-node1 ~]# ssh-copy-id root@os-node1 
    	/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed 
    	/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys 
    	root@os-node1's password: 
    	
    	Number of key(s) added: 1
    	
    	Now try logging into the machine, with: "ssh 'root@os-node1'" 
    	and check to make sure that only the key(s) you wanted were added. 
    	
    	[root@ceph-node1 ~]# 	
     	   
  2. Далее мы установим пакеты Ceph на os-node1 с применением ceph-deploy:

    # cd /etc/ceph
    # ceph-deploy install os-node1
    
    	[root@ceph-node1 ~]# cd /etc/ceph 
    	[root@ceph-node1 ceph]# ceph-deploy install os-node1 
    	[ceph_deploy.conf][DEBUG ] found configuration file at: /root/.cephdeploy.conf 
    	[ceph_deploy.cli][INFO ] Invoked (1.5.22): /bin/ceph-deploy install os-node1 
    	[ceph_deploy.install][DEBUG ] Installing stable version giant on cluster ceph hosts os-node1 
    	[ceph_deploy.install][DEBUG ] Detecting platform for host os-node1 
    	[os-node1][DEBUG ] connected to host: os-node1 
    	[os-node1][DEBUG ] detect platform information from remote host 
    	[os-node1][DEBUG ] detect machine type 
    	[ceph_deploy.install][INFO ] Distro info: centos Linux 7.0.1406 Core 
    	[os-node1][INFO ] installing ceph on os-node1 
     	   
  3. Пропихните файл настрое Ceph, ceph.conf с ceph-node1 на os-node1. Этот файл настроек поможет клиентам достигать мониторы Ceph и машины OSD. Заметьте, пожалуйста, что при желании вы также можете скопировать файл ceph.conf вручную на os-node1:

    # ceph-deploy config push os-node1
     	   
    [Замечание]Замечание

    Убедитесь что ваш помещённый на os-node1 файл ceph.conf имеет привилегии, установленные в значение 644.

    	[root@ceph-node1 ceph]# ceph-deploy config push os-node1 
    	[ceph_deploy.conf][DEBUG ] found configuration file at: /root/.cephdeploy.conf 
    	[ceph_deploy.cli][INFO ] Invoked (1.5.22): /bin/ceph-deploy config push os-node1 
    	[ceph_deploy.config][DEBUG ] Pushing config to os-node1 
    	[os-node1][DEBUG ] connected to host: os-node1 
    	[os-node1][DEBUG ] detect platform information from remote host 
    	[os-node1][DEBUG ] detect machine type 
    	[os-node1][DEBUG ] write cluster configuration to /etc/ceph/{cluster}.conf 
    	[root@ceph-node1 ceph]# 
     	   
  4. Создайте пулы для cinder, glance и nova. Вы можете применить любой доступный пул, однако для компонентов OpenStack рекомендуется чтобы вы создавали отдельные пулы:

    # ceph osd pool create images 128
    # ceph osd pool create volumes 128
    # ceph osd pool create vms 128
    
    	[root@ceph-node1 ceph]# ceph osd pool create images 128 
    	pool 'images' created 
    	[root@ceph-node1 ceph]# ceph osd pool create volumes 128 
    	pool 'volumes' created 
    	[root@ceph-node1 ceph]# ceph osd pool create vms 128 
    	pool 'vms' created 
    	[root@ceph-node1 ceph]# ceph osd lspools 
    	0 rbd,1 images,2 volumes,3 vms, 
    	[root@ceph-node1 ceph]# 
     	   
  5. Установите аутентификацию клиента создав нового пользователя для cinder и glance:

    # ceph auth get-or-create client.cinder mon 'allow r' osd 'allow class-read object_prefix rbd_children, allow rwx pool=volumes, allow rwx pool=vms, allow rx pool=images'
    # ceph auth get-or-create client.glance mon 'allow r' osd 'allow class-read object_prefix rbd_children, allow rwx pool=images'
    
    	[root@ceph-node1 ceph]# ceph auth get-or-create client.cinder mon 'allow r' osd 'allow class-read object_prefix rbd_children, allow rwx pool=volumes, allow rwx pool=vms, allow rx pool=images' 
    	[client.cinder] 
    	        key = AQByVBhVMK2nLxAArOflyalhbc23N2kyZv0EXw== 
    	[root@ceph-node1 ceph]# ceph auth get-or-create client.glance mon 'allow r' osd 'allow class-read object_prefix rbd_children, allow rwx pool=images' 
    	[client.glance] 
    	        key = AQCBVBhVYJEEKBAAhXHTe9Z12O2YyhMOjpga2A== 
    	[root@ceph-node1 ceph]# 
     	   
  6. Добавьте кольцо ключей на os-node1 и измените его владельца:

    # ceph auth get-or-create client.glance | ssh os-node1 sudo tee /etc/ceph/ceph.client.glance.keyring
    # ssh os-node1 sudo chown glance:glance /etc/ceph/ceph.client.glance.keyring
    # ceph auth get-or-create client.cinder | ssh os-node1 sudo tee /etc/ceph/ceph.client.cinder.keyring
    # ssh os-node1 sudo chown cinder:cinder /etc/ceph/ceph.client.cinder.keyring
    
    	[root@ceph-node1 ceph]# ceph auth get-or-create client.glance | ssh os-node1 sudo tee /etc/ceph/ceph.client.glance.keyring
    	[client.glance] 
    	        key = AQCBVBhVYJEEKBAAhXTe9Z12O2YyhM0jpga2A== 
    	[root@ceph-node1 ceph]# ssh os-node1 sudo chown glance:glance /etc/ceph/ceph.client.glance.keyring
    	[root@ceph-node1 ceph]# ceph auth get-or-create client.cinder | ssh os-node1 sudo tee /etc/ceph/ceph.client.cinder.keyring
    	[client.cinder] key = AQByVBhVMK2nLxAAr0f1yalhbc23N2kyZv0EXw== 
    	[root@ceph-node1 ceph]# ssh os-node1 sudo chown cinder:cinder /etc/ceph/ceph.client.cinder.keyring
    	[root@ceph-node1 ceph]# 
     	   
  7. Процеессу libvirt необходим доступ к кластеру Ceph для присоединения или отсоединения блочных устройств от Cinder. Мы должны создать временную копию ключа client.cinder, который будет нужен для настроек cinder и nova позже в данной главе:

    # ceph auth get-key client.cinder | ssh os-node1 tee /etc/ceph/temp.client.cinder.key
     	   
  8. На данный момент вы можете проверить предыдущую настройку осуществив доступ к кластеру Ceph с os-node1 применив пользователей Ceph client.glance и client.cinder. Зарегистрируйтесь на os-node1 и выполните следующие команды:

    $ vagrant ssh openstack-node1
    $ sudo su -
    # cd /etc/ceph
    # ceph -s --name client.glance --keyring ceph.client.glance.keyring
    # ceph -s --name client.cinder --keyring ceph.client.cinder.keyring
    
    	HOST:ceph-cookbook ksingh$ vagrant ssh openstack-node1 
    	Last login: Sun Mar 29 22:55:20 2015 from 10.0.2.2 
    	[vagrant@os-node1 ~]$ sudo su -
    	Last login: Sun Mar 29 22:55:35 EEST 2015 on pts/0 
    	[root@os-node1 ~]# cd /etc/ceph 
    	[root@os-node1 ceph]# ceph -s --name client.glance --keyring ceph.client.glance.keyring 
    	    cluster 9609b429-eee2-4e23-af31-28a24fcf5cbc 
    		health HEALTH_OK 
    		monmap e3: 3 mons at {ceph-node1=192.168.1.101:6789/0,ceph-node2=192.168.1.102:6789/0,ceph-node3=192.1 68.1.103:6789/0}, election epoch 134, quorum 0,1,2 ceph-node1,ceph-node2,ceph-node3 
    		osdmap e248: 9 osds: 9 up, 9 in 
    		 pgmap v1189: 564 pgs, 4 pools, 114 MB data, 2629 objects 
    		      745 MB used, 134 GB / 134 GB avail 
    			       564 active+clean 
    	[root@os-node1 ceph]# 
    	[root@os-node1 ceph]# ceph -s --name client.cinder --keyring ceph.client.cinder.keyring 
    	    cluster 9609b429-eee2-4e23-af31-28a24fcf5cbc 
    		health HEALTH_OK 
    		monmap e3: 3 mons at {ceph-node1=192.168.1.101:6789/0,ceph-node2=192.168.1.102:6789/0,ceph-node3=192.1 68.1.103:6789/0}, election epoch 134, quorum 0,1,2 ceph-node1,ceph-node2,ceph-node3 
    		osdmap e248: 9 osds: 9 up, 9 in 
    		 pgmap v1189: 564 pgs, 4 pools, 114 MB data, 2629 objects 
    		       745 MB used, 134 GB / 134 GB avail 
    			        564 active+clean 
    	[root@os-node1 ceph]# 
     	   
  9. Наконец создадим uuid, затем создадим, определим и установим ключ безопасности для libvirt и удалим временные ключи:

    1. Создайте uuid воспользовавшись следующим:

      # cd /etc/ceph
      # uuidgen
       	   
    2. Создайте файл безопасности и установите это число uuid в нём:

      
      cat > secret.xml <<EOF
      <secret ephemeral='no' private='no'>
        <uuid>bb90381e-a4c5-4db7-b410-3154c4af486e</uuid>
        <usage type='ceph'>
          <name>client.cinder secret</name>
        </usage>
      </secret>
      EOF
       	   
      [Замечание]Замечание

      Убедитесь что вы используете свой собственный uuid сгенерированный для вашей среды.

    3. Определите пароль и надёжно сохраните сгенерированное секретное значение. На последующих этапах нам понадобится это секретное значение:

      # virsh secret-define --file secret.xml
      
      	[root@os-node1 ~]# cd /etc/ceph 
      	[root@os-node1 ceph]# uuidgen 
      	bb90381e-a4c5-4db7-b410-3154c4af486e 
      	[root@os-node1 ceph]# cat > secret.xml <<EOF 
      	> <secret ephemeral='no' private='no'> 
      	> <uuid>bb90381e-a4c5-4db7-b410-3154c4af486e</uuid> 
      	> <usage type='ceph'> 
      	> <name>client.cinder secret</name> 
      	> </usage> 
      	> </secret> 
      	> EOF 
      	[root@os-node1 ceph]# virsh secret-define --file secret.xml 
      	Secret bb90381e-a4c5-4db7-b410-3154c4af486e created 
      	
      	[root@os-node1 ceph]# 
       	   
    4. Установите секретное значение которое было сгенерировано на последнем шаге в virsh и удалите временные файлы. Удаление временных файлов не обязательно; оно выполняется просто для очистки системы:

      # virsh secret-set-value --secret bb90381e-a4c5-4db7-b410-3154c4af486e --base64 $(cat temp.client.cinder.key) && rm temp.client.cinder.key secret.xml
      # virsh secret-list
      
      	[root@os-node1 ceph]# virsh secret-set-value --secret bb90381e-a4c5-4db7-b410-3154c4af486e --base64 $(cat temp.client.cinder.key) && rm temp.client.cinder.key secret.xml 
      	Secret value set 
      	
      	rm: remove regular file 'temp.client.cinder.key'? y 
      	rm: remove regular file 'secret.xml'? y 
      	[root@os-node1 ceph]# 
      	[root@os-node1 ceph]# virsh secret-list 
      	 UUID                                  Usage
      	----------------------------------------------------------------------------------
      	bb90381e-a4c5-4db7-b410-3154c4af486e       ceph client.cinder secret 
      	[root@os-node1 ceph]# 
       	   

 Настройка Glance под поддержку Ceph

Мы выполнили настройку необходимую со стороны Ceph. В этом рецепте мы настроим OpenStack glance для применения поддержки хранения Ceph.

  Как это сделать...

Этот рецепте расскажет о настройке компонентов glance OpenStack для хранения образов виртуальных машин в RBD Ceph:

  1. Зарегистрируйтесь на os-node1, который является нашим узлом glance и отредактируйте /etc/glance/glance-api.conf для следующих изменений:

    1. В разделе [DEFAULT] убедитесь в наличии следующих строк:

      default_store=rbd
      show_image_direct_url=True
       	   
    2. Выполните следующую команду для проверки элементов:

      # cat /etc/glance/glance-api.conf | egrep -i "default_store|image_direct"
      
      	[root@os-node1 ceph]# cat /etc/glance/glance-api.conf | egrep -i "default_storelimage_direct" 
      	default_store=rbd 
      	show_image_direct_ur1=True 
      	[root@os-node1 ceph]# 
       	   
    3. В разделе [glance_store] убедитесь что следующие строки присутствуют в RBD Store Options:

      
      stores = rbd
      rbd_store_ceph_conf=/etc/ceph/ceph.conf
      rbd_store_user=glance
      rbd_store_pool=images
      rbd_store_chunk_size=8
       	   
    4. Выполните следующую команду для проверки предыдущих элементов:

      # cat /etc/glance/glance-api.conf | egrep -v "#|default" | grep -i rbd
      
      	[root@os-node1 ceph]# cat /etc/glance/glance-api.conf | egrep -v "#|default" | grep -i rbd 
      	stores = rbd
      	rbd_store_ceph_conf=/etc/ceph/ceph.conf 
      	rbd_store_user=glance 
      	rbd_store_pool=images 
      	rbd_store_chunk_size=8 
      	[root@os-node1 ceph]# 
       	   
  2. Перезапустите службы glance OpenStack:

    # service openstack-glance-api restart
     	   
  3. Получите файл keystone_admin для OpenStack и выведите список образов glance:

    # source /root/keystonerc_admin
    # glance image-list
    
    	[root@os-node1 ~]# source keystonerc_admin 
    	[root@os-node1 ~(keystone_admin)]# 
    	[root@os-node1 ~(keystone_admin)]# glance image-list 
    	+--------------------------------------+--------+-------------+------------------+----------+--------+ 
    	| ID                                   | Name   | Disk Format | Container Format | Size     | Status |
    	+--------------------------------------+--------+-------------+------------------+----------+--------+ 
    	| 5c261af7-9388-44ad-a8ce-f9ebdad2eScb | cirros | qcow2       | bare             | 13200896 | active |
    	+--------------------------------------+--------+-------------+------------------+----------+--------+ 
    	[root@os-node1 ~(keystone_admin)]# 
     	   
  4. Загрузите из интернет образ cirros, который позже будет сохранён в Ceph:

    # wget http://download.cirros-cloud.net/0.3.1/cirros-0.3.1-x86_64-disk.img
     	   
  5. Добавьте новый образ glance с помощью следующей команды:

    # glance image-create --name cirros_image --is-public=true --diskformat=qcow2 --container-format=bare < cirros-0.3.1-x86_64-disk.img
    
    	[root@os-node1 ~(keystone_admin)]# glance image-create --name cirros_image --is-public=true --disk-format=qcow2 --container-format=bare < cirros-0.3.1-x86_64-disk.img 
    	+------------------+--------------------------------------+
    	| Property         | Value                                |
    	+------------------+--------------------------------------+
    	| checksum         | d972013792949d0d3ba628fbe8685bce     |
    	| container_format | bare                                 |
    	| created_at       | 2015-03-30T10:17:58                  |
    	| deleted          | False                                |
    	| deleted_at       | None                                 |
    	| disk_format      | qcow2                                |
    	| id               | b2d15e34-7712-4f1d-b48d-48b924e79b0c |
    	| is_public        | True                                 |
    	| min_disk         | 0                                    | 
    	| min_ram          | 0                                    |
    	| name             | cirros_image                         |
    	| owner            | c9f87abe43ea49239313565ca74ebaa0     |
    	| protected        | False                                |
    	| size             | 13147648                             |
    	| status           | active                               |
    	| updated_at       | 2015-03-30T10:18:01                  |
    	| virtual_size     | None                                 |
    	+------------------+--------------------------------------+
     	   
  6. Отобразим список образов glanse с использованием следующей команды; отметим, что сейчас существует два образа glance:

    # glance image-list
    
    	[root@os-node1 ~(keystone_admin)]# glance image-list 
    	+--------------------------------------+--------------+-------------+------------------+----------+--------+ 
    	| ID                                   | Name         | Disk Format | Container Format | Size     | Status | 
    	+--------------------------------------+--------------+-------------+------------------+----------+--------+ 
    	| 5c261af7-9388-44ad-a8ce-f9ebdad2e5cb | cirros       | qcow2       | bare             | 13200896 | active | 
    	| b2d15e34-7712-4f1d-b48d-48b924e79b0c | cirros_image | qcow2       | bare             | 13147648 | active | 
    	+--------------------------------------+--------------+-------------+------------------+----------+--------+ 
    	[root@os-node1 ~(keystone_admin)]# 
     	   
  7. Вы можете проверить что новый образ сохранён в Ceph запросив ID образа в пуле образов вашего Ceph:

    # rados -p images ls --name client.glance --keyring /etc/ceph/ceph.client.glance.keyring | grep -i id
    
    	[root@os-node1 ~]# rados -p images ls --name client.glance --keyring /etc/ceph/ceph.client.glance.keyring | grep -i id 
    	rbd_id.b2d15e34-7712-4f1d-b48d-48b924e79b0c 
    	[root@os-node1 ~]# 
     	   
  8. Поскольку мы настроили glance использовать Ceph в качестве его хранилища по умолчанию, все образы glance будут теперь сохраняться в Ceph. Вы также можете попытаться создавать образы из инструментальной панели OpenStack horizon.

    $ vagrant ssh ceph-node1
     	   
  9. Наконец мы попытаемся запустить экземпляр с применением образа, который мы создали ранее:

    ova boot --flavor 1 --image b2d15e34-7712-4f1d-b48d-48b924e79b0c vm1
     	   
[Замечание]Замечание

Когда вы добавляете новые образы glance или создёте некий экземпляр из образа glance, сохранённого в Ceph, вы можете проверить IO кластера Ceph выполнив его мониторинг с применением команды # watch ceph -s.

 Настройка Cinder под поддержку Ceph

Программа Cinder OpenStack предоставляет блочные устройства виртуальным машинам. В этом рецепте мы настроим Cinder OpenStack на применение Ceph для поддержки хранения. Для взаимодействия с нашим блочным устройством Ceph Cinder OpenStack требуется драйвер. На узле OpenStack измените файл настроек /etc/cinder/cinder.conf добавив приводимые в следующем разделе фрагменты кода.

  Как это сделать...

В последнем рецепте мы изучили настройку glance для применения Ceph. В этом рецепте мы изучим применение RBD Ceph в службе OpenStack Cinder:

  1. Поскольку в данной демонстрации мы не применяем множественную поддержку настроек Cinder, закройте комментарием параметр enabled_backends в файле /etc/cinder/cinder.conf.

  2. Переместитесь в раздел Options defined in cinder.volume.drivers.rbd файла /etc/cinder/cinder.conf и добавьте следующее (замените секрет uuid значением вашей среды:

    
    volume_driver = cinder.volume.drivers.rbd.RBDDriver
    rbd_pool = volumes
    rbd_user = cinder
    rbd_secret_uuid = bb90381e-a4c5-4db7-b410-3154c4af486e
    rbd_ceph_conf = /etc/ceph/ceph.conf
    rbd_flatten_volume_from_snapshot = false
    rbd_max_clone_depth = 5
    rbd_store_chunk_size = 4
    rados_connect_timeout = -1
    glance_api_version = 2
     	   
  3. Выполните следующую команду для проверки предыдущих записей:

    # cat /etc/cinder/cinder.conf | egrep "rbd|rados|version" | grep -v "#"
    
    	[root@os-node1 ~]# cat /etc/cinder/cinder.conf | egrep "rbd|rados|version" | grep -v "#" 
    	volume_driver = cinder.volume.drivers.rbd.RBDDriver 
    	rbd_pool = volumes 
    	rbd_user = cinder 
    	rbd_secret_uuid = bb90381e-a4c5-4db7-b410-3154c4af486e 
    	rbd_ceph_conf = /etc/ceph/ceph.conf 
    	rbd_flatten_volume_from_snapshot = false 
    	rbd_max_clone_depth = 5 
    	rbd_store_chunk_size =4 
    	rados_connect_timeout = -1 
    	glance_api_version = 2 
    	[root@os-node1 ~]# 
     	   
  4. Перезапустите службы OpenStack Cinder:

    # service openstack-cinder-volume restart
     	   
  5. Получите файлы keystone_admin для OpenStack:

    # source /root/keystonerc_admin
    # cinder list
     	   
  6. Для проверки настроек создайте ваш первый 2ГБ том Cinder, который должен быть теперь создан в вашем кластере Ceph:

    # cinder create --display-name ceph-volume01 --display-description "Cinder volume on CEPH storage" 2
     	   
  7. Проверьте ваш том выводом томов пула Cinder и Ceph:

    # cinder list
    # rados -p volumes --name client.cinder --keyring ceph.client.cinder.keyring ls | grep -i id
    
    	[root@os-node1 ceph(keystone_admin)]# cinder list 
    	+--------------------------------------+-----------+---------------+------+-------------+----------+-------------+ 
    	| ID                                   | Status    | Display Name  | Size | Volume Type | Bootable | Attached to | 
    	+--------------------------------------+-----------+---------------+------+-------------+----------+-------------+ 
    	| 1337c866-6ff7-4a56-bfe5-b0b80abcb281 | available | ceph-volume01 |  2   |     None    |  false   |             | 
    	+--------------------------------------+-----------+---------------+------+-------------+----------+-------------+ 
    	[root@os-node1 ceph(keystone_admin)]# 
    	[root@os-node1 ceph(keystone_admin)]# rados -p volumes --name client.cinder --keyring ceph.client.cinder.keyring is | grep -i id rbd_id.volume-1337c866-6ff7-4a56-bfe5-b0b80abcb281 
    	[root@os-node1 ceph(keystone_admin)]# 
     	   
  8. Аналогично попробуйте создать другой том с применением инструментальной панели OpenStack Horizon.

 Настройка Nova для подключения Ceph RBD

Чтобы подключать RBD Ceph к экземпляру OpenStack нам следует настроить компонент nova OpenStack добавив сведения о пользователе rbd и uuid информацию, поскольку они требуются для соединения с кластером Ceph. Для этого нам нужно изменить /etc/nova/nova.conf на нашем узле OpenStack и выполнить приводимые в следующем разделе шаги.

  Как это сделать...

Настроенная нами в предыдущем рецепте служба Cinder создаёт тома в Ceph, однако для подключения этих томов к экземплярам OpenStack нам нужно настроить Nova:

  1. Переместитесь в раздел Options defined in nova.virt.libvirt.volume и измените следующие строки (замените секрет uuid значением вашего окружения):

    rbd_user=cinder
    rbd_secret_uuid= bb90381e-a4c5-4db7-b410-3154c4af486e
     	   
  2. Перезапустите службы OpenStack Nova:

    # service openstack-nova-compute restart
     	   
  3. Для проверки этих настроек мы подключим том Cinder к экземпляру OpenStack. Выведем перечни экземпляров и томов для получения их ID:

    # nova list
    # cinder list
    
    	[root@os-node1 ~(keystone_admin)]# nova list 
    	+--------------------------------------+------+--------+------------+-------------+---------------------+ 
    	| ID                                   | Name | Status | Task State | Power State | Networks            | 
    	+--------------------------------------+------+--------+------------+-------------+---------------------+ 
    	| lcadffc0-58b0-43fd-acc4-33764a02a0a6 | vm1  | ACTIVE | -          | Running     | public=172.24.4.229 | 
    	+--------------------------------------+------+--------+------------+-------------+---------------------+ 
    	[root@os-node1 ~(keystone_admin)]# cinder list 
    	+--------------------------------------+-----------+---------------+------+-------------+----------+-------------+
    	|                  ID                  |   Status  |  Display Name | Size | Volume Type | Bootable | Attached to | 
    	+--------------------------------------+-----------+---------------+------+-------------+----------+-------------+
    	| 1337c866-6ff7-4a56-bfe5-b0b80abcb281 | available | ceph-volume01 |  2   |     None    |  false   |             | 
    	| 67d76db0-f808-40d8-819b-Of0302df74a0 | available | ceph-volume02 |  1   |     None    |  false   |             | 
    	+--------------------------------------+-----------+---------------+------+-------------+----------+-------------+
     	   
  4. Подключите свой том к вашему экземпляру:

    # nova volume-attach 1cadffc0-58b0-43fd-acc4-33764a02a0a61337c866-6ff7-4a56-bfe5-b0b80abcb281
    # cinder list
    
    	[root@os-node1 ~(keystone_admin)]# nova volume-attach lcadffc0-58b0-43fd-acc4-33764a02a0a6 1337c866-6ff7-4a56-bfe5-b0b80abcb281 
    	+----------+--------------------------------------+
    	| Property | Value                                | 
    	+----------+--------------------------------------+
    	| device   | /dev/vdb                             |
    	| id       | 1337c866-6ff7-4a56-bfe5-b0b80abcb281 | 
    	| serverId | lcadffc0-58b0-43fd-acc4-33764a02a0a6 | 
    	| volumeid | 1337c866-6ff7-4a56-bfe5-b0b80abcb281 |
    	+----------+--------------------------------------+
    	[root@os-node1 -(keystone_admin)]# cinder list 
    	+--------------------------------------+-----------+---------------+------+-------------+----------+--------------------------------------+ 
    	|                  ID                  |   Status  |  Display Name | Size | Volume Type | Bootable | Attached to                          | 
    	+--------------------------------------+-----------+---------------+------+-------------+----------+--------------------------------------+ 
    	| 1337c866-6ff7-4a56-bfe5-b0b80abcb281 |   in-use  | ceph-volume01 |  2   |     None    |  false   | lcadffc0-58b0-43fd-acc4-33764a02a0a6 | 
    	| 67d76db0-f808-40d8-819b-Of0302df74a0 | available | ceph-volume02 |  1   |     None    |  false   |                                      | 
    	+--------------------------------------+-----------+---------------+------+-------------+----------+--------------------------------------+ 
    	[root@os-node1 ~(keystone_admin)]# 
     	   
  5. Теперь вы можете применять этот том как обычное блочное устройство из экземпляра OpenStack.

 Настройка Nova для загрузки экземпляров из Ceph RBD

Чтобы загружать все экземпляры OpenStack из Ceph, т.е. для функциональности загрузка- с- тома, нам следует настроить для Nova недолговечную (ephemeral) поддержку. Для этого отредактируйте /etc/nova/nova.conf на нашем узле OpenStack и выполните следующие изменения.

  Как это сделать...

Этот рецепт имеет дело с настройкой Nova для хранения всех виртуальных машин в RBD Ceph:

  1. Переместитесь в раздел Options defined in nova.virt.libvirt.volume и измените следующие строки (замените секрет uuid значением вашего окружения):

    rbd_user=cinder
    rbd_secret_uuid= bb90381e-a4c5-4db7-b410-3154c4af486e
     	   
  2. Переместитесь в раздел [libvirt] и добавьте следующее:

    inject_partition=-2
    images_type=rbd
    images_rbd_pool=vms
    images_rbd_ceph_conf=/etc/ceph/ceph.conf
     	   
  3. Переместитесь в раздел Options defined in nova.virt.libvirt.volume и измените следующие строки (замените секрет uuid значением вашего окружения):

    rbd_user=cinder
    rbd_secret_uuid= bb90381e-a4c5-4db7-b410-3154c4af486e
     	   
  4. Проверьте свои изменения:

    # cat /etc/nova/nova.conf|egrep "rbd|partition" | grep -v "#"
    
    	[root@os-node1 ~(keystone_admin)]# cat /etc/nova/nova.conf|egrep "rbd|partition" | grep -v "#" 
    	inject_partition=-2 
    	images_type=rbd 
    	images_rbd_pool=vms 
    	images_rbd_ceph_conf=/etc/ceph/ceph.conf 
    	rbd_user=cinder 
    	rbd_secret_uuid=bb90381e-a4c5-4db7-b410-3154c4af486e 
    	[root@os-node1 ~(kevstone admin)]# 
     	   
  5. Перезапустите службы OpenStack Nova:

    # service openstack-nova-compute restart
     	   
  6. Для загрузки виртуальной машины из Ceph формат образа Glance должен быть RAW. Мы воспользуемся тем же образом cirros, который мы загружали ранее в этой главе и конвертируем этот образ из QCOW в формат RAW (это существенно). Вы также можете использовать любой другой образ если он в формате RAW:

    # qemu-img convert -f qcow2 -O raw cirros-0.3.1-x86_64-disk.img cirros-0.3.1-x86_64-disk.raw
    
    	[root@os-node1 ~(keystone_admin)]# qemu-img convert -f qcow2 -0 raw cirros-0.3.1-x86_64-disk.img cirros-0.3.1-x86_64-disk.raw 
    	[root@os-node1 ~(keystone_admin)]# 
    	[root@os-node1 ~(keystone_admin)]# is -la cirros-0.3.1-x86_64-disk.raw 
    	-rw-r--r-- 1 root root 41126400 Apr 3 22:19 cirros-0.3.1-x86_64-disk.raw 
    	[root@os-node1 ~(keystone admin)]# file cirros-0.3.1-x86_64-disk.raw 
    	cirros-0.3.1-x86_64-disk.raw: x86 boot sector; GRand Unified Bootloader, stagel version 0x3, stage2 address 0x2000, stage2 segment 0x200; partition 1: ID=0x83, active, starthead 0, startsector 16065, 64260 sectors, code offset 0x48 
    	[root@os-node1 ~(keystone_admin)]# 
     	   
  7. Создайте образ Glance при помощи образа RAW:

    # glance image-create --name cirros_raw_image --is-public=true --disk-format=raw --container-format=bare < cirros-0.3.1-x86_64-disk.raw
     	   
  8. Создайте загружаемый том для проверки функциональности загрузки с вашего тома Ceph:

    # nova image-list
    # cinder create --image-id ff8d9729-5505-4d2a-94ad-7154c6085c97 --display-name cirros-ceph-boot-volume 1
    
    	[root@os-node1 ~(keystoneadmin)]# nova image-list 
    	+--------------------------------------+------------------+--------+--------+
    	| ID                                   | Name             | Status | Server | 
    	+--------------------------------------+------------------+--------+--------+
    	| 5c261af7-9388-44ad-a8ce-f9ebdad2e5cb | cirros           | ACTIVE |        | 
    	| b2d15e34-7712-4f1d-b48d-48b924e79b0C | cirros_image     | ACTIVE |        | 
    	| ff8O9729-5505-4d2a-94ad-7154c6085c97 | cirros_raw_image | ACTIVE |        | 
    	+--------------------------------------+------------------+--------+--------+
    	[root@os-node1 ~(keystone_admin)]# 
    	[root@os-node1 ~(keystone_admin)]# cinder create --image-id ff8d9729-5505-4d2a-94ad-7154c6085c97 --display-name cirros-ceph-boot-volume 1
    	+---------------------+--------------------------------------+
    	|       Property      |                Value                 |
    	+---------------------+--------------------------------------+
    	|     attachments     |                  []                  |
    	|  availability_zone  |                 nova                 |
    	|       bootable      |                false                 |
    	|      created_at     |      2015-04-03T22:47:52.638434      |
    	| display_description |                 None                 |
    	|     display_name    |       cirros-ceph-boot-volume        |
    	|      encrypted      |                False                 |
    	|          id         | 3a0da68c-d00c-459f-8b52-88c45d6e3bfe |
    	|       image_id      | ff8d9729-5505-4d2a-94ad-7154c6085c97 |
    	|       metadata      |                 {}                   |
    	|         size        |                 1                    |
    	|     snapshot_id     |                None                  |
    	|     source_volid    |                None                  |
    	|        status       |              creating                |
    	|     volume_type     |                None                  |
    	+---------------------+--------------------------------------+
    	[root@os-node1 ~(keystone_admin)]# 
     	   
  9. Выведите перечень томов Cinder для проверки того что поле bootable установлено в значение true:

    # cinder list
    
    	[root@os-node1 ~(keystone_admin)]# cinder list 
        +--------------------------------------+-----------+-------------------------+------+-------------+----------+--------------------------------------+ 
    	|                   ID                 |   Status  |       Display Name      | Size | Volume Type | Bootable |             Attached to              |
        +--------------------------------------+-----------+-------------------------+------+-------------+----------+--------------------------------------+ 
    	| 1337c866-6ff7-4a56-bfe5-b0b80abcb281 |   in-use  |      ceph-volume01      |  2   |     None    |  false   | 1cadffc0-58b0-43fd-acc4-33764a02a0a6 | 
    	| 3a0da68c-d00c-459f-8b52-88c45d6e3bfe | available | cirros-ceph-boot-volume |  1   |     None    |   true   |                                      |
    	| 67d76db0-f808-40d8-819b-0f0302df74a0 | available |      ceph-volume02      |  1   |     None    |  false   |                                      |
        +--------------------------------------+-----------+-------------------------+------+-------------+----------+--------------------------------------+ 
    	[root@os-node1 ~(keystone_admin)]#
     	   
  10. Теперь у нас есть сохранённый в Ceph загружаемый том, следовательно мы можем запустить сэтого тома экземпляр:

    # nova boot --flavor 1 --block_device_mapping vda=fd56314be19b-4129-af77-e6adf229c536::0 --image 964bd077-7b43-46eb-8fe1-cd979a3370df vm2_on_ceph --block_device_mapping vda = <cinder bootable volume id > --image = <Glance image associated with the bootable volume>
     	   
  11. Наконец, проверьте состояние экземпляра:

     nova list
     
    	[root@os-node1 ~(keystone_admin)]# nova list 
    	+--------------------------------------+--------------+---------+------------+-------------+---------------------+ 
    	| ID                                   | Name         | Status  | Task State | Power State | Networks            | 
    	+--------------------------------------+--------------+---------+------------+-------------+---------------------+ 
    	| 1cadffc0-58b0-43fd-acc4-33764a02a0a6 | vm1          | SHUTOFF | -          | Shutdown    | public=172.24.4.229 | 
    	| 2b35870e-9f7e-4e5f-bd12-9a625797355d | vm2_01n_ceph | ACTIVE  | -          | Running     | public=172.24.4.233 |
    	+--------------------------------------+--------------+---------+------------+-------------+---------------------+ 
    	[root@os-node1 ~(kevstone_admin)]# 
     	   
  12. На данный момент у нас выполняющийся с тома Ceph имеется экземпляр. Попытайтесь зарегистрироваться из инструментальной панели Horizon: