使用快照迁移实例

本指南可用于在不同的云之间迁移实例。

要使用快照将实例从 OpenStack 项目迁移到云,请完成以下步骤。

在源项目

  1. 创建实例的快照

  2. 将快照下载为镜像

在目标项目

  1. 将快照导入到新环境

  2. 从快照启动新实例

注意

一些云服务提供商只允许管理员执行此任务。

创建实例的快照

  1. 在拍摄快照之前关闭源虚拟机,以确保所有数据都刷新到磁盘。如果需要,列出实例以查看实例名称

    $ openstack server list
    +--------------------------------------+------------+--------+------------------+--------------------+-------------------------+
    | ID                                   | Name       | Status | Networks         | Image              | Flavor                  |
    +--------------------------------------+------------+--------+------------------+--------------------+-------------------------+
    | d0d1b7d9-a6a5-41d3-96ab-07975aadd7fb | myInstance | ACTIVE | private=10.0.0.3 | ubuntu-16.04-amd64 | general.micro.tmp.linux |
    +--------------------------------------+------------+--------+------------------+--------------------+-------------------------+
    
  2. 使用 openstack server stop 命令关闭实例

    $ openstack server stop myInstance
    
  3. 使用 openstack server list 命令确认实例显示 SHUTOFF 状态

    $ openstack server list
    +--------------------------------------+------------+---------+------------------+--------------------+-------------------------+
    | ID                                   | Name       | Status  | Networks         | Image              | Flavor                  |
    +--------------------------------------+------------+---------+------------------+--------------------+-------------------------+
    | d0d1b7d9-a6a5-41d3-96ab-07975aadd7fb | myInstance | SHUTOFF | private=10.0.0.3 | ubuntu-16.04-amd64 | general.micro.tmp.linux |
    +--------------------------------------+------------+---------+------------------+--------------------+-------------------------+
    
  4. 使用 openstack server image create 命令拍摄快照

    $ openstack server image create --name myInstanceSnapshot myInstance
    

    如果快照操作经常因为用户令牌在上传大型磁盘镜像时超时而失败,请考虑配置 nova 使用 服务用户令牌

  5. 使用 openstack image list 命令检查状态,直到状态为 ACTIVE

    $ openstack image list
    +--------------------------------------+---------------------------+--------+
    | ID                                   | Name                      | Status |
    +--------------------------------------+---------------------------+--------+
    | ab567a44-b670-4d22-8ead-80050dfcd280 | myInstanceSnapshot        | active |
    +--------------------------------------+---------------------------+--------+
    

将快照下载为镜像

  1. 获取镜像 ID

    $ openstack image list
    +--------------------------------------+---------------------------+--------+
    | ID                                   | Name                      | Status |
    +--------------------------------------+---------------------------+--------+
    | ab567a44-b670-4d22-8ead-80050dfcd280 | myInstanceSnapshot        | active |
    +--------------------------------------+---------------------------+--------+
    
  2. 使用在上一步中返回的镜像 ID 下载快照

    $ openstack image save --file snapshot.raw ab567a44-b670-4d22-8ead-80050dfcd280
    

    注意

    openstack image save 命令需要镜像 ID,不能使用镜像名称。检查目标文件系统是否有足够的空间用于镜像文件。

  3. 通过 HTTP 或直接上传到机器(scp)使镜像可用于新环境。

将快照导入到新环境

在新项目或云环境中,导入快照

$ openstack image create --container-format bare --disk-format qcow2 \
  --file snapshot.raw myInstanceSnapshot

从快照启动新实例

在新项目或云环境中,使用快照创建新实例

$ openstack server create --flavor m1.tiny --image myInstanceSnapshot myNewInstance