对于云主机来说,机器可以随时销毁再创建,但数据一定不能,所以就需要数据的持久存储,openstack官方给出的数据存储方案就是cinder模块,cinder模块需要cinder服务端和cinder存储节点共同构成,在本实验中,我们把cinder服务端一并安装在了controller节点上,另行配置一台cinder存储节点,也就是我们的block节点。


block节点基础配置

[root@block ~]# lscpu

Architecture:          x86_64

CPU op-mode(s):        32-bit, 64-bit

Byte Order:            Little Endian

CPU(s):                8

On-line CPU(s) list:   0-7

Thread(s) per core:    1

Core(s) per socket:    1

Socket(s):             8

NUMA node(s):          1

Vendor ID:             GenuineIntel

CPU family:            6

Model:                 44

Model name:            Westmere E56xx/L56xx/X56xx (Nehalem-C)

Stepping:              1

CPU MHz:               2400.084

BogoMIPS:              4800.16

Hypervisor vendor:     KVM

Virtualization type:   full

L1d cache:             32K

L1i cache:             32K

L2 cache:              4096K

NUMA node0 CPU(s):     0-7

[root@block ~]# free -h

              total        used        free      shared  buff/cache   available

Mem:           7.8G         86M        7.6G        8.3M         81M        7.6G

Swap:            0B          0B          0B

[root@block ~]# lsblk

NAME            MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT

sr0              11:0    1  1024M  0 rom  

vda             252:0    0   400G  0 disk 

├─vda1          252:1    0   500M  0 part /boot

└─vda2          252:2    0 399.5G  0 part 

  ├─centos-root 253:0    0    50G  0 lvm  /

  ├─centos-swap 253:1    0   3.9G  0 lvm  

  └─centos-data 253:2    0 345.6G  0 lvm  /data

[root@block ~]# ifconfig

eth0: flags=4163  mtu 1500

        inet 192.168.10.20  netmask 255.255.255.0  broadcast 192.168.10.255

        inet6 fe80::5054:ff:fe77:e86e  prefixlen 64  scopeid 0x20

        ether 52:54:00:77:e8:6e  txqueuelen 1000  (Ethernet)

        RX packets 45039  bytes 3894559 (3.7 MiB)

        RX errors 0  dropped 4641  overruns 0  frame 0

        TX packets 51  bytes 3458 (3.3 KiB)

        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0


eth1: flags=4163  mtu 1500

        inet 10.0.0.20  netmask 255.255.0.0  broadcast 10.0.255.255

        inet6 fe80::5054:ff:fef2:70e4  prefixlen 64  scopeid 0x20

        ether 52:54:00:f2:70:e4  txqueuelen 1000  (Ethernet)

        RX packets 3418  bytes 293716 (286.8 KiB)

        RX errors 0  dropped 354  overruns 0  frame 0

        TX packets 12  bytes 788 (788.0 B)

        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0


eth2: flags=4163  mtu 1500

        inet 111.40.215.10  netmask 255.255.255.240  broadcast 111.40.215.15

        inet6 fe80::5054:ff:fef2:704e  prefixlen 64  scopeid 0x20

        ether 52:54:00:f2:70:4e  txqueuelen 1000  (Ethernet)

        RX packets 74  bytes 10274 (10.0 KiB)

        RX errors 0  dropped 0  overruns 0  frame 0

        TX packets 11  bytes 746 (746.0 B)

        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0


lo: flags=73  mtu 65536

        inet 127.0.0.1  netmask 255.0.0.0

        inet6 ::1  prefixlen 128  scopeid 0x10

        loop  txqueuelen 0  (Local Loopback)

        RX packets 0  bytes 0 (0.0 B)

        RX errors 0  dropped 0  overruns 0  frame 0

        TX packets 0  bytes 0 (0.0 B)

        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0


[root@block ~]# getenforce

Disabled

[root@block ~]# iptables -vnL

Chain INPUT (policy ACCEPT 0 packets, 0 bytes)

 pkts bytes target     prot opt in     out     source               destination         


Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)

 pkts bytes target     prot opt in     out     source               destination         


Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes)

 pkts bytes target     prot opt in     out     source               destination         

[root@block ~]# cat /etc/hosts

127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4

::1         localhost localhost.localdomain localhost6 localhost6.localdomain6

192.168.10.10 controller

192.168.10.20 block

192.168.10.31 compute1

192.168.10.32 compute2

[root@block ~]# 


配置时间同步服务

[root@block ~]# yum install -y chrony

[root@block ~]# cp /etc/chrony.conf{,.bak}

[root@block ~]# vim /etc/chrony.conf 

[root@block ~]# grep -v ^# /etc/chrony.conf | tr -s [[:space:]]

server controller iburst

stratumweight 0

driftfile /var/lib/chrony/drift

rtcsync

makestep 10 3

bindcmdaddress 127.0.0.1

bindcmdaddress ::1

keyfile /etc/chrony.keys

commandkey 1

generatecommandkey

noclientlog

logchange 0.5

logdir /var/log/chrony

[root@block ~]# systemctl enable chronyd.service 

[root@block ~]# systemctl start chronyd.service

[root@block ~]# chronyc sources

210 Number of sources = 1

MS Name/IP address         Stratum Poll Reach LastRx Last sample

===============================================================================

^* controller                    3   6    37    47   -645ns[-1049us] +/-  136ms

[root@block ~]# 


安装 OpenStack 客户端

[root@block ~]# yum install -y python-openstackclient



controller节点上cinder的配置

为cinder准备数据库

[root@controller ~]# mysql

Welcome to the MariaDB monitor.  Commands end with ; or \g.

Your MariaDB connection id is 542

Server version: 10.1.20-MariaDB MariaDB Server


Copyright (c) 2000, 2016, Oracle, MariaDB Corporation Ab and others.


Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.


MariaDB [(none)]> CREATE DATABASE cinder;

Query OK, 1 row affected (0.00 sec)


MariaDB [(none)]> GRANT ALL PRIVILEGES ON cinder.* TO 'cinder'@'localhost' \

    ->   IDENTIFIED BY 'CINDER_DBPASS';

Query OK, 0 rows affected (0.01 sec)


MariaDB [(none)]> GRANT ALL PRIVILEGES ON cinder.* TO 'cinder'@'%' \

    ->   IDENTIFIED BY 'CINDER_DBPASS';

Query OK, 0 rows affected (0.00 sec)


MariaDB [(none)]> quit

Bye

[root@controller ~]# 


以管理员身份向默认域中添加管理权限管理用户cinder

[root@controller ~]# . admin-openrc 

[root@controller ~]# openstack user create --domain default --password-prompt cinder

User Password:

Repeat User Password:

+-----------+----------------------------------+

| Field     | Value                            |

+-----------+----------------------------------+

| domain_id | 3ad6ac5f704c494e9f16b9e04ef745fe |

| enabled   | True                             |

| id        | 44207784dbfe4d47be039fa1670b3105 |

| name      | cinder                           |

+-----------+----------------------------------+

[root@controller ~]# openstack role add --project service --user cinder admin

[root@controller ~]# 


创建 cinder 和 cinderv2 服务实体

[root@controller ~]# openstack service create --name cinder \

>   --description "OpenStack Block Storage" volume

+-------------+----------------------------------+

| Field       | Value                            |

+-------------+----------------------------------+

| description | OpenStack Block Storage          |

| enabled     | True                             |

| id          | 34951aecd43c4019b5ccb8d3546968b6 |

| name        | cinder                           |

| type        | volume                           |

+-------------+----------------------------------+

[root@controller ~]# openstack service create --name cinderv2 \

>   --description "OpenStack Block Storage" volumev2

+-------------+----------------------------------+

| Field       | Value                            |

+-------------+----------------------------------+

| description | OpenStack Block Storage          |

| enabled     | True                             |

| id          | 353d5e3c7d844bdb9f2fa5b0bd054154 |

| name        | cinderv2                         |

| type        | volumev2                         |

+-------------+----------------------------------+

[root@controller ~]#



创建块设备存储服务的 API 入口点

v1版本API入口

[root@controller ~]# openstack endpoint create --region RegionOne \

>   volume public http://controller:8776/v1/%\(tenant_id\)s

+--------------+-----------------------------------------+

| Field        | Value                                   |

+--------------+-----------------------------------------+

| enabled      | True                                    |

| id           | ee567d4643354a5c917246885b81fd3e        |

| interface    | public                                  |

| region       | RegionOne                               |

| region_id    | RegionOne                               |

| service_id   | 34951aecd43c4019b5ccb8d3546968b6        |

| service_name | cinder                                  |

| service_type | volume                                  |

| url          | http://controller:8776/v1/%(tenant_id)s |

+--------------+-----------------------------------------+

[root@controller ~]# openstack endpoint create --region RegionOne \

>   volume internal http://controller:8776/v1/%\(tenant_id\)s

+--------------+-----------------------------------------+

| Field        | Value                                   |

+--------------+-----------------------------------------+

| enabled      | True                                    |

| id           | e8170f7726954a9e8271168643a4e6f0        |

| interface    | internal                                |

| region       | RegionOne                               |

| region_id    | RegionOne                               |

| service_id   | 34951aecd43c4019b5ccb8d3546968b6        |

| service_name | cinder                                  |

| service_type | volume                                  |

| url          | http://controller:8776/v1/%(tenant_id)s |

+--------------+-----------------------------------------+

[root@controller ~]# openstack endpoint create --region RegionOne \

>   volume admin http://controller:8776/v1/%\(tenant_id\)s

+--------------+-----------------------------------------+

| Field        | Value                                   |

+--------------+-----------------------------------------+

| enabled      | True                                    |

| id           | ee91417901f64837b6df639492dbed47        |

| interface    | admin                                   |

| region       | RegionOne                               |

| region_id    | RegionOne                               |

| service_id   | 34951aecd43c4019b5ccb8d3546968b6        |

| service_name | cinder                                  |

| service_type | volume                                  |

| url          | http://controller:8776/v1/%(tenant_id)s |

+--------------+-----------------------------------------+

[root@controller ~]#


v2版本API入口

[root@controller ~]# openstack endpoint create --region RegionOne \

>   volumev2 public http://controller:8776/v2/%\(tenant_id\)s

+--------------+-----------------------------------------+

| Field        | Value                                   |

+--------------+-----------------------------------------+

| enabled      | True                                    |

| id           | 53239152bd51439793d2ed8e4401edfb        |

| interface    | public                                  |

| region       | RegionOne                               |

| region_id    | RegionOne                               |

| service_id   | 353d5e3c7d844bdb9f2fa5b0bd054154        |

| service_name | cinderv2                                |

| service_type | volumev2                                |

| url          | http://controller:8776/v2/%(tenant_id)s |

+--------------+-----------------------------------------+

[root@controller ~]# openstack endpoint create --region RegionOne \

>   volumev2 internal http://controller:8776/v2/%\(tenant_id\)s

+--------------+-----------------------------------------+

| Field        | Value                                   |

+--------------+-----------------------------------------+

| enabled      | True                                    |

| id           | aa30ce1ab9244604a76a33365b865d75        |

| interface    | internal                                |

| region       | RegionOne                               |

| region_id    | RegionOne                               |

| service_id   | 353d5e3c7d844bdb9f2fa5b0bd054154        |

| service_name | cinderv2                                |

| service_type | volumev2                                |

| url          | http://controller:8776/v2/%(tenant_id)s |

+--------------+-----------------------------------------+

[root@controller ~]# openstack endpoint create --region RegionOne \

>   volumev2 admin http://controller:8776/v2/%\(tenant_id\)s

+--------------+-----------------------------------------+

| Field        | Value                                   |

+--------------+-----------------------------------------+

| enabled      | True                                    |

| id           | a83ac4dc6af2472989bc2a859d0104f9        |

| interface    | admin                                   |

| region       | RegionOne                               |

| region_id    | RegionOne                               |

| service_id   | 353d5e3c7d844bdb9f2fa5b0bd054154        |

| service_name | cinderv2                                |

| service_type | volumev2                                |

| url          | http://controller:8776/v2/%(tenant_id)s |

+--------------+-----------------------------------------+

[root@controller ~]#



controller节点上安装cinder并修改配置文件

[root@controller ~]# yum -y install openstack-cinder

[root@controller ~]# cp /etc/cinder/cinder.conf{,.bak}

[root@controller ~]# vim /etc/cinder/cinder.conf

[root@controller ~]# grep -v ^# /etc/cinder/cinder.conf | tr -s [[:space:]]

[DEFAULT]

rpc_backend = rabbit

auth_strategy = keystone

my_ip = 192.168.10.10

[BACKEND]

[BRCD_FABRIC_EXAMPLE]

[CISCO_FABRIC_EXAMPLE]

[COORDINATION]

[FC-ZONE-MANAGER]

[KEYMGR]

[cors]

[cors.subdomain]

[database]

connection = mysql+pymysql://cinder:CINDER_DBPASS@controller/cinder

[keystone_authtoken]

auth_uri = http://controller:5000

auth_url = http://controller:35357

memcached_servers = controller:11211

auth_type = password

project_domain_name = default

user_domain_name = default

project_name = service

username = cinder

password = CINDER_PASS

[matchmaker_redis]

[oslo_concurrency]

lock_path = /var/lib/cinder/tmp

[oslo_messaging_amqp]

[oslo_messaging_notifications]

[oslo_messaging_rabbit]

rabbit_host = controller

rabbit_userid = openstack

rabbit_password = RABBIT_PASS

[oslo_middleware]

[oslo_policy]

[oslo_reports]

[oslo_versionedobjects]

[ssl]

[root@controller ~]#



初始化cinder服务的数据库

[root@controller ~]# su -s /bin/sh -c "cinder-manage db sync" cinder

Option "logdir" from group "DEFAULT" is deprecated. Use option "log-dir" from group "DEFAULT".

2017-07-25 00:00:48.333 13486 WARNING py.warnings [-] /usr/lib/python2.7/site-packages/oslo_db/sqlalchemy/enginefacade.py:

241: NotSupportedWarning: Configuration option(s) ['use_tpool'] not supported

  exception.NotSupportedWarning


2017-07-25 00:00:48.624 13486 INFO migrate.versioning.api [-] 0 -> 1... 

2017-07-25 00:00:50.850 13486 INFO migrate.versioning.api [-] done

2017-07-25 00:00:50.850 13486 INFO migrate.versioning.api [-] 1 -> 2... 

2017-07-25 00:00:51.550 13486 INFO migrate.versioning.api [-] done

2017-07-25 00:00:51.551 13486 INFO migrate.versioning.api [-] 2 -> 3... 

2017-07-25 00:00:51.742 13486 INFO migrate.versioning.api [-] done

2017-07-25 00:00:51.743 13486 INFO migrate.versioning.api [-] 3 -> 4... 

2017-07-25 00:00:53.052 13486 INFO migrate.versioning.api [-] done

2017-07-25 00:00:53.052 13486 INFO migrate.versioning.api [-] 4 -> 5... 

2017-07-25 00:00:53.260 13486 INFO migrate.versioning.api [-] done

2017-07-25 00:00:53.261 13486 INFO migrate.versioning.api [-] 5 -> 6... 

2017-07-25 00:00:53.492 13486 INFO migrate.versioning.api [-] done

2017-07-25 00:00:53.493 13486 INFO migrate.versioning.api [-] 6 -> 7... 

2017-07-25 00:00:53.835 13486 INFO migrate.versioning.api [-] done

2017-07-25 00:00:53.836 13486 INFO migrate.versioning.api [-] 7 -> 8... 

2017-07-25 00:00:54.010 13486 INFO migrate.versioning.api [-] done

2017-07-25 00:00:54.011 13486 INFO migrate.versioning.api [-] 8 -> 9... 

2017-07-25 00:00:54.251 13486 INFO migrate.versioning.api [-] done

2017-07-25 00:00:54.252 13486 INFO migrate.versioning.api [-] 9 -> 10... 

2017-07-25 00:00:54.448 13486 INFO migrate.versioning.api [-] done

2017-07-25 00:00:54.448 13486 INFO migrate.versioning.api [-] 10 -> 11... 

2017-07-25 00:00:54.694 13486 INFO migrate.versioning.api [-] done

2017-07-25 00:00:54.695 13486 INFO migrate.versioning.api [-] 11 -> 12... 

2017-07-25 00:00:54.901 13486 INFO migrate.versioning.api [-] done

2017-07-25 00:00:54.902 13486 INFO migrate.versioning.api [-] 12 -> 13... 

2017-07-25 00:00:55.143 13486 INFO migrate.versioning.api [-] done

2017-07-25 00:00:55.143 13486 INFO migrate.versioning.api [-] 13 -> 14... 

2017-07-25 00:00:55.351 13486 INFO migrate.versioning.api [-] done

2017-07-25 00:00:55.351 13486 INFO migrate.versioning.api [-] 14 -> 15... 

2017-07-25 00:00:55.434 13486 INFO migrate.versioning.api [-] done

2017-07-25 00:00:55.435 13486 INFO migrate.versioning.api [-] 15 -> 16... 

2017-07-25 00:00:55.611 13486 INFO migrate.versioning.api [-] done

2017-07-25 00:00:55.612 13486 INFO migrate.versioning.api [-] 16 -> 17... 

2017-07-25 00:00:56.328 13486 INFO migrate.versioning.api [-] done

2017-07-25 00:00:56.328 13486 INFO migrate.versioning.api [-] 17 -> 18... 

2017-07-25 00:00:56.876 13486 INFO migrate.versioning.api [-] done

2017-07-25 00:00:56.877 13486 INFO migrate.versioning.api [-] 18 -> 19... 

2017-07-25 00:00:57.119 13486 INFO migrate.versioning.api [-] done

2017-07-25 00:00:57.119 13486 INFO migrate.versioning.api [-] 19 -> 20... 

2017-07-25 00:00:57.303 13486 INFO migrate.versioning.api [-] done

2017-07-25 00:00:57.304 13486 INFO migrate.versioning.api [-] 20 -> 21... 

2017-07-25 00:00:57.437 13486 INFO migrate.versioning.api [-] done

2017-07-25 00:00:57.437 13486 INFO migrate.versioning.api [-] 21 -> 22... 

2017-07-25 00:00:57.638 13486 INFO migrate.versioning.api [-] done

2017-07-25 00:00:57.639 13486 INFO migrate.versioning.api [-] 22 -> 23... 

2017-07-25 00:00:57.771 13486 INFO migrate.versioning.api [-] done

2017-07-25 00:00:57.771 13486 INFO migrate.versioning.api [-] 23 -> 24... 

2017-07-25 00:00:58.377 13486 INFO migrate.versioning.api [-] done

2017-07-25 00:00:58.378 13486 INFO migrate.versioning.api [-] 24 -> 25... 

2017-07-25 00:00:59.520 13486 INFO migrate.versioning.api [-] done

2017-07-25 00:00:59.521 13486 INFO migrate.versioning.api [-] 25 -> 26... 

2017-07-25 00:00:59.578 13486 INFO migrate.versioning.api [-] done

2017-07-25 00:00:59.579 13486 INFO migrate.versioning.api [-] 26 -> 27... 

2017-07-25 00:00:59.603 13486 INFO migrate.versioning.api [-] done

2017-07-25 00:00:59.604 13486 INFO migrate.versioning.api [-] 27 -> 28... 

2017-07-25 00:00:59.628 13486 INFO migrate.versioning.api [-] done

2017-07-25 00:00:59.629 13486 INFO migrate.versioning.api [-] 28 -> 29... 

2017-07-25 00:00:59.653 13486 INFO migrate.versioning.api [-] done

2017-07-25 00:00:59.654 13486 INFO migrate.versioning.api [-] 29 -> 30... 

2017-07-25 00:00:59.735 13486 INFO migrate.versioning.api [-] done

2017-07-25 00:00:59.736 13486 INFO migrate.versioning.api [-] 30 -> 31... 

2017-07-25 00:00:59.760 13486 INFO migrate.versioning.api [-] done

2017-07-25 00:00:59.761 13486 INFO migrate.versioning.api [-] 31 -> 32... 

2017-07-25 00:01:00.148 13486 INFO migrate.versioning.api [-] done

2017-07-25 00:01:00.149 13486 INFO migrate.versioning.api [-] 32 -> 33... 

2017-07-25 00:01:00.665 13486 WARNING py.warnings [-] /usr/lib64/python2.7/site-packages/sqlalchemy/sql/schema.py:2999: 

SAWarning: Table 'encryption' specifies columns 'volume_type_id' as primary_key=True, not matching locally specified columns 

'encryption_id'; setting the current primary key columns to 'encryption_id'. This warning may become an exception in a future release

  ", ".join("'%s'" % c.name for c in self.columns)


2017-07-25 00:01:00.946 13486 INFO migrate.versioning.api [-] done

2017-07-25 00:01:00.947 13486 INFO migrate.versioning.api [-] 33 -> 34... 

2017-07-25 00:01:01.189 13486 INFO migrate.versioning.api [-] done

2017-07-25 00:01:01.190 13486 INFO migrate.versioning.api [-] 34 -> 35... 

2017-07-25 00:01:01.423 13486 INFO migrate.versioning.api [-] done

2017-07-25 00:01:01.423 13486 INFO migrate.versioning.api [-] 35 -> 36... 

2017-07-25 00:01:01.670 13486 INFO migrate.versioning.api [-] done

2017-07-25 00:01:01.671 13486 INFO migrate.versioning.api [-] 36 -> 37... 

2017-07-25 00:01:01.821 13486 INFO migrate.versioning.api [-] done

2017-07-25 00:01:01.822 13486 INFO migrate.versioning.api [-] 37 -> 38... 

2017-07-25 00:01:02.030 13486 INFO migrate.versioning.api [-] done

2017-07-25 00:01:02.030 13486 INFO migrate.versioning.api [-] 38 -> 39... 

2017-07-25 00:01:02.256 13486 INFO migrate.versioning.api [-] done

2017-07-25 00:01:02.257 13486 INFO migrate.versioning.api [-] 39 -> 40... 

2017-07-25 00:01:03.408 13486 INFO migrate.versioning.api [-] done

2017-07-25 00:01:03.408 13486 INFO migrate.versioning.api [-] 40 -> 41... 

2017-07-25 00:01:03.646 13486 INFO migrate.versioning.api [-] done

2017-07-25 00:01:03.647 13486 INFO migrate.versioning.api [-] 41 -> 42... 

2017-07-25 00:01:03.671 13486 INFO migrate.versioning.api [-] done

2017-07-25 00:01:03.672 13486 INFO migrate.versioning.api [-] 42 -> 43... 

2017-07-25 00:01:03.696 13486 INFO migrate.versioning.api [-] done

2017-07-25 00:01:03.697 13486 INFO migrate.versioning.api [-] 43 -> 44... 

2017-07-25 00:01:03.721 13486 INFO migrate.versioning.api [-] done

2017-07-25 00:01:03.721 13486 INFO migrate.versioning.api [-] 44 -> 45... 

2017-07-25 00:01:03.746 13486 INFO migrate.versioning.api [-] done

2017-07-25 00:01:03.747 13486 INFO migrate.versioning.api [-] 45 -> 46... 

2017-07-25 00:01:03.774 13486 INFO migrate.versioning.api [-] done

2017-07-25 00:01:03.774 13486 INFO migrate.versioning.api [-] 46 -> 47... 

2017-07-25 00:01:03.838 13486 INFO migrate.versioning.api [-] done

2017-07-25 00:01:03.839 13486 INFO migrate.versioning.api [-] 47 -> 48... 

2017-07-25 00:01:04.064 13486 INFO migrate.versioning.api [-] done

2017-07-25 00:01:04.065 13486 INFO migrate.versioning.api [-] 48 -> 49... 

2017-07-25 00:01:04.482 13486 INFO migrate.versioning.api [-] done

2017-07-25 00:01:04.483 13486 INFO migrate.versioning.api [-] 49 -> 50... 

2017-07-25 00:01:04.864 13486 INFO migrate.versioning.api [-] done

2017-07-25 00:01:04.864 13486 INFO migrate.versioning.api [-] 50 -> 51... 

2017-07-25 00:01:05.047 13486 INFO migrate.versioning.api [-] done

2017-07-25 00:01:05.047 13486 INFO migrate.versioning.api [-] 51 -> 52... 

2017-07-25 00:01:05.307 13486 INFO migrate.versioning.api [-] done

2017-07-25 00:01:05.307 13486 INFO migrate.versioning.api [-] 52 -> 53... 

2017-07-25 00:01:06.032 13486 INFO migrate.versioning.api [-] done

2017-07-25 00:01:06.032 13486 INFO migrate.versioning.api [-] 53 -> 54... 

2017-07-25 00:01:06.265 13486 INFO migrate.versioning.api [-] done

2017-07-25 00:01:06.266 13486 INFO migrate.versioning.api [-] 54 -> 55... 

2017-07-25 00:01:06.600 13486 INFO migrate.versioning.api [-] done

2017-07-25 00:01:06.600 13486 INFO migrate.versioning.api [-] 55 -> 56... 

2017-07-25 00:01:06.624 13486 INFO migrate.versioning.api [-] done

2017-07-25 00:01:06.625 13486 INFO migrate.versioning.api [-] 56 -> 57... 

2017-07-25 00:01:06.649 13486 INFO migrate.versioning.api [-] done

2017-07-25 00:01:06.650 13486 INFO migrate.versioning.api [-] 57 -> 58... 

2017-07-25 00:01:06.674 13486 INFO migrate.versioning.api [-] done

2017-07-25 00:01:06.675 13486 INFO migrate.versioning.api [-] 58 -> 59... 

2017-07-25 00:01:06.699 13486 INFO migrate.versioning.api [-] done

2017-07-25 00:01:06.700 13486 INFO migrate.versioning.api [-] 59 -> 60... 

2017-07-25 00:01:06.725 13486 INFO migrate.versioning.api [-] done

2017-07-25 00:01:06.726 13486 INFO migrate.versioning.api [-] 60 -> 61... 

2017-07-25 00:01:07.140 13486 INFO migrate.versioning.api [-] done

2017-07-25 00:01:07.140 13486 INFO migrate.versioning.api [-] 61 -> 62... 

2017-07-25 00:01:07.474 13486 INFO migrate.versioning.api [-] done

2017-07-25 00:01:07.475 13486 INFO migrate.versioning.api [-] 62 -> 63... 

2017-07-25 00:01:07.506 13486 INFO migrate.versioning.api [-] done

2017-07-25 00:01:07.506 13486 INFO migrate.versioning.api [-] 63 -> 64... 

2017-07-25 00:01:07.717 13486 INFO migrate.versioning.api [-] done

2017-07-25 00:01:07.717 13486 INFO migrate.versioning.api [-] 64 -> 65... 

2017-07-25 00:01:08.332 13486 INFO migrate.versioning.api [-] done

2017-07-25 00:01:08.333 13486 INFO migrate.versioning.api [-] 65 -> 66... 

2017-07-25 00:01:09.259 13486 INFO migrate.versioning.api [-] done

2017-07-25 00:01:09.260 13486 INFO migrate.versioning.api [-] 66 -> 67... 

2017-07-25 00:01:09.309 13486 INFO migrate.versioning.api [-] done

2017-07-25 00:01:09.309 13486 INFO migrate.versioning.api [-] 67 -> 68... 

2017-07-25 00:01:09.339 13486 INFO migrate.versioning.api [-] done

2017-07-25 00:01:09.340 13486 INFO migrate.versioning.api [-] 68 -> 69... 

2017-07-25 00:01:09.357 13486 INFO migrate.versioning.api [-] done

2017-07-25 00:01:09.357 13486 INFO migrate.versioning.api [-] 69 -> 70... 

2017-07-25 00:01:09.382 13486 INFO migrate.versioning.api [-] done

2017-07-25 00:01:09.382 13486 INFO migrate.versioning.api [-] 70 -> 71... 

2017-07-25 00:01:09.408 13486 INFO migrate.versioning.api [-] done

2017-07-25 00:01:09.408 13486 INFO migrate.versioning.api [-] 71 -> 72... 

2017-07-25 00:01:09.432 13486 INFO migrate.versioning.api [-] done

[root@controller ~]#



修改compute节点配置,以使compute节点能够支持cinder模块

编辑文件 /etc/nova/nova.conf 并添加如下到其中

[root@compute1 ~]# vim /etc/nova/nova.conf

[cinder]

os_region_name = RegionOne


重启计算节点的nova服务

[root@compute1 ~]# systemctl restart openstack-nova-compute


重启controller端的nova服务

[root@controller ~]# systemctl restart openstack-nova-api.service


启用并启动cinder服务

[root@controller ~]# systemctl enable openstack-cinder-api.service openstack-cinder-scheduler.service

Created symlink from /etc/systemd/system/multi-user.target.wants/openstack-cinder-api.service to /usr/lib/systemd/system/openstack-cinder-api.service.

Created symlink from /etc/systemd/system/multi-user.target.wants/openstack-cinder-scheduler.service to /usr/lib/systemd/system/openstack-cinder-scheduler.service.

[root@controller ~]# systemctl start openstack-cinder-api.service openstack-cinder-scheduler.service

[root@controller ~]# ss -tnl  //启动cinder服务后会新增8776端口

State       Recv-Q Send-Q                                                 Local Address:Port                                                                Peer Address:Port              

LISTEN      0      128                                                                *:8776                                                                           *:*                  

LISTEN      0      128                                                                *:25672                                                                          *:*                  

LISTEN      0      128                                                    192.168.10.10:3306                                                                           *:*                  

LISTEN      0      128                                                        127.0.0.1:11211                                                                          *:*                  

LISTEN      0      128                                                                *:9292                                                                           *:*                  

LISTEN      0      128                                                                *:4369                                                                           *:*                  

LISTEN      0      128                                                                *:9696                                                                           *:*                  

LISTEN      0      100                                                                *:6080                                                                           *:*                  

LISTEN      0      128                                                                *:8774                                                                           *:*                  

LISTEN      0      128                                                                *:22022                                                                          *:*                  

LISTEN      0      128                                                                *:8775                                                                           *:*                  

LISTEN      0      128                                                                *:9191                                                                           *:*                  

LISTEN      0      128                                                               :::5000                                                                          :::*                  

LISTEN      0      128                                                               :::5672                                                                          :::*                  

LISTEN      0      128                                                              ::1:11211                                                                         :::*                  

LISTEN      0      128                                                               :::80                                                                            :::*                  

LISTEN      0      128                                                               :::35357                                                                         :::*                  

LISTEN      0      128                                                               :::22022                                                                         :::*                  

[root@controller ~]#


cinder存储节点配置


kvm宿主机上的操作

给块存储节点添加一块硬盘,先将block节点关机,然后前往kvm控制台进行操作添加虚拟磁盘

[root@openstack_test ~]# qemu-img create -q -f qcow2 /kvm/p_w_picpaths/block_lvm.qcow2 100G

[root@openstack_test ~]# ll -h /kvm/p_w_picpaths/block_lvm.qcow2

-rw-r--r-- 1 root root 194K Jul 25 00:49 /kvm/p_w_picpaths/block_lvm.qcow2

[root@openstack_test ~]# virsh edit block

在原有配置段下面添加如下配置

   

   

     

     

     

     

   

修改完成后保存退出,启动block虚机


block节点上继续操作

[root@block ~]# lsblk

NAME            MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT

sr0              11:0    1  1024M  0 rom  

vda             252:0    0   400G  0 disk 

├─vda1          252:1    0   500M  0 part /boot

└─vda2          252:2    0 399.5G  0 part 

  ├─centos-root 253:0    0    50G  0 lvm  /

  ├─centos-swap 253:1    0   3.9G  0 lvm  

  └─centos-data 253:2    0 345.6G  0 lvm  /data

vdb             252:16   0   100G  0 disk 

[root@block ~]# pvcreate /dev/vdb

  Physical volume "/dev/vdb" successfully created

[root@block ~]# vgcreate cinder-volumes /dev/vdb

  Volume group "cinder-volumes" successfully created

[root@block ~]# vim /etc/lvm/lvm.conf

添加如下内容

filter = [ "a/vda/", "a/vdb/", "r/.*/"]

[root@block ~]# yum install -y openstack-cinder targetcli python-keystone

[root@block ~]# cp /etc/cinder/cinder.conf{,.bak}

[root@block ~]# vim /etc/cinder/cinder.conf

[root@block ~]# grep -v ^# /etc/cinder/cinder.conf | tr -s [[:space:]]

[DEFAULT]

rpc_backend = rabbit

auth_strategy = keystone

my_ip = 192.168.10.20

enabled_backends = lvm

glance_api_servers = http://controller:9292

[lvm]

volume_driver = cinder.volume.drivers.lvm.LVMVolumeDriver

volume_group = cinder-volumes

iscsi_protocol = iscsi

iscsi_helper = lioadm

[BACKEND]

[BRCD_FABRIC_EXAMPLE]

[CISCO_FABRIC_EXAMPLE]

[COORDINATION]

[FC-ZONE-MANAGER]

[KEYMGR]

[cors]

[cors.subdomain]

[database]

connection = mysql+pymysql://cinder:CINDER_DBPASS@controller/cinder

[keystone_authtoken]

auth_uri = http://controller:5000

auth_url = http://controller:35357

memcached_servers = controller:11211

auth_type = password

project_domain_name = default

user_domain_name = default

project_name = service

username = cinder

password = CINDER_PASS

[matchmaker_redis]

[oslo_concurrency]

lock_path = /var/lib/cinder/tmp

[oslo_messaging_amqp]

[oslo_messaging_notifications]

[oslo_messaging_rabbit]

rabbit_host = controller

rabbit_userid = openstack

rabbit_password = RABBIT_PASS

[oslo_middleware]

[oslo_policy]

[oslo_reports]

[oslo_versionedobjects]

[ssl]

[root@block ~]# systemctl start openstack-cinder-volume.service target.service



前往controller节点进行操作

[root@controller ~]# . admin-openrc 

[root@controller ~]# cinder-service-list

-bash: cinder-service-list: command not found

[root@controller ~]# cinder service-list

+------------------+------------+------+---------+-------+----------------------------+-----------------+

|      Binary      |    Host    | Zone |  Status | State |         Updated_at         | Disabled Reason |

+------------------+------------+------+---------+-------+----------------------------+-----------------+

| cinder-scheduler | controller | nova | enabled |   up  | 2017-07-25T16:17:10.000000 |        -        |

|  cinder-volume   | block@lvm  | nova | enabled |   up  | 2017-07-25T16:17:17.000000 |        -        |

+------------------+------------+------+---------+-------+----------------------------+-----------------+

[root@controller ~]#


创建并挂载一个卷

[root@controller ~]# . demo-openrc 

[root@controller ~]# openstack volume create --size 5 volume1

+---------------------+--------------------------------------+

| Field               | Value                                |

+---------------------+--------------------------------------+

| p_w_uploads         | []                                   |

| availability_zone   | nova                                 |

| bootable            | false                                |

| consistencygroup_id | None                                 |

| created_at          | 2017-07-26T00:06:22.549611           |

| description         | None                                 |

| encrypted           | False                                |

| id                  | 826e2ea7-4557-4dd5-b540-f213fbedcda4 |

| multiattach         | False                                |

| name                | volume1                              |

| properties          |                                      |

| replication_status  | disabled                             |

| size                | 5                                    |

| snapshot_id         | None                                 |

| source_volid        | None                                 |

| status              | creating                             |

| type                | None                                 |

| updated_at          | None                                 |

| user_id             | deb3adea97e34fee9161a47940762a53     |

+---------------------+--------------------------------------+

[root@controller ~]# openstack volume list

+--------------------------------------+--------------+-----------+------+-------------+

| ID                                   | Display Name | Status    | Size | Attached to |

+--------------------------------------+--------------+-----------+------+-------------+

| 826e2ea7-4557-4dd5-b540-f213fbedcda4 | volume1      | available |    5 |             |

+--------------------------------------+--------------+-----------+------+-------------+

[root@controller ~]# openstack volume show 826e2ea7-4557-4dd5-b540-f213fbedcda4

+------------------------------+--------------------------------------+

| Field                        | Value                                |

+------------------------------+--------------------------------------+

| p_w_uploads                  | []                                   |

| availability_zone            | nova                                 |

| bootable                     | false                                |

| consistencygroup_id          | None                                 |

| created_at                   | 2017-07-26T00:06:22.000000           |

| description                  | None                                 |

| encrypted                    | False                                |

| id                           | 826e2ea7-4557-4dd5-b540-f213fbedcda4 |

| multiattach                  | False                                |

| name                         | volume1                              |

| os-vol-tenant-attr:tenant_id | 0200f6457da84abd9055a5c192386747     |

| properties                   |                                      |

| replication_status           | disabled                             |

| size                         | 5                                    |

| snapshot_id                  | None                                 |

| source_volid                 | None                                 |

| status                       | available                            |

| type                         | None                                 |

| updated_at                   | 2017-07-26T00:06:23.000000           |

| user_id                      | deb3adea97e34fee9161a47940762a53     |

+------------------------------+--------------------------------------+

[root@controller ~]# openstack server add volume provider-instance volume1

[root@controller ~]# openstack server start provider-instance


block节点发生的变化

[root@block ~]# lsblk

NAME                                                               MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT

sr0                                                                 11:0    1  1024M  0 rom  

vda                                                                252:0    0   400G  0 disk 

├─vda1                                                             252:1    0   500M  0 part /boot

└─vda2                                                             252:2    0 399.5G  0 part 

  ├─centos-root                                                    253:0    0    50G  0 lvm  /

  ├─centos-swap                                                    253:1    0   3.9G  0 lvm  

  └─centos-data                                                    253:2    0 345.6G  0 lvm  /data

vdb                                                                252:16   0   100G  0 disk 

└─cinder--volumes-volume--826e2ea7--4557--4dd5--b540--f213fbedcda4 253:3    0     5G  0 lvm  

[root@block ~]#


实例上挂载数据卷操作步骤

使用ssh登录实例查看有无数据卷

[root@controller ~]# ssh -p 22 [email protected]

$ lsblk

NAME   MAJ:MIN RM    SIZE RO TYPE MOUNTPOINT

vda    253:0    0      1G  0 disk 

`-vda1 253:1    0 1011.9M  0 part /

vdb    253:16   0      5G  0 disk 

$ sudo fdisk /dev/vdb  //分区

Device contains neither a valid DOS partition table, nor Sun, SGI or OSF disklabel

Building a new DOS disklabel with disk identifier 0x344bf1f3.

Changes will remain in memory only, until you decide to write them.

After that, of course, the previous content won't be recoverable.


Warning: invalid flag 0x0000 of partition table 4 will be corrected by w(rite)


Command (m for help): n

Partition type:

   p   primary (0 primary, 0 extended, 4 free)

   e   extended

Select (default p): 

Using default response p

Partition number (1-4, default 1): 

Using default value 1

First sector (2048-10485759, default 2048): 

Using default value 2048

Last sector, +sectors or +size{K,M,G} (2048-10485759, default 10485759): 

Using default value 10485759


Command (m for help): w

The partition table has been altered!


Calling ioctl() to re-read partition table.

Syncing disks.


$ sudo mkfs.ext4 -L data /dev/vdb1

mke2fs 1.42.2 (27-Mar-2012)

Filesystem label=data

OS type: Linux

Block size=4096 (log=2)

Fragment size=4096 (log=2)

Stride=0 blocks, Stripe width=0 blocks

327680 inodes, 1310464 blocks

65523 blocks (5.00%) reserved for the super user

First data block=0

Maximum filesystem blocks=1342177280

40 block groups

32768 blocks per group, 32768 fragments per group

8192 inodes per group

Superblock backups stored on blocks: 

    32768, 98304, 163840, 229376, 294912, 819200, 884736


Allocating group tables: done                            

Writing inode tables: done                            

Creating journal (32768 blocks): done

Writing superblocks and filesystem accounting information: done 


$ sudo mkdir /data  //创建挂载点

$ sudo vi /etc/fstab  //写入fstab文件,方便重启后自动挂载

$ cat /etc/fstab

# /etc/fstab: static file system information.

#

#            

/dev/root  /         auto     rw,noauto                 0 1

proc       /proc     proc     defaults                  0 0

devpts     /dev/pts  devpts   defaults,gid=5,mode=620   0 0

tmpfs      /dev/shm  tmpfs    mode=0777                 0 0

sysfs      /sys      sysfs    defaults                  0 0

tmpfs      /run      tmpfs    rw,nosuid,relatime,size=200k,mode=755 0 0

/dev/vdb1 /data ext4 defaults 0 0

$ sudo mount -a

$ lsblk

NAME   MAJ:MIN RM    SIZE RO TYPE MOUNTPOINT

vda    253:0    0      1G  0 disk 

`-vda1 253:1    0 1011.9M  0 part /

vdb    253:16   0      5G  0 disk 

`-vdb1 253:17   0      5G  0 part /data

$ ls /data/

lost+found

    block节点在实际生产环境中也数量庞大的,所以也需要在成功配置一个节点后写成自动化配置脚本,以便大批量部署。