从卷启动实例

您可以从卷而不是镜像启动实例。

要完成这些任务,请在 openstack server create 命令中使用以下参数

任务

openstack server create 参数

信息

从镜像启动实例并附加不可启动的卷。

--block-device

从镜像启动实例并附加不可启动卷

从镜像创建卷并从该卷启动实例。

--boot-from-volume--image--block-device

从卷启动实例

从现有的源镜像、卷或快照启动。

--volume--snapshot--block-device

从卷启动实例

将交换磁盘附加到实例。

--swap

附加交换或临时磁盘到实例

将临时磁盘附加到实例。

--ephemeral

附加交换或临时磁盘到实例

注意

要将卷附加到正在运行的实例,请参阅 Cinder 文档

注意

允许附加到单个服务器的磁盘设备的最大数量可以通过选项 compute.max_disk_devices_to_attach 进行配置。

从镜像启动实例并附加不可启动卷

您可以创建一个不可启动的卷,并将该卷附加到从镜像启动的实例。

要创建一个不可启动的卷,请不要从镜像创建它。卷必须完全为空,没有分区表也没有文件系统。

  1. 创建一个不可启动的卷。

    $ openstack volume create --size 8 test-volume
    +---------------------+--------------------------------------+
    | Field               | Value                                |
    +---------------------+--------------------------------------+
    | attachments         | []                                   |
    | availability_zone   | nova                                 |
    | bootable            | false                                |
    | consistencygroup_id | None                                 |
    | created_at          | 2021-06-01T15:01:31.000000           |
    | description         | None                                 |
    | encrypted           | False                                |
    | id                  | 006efd7a-48a8-4c75-bafb-6b483199d284 |
    | migration_status    | None                                 |
    | multiattach         | False                                |
    | name                | test-volume                          |
    | properties          |                                      |
    | replication_status  | None                                 |
    | size                | 8                                    |
    | snapshot_id         | None                                 |
    | source_volid        | None                                 |
    | status              | creating                             |
    | type                | lvmdriver-1                          |
    | updated_at          | None                                 |
    | user_id             | 0a4d2edb9042412ba4f719a547d42f79     |
    +---------------------+--------------------------------------+
    
  2. 列出卷并确认其状态为 available

    $ openstack volume list
    +--------------------------------------+-------------+-----------+------+-------------+
    | ID                                   | Name        | Status    | Size | Attached to |
    +--------------------------------------+-------------+-----------+------+-------------+
    | 006efd7a-48a8-4c75-bafb-6b483199d284 | test-volume | available |    8 |             |
    +--------------------------------------+-------------+-----------+------+-------------+
    
  3. 创建一个实例,将卷指定为要附加的块设备。

    $ openstack server create \
        --flavor $FLAVOR --image $IMAGE --network $NETWORK \
        --block-device uuid=006efd7a-48a8-4c75-bafb-6b483199d284,source_type=volume,destination_type=volume \
        --wait test-server
    +-------------------------------------+-----------------------------------------------------------------+
    | Field                               | Value                                                           |
    +-------------------------------------+-----------------------------------------------------------------+
    | OS-DCF:diskConfig                   | MANUAL                                                          |
    | OS-EXT-AZ:availability_zone         | nova                                                            |
    | OS-EXT-SRV-ATTR:host                | devstack-ubuntu2004                                             |
    | OS-EXT-SRV-ATTR:hypervisor_hostname | devstack-ubuntu2004                                             |
    | OS-EXT-SRV-ATTR:instance_name       | instance-00000008                                               |
    | OS-EXT-STS:power_state              | Running                                                         |
    | OS-EXT-STS:task_state               | None                                                            |
    | OS-EXT-STS:vm_state                 | active                                                          |
    | OS-SRV-USG:launched_at              | 2021-06-01T15:13:48.000000                                      |
    | OS-SRV-USG:terminated_at            | None                                                            |
    | accessIPv4                          |                                                                 |
    | accessIPv6                          |                                                                 |
    | addresses                           | private=10.0.0.55, fde3:4790:906b:0:f816:3eff:fed5:ebd9         |
    | adminPass                           | CZ76LZ9pNXzt                                                    |
    | config_drive                        |                                                                 |
    | created                             | 2021-06-01T15:13:37Z                                            |
    | flavor                              | m1.tiny (1)                                                     |
    | hostId                              | 425d65fe75c1e53cecbd32d3e686314235507b6edebbeaa56ff341c7        |
    | id                                  | 446d1b00-b729-49b3-9dab-40a3fbe190cf                            |
    | image                               | cirros-0.5.1-x86_64-disk (44d317a3-6183-4063-868b-aa0728576f5f) |
    | key_name                            | None                                                            |
    | name                                | test-server                                                     |
    | progress                            | 0                                                               |
    | project_id                          | ae93f388f934458c8e6583f8ab0dba2d                                |
    | properties                          |                                                                 |
    | security_groups                     | name='default'                                                  |
    | status                              | ACTIVE                                                          |
    | updated                             | 2021-06-01T15:13:49Z                                            |
    | user_id                             | 0a4d2edb9042412ba4f719a547d42f79                                |
    | volumes_attached                    | id='006efd7a-48a8-4c75-bafb-6b483199d284'                       |
    +-------------------------------------+-----------------------------------------------------------------+
    
  4. 再次列出卷,以确保状态已更改为 in-use,并且卷正确报告了附加信息。

    $ openstack volume list
    +--------------------------------------+-------------+--------+------+--------------------------------------+
    | ID                                   | Name        | Status | Size | Attached to                          |
    +--------------------------------------+-------------+--------+------+--------------------------------------+
    | 006efd7a-48a8-4c75-bafb-6b483199d284 | test-volume | in-use |    1 | Attached to test-server on /dev/vdb  |
    +--------------------------------------+-------------+--------+------+--------------------------------------+
    

从卷启动实例

您可以从现有的镜像、卷或快照创建可启动的卷。此过程向您展示如何从镜像创建卷,并使用该卷启动实例。

  1. 列出可用的镜像,记下您想要使用的镜像的 ID。

    $ openstack image list
    +--------------------------------------+--------------------------+--------+
    | ID                                   | Name                     | Status |
    +--------------------------------------+--------------------------+--------+
    | 44d317a3-6183-4063-868b-aa0728576f5f | cirros-0.5.1-x86_64-disk | active |
    +--------------------------------------+--------------------------+--------+
    
  2. 创建一个实例,使用所选镜像并请求“从卷启动”行为。

    $ openstack server create \
        --flavor $FLAVOR --network $NETWORK \
        --image 44d317a3-6183-4063-868b-aa0728576f5f --boot-from-volume 10 \
        --wait test-server
    +-------------------------------------+----------------------------------------------------------+
    | Field                               | Value                                                    |
    +-------------------------------------+----------------------------------------------------------+
    | OS-DCF:diskConfig                   | MANUAL                                                   |
    | OS-EXT-AZ:availability_zone         | nova                                                     |
    | OS-EXT-SRV-ATTR:host                | devstack-ubuntu2004                                      |
    | OS-EXT-SRV-ATTR:hypervisor_hostname | devstack-ubuntu2004                                      |
    | OS-EXT-SRV-ATTR:instance_name       | instance-0000000c                                        |
    | OS-EXT-STS:power_state              | Running                                                  |
    | OS-EXT-STS:task_state               | None                                                     |
    | OS-EXT-STS:vm_state                 | active                                                   |
    | OS-SRV-USG:launched_at              | 2021-06-01T16:02:06.000000                               |
    | OS-SRV-USG:terminated_at            | None                                                     |
    | accessIPv4                          |                                                          |
    | accessIPv6                          |                                                          |
    | addresses                           | private=10.0.0.3, fde3:4790:906b:0:f816:3eff:fe40:bdd    |
    | adminPass                           | rqT3RUYYa5H5                                             |
    | config_drive                        |                                                          |
    | created                             | 2021-06-01T16:01:55Z                                     |
    | flavor                              | m1.tiny (1)                                              |
    | hostId                              | 425d65fe75c1e53cecbd32d3e686314235507b6edebbeaa56ff341c7 |
    | id                                  | 69b09fa0-6f24-4924-8311-c9bcdeb90dcb                     |
    | image                               | N/A (booted from volume)                                 |
    | key_name                            | None                                                     |
    | name                                | test-server                                              |
    | progress                            | 0                                                        |
    | project_id                          | ae93f388f934458c8e6583f8ab0dba2d                         |
    | properties                          |                                                          |
    | security_groups                     | name='default'                                           |
    | status                              | ACTIVE                                                   |
    | updated                             | 2021-06-01T16:02:07Z                                     |
    | user_id                             | 0a4d2edb9042412ba4f719a547d42f79                         |
    | volumes_attached                    | id='673cbfcb-351c-42cb-9659-bca5b2a0361c'                |
    +-------------------------------------+----------------------------------------------------------+
    

    注意

    以这种方式创建的卷在服务器删除时不会被删除,并且需要稍后手动删除。如果您希望更改此行为,则需要预先创建卷,如以下所述。

  3. 列出卷,以确保已创建新卷,并且其状态为 in-use,并且卷正确报告了附加信息。

    $ openstack volume list
    +--------------------------------------+------+--------+------+--------------------------------------+
    | ID                                   | Name | Status | Size | Attached to                          |
    +--------------------------------------+------+--------+------+--------------------------------------+
    | 673cbfcb-351c-42cb-9659-bca5b2a0361c |      | in-use |    1 | Attached to test-server on /dev/vda  |
    +--------------------------------------+------+--------+------+--------------------------------------+
    
    $ openstack server volume list test-server
    +--------------------------------------+----------+--------------------------------------+--------------------------------------+
    | ID                                   | Device   | Server ID                            | Volume ID                            |
    +--------------------------------------+----------+--------------------------------------+--------------------------------------+
    | 673cbfcb-351c-42cb-9659-bca5b2a0361c | /dev/vda | 9c7f68d4-4d84-4c1e-83af-b8c6a56ad005 | 673cbfcb-351c-42cb-9659-bca5b2a0361c |
    +--------------------------------------+----------+--------------------------------------+--------------------------------------+
    

与其依赖 nova 从镜像创建卷,也可以在创建实例之前预先创建卷。当您希望对创建的卷进行更多控制(例如启用加密)时,这会很有用。

  1. 列出可用的镜像,记下您想要使用的镜像的 ID。

    $ openstack image list
    +--------------------------------------+--------------------------+--------+
    | ID                                   | Name                     | Status |
    +--------------------------------------+--------------------------+--------+
    | 44d317a3-6183-4063-868b-aa0728576f5f | cirros-0.5.1-x86_64-disk | active |
    +--------------------------------------+--------------------------+--------+
    
  2. 从所选镜像创建可启动的卷。

    当传递 --image 参数时,Cinder 会使卷可启动。

    $ openstack volume create \
        --image 44d317a3-6183-4063-868b-aa0728576f5f --size 10 \
        test-volume
    +---------------------+--------------------------------------+
    | Field               | Value                                |
    +---------------------+--------------------------------------+
    | attachments         | []                                   |
    | availability_zone   | nova                                 |
    | bootable            | false                                |
    | consistencygroup_id | None                                 |
    | created_at          | 2021-06-01T15:40:56.000000           |
    | description         | None                                 |
    | encrypted           | False                                |
    | id                  | 9c7f68d4-4d84-4c1e-83af-b8c6a56ad005 |
    | migration_status    | None                                 |
    | multiattach         | False                                |
    | name                | test-volume                          |
    | properties          |                                      |
    | replication_status  | None                                 |
    | size                | 10                                   |
    | snapshot_id         | None                                 |
    | source_volid        | None                                 |
    | status              | creating                             |
    | type                | lvmdriver-1                          |
    | updated_at          | None                                 |
    | user_id             | 0a4d2edb9042412ba4f719a547d42f79     |
    +---------------------+--------------------------------------+
    

    注意

    如果您想将卷创建到特定的存储后端,您需要使用具有 cinder_img_volume_type 属性的镜像。有关更多信息,请参阅 cinder 文档

    注意

    通过将 --type ENCRYPTED_VOLUME_TYPE 参数添加到卷创建命令,也可以创建可启动的加密卷。例如

    $ openstack volume create \
        --type ENCRYPTED_VOLUME_TYPE --image IMAGE --size SIZE \
        test-volume
    

    这需要一个加密卷类型,必须由管理员提前创建。有关更多信息,请参阅 horizon 文档

  3. 创建一个实例,将卷指定为启动设备。

    $ openstack server create \
        --flavor $FLAVOR --network $NETWORK \
        --volume 9c7f68d4-4d84-4c1e-83af-b8c6a56ad005\
        --wait test-server
    +-------------------------------------+----------------------------------------------------------+
    | Field                               | Value                                                    |
    +-------------------------------------+----------------------------------------------------------+
    | OS-DCF:diskConfig                   | MANUAL                                                   |
    | OS-EXT-AZ:availability_zone         | nova                                                     |
    | OS-EXT-SRV-ATTR:host                | devstack-ubuntu2004                                      |
    | OS-EXT-SRV-ATTR:hypervisor_hostname | devstack-ubuntu2004                                      |
    | OS-EXT-SRV-ATTR:instance_name       | instance-0000000a                                        |
    | OS-EXT-STS:power_state              | Running                                                  |
    | OS-EXT-STS:task_state               | None                                                     |
    | OS-EXT-STS:vm_state                 | active                                                   |
    | OS-SRV-USG:launched_at              | 2021-06-01T15:43:21.000000                               |
    | OS-SRV-USG:terminated_at            | None                                                     |
    | accessIPv4                          |                                                          |
    | accessIPv6                          |                                                          |
    | addresses                           | private=10.0.0.47, fde3:4790:906b:0:f816:3eff:fe89:b004  |
    | adminPass                           | ueX74zzHWqL4                                             |
    | config_drive                        |                                                          |
    | created                             | 2021-06-01T15:43:13Z                                     |
    | flavor                              | m1.tiny (1)                                              |
    | hostId                              | 425d65fe75c1e53cecbd32d3e686314235507b6edebbeaa56ff341c7 |
    | id                                  | 367b7d42-627c-4d10-a2a0-f759501499a6                     |
    | image                               | N/A (booted from volume)                                 |
    | key_name                            | None                                                     |
    | name                                | test-server                                              |
    | progress                            | 0                                                        |
    | project_id                          | ae93f388f934458c8e6583f8ab0dba2d                         |
    | properties                          |                                                          |
    | security_groups                     | name='default'                                           |
    | status                              | ACTIVE                                                   |
    | updated                             | 2021-06-01T15:43:22Z                                     |
    | user_id                             | 0a4d2edb9042412ba4f719a547d42f79                         |
    | volumes_attached                    | id='9c7f68d4-4d84-4c1e-83af-b8c6a56ad005'                |
    +-------------------------------------+----------------------------------------------------------+
    

    注意

    这里的示例使用 --volume 选项以简化操作。也可以使用 --block-device 选项以更精细地控制参数。有关详细信息,请参阅 openstack server create 文档。

  4. 再次列出卷,以确保状态已更改为 in-use,并且卷正确报告了附加信息。

    $ openstack volume list
    +--------------------------------------+-------------+--------+------+--------------------------------------+
    | ID                                   | Name        | Status | Size | Attached to                          |
    +--------------------------------------+-------------+--------+------+--------------------------------------+
    | 9c7f68d4-4d84-4c1e-83af-b8c6a56ad005 | test-volume | in-use |   10 | Attached to test-server on /dev/vda  |
    +--------------------------------------+-------------+--------+------+--------------------------------------+
    
    $ openstack server volume list test-server
    +--------------------------------------+----------+--------------------------------------+--------------------------------------+
    | ID                                   | Device   | Server ID                            | Volume ID                            |
    +--------------------------------------+----------+--------------------------------------+--------------------------------------+
    | 9c7f68d4-4d84-4c1e-83af-b8c6a56ad005 | /dev/vda | c2368c38-6a7d-4fe8-bc4e-483e90e7608b | 9c7f68d4-4d84-4c1e-83af-b8c6a56ad005 |
    +--------------------------------------+----------+--------------------------------------+--------------------------------------+
    

附加交换或临时磁盘到实例

使用 --swap 选项 openstack server 命令在启动时附加交换磁盘,或使用 --ephemeral 选项在启动时附加临时磁盘。后者可以多次指定。当您终止实例时,这两个磁盘都会被删除。

使用 512 MB 交换磁盘和 2 GB 临时磁盘启动实例。

$ openstack server create \
    --flavor FLAVOR --image IMAGE --network NETWORK \
    --ephemeral size=2 --swap 512
    --wait test-server

注意

flavor 定义了最大交换和临时磁盘大小。您不能超过这些最大值。