zoukankan      html  css  js  c++  java
  • volume image

    http://docs.openstack.org/user-guide/cli_nova_launch_instance_from_volume.html

    http://docs.openstack.org/admin-guide-cloud/blockstorage-manage-volumes.html

    Manage volumes

    Volume-backed image

    从image创建volume,当dirvier的volume clone快的话,性能要比其他store如file/swift好。

    1 设置cinder为glance的存储后端:

    glance_store section of the glance-api.conf file:

    stores = file, http, swift, cinder

    2显示 locations information

    DEFAULT section of theglance-api.conf file:

    show_multiple_locations = True

    3 To enable the Block Storage services to create a new volume by cloning Image- Volume

    DEFAULT section of the cinder.conf file. For example:

    glance_api_version = 2

    allowed_direct_url_schemes = cinder

    4,让cinder upload-to-image来从image-Volume创建一个volume

    back-end section of the cinder.conf file:

    image_upload_use_cinder_backend = True

    Creating a Volume-backed image

    注册volume为 new Volume-backed image

    $ glance image-create --disk-format raw --container-format bare --name <name>

     

    $ glance location-add <image-uuid> --url cinder://<volume-uuid>

    必须是raw和bare否则就存早glance的默认store中。

    Note

    Currently, the cinder store of the Image services does not support uploading and downloading of image data. By this limitation, Volume-backed images can only be used to create a new volume.

    以cinder作为store的glance不支持image的upload/download,仅仅支持创建一个新volume。

    Configure and use volume number weigher

    http://docs.openstack.org/admin-guide-cloud/blockstorage_volume_number_weigher.html

    cinder scheduler是根据free_capacity and allocated_capacity

    但也可以volume 数量:

    set the scheduler_default_weighers toVolumeNumberWeigher flag in the cinder.conf file

    实例:

    创建2个lvm backend,

    在创建一个lvm type:

    Define a volume type in Block Storage:

    $ cinder type-create lvm

    Create an extra specification that links the volume type to a back-end name:

    $ cinder type-key lvm set volume_backend_name=LVM

    创建6个1g的volume

    $ cinder create --volume-type lvm 1

    6个volume各自3个分布在2个backend上。

    Migrate volumes

    http://docs.openstack.org/admin-guide-cloud/blockstorage_volume_migration.html

    cinder可以多个back-ends之前迁移volumes

    流程如下:

    1. 如果storage可以自己migrate the volume,那它自己做,否则
    2. 2.       如果not attached, the Block Storage service创建一个volume并copy数据

     Note

    While most back-ends support this function, not all do. See the driver documentation in the OpenStack Configuration Reference for more details.

    1. 如果 volume is attached, the Block Storage创建一个volume并calls Compute copy数据. 目前仅仅支持Compute libvirt driver.

    以下例子中,2个back end,采用方案3.

    # cinder get-pools

    Note

    Only Block Storage V2 API supports get-pools.

    或者

    # cinder-manage host list
    server1@lvmstorage-1    zone1
    server2@lvmstorage-2    zone1
    $ cinder show 6088f80a-f116-4331-ad48-9afb0dfb196c
    $ cinder migrate 6088f80a-f116-4331-ad48-9afb0dfb196c 
      server2@lvmstorage-2#lvmstorage-2

    cinder show来查看迁移状态

     Note

    Migrating volumes that have snapshots are currently not allowed.

    Back up Block Storage service disks

    使用LVM snapshot来创建 snapshots时,也可以用它来back up 你的volumes。使用LVM snapshot,你可以减少backup的size,它仅仅backup存在的数据而不是整个的volume。

    Backup时volume不能被使用,必须数据都flush到guest文件系统,通常要求文件系统被unmounted,snapshot完成之后在mounted。

    下面例子中,100 GB volume named volume-00000001只有4 GB 数据。se commands to back up only those 4 GB:

    • lvm2 command. Directly manipulates the volumes.
    • kpartx command. Discovers the partition table created inside the instance.
    • tar command. Creates a minimum-sized backup.
    • sha1sum command. Calculates the backup checksum to check its consistency.

    You can apply this process to volumes of any size.

    To back up Block Storage service disks

    1. Create a snapshot of a used volume
    • Use this command to list all volumes
    o    # lvdisplay
    o    # lvcreate --size 10G --snapshot --name volume-00000001-snapshot 
    o      /dev/cinder-volumes/volume-00000001

    The --sizeparameter defines the space that LVM reserves for the snapshot volume.

    • Run the lvdisplay command again to verify the snapshot:
    o    --- Logical volume ---
    o    LV Name                /dev/cinder-volumes/volume-00000001
    o    VG Name                cinder-volumes
    o    LV UUID                gI8hta-p21U-IW2q-hRN1-nTzN-UC2G-dKbdKr
    o    LV Write Access        read/write
    o    LV snapshot status     source of
    o                     /dev/cinder-volumes/volume-00000026-snap [active]
    o    LV Status              available
    o    # open                 1
    o    LV Size                15,00 GiB
    o    Current LE             3840
    o    Segments               1
    o    Allocation             inherit
    o    Read ahead sectors     auto
    o    - currently set to     256
    o    Block device           251:13
    o     
    o    --- Logical volume ---
    o    LV Name                /dev/cinder-volumes/volume-00000001-snap
    o    VG Name                cinder-volumes
    o    LV UUID                HlW3Ep-g5I8-KGQb-IRvi-IRYU-lIKe-wE9zYr
    o    LV Write Access        read/write
    o    LV snapshot status     active destination for /dev/cinder-volumes/volume-00000026
    o    LV Status              available
    o    # open                 0
    o    LV Size                15,00 GiB
    o    Current LE             3840
    o    COW-table size         10,00 GiB
    o    COW-table LE           2560
    o    Allocated to snapshot  0,00%
    o    Snapshot chunk size    4,00 KiB
    o    Segments               1
    o    Allocation             inherit
    o    Read ahead sectors     auto
    o    - currently set to     256
    o    Block device           251:14
    1. Partition table discovery

    为了tar 打包snapshot,使用kpartx 发现分区

    o    $ ls /dev/mapper/nova*

    可以看见 cinder--volumes-volume--00000001--snapshot1 partition.,如果volume上有多个分区还可以看见: cinder--volumes-volume--00000001--snapshot2, cinder--volumes-volume--00000001--snapshot3, and so on.

    • Mount your partition
    o    # mount /dev/mapper/cinder--volumes-volume--volume--00000001--snapshot1 /mnt
    1. Use the tar command to create archives

    Create a backup of the volume:

    $ tar --exclude="lost+found" --exclude="some/data/to/exclude" -czf 
      volume-00000001.tar.gz -C /mnt/ /backup/destination

    只会打包已有的数据

    1. Checksum calculation I
    2. After work cleaning
    $ sha1sum volume-00000001.tar.gz > volume-00000001.checksum
    • Unmount the volume:
    • Delete the partition table:
    • Remove the snapshot:
    o    $ umount /mnt
    o    $ kpartx -dv /dev/cinder-volumes/volume-00000001-snapshot
    o    $ lvremove -f /dev/cinder-volumes/volume-00000001-snapshot

    Repeat these steps for all your volumes.

    1. Automate your backups
      可以用这个script来自动backup

    https://github.com/Razique/BashStuff/blob/master/SYSTEMS/OpenStack/SCR_5005_V01_NUAC-OPENSTACK-EBS-volumes-backup.sh

    和cinder backup的关系:

    这里是backup cinder 服务的disks

    下面backup volumes:

    Back up and restore volumes

    $ cinder backup-create [--incremental] [--force] VOLUME

    Volume在使用中需要force flag

    The incremental and force flags are only available for block storage API v2.

    The force flag is new in OpenStack Liberty.

    The incremental backup is based on a parent backup。

    第一次backup必须是full backup。

    $ cinder backup-restore BACKUP_ID

    Because volume backups are dependent on the Block Storage database, you must also back up your Block Storage database regularly to ensure data recovery.

    DB也需要定期backup来保存backup metadata

    如果只想backup 特定的一些可以you can export and save the metadata of selected volume backups

    Backup 后端默认的是swift ,可以配置NFS:

    backup_driver = cinder.backup.drivers.nfs

    backup_share = HOST:EXPORT_PATH

    backup_compression_algorithm = zlib

    backup_sha_block_size_bytes = 32768

    backup_file_size = 1999994880

    Export and import backup metadata

    http://docs.openstack.org/admin-guide-cloud/blockstorage_volume_backups_export_import.html

    $ cinder backup-export BACKUP_ID

    $ cinder backup-import METADATA

    Use LIO iSCSI support

    The default mode for the iscsi_helper tool is tgtadm. To use LIO iSCSI, install the python-rtslib package, and set iscsi_helper=lioadm in the cinder.conf file.

    Once configured, you can use the cinder-rtstool command to manage the volumes. This command enables you to create, delete, and verify volumes and determine targets and add iSCSI initiators to the system.

    Consistency groups

    http://docs.openstack.org/admin-guide-cloud/blockstorage-consistency-groups.html

    用来支持group snapshot

    A consistency group can only contain volumes hosted by the same back end.

    Create a consistency group:

    cinder consisgroup-create

    [--name name]

    [--description description]

    [--availability-zone availability-zone]

    volume-types

    Create a volume and add it to a consistency group:

    Create a snapshot for a consistency group:

    $ cinder cgsnapshot-create 1de80c27-3b2f-47a6-91a7-e867cbe36462

    当一个volume在一个sg中,不支持一下操作:

    • Volume migration.
    • Volume retype.
    • Volume deletion.

    Oversubscription in thin provisioning

    http://docs.openstack.org/admin-guide-cloud/blockstorage_over_subscription.html

    Configure an NFS storage back end

    http://docs.openstack.org/admin-guide-cloud/blockstorage_nfs_backend.html

    NFS如何提供block volume:

    cinder.volume.drivers.nfs.NfsDriver

        def _create_sparsed_file(self, path, size):

            """Creates file with 0 disk usage."""

            self._execute('truncate', '-s', '%sG' % size,

                          path, run_as_root=True)

        def _create_regular_file(self, path, size):

            """Creates regular file of given size. Takes a lot of time for large

            files.

            """

     

            block_size_mb = 1

            block_count = size * units.GiB / (block_size_mb * units.MiB)

     

            self._execute('dd', 'if=/dev/zero', 'of=%s' % path,

                          'bs=%dM' % block_size_mb,

                          'count=%d' % block_count,

                          run_as_root=True)

  • 相关阅读:
    go笔记
    脚本
    php-log
    idea maven scala
    Corporative Network
    uva1160
    比map更强大的multimap
    Message Decowding
    kmp 的next 数组求法
    Nearest Common Ancestors
  • 原文地址:https://www.cnblogs.com/allcloud/p/5075829.html
Copyright © 2011-2022 走看看