OpenStack Pike Volet 9
OpenStack Pike Volet 9
2017/09/03
Volet 9
2
It's possible to use Virtual Storages provided by Cinder if an Instance needs more disks.
Configure Virtual storage with LVM and NFS Multi-Backend on here.
------------+---------------------------+---------------------------+---
----------------------+------------
| | |
|
eth0|10.0.0.30 eth0|10.0.0.50
eth0|10.0.0.51 eth0|10.0.0.35
+-----------+-----------+ +-----------+-----------+ +-----------+---
--------+ +----------+-----------+
| [ Control Node ] | | [ Storage Node ] | | [ Compute
Node ] | | [ NFS Server ] |
| | | | |
| | |
| MariaDB RabbitMQ | | Open vSwitch | | Libvirt
| +----------------------+
| Memcached httpd | | L2 Agent | | Nova
Compute |
| Keystone Glance | | L3 Agent | | Open
vSwitch |
| Nova API | | Metadata Agent | | L2
Agent |
| Neutron Server | | Cinder-Volume | |
|
| Metadata Agent | | | |
|
| Cinder API | | | |
|
+-----------------------+ +-----------------------+ +---------------
--------+
[1] For LVM backend on this example, use a volume group [vg_volume01] for it.
NFS server is required to be running on your LAN, refer to here.
[2] On this example, configure [/var/lib/nfs-share] directory on [nfs.srv.world] as a shared
directory.
[3] Configure Storage Node.
[root@storage ~]#
yum -y install nfs-utils
[root@storage ~]#
vi /etc/idmapd.conf
# line 5: uncomment and change to the own domain name
Domain =
srv.world
[root@storage ~]#
vi /etc/cinder/cinder.conf
2
3
enabled_backends = lvm,nfs
[nfs]
volume_driver = cinder.volume.drivers.nfs.NfsDriver
volume_backend_name = NFS
nfs_shares_config = /etc/cinder/nfs_shares
nfs_mount_point_base = $state_path/mnt_nfs
[root@storage ~]#
vi /etc/cinder/nfs_shares
# create new : specify NFS shared directories
nfs.srv.world:/var/lib/nfs-share
[root@storage ~]#
chmod 640 /etc/cinder/nfs_shares
[root@storage ~]#
chgrp cinder /etc/cinder/nfs_shares
[root@storage ~]#
systemctl restart openstack-cinder-volume
[root@storage ~]#
chown -R cinder. /var/lib/cinder/mnt_nfs
Domain =
srv.world
[root@node01 ~]#
vi /etc/nova/nova.conf
3
4
[cinder]
os_region_name = RegionOne
[root@node01 ~]#
systemctl restart openstack-nova-compute
[5] Create volume types. It's OK to work on any node. (This example is on Control Node)
# set environment variable first
[root@dlp ~(keystone)]#
echo "export OS_VOLUME_API_VERSION=2" >> ~/keystonerc
[root@dlp ~(keystone)]#
source ~/keystonerc
[root@dlp ~(keystone)]#
openstack volume type create lvm
+-------------+--------------------------------------+
| Field | Value |
+-------------+--------------------------------------+
| description | None |
| id | 5d149713-c14e-4eda-8e6c-2b8815a2d6e7 |
| is_public | True |
| name | lvm |
+-------------+--------------------------------------+
[root@dlp ~(keystone)]#
openstack volume type create nfs
+-------------+--------------------------------------+
| Field | Value |
+-------------+--------------------------------------+
| description | None |
| id | e441f2ee-58f3-4455-b398-282abaf86af0 |
| is_public | True |
| name | nfs |
+-------------+--------------------------------------+
[root@dlp ~(keystone)]#
openstack volume type list
+--------------------------------------+------+-----------+
| ID | Name | Is Public |
+--------------------------------------+------+-----------+
| e441f2ee-58f3-4455-b398-282abaf86af0 | nfs | True |
| 5d149713-c14e-4eda-8e6c-2b8815a2d6e7 | lvm | True |
+--------------------------------------+------+-----------+
[6] Create volumes with specifying volume types.
4
5
[root@dlp ~(keystone)]#
openstack volume create --type lvm --size 10 disk_lvm
+---------------------+--------------------------------------+
| Field | Value |
+---------------------+--------------------------------------+
| attachments | [] |
| availability_zone | nova |
| bootable | false |
| consistencygroup_id | None |
| created_at | 2017-09-07T06:00:11.625138 |
| description | None |
| encrypted | False |
| id | 5a508399-fac9-4d42-b523-d9505e03c2ad |
| migration_status | None |
| multiattach | False |
| name | disk_lvm |
| properties | |
| replication_status | None |
| size | 10 |
| snapshot_id | None |
| source_volid | None |
| status | creating |
| type | lvm |
| updated_at | None |
| user_id | 09d8dfa20e0f40eaae448d369943b195 |
+---------------------+--------------------------------------+
[root@dlp ~(keystone)]#
openstack volume create --type nfs --size 10 disk_nfs
+---------------------+--------------------------------------+
| Field | Value |
+---------------------+--------------------------------------+
| attachments | [] |
| availability_zone | nova |
| bootable | false |
| consistencygroup_id | None |
| created_at | 2017-09-07T06:00:31.474536 |
| description | None |
| encrypted | False |
| id | af3a5799-e301-4920-8a53-ab2d9b47054d |
| migration_status | None |
| multiattach | False |
| name | disk_nfs |
| properties | |
| replication_status | None |
| size | 10 |
| snapshot_id | None |
| source_volid | None |
| status | creating |
| type | nfs |
| updated_at | None |
| user_id | 09d8dfa20e0f40eaae448d369943b195 |
5
6
+---------------------+--------------------------------------+
[root@dlp ~(keystone)]#
openstack volume list
+--------------------------------------+----------+-----------+------+-------------+
| ID | Name | Status | Size | Attached to |
+--------------------------------------+----------+-----------+------+-------------+
| af3a5799-e301-4920-8a53-ab2d9b47054d | disk_nfs | available | 10 | |
| 5a508399-fac9-4d42-b523-d9505e03c2ad | disk_lvm | available | 10 | |
+--------------------------------------+----------+-----------+------+-------------+
[7] Attache volume to an instance.
[root@dlp ~(keystone)]#
openstack server list
+-----------+----------+---------+------------------------------------+---------+---
-------+
| ID | Name | Status | Networks | Image |
Flavor |
+-----------+----------+---------+------------------------------------+---------+---
-------+
| 662f62b8- | CentOS_7 | SHUTOFF | int_net=192.168.100.12, 10.0.0.201 | CentOS7 |
m1.small |
+-----------+----------+---------+------------------------------------+---------+---
-------+
[root@dlp ~(keystone)]#
openstack server add volume CentOS_7 disk_lvm
[root@dlp ~(keystone)]#
openstack server add volume CentOS_7 disk_nfs
# the status of attached disk turns [in-use] like follows
[root@dlp ~(keystone)]#
openstack volume list
+--------------------------------------+----------+--------+------+-----------------
------------------+
| ID | Name | Status | Size | Attached to
|
+--------------------------------------+----------+--------+------+-----------------
------------------+
| af3a5799-e301-4920-8a53-ab2d9b47054d | disk_nfs | in-use | 10 | Attached to
CentOS_7 on /dev/vdc |
| 5a508399-fac9-4d42-b523-d9505e03c2ad | disk_lvm | in-use | 10 | Attached to
CentOS_7 on /dev/vdb |
+--------------------------------------+----------+--------+------+-----------------
------------------+
6
7
[root@dlp ~(keystone)]#
openstack server remove volume CentOS_7 disk_lvm
[root@dlp ~(keystone)]#
openstack server remove volume CentOS_7 disk_nfs
7
8
backup_driver = cinder.backup.drivers.nfs
backup_mount_point_base = $state_path/backup_nfs
backup_share = nfs.srv.world:/var/lib/cinder-backup
[root@storage ~]#
systemctl start openstack-cinder-backup
8
9
[root@storage ~]#
systemctl enable openstack-cinder-backup
[root@storage ~]#
chown -R cinder. /var/lib/cinder/backup_nfs
Get Backup for Cinder Volumes. It's OK to work on any node. (This example is on Control
[3]
Node)
[root@dlp ~(keystone)]#
openstack volume list
+--------------------------------------+--------+-----------+------+-------------+
| ID | Name | Status | Size | Attached to |
+--------------------------------------+--------+-----------+------+-------------+
| 19ca6fa7-202a-4a66-8fb7-05cb42305595 | disk01 | available | 10 | |
+--------------------------------------+--------+-----------+------+-------------+
[root@dlp ~(keystone)]#
openstack volume backup create --name backup-disk01 disk01
+-------+--------------------------------------+
| Field | Value |
+-------+--------------------------------------+
| id | 5f7abc45-1e72-43d4-8615-9ec642ccf8bc |
| name | backup-disk01 |
+-------+--------------------------------------+
[root@dlp ~(keystone)]#
openstack volume backup list
+--------------------------------------+---------------+-------------+----------+---
---+
| ID | Name | Description | Status |
Size |
+--------------------------------------+---------------+-------------+----------+---
---+
| 5f7abc45-1e72-43d4-8615-9ec642ccf8bc | backup-disk01 | None | creating |
10 |
+--------------------------------------+---------------+-------------+----------+---
---+
[root@dlp ~(keystone)]#
9
10
+--------------------------------------+---------------+-------------+-----------+--
----+
| ID | Name | Description | Status |
Size |
+--------------------------------------+---------------+-------------+-----------+--
----+
| 5f7abc45-1e72-43d4-8615-9ec642ccf8bc | backup-disk01 | None | available |
10 |
+--------------------------------------+---------------+-------------+-----------+--
----+
If there is a backup file of target storage you'd like to get backup, it's possible to get
incremental backup.
[4]
Furthermore, if target storage you'd like to get backup is now attaching on an Instance,
specify [--force] option to get backup forcely.
[root@dlp ~(keystone)]#
openstack volume backup list
+--------------------------------------+---------------+-------------+-----------+--
----+
| ID | Name | Description | Status |
Size |
+--------------------------------------+---------------+-------------+-----------+--
----+
| 5f7abc45-1e72-43d4-8615-9ec642ccf8bc | backup-disk01 | None | available |
10 |
+--------------------------------------+---------------+-------------+-----------+--
----+
[root@dlp ~(keystone)]#
openstack volume list
+--------------------------------------+--------+--------+------+-------------------
----------------+
| ID | Name | Status | Size | Attached to
|
+--------------------------------------+--------+--------+------+-------------------
----------------+
| 19ca6fa7-202a-4a66-8fb7-05cb42305595 | disk01 | in-use | 10 | Attached to
CentOS_7 on /dev/vdb |
+--------------------------------------+--------+--------+------+-------------------
----------------+
[root@dlp ~(keystone)]#
openstack volume backup create --name backup-disk01-01 --incremental --force disk01
+-------+--------------------------------------+
| Field | Value |
+-------+--------------------------------------+
| id | 92a629ef-c637-48cf-8b9c-8f58790927d9 |
10
11
| name | backup-disk01-01 |
+-------+--------------------------------------+
[root@dlp ~(keystone)]#
openstack volume backup list
+--------------------------------------+------------------+-------------+-----------
+------+
| ID | Name | Description | Status
| Size |
+--------------------------------------+------------------+-------------+-----------
+------+
| 92a629ef-c637-48cf-8b9c-8f58790927d9 | backup-disk01-01 | None | available
| 10 |
| 5f7abc45-1e72-43d4-8615-9ec642ccf8bc | backup-disk01 | None | available
| 10 |
+--------------------------------------+------------------+-------------+-----------
+------+
For restoring from Backups, run commands like follows.
[5]
For restoring, target volume must be detached from any instances.
[root@dlp ~(keystone)]#
openstack volume backup list
+--------------------------------------+------------------+-------------+-----------
+------+
| ID | Name | Description | Status
| Size |
+--------------------------------------+------------------+-------------+-----------
+------+
| 92a629ef-c637-48cf-8b9c-8f58790927d9 | backup-disk01-01 | None | available
| 10 |
| 5f7abc45-1e72-43d4-8615-9ec642ccf8bc | backup-disk01 | None | available
| 10 |
+--------------------------------------+------------------+-------------+-----------
+------+
[root@dlp ~(keystone)]#
openstack volume list
+--------------------------------------+--------+-----------+------+-------------+
| ID | Name | Status | Size | Attached to |
+--------------------------------------+--------+-----------+------+-------------+
| 19ca6fa7-202a-4a66-8fb7-05cb42305595 | disk01 | available | 10 | |
+--------------------------------------+--------+-----------+------+-------------+
# run restore
[root@dlp ~(keystone)]#
openstack volume backup restore backup-disk01-01 disk01
11
12
[root@dlp ~(keystone)]#
openstack volume list
+--------------------------------------+--------+------------------+------+---------
----+
| ID | Name | Status | Size | Attached
to |
+--------------------------------------+--------+------------------+------+---------
----+
| 19ca6fa7-202a-4a66-8fb7-05cb42305595 | disk01 | restoring-backup | 10 |
|
+--------------------------------------+--------+------------------+------+---------
----+
[root@dlp ~(keystone)]#
openstack volume list
+--------------------------------------+--------+-----------+------+-------------+
| ID | Name | Status | Size | Attached to |
+--------------------------------------+--------+-----------+------+-------------+
| 19ca6fa7-202a-4a66-8fb7-05cb42305595 | disk01 | available | 10 | |
+--------------------------------------+--------+-----------+------+-------------+
12
13
[1] Add Swift user or service on Keystone Server (Control Node) first.
# add swift user
[root@dlp ~(keystone)]#
openstack user create --domain default --project service --password servicepassword swift
+---------------------+----------------------------------+
| Field | Value |
+---------------------+----------------------------------+
| default_project_id | c9ab6e9feb4d444c8f637fcfe7a67305 |
| domain_id | default |
| enabled | True |
| id | 1eb5408b29074f1b932faf6c64f06e0e |
| name | swift |
| options | {} |
| password_expires_at | None |
13
14
+---------------------+----------------------------------+
[root@dlp ~(keystone)]#
openstack role add --project service --user swift admin
# add an entry for swift service
[root@dlp ~(keystone)]#
openstack service create --name swift --description "OpenStack Object Storage" object-store
+-------------+----------------------------------+
| Field | Value |
+-------------+----------------------------------+
| description | OpenStack Object Storage |
| enabled | True |
| id | e5707b106ec64a49a752713e01edd505 |
| name | swift |
| type | object-store |
+-------------+----------------------------------+
[root@dlp ~(keystone)]#
export swift_proxy=10.0.0.50
# add an entry for swift endpoint (public)
[root@dlp ~(keystone)]#
openstack endpoint create --region RegionOne object-store public
http://$swift_proxy:8080/v1/AUTH_%\(tenant_id\)s
+--------------+---------------------------------------------+
| Field | Value |
+--------------+---------------------------------------------+
| enabled | True |
| id | 50420eb484d248b291a4f5cccfc2cb39 |
| interface | public |
| region | RegionOne |
| region_id | RegionOne |
| service_id | e5707b106ec64a49a752713e01edd505 |
| service_name | swift |
| service_type | object-store |
| url | http://10.0.0.50:8080/v1/AUTH_%(tenant_id)s |
+--------------+---------------------------------------------+
[root@dlp ~(keystone)]#
openstack endpoint create --region RegionOne object-store internal
http://$swift_proxy:8080/v1/AUTH_%\(tenant_id\)s
14
15
+--------------+---------------------------------------------+
| Field | Value |
+--------------+---------------------------------------------+
| enabled | True |
| id | bb4d8a93ed624af48f829305b23be81d |
| interface | internal |
| region | RegionOne |
| region_id | RegionOne |
| service_id | e5707b106ec64a49a752713e01edd505 |
| service_name | swift |
| service_type | object-store |
| url | http://10.0.0.50:8080/v1/AUTH_%(tenant_id)s |
+--------------+---------------------------------------------+
[root@dlp ~(keystone)]#
openstack endpoint create --region RegionOne object-store admin http://$swift_proxy:8080/v1
+--------------+----------------------------------+
| Field | Value |
+--------------+----------------------------------+
| enabled | True |
| id | 3523f64dd1df459fb44f9f9deddd3b2b |
| interface | admin |
| region | RegionOne |
| region_id | RegionOne |
| service_id | e5707b106ec64a49a752713e01edd505 |
| service_name | swift |
| service_type | object-store |
| url | http://10.0.0.50:8080/v1 |
+--------------+----------------------------------+
15