OpenStack:Cinder组件的运维(icehouse版本)

来自CloudWiki
跳转至: 导航搜索

Cinder的CLI命令行使用

Cinder作为OpenStack平台的块存储组件,提供了一系列存储操作的CLI命令行用于管理存储卷,可以灵活地对存储卷进行创建、扩容、删除和加密等操作。

创建cinder存储卷

用户可以通过CLI命令创建一个简单的Cinder存储卷,命令如下。

[root@controller ~]# source admin-openrc.sh

[root@controller ~]# cinder create --display-name test1 1

+---------------------+--------------------------------------+
|       Property      |                Value                 |
+---------------------+--------------------------------------+
|     attachments     |                  []                  |
|  availability_zone  |                 nova                 |
|       bootable      |                false                 |
|      created_at     |      2018-12-14T10:14:36.111709      |
| display_description |                 None                 |
|     display_name    |                test1                 |
|      encrypted      |                False                 |
|          id         | 9a523cfc-ab43-49f6-84b3-f8ad5867c2e0 |
|       metadata      |                  {}                  |
|         size        |                  1                   |
|     snapshot_id     |                 None                 |
|     source_volid    |                 None                 |
|        status       |               creating               |
|     volume_type     |                 None                 |
+---------------------+--------------------------------------+

[root@controller ~]# cinder list

+--------------------------------------+-----------+--------------------+------+-------------+----------+-------------+
|                  ID                  |   Status  |    Display Name    | Size | Volume Type | Bootable | Attached to |
+--------------------------------------+-----------+--------------------+------+-------------+----------+-------------+
| 0a30c060-425d-4c74-8623-1ea42f01f3aa |   error   |   type_test_demo   |  1   |    test1    |  false   |             |
| 3ea86c92-4f15-4aa0-90fa-99b37b107b3a |   error   | cinder-volume-demo | 100  |     None    |  false   |             |
| 4bf67c03-2c12-43f8-842b-f971e5c0d97b | available | cinder-volume-demo |  1   |     None    |  false   |             |
| 5d4127c8-0c9d-4703-ada8-d9e716d87565 | available | cinder-volume-demo |  10  |     None    |  false   |             |
| 9a523cfc-ab43-49f6-84b3-f8ad5867c2e0 | available |       test1        |  1   |     None    |  false   |             |
+--------------------------------------+-----------+--------------------+------+-------------+----------+-------------+
[root@controller ~]#

删除指定的Cinder卷

删除Cinder卷的方法比较简单,用户可以通过命令cinder delete <volume> [<volume> ...] 来删除一个或多个Cinder卷。

比如说:删除我们上面新创建的type_test_demo这个cinder卷

[root@controller ~]# cinder delete test1

指定Cinder卷类型

查询type标识的卷类型

可以通过“cinder type-list”命令来查看现有的卷类型

[root@controller ~]# cinder type-list

+----+------+
| ID | Name |
+----+------+
+----+------+

创建卷类型

[root@controller ~]# cinder type-create test1

+--------------------------------------+-------+
|                  ID                  |  Name |
+--------------------------------------+-------+
| 6ddb6645-a948-40cc-b614-0457f802f66d | test1 |
+--------------------------------------+-------+

[root@controller ~]# cinder type-list

+--------------------------------------+-------+
|                  ID                  |  Name |
+--------------------------------------+-------+
| 6ddb6645-a948-40cc-b614-0457f802f66d | test1 |
+--------------------------------------+-------+

创建并查询extra_spec表示的卷类型

除了可以通过cinder创建type类型的卷标识外,OpenStack还允许通过cinder创建extra_spec类型的卷类型,两个功能基本类似,extra_spec利用一组键值对来对cinder卷进行标识。

可以通过命令cinder type-key lvm set volume_backend_name=LVM_iSCSI来创建键为volume_backend_name,值为LVM_iSCSI的extra_spec类型标识。

通过cinder extra-specs-list来查看已创建的extra_spec标识。

[root@controller ~]# cinder extra-specs-list

+--------------------------------------+-------+-------------+
|                  ID                  |  Name | extra_specs |
+--------------------------------------+-------+-------------+
| 6ddb6645-a948-40cc-b614-0457f802f66d | test1 |      {}     |
+--------------------------------------+-------+-------------+

会发现标记红色椭圆的地方是空的,然后我们运行

[root@controller ~]# cinder type-key test1 set volume_backend_name=1

[root@controller ~]# cinder extra-specs-list

+--------------------------------------+-------+--------------------------------+
|                  ID                  |  Name |          extra_specs           |
+--------------------------------------+-------+--------------------------------+
| 6ddb6645-a948-40cc-b614-0457f802f66d | test1 | {u'volume_backend_name': u'1'} |
+--------------------------------------+-------+--------------------------------+

创建云硬盘

[root@controller ~]# cinder create --display-name type_test_demo --volume_type test1 1

+---------------------+--------------------------------------+
|       Property      |                Value                 |
+---------------------+--------------------------------------+
|     attachments     |                  []                  |
|  availability_zone  |                 nova                 |
|       bootable      |                false                 |
|      created_at     |      2018-12-14T10:13:36.937899      |
| display_description |                 None                 |
|     display_name    |            type_test_demo            |
|      encrypted      |                False                 |
|          id         | 0a30c060-425d-4c74-8623-1ea42f01f3aa |
|       metadata      |                  {}                  |
|         size        |                  1                   |
|     snapshot_id     |                 None                 |
|     source_volid    |                 None                 |
|        status       |               creating               |
|     volume_type     |                test1                 |
+---------------------+--------------------------------------+

创建成功后可以通过命令查看结果,可以看到该卷的volume_type字段已修改为“test1”。查询命令如下

[root@controller ~]# cinder show type_test_demo

+--------------------------------+--------------------------------------+
|            Property            |                Value                 |
+--------------------------------+--------------------------------------+
|          attachments           |                  []                  |
|       availability_zone        |                 nova                 |
|            bootable            |                false                 |
|           created_at           |      2018-12-14T10:13:36.000000      |
|      display_description       |                 None                 |
|          display_name          |            type_test_demo            |
|           encrypted            |                False                 |
|               id               | 0a30c060-425d-4c74-8623-1ea42f01f3aa |
|            metadata            |                  {}                  |
|     os-vol-host-attr:host      |                 None                 |
| os-vol-mig-status-attr:migstat |                 None                 |
| os-vol-mig-status-attr:name_id |                 None                 |
|  os-vol-tenant-attr:tenant_id  |   00d9dcd033d542b68614c88d19fa0544   |
|              size              |                  1                   |
|          snapshot_id           |                 None                 |
|          source_volid          |                 None                 |
|             status             |                error                 |
|          volume_type           |                test1                 |
+--------------------------------+--------------------------------------+
[root@controller ~]# 


对Cinder后端逻辑卷进行扩容

创建一个1G的云硬盘extend-demo

[root@controller ~]# source admin-openrc.sh

[root@controller ~]# cinder create --display-name cinder-volume-demo 1

+---------------------+--------------------------------------+
|       Property      |                Value                 |
+---------------------+--------------------------------------+
|     attachments     |                  []                  |
|  availability_zone  |                 nova                 |
|       bootable      |                false                 |
|      created_at     |      2018-12-14T09:42:46.382604      |
| display_description |                 None                 |
|     display_name    |          cinder-volume-demo          |
|      encrypted      |                False                 |
|          id         | 4bf67c03-2c12-43f8-842b-f971e5c0d97b |
|       metadata      |                  {}                  |
|         size        |                  1                   |
|     snapshot_id     |                 None                 |
|     source_volid    |                 None                 |
|        status       |               creating               |
|     volume_type     |                 None                 |
+---------------------+--------------------------------------+

通过cinder-list命令查看云硬盘信息

[root@controller ~]# cinder list

+--------------------------------------+-----------+--------------------+------+-------------+----------+-------------+
|                  ID                  |   Status  |    Display Name    | Size | Volume Type | Bootable | Attached to |
+--------------------------------------+-----------+--------------------+------+-------------+----------+-------------+
| 4bf67c03-2c12-43f8-842b-f971e5c0d97b | available | cinder-volume-demo |  1   |     None    |  false   |             |
+--------------------------------------+-----------+--------------------+------+-------------+----------+-------------+


用户可以在存储节点运行vgdisplay命令查看逻辑卷空间。

[root@controller ~]# vgdisplay

 --- Volume group ---
  VG Name               cinder-volumes
  System ID             
  Format                lvm2
  Metadata Areas        1
  Metadata Sequence No  2
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                1
  Open LV               0
  Max PV                0
  Cur PV                1
  Act PV                1
  VG Size               9.76 GiB
  PE Size               4.00 MiB
  Total PE              2499
  Alloc PE / Size       256 / 1.00 GiB
  Free  PE / Size       2243 / 8.76 GiB
  VG UUID               phbML6-I5rB-rn7k-uGaa-ek46-c0u2-VCAgo2

对LVM卷进行扩容

首先我们通过“pvcreate”命令创建pv

首先,因为在我们的单节点中,没有md126p2分区,所以我们需要先创建一个分区/dev/sda6

[root@controller ~]# fdisk /dev/sda

WARNING: DOS-compatible mode is deprecated. It's strongly recommended to
         switch off the mode (command 'c') and change display units to
         sectors (command 'u').

Command (m for help): n
First cylinder (10461-13055, default 10461): 10461
Last cylinder, +cylinders or +size{K,M,G} (10461-13055, default 13055): +10G

Command (m for help): W
The partition table has been altered!

Calling ioctl() to re-read partition table.

WARNING: Re-reading the partition table failed with error 16: Device or resource busy.
The kernel still uses the old table. The new table will be used at
the next reboot or after you run partprobe(8) or kpartx(8)
Syncing disks.

[root@controller ~]# reboot

Broadcast message from root@controller
        (/dev/pts/0) at 4:54 ...

The system is going down for reboot NOW!

[root@controller ~]# lsblk

NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sr0     11:0    1 1024M  0 rom  
sda      8:0    0  100G  0 disk 
├─sda1   8:1    0 48.8G  0 part /
├─sda2   8:2    0 19.5G  0 part /srv/node
├─sda3   8:3    0  9.8G  0 part 
│ └─cinder--volumes-volume--4bf67c03--2c12--43f8--842b--f971e5c0d97b (dm-0)
       253:0    0    1G  0 lvm  
├─sda4   8:4    0    1K  0 part 
├─sda5   8:5    0    2G  0 part [SWAP]
└─sda6   8:6    0   10G  0 part 

[root@controller ~]# pvcreate /dev/sda6

 dev_is_mpath: failed to get device for 8:6
  Physical volume "/dev/sda6" successfully created

[root@controller ~]# pvdisplay

 --- Physical volume ---
  PV Name               /dev/sda3
  VG Name               cinder-volumes
  PV Size               9.77 GiB / not usable 4.00 MiB
  Allocatable           yes 
  PE Size               4.00 MiB
  Total PE              2499
  Free PE               2243
  Allocated PE          256
  PV UUID               5yJoVV-H5ll-aWDh-7p7t-CcKp-Mjn2-zcjZre
   
  "/dev/sda6" is a new physical volume of "10.00 GiB"
  --- NEW Physical volume ---
  PV Name               /dev/sda6
  VG Name               
  PV Size               10.00 GiB
  Allocatable           NO
  PE Size               0   
  Total PE              0
  Free PE               0
  Allocated PE          0
  PV UUID               LwE4wf-fFd3-T441-Fihp-2le1-f50J-Nba2y2
  

这样就成功的创建了一个名为/dev/sda6的物理分区

接着,我们通过“vgextend”命令扩展已有VG的容量

首先我们先看一下cinder-volumes卷组的大小

[root@controller ~]# vgdisplay

 --- Volume group ---
  VG Name               cinder-volumes
  System ID             
  Format                lvm2
  Metadata Areas        1
  Metadata Sequence No  2
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                1
  Open LV               0
  Max PV                0
  Cur PV                1
  Act PV                1
  VG Size               9.76 GiB
  PE Size               4.00 MiB
  Total PE              2499
  Alloc PE / Size       256 / 1.00 GiB
  Free  PE / Size       2243 / 8.76 GiB
  VG UUID               phbML6-I5rB-rn7k-uGaa-ek46-c0u2-VCAgo2

然后进行卷组宽展:

[root@controller ~]# vgextend cinder-volumes /dev/sda6

 Volume group "cinder-volumes" successfully extended

查看扩展后的VG容量

[root@controller ~]# vgdisplay

 --- Volume group ---
  VG Name               cinder-volumes
  System ID             
  Format                lvm2
  Metadata Areas        2
  Metadata Sequence No  3
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                1
  Open LV               0
  Max PV                0
  Cur PV                2
  Act PV                2
  VG Size               19.76 GiB
  PE Size               4.00 MiB
  Total PE              5059
  Alloc PE / Size       256 / 1.00 GiB
  Free  PE / Size       4803 / 18.76 GiB
  VG UUID               phbML6-I5rB-rn7k-uGaa-ek46-c0u2-VCAgo2

重启cinder-volume服务后再次创建该云硬盘

[root@controller ~]# cinder create --display-name cinder-volume-demo 10

+---------------------+--------------------------------------+
|       Property      |                Value                 |
+---------------------+--------------------------------------+
|     attachments     |                  []                  |
|  availability_zone  |                 nova                 |
|       bootable      |                false                 |
|      created_at     |      2018-12-14T10:09:49.916306      |
| display_description |                 None                 |
|     display_name    |          cinder-volume-demo          |
|      encrypted      |                False                 |
|          id         | 5d4127c8-0c9d-4703-ada8-d9e716d87565 |
|       metadata      |                  {}                  |
|         size        |                  10                  |
|     snapshot_id     |                 None                 |
|     source_volid    |                 None                 |
|        status       |               creating               |
|     volume_type     |                 None                 |
+---------------------+--------------------------------------+

[root@controller ~]# cinder list

+--------------------------------------+-----------+--------------------+------+-------------+----------+-------------+
|                  ID                  |   Status  |    Display Name    | Size | Volume Type | Bootable | Attached to |
+--------------------------------------+-----------+--------------------+------+-------------+----------+-------------+
| 3ea86c92-4f15-4aa0-90fa-99b37b107b3a |   error   | cinder-volume-demo | 100  |     None    |  false   |             |
| 4bf67c03-2c12-43f8-842b-f971e5c0d97b | available | cinder-volume-demo |  1   |     None    |  false   |             |
| 5d4127c8-0c9d-4703-ada8-d9e716d87565 | available | cinder-volume-demo |  10  |     None    |  false   |             |
+--------------------------------------+-----------+--------------------+------+-------------+----------+-------------+


Cinder快照操作

创建Cinder卷快照

用户可以通过如下命令来创建一个简单的Cinder 卷快照。

  1. cinder snapshot-create --display-name snapshot_test1 test1
+---------------------+--------------------------------------+
|       Property      |                Value                 |
+---------------------+--------------------------------------+
|      created_at     |      2018-12-14T10:15:52.333696      |
| display_description |                 None                 |
|     display_name    |            snapshot_test1            |
|          id         | 9fd3fae4-5804-42bb-a807-218083dd0c76 |
|       metadata      |                  {}                  |
|         size        |                  1                   |
|        status       |               creating               |
|      volume_id      | 9a523cfc-ab43-49f6-84b3-f8ad5867c2e0 |
+---------------------+--------------------------------------+

查看Cinder卷、快照信息

我们可以通过cinder-list命令查看镜像列表

  1. cinder list查看cinder卷的列表
  1. cinder snapshot-list查看snapshot的列表

还可以通过“cinder show <volume>”命令来查看指定云硬盘的详细信息,命令如下。

  1. cinder show d679d729-85b7-49fa-ab89-f7b87153b62d


将已创建的Cinder卷挂载到虚拟机实例

首先查看有没有云主机实例:

nova list

+----+------+--------+------------+-------------+----------+
| ID | Name | Status | Task State | Power State | Networks |
+----+------+--------+------------+-------------+----------+
+----+------+--------+------------+-------------+----------+

如果没有的话,我们可以创建一个最简单的实例:

nova boot --flavor m1.tiny --image cirros test1

+--------------------------------------+-----------------------------------------------+
| Property                             | Value                                         |
+--------------------------------------+-----------------------------------------------+
| OS-DCF:diskConfig                    | MANUAL                                        |
| OS-EXT-AZ:availability_zone          | nova                                          |
| OS-EXT-SRV-ATTR:host                 | -                                             |
| OS-EXT-SRV-ATTR:hypervisor_hostname  | -                                             |
| OS-EXT-SRV-ATTR:instance_name        | instance-00000002                             |
| OS-EXT-STS:power_state               | 0                                             |
| OS-EXT-STS:task_state                | scheduling                                    |
| OS-EXT-STS:vm_state                  | building                                      |
| OS-SRV-USG:launched_at               | -                                             |
| OS-SRV-USG:terminated_at             | -                                             |
| accessIPv4                           |                                               |
| accessIPv6                           |                                               |
| adminPass                            | koMo8S7iKqD5                                  |
| config_drive                         |                                               |
| created                              | 2018-12-14T11:41:38Z                          |
| flavor                               | m1.tiny (2)                                  |
| hostId                               |                                               |
| id                                   | e3c8ef21-673d-43fd-bc7b-75f7bda37021          |
| image                                | cirros (498ef44c-0d77-4c8f-ad1e-508c8ca858b1) |
| key_name                             | -                                             |
| metadata                             | {}                                            |
| name                                 | test1                                         |
| os-extended-volumes:volumes_attached | []                                            |
| progress                             | 0                                             |
| security_groups                      | default                                       |
| status                               | BUILD                                         |
| tenant_id                            | 00d9dcd033d542b68614c88d19fa0544              |
| updated                              | 2018-12-14T11:41:38Z                          |
| user_id                              | 83cbfd254b294529853aa51200bd6fe4              |
+--------------------------------------+-----------------------------------------------+

然后在nova list查看

+--------------------------------------+--------+--------+------------+-------------+--------------------------+
| ID                                   | Name   | Status | Task State | Power State | Networks                 |
+--------------------------------------+--------+--------+------------+-------------+--------------------------+
| 4b2cae1f-8eaf-4531-83b0-7c60619e83c7 | test03 | ACTIVE | -          | Running     | sharednet1=192.168.1.103 |
+--------------------------------------+--------+--------+------------+-------------+--------------------------+

接下来就是将我们创建好的cinder卷挂载到我们创建的云主机实例中:

nova volume-attach 4b2cae1f-8eaf-4531-83b0-7c60619e83c7 (云主机实例的id) d679d729-85b7-49fa-ab89-f7b87153b62d(cinder卷的id)

+----------+--------------------------------------+
| Property | Value                                |
+----------+--------------------------------------+
| device   | /dev/vdb                             |
| id       | 9a523cfc-ab43-49f6-84b3-f8ad5867c2e0 |
| serverId | 4b2cae1f-8eaf-4531-83b0-7c60619e83c7 |
| volumeId | 9a523cfc-ab43-49f6-84b3-f8ad5867c2e0 |
+----------+--------------------------------------+

最后查看挂载情况:

cinder list

+--------------------------------------+-----------+--------------------+------+-------------+----------+--------------------------------------+
|                  ID                  |   Status  |    Display Name    | Size | Volume Type | Bootable |             Attached to              |
+--------------------------------------+-----------+--------------------+------+-------------+----------+--------------------------------------+
| 0a30c060-425d-4c74-8623-1ea42f01f3aa |   error   |   type_test_demo   |  1   |    test1    |  false   |                                      |
| 3ea86c92-4f15-4aa0-90fa-99b37b107b3a |   error   | cinder-volume-demo | 100  |     None    |  false   |                                      |
| 4bf67c03-2c12-43f8-842b-f971e5c0d97b | available | cinder-volume-demo |  1   |     None    |  false   |                                      |
| 9a523cfc-ab43-49f6-84b3-f8ad5867c2e0 |   in-use  |       test1        |  1   |     None    |  false   | 4b2cae1f-8eaf-4531-83b0-7c60619e83c7 |
| feaa8688-cefd-4f2e-987c-2a59cd951885 | available | cinder-volume-demo |  1   |     None    |  false   |                                      |
+--------------------------------------+-----------+--------------------+------+-------------+----------+--------------------------------------+