1. 概述

    openstack的cinder项目负责volume的服务,即虚拟机的外挂存储,cinder作为管理存储的工具,可以支持LVM,glusterfs,ceph,sleepdog等开源的存储方案,同时也提供了对HP,IBM,huawei等商业存储的支持,配置完cinder之后,即可对虚拟机分配存储空间,如下给虚拟机分配cinder存储空间为例,讲述cinder的使用方法。


2. 磁盘挂载

[root@controller ~]# nova list |grep 10.16.6.52
| 1809ae2e-7e29-4203-930b-494de426bf8e | Dev_20151201_01      | ACTIVE  | -          | Running     | vmPrivate=10.16.6.52     | ChuangYiYuan_10_16_2_13 |
[root@controller ~]# cinder create --display-name "storage_10.16.6.52" 20    #划分一个20G的磁盘    
+---------------------+--------------------------------------+
|       Property      |                Value                 |
+---------------------+--------------------------------------+
|     p_w_uploads     |                  []                  |
|  availability_zone  |                 nova                 |
|       bootable      |                false                 |
|      created_at     |      2016-01-19T08:58:29.819663      |
| display_description |                 None                 |
|     display_name    |          storage_10.16.6.52          |
|      encrypted      |                False                 |
|          id         | e5ef5ad4-ddc4-4675-95bf-726473c4c62d |                #获取cinder-volume的id号码,用于和instance关联
|       metadata      |                  {}                  |
|         size        |                  20                  |
|     snapshot_id     |                 None                 |
|     source_volid    |                 None                 |
|        status       |               creating               |
|     volume_type     |                 None                 |
+---------------------+--------------------------------------+

将cinder和虚拟机关联
[root@controller ~]# nova volume-attach 1809ae2e-7e29-4203-930b-494de426bf8e  e5ef5ad4-ddc4-4675-95bf-726473c4c62d    
+----------+--------------------------------------+
| Property | Value                                |
+----------+--------------------------------------+
| device   | /dev/vdc                             |        #虚拟机将会识别为vdc设备
| id       | e5ef5ad4-ddc4-4675-95bf-726473c4c62d |
| serverId | 1809ae2e-7e29-4203-930b-494de426bf8e |
| volumeId | e5ef5ad4-ddc4-4675-95bf-726473c4c62d |
+----------+--------------------------------------+

查看cinder的情况
[root@controller ~]# cinder show e5ef5ad4-ddc4-4675-95bf-726473c4c62d
+--------------------------------+-------------------------------------------------------------------------------------------------------------------------------------+
|            Property            |                                                                                                    Value                                                                                                     |
+--------------------------------+-------------------------------------------------------------------------------------------------------------------------------------+
|          p_w_uploads           | [{u'device': u'/dev/vdc', u'server_id': u'1809ae2e-7e29-4203-930b-494de426bf8e', u'id': u'e5ef5ad4-ddc4-4675-95bf-726473c4c62d', u'host_name': None, u'volume_id': u'e5ef5ad4-ddc4-4675-95bf-726473c4c62d'}] |
|       availability_zone        |                                                                                                     nova                                                                                                     |
|            bootable            |                                                                                                    false                                                                                                     |
|           created_at           |                                                                                          2016-01-19T08:58:29.000000                                                                                          |
|      display_description       |                                                                                                     None                                                                                                     |
|          display_name          |                                                                                              storage_10.16.6.52                                                                                              |
|           encrypted            |                                                                                                    False                                                                                                     |
|               id               |                                                                                     e5ef5ad4-ddc4-4675-95bf-726473c4c62d                                                                                     |
|            metadata            |                                                                               {u'readonly': u'False', u'attached_mode': u'rw'}                                                                               |
|     os-vol-host-attr:host      |                                                                                            ChuangYiYuan_10_16_2_7                                                                                            |
| os-vol-mig-status-attr:migstat |                                                                                                     None                                                                                                     |
| os-vol-mig-status-attr:name_id |                                                                                                     None                                                                                                     |
|  os-vol-tenant-attr:tenant_id  |                                                                                       842ab3268a2c47e6a4b0d8774de805ae                                                                                       |
|              size              |                                                                                                      20                                                                                                      |
|          snapshot_id           |                                                                                                     None                                                                                                     |
|          source_volid          |                                                                                                     None                                                                                                     |
|             status             |                                                                                                    in-use                                                                                                    |
|          volume_type           |                                                                                                     None                                                                                                     |
+--------------------------------+------------------------------------------------------------------------------------------------------------------------------------------+


3. 格式化磁盘

  1. 查看系统识别的disk

[root@localhost ~]# ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWN 
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether fa:16:3e:d5:e1:4e brd ff:ff:ff:ff:ff:ff
    inet 10.16.6.52/23 brd 10.16.7.255 scope global eth0
[root@localhost ~]# dmesg | tail -10
pci 0000:00:07.0: using default PCI settings
virtio-pci 0000:00:07.0: enabling device (0000 -> 0003)
virtio-pci 0000:00:07.0: PCI INT A -> Link[LNKC] -> GSI 10 (level, high) -> IRQ 10
  alloc irq_desc for 31 on node -1
  alloc kstat_irqs on node -1
virtio-pci 0000:00:07.0: irq 31 for MSI/MSI-X
  alloc irq_desc for 32 on node -1
  alloc kstat_irqs on node -1
virtio-pci 0000:00:07.0: irq 32 for MSI/MSI-X
 vdc: unknown partition table            #磁盘识别为vdc

2. 分区与格式化

[root@Dev_10_16_6_52 ~]# fdisk /dev/vdc                 #磁盘分区
Device contains neither a valid DOS partition table, nor Sun, SGI or OSF disklabel
Building a new DOS disklabel with disk identifier 0x115a4ff3.
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
Command action
   e   extended
   p   primary partition (1-4)
p
Partition number (1-4): 1
First sector (2048-41943039, default 2048): 
Using default value 2048
Last sector, +sectors or +size{K,M,G} (2048-41943039, default 41943039): 
Using default value 41943039

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

Calling ioctl() to re-read partition table.
Syncing disks.
[root@Dev_10_16_6_52 ~]# partprobe /dev/vdc
[root@Dev_10_16_6_52 ~]# mkfs.ext4 /dev/vdc1             #格式化
mke2fs 1.41.12 (17-May-2010)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
1310720 inodes, 5242624 blocks
262131 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=4294967296
160 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, 1605632, 2654208, 
        4096000

Writing inode tables: done                            
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done

This filesystem will be automatically checked every 38 mounts or
180 days, whichever comes first.  Use tune2fs -c or -i to override.

3. 挂载使用

[root@localhost ~]# mkdir /data2
[root@localhost ~]# mount /dev/vdc1 /data2/
[root@localhost ~]# df -h /data2/
Filesystem            Size  Used Avail Use% Mounted on
/dev/vdc1              20G  172M   19G   1% /data2


4. 总结

    cinder作为一种外挂的存储,在openstack中用于数据存储有非常关键的作用,并且在openstack中,使用cinder非常方便,创建和关联,轻松就可以实现任意大小磁盘的分配,实现高效的管理。


5. 附录

[root@controller ~]# cinder -h
usage: cinder [--version] [--debug] [--os-username <auth-user-name>]
              [--os-password <auth-password>]
              [--os-tenant-name <auth-tenant-name>]
              [--os-tenant-id <auth-tenant-id>] [--os-auth-url <auth-url>]
              [--os-region-name <region-name>]
              [--os-auth-system <auth-system>] [--service-type <service-type>]
              [--service-name <service-name>]
              [--volume-service-name <volume-service-name>]
              [--endpoint-type <endpoint-type>]
              [--os-volume-api-version <volume-api-ver>]
              [--os-cacert <ca-certificate>] [--retries <retries>]
              <subcommand> ...
Command-line interface to the OpenStack Cinder API.
Positional arguments:
  <subcommand>
    absolute-limits     Print a list of absolute limits for a user
    availability-zone-list
                        List all the availability zones.
    backup-create       Creates a backup.                                            #备份相关
    backup-delete       Remove a backup.
    backup-list         List all the backups.
    backup-restore      Restore a backup.
    backup-show         Show details about a backup.
    create              Add a new volume.
    credentials         Show user credentials returned from auth.
    delete              Remove volume(s).
    encryption-type-create                                                            #加密盘相关
                        Create a new encryption type for a volume type (Admin
                        Only).
    encryption-type-delete
                        Delete the encryption type for a volume type (Admin
                        Only).
    encryption-type-list
                        List encryption type information for all volume types
                        (Admin Only).
    encryption-type-show
                        Show the encryption type information for a volume type
                        (Admin Only).
    endpoints           Discover endpoints that get returned from the
                        authenticate services.
    extend              Attempt to extend the size of an existing volume.
    extra-specs-list    Print a list of current 'volume types and extra specs'
                        (Admin Only).
    force-delete        Attempt forced removal of volume(s), regardless of the
                        state(s).
    list                List all the volumes.
    metadata            Set or Delete metadata on a volume.
    metadata-show       Show metadata of given volume.
    metadata-update-all
                        Update all metadata of a volume.
    migrate             Migrate the volume to the new host.                        #qos相关
    qos-associate       Associate qos specs with specific volume type.
    qos-create          Create a new qos specs.
    qos-delete          Delete a specific qos specs.
    qos-disassociate    Disassociate qos specs from specific volume type.
    qos-disassociate-all
                        Disassociate qos specs from all of its associations.
    qos-get-association
                        Get all associations of specific qos specs.
    qos-key             Set or unset specifications for a qos spec.
    qos-list            Get full list of qos specs.
    qos-show            Get a specific qos specs.
    quota-class-show    List the quotas for a quota class.                        #磁盘配额相关
    quota-class-update  Update the quotas for a quota class.
    quota-defaults      List the default quotas for a tenant.
    quota-delete        Delete the quotas for a tenant.
    quota-show          List the quotas for a tenant.
    quota-update        Update the quotas for a tenant.
    quota-usage         List the quota usage for a tenant.
    rate-limits         Print a list of rate limits for a user
    readonly-mode-update
                        Update volume read-only access mode read_only.
    rename              Rename a volume.
    reset-state         Explicitly update the state of a volume.                #服务管理相关
    service-disable     Disable the service.
    service-enable      Enable the service.
    service-list        List all the services. Filter by host & service
                        binary.
    show                Show details about a volume.
    snapshot-create     Add a new snapshot.                                    快照相关
    snapshot-delete     Remove one or more snapshots.
    snapshot-list       List all the snapshots.
    snapshot-metadata   Set or Delete metadata of a snapshot.
    snapshot-metadata-show
                        Show metadata of given snapshot.
    snapshot-metadata-update-all
                        Update all metadata of a snapshot.
    snapshot-rename     Rename a snapshot.
    snapshot-reset-state
                        Explicitly update the state of a snapshot.
    snapshot-show       Show details about a snapshot.    
    transfer-accept     Accepts a volume transfer.                            
    transfer-create     Creates a volume transfer.
    transfer-delete     Undo a transfer.
    transfer-list       List all the transfers.
    transfer-show       Show details about a transfer.
    type-create         Create a new volume type.                            cinder type相关
    type-delete         Delete a specific volume type.
    type-key            Set or unset extra_spec for a volume type.
    type-list           Print a list of available 'volume types'.
    upload-to-p_w_picpath     Upload volume to p_w_picpath service as p_w_picpath.
    bash-completion     Print arguments for bash_completion.
    help                Display help about this program or one of its
                        subcommands.
    list-extensions     List all the os-api extensions that are available.