# XEN实例变更为KVM实例（Linux-批量自动配置）
#### 操作场景
XEN实例变更为KVM实例属于跨虚拟化类型的变更，Linux弹性云服务器的正常运行需依赖于xen-pv驱动、virtio驱动等。XEN实例变更为KVM实例前，需要确保Linux弹性云服务器已完成相关配置，包括安装驱动、配置磁盘自动挂载等。
弹性云服务器规格的虚拟化类型包括：
- XEN实例：S1、C1、C2、M1型弹性云服务器。
- KVM实例和QingTian：参考[规格清单](https://support.huaweicloud.com/productdesc-ecs/zh-cn_topic_0159822360.html)，虚拟化类型为KVM和QingTian的规格实例。
 
当您需要变更的Linux操作系统的XEN实例比较多时候，推荐您使用本节的批量自动配置的方法安装驱动，通过自动化脚本的方式批量为Linux云服务器安装驱动、配置磁盘自动挂载。在驱动安装完成后使用控制台提供的"变更规格"功能将XEN实例变更为KVM实例。
 #### 约束与限制
- 不同CPU架构弹性云服务器实例的变更原则：
  - 不支持将"x86计算"架构实例变更为"鲲鹏计算"架构实例。
  
  - 不支持将"鲲鹏计算"架构实例变更为"x86计算"架构实例。
   
- 不同虚拟化类型弹性云服务器实例的变更原则：
  - 支持将"XEN实例"变更为"KVM实例"，不支持将"KVM实例"变更为"XEN实例"。
  
  - 支持将"KVM实例"变更为"QingTian实例"，不支持将"QingTian实例"变更为"KVM实例"。 对于部分C6型QingTian架构实例，支持变更为KVM实例，详细操作，请参见[QingTian实例变更为KVM实例（Windows）](https://support.huaweicloud.com/usermanual-ecs/ecs_03_1179.html)。
    
  
  - 不支持将"XEN实例"变更为"QingTian实例"，不支持将"QingTian实例"变更为"XEN实例"。
   
- 批量安装驱动仅支持Linux操作系统。
- 变更规格过程中，弹性云服务器需要关机，建议您选择业务空闲时间进行操作。
- 需要选取一台操作系统为CentOS 7且已绑定弹性公网IP的云服务器作为执行机，且与待批量安装驱动的弹性云服务器之间网络需要互通。
  ![](https://support.huaweicloud.com/usermanual-ecs/public_sys-resources/note_3.0-zh-cn.png)
  若已配置yum内部源，可不需要绑定弹性公网IP。
  
- 需要提前准备待批量安装驱动的云服务器的IP地址、root用户的密码信息或者私钥文件。
- 仅支持对使用同一密钥对的云服务器执行批量安装驱动和配置的操作。
 
#### 操作流程
XEN实例变更为KVM实例的操作流程如[图1]所示。
图1Linux云服务器变更流程（批量自动配置）   
![](https://support.huaweicloud.com/usermanual-ecs/zh-cn_image_0000002320382825.png "点击放大")
表1XEN实例变更为KVM实例（批量自动配置） 
| 序号 | 任务                                                   |
|:---|:---|
| 步骤1  | [步骤1：备份云服务器]     |
| 步骤2 | [步骤2：批量安装和配置驱动]    |
| 步骤3  | [步骤3：变更规格]       |
| 步骤4 | [（可选）步骤4：检查磁盘挂载状态] |
   
 #### 步骤1：备份云服务器
如果未安装驱动就执行变更规格的操作，云服务器可能无法正常使用，造成您的数据丢失。因此，建议您先备份云服务器，防止数据丢失。
1. 自检云服务器。 备份前请对云服务器执行关机、开机操作，确保云服务器重启后业务可以正常运行。
   
2. 备份云服务器。
   其中，云服务器备份涉及存储费用；快照分为存量快照及标准快照，存量快照公测不计费，标准快照计费，请按需选择。
   - 方式一：创建云服务器备份。 创建云服务器备份的操作，请参见[云服务器备份操作步骤](https://support.huaweicloud.com/usermanual-ecs/ecs_03_1502.html#ecs_03_1502__section1685231310443)。
     
   
   - 方式二：创建系统盘快照和数据盘快照。 创建快照的操作，请参见《云硬盘用户指南》的[创建快照](https://support.huaweicloud.com/usermanual-evs/zh-cn_topic_0066615262.html)章节。
     
     
![](https://support.huaweicloud.com/usermanual-ecs/public_sys-resources/note_3.0-zh-cn.png)
云服务器的备份和快照用于恢复数据，当变更规格失败回退后，可通过备份或快照进行数据恢复：
- 通过云服务器备份恢复数据，详细操作请参见[使用云服务器备份恢复数据](https://support.huaweicloud.com/usermanual-cbr/cbr_03_0032.html)。
- 通过快照回滚数据，详细操作请参见[使用快照回滚数据至云硬盘](https://support.huaweicloud.com/usermanual-evs/evs_01_0012.html)。
变更规格完成后，如已确认业务恢复正常，请在对应服务控制台页面删除云服务器备份或快照。
 #### 步骤2：批量安装和配置驱动
对于支持使用脚本方式批量配置的弹性云服务器，请参见本节操作内容。
不支持使用自动化脚本方式进行配置的云服务器，请直接参见[XEN实例变更为KVM实例（Linux-手动配置）](https://support.huaweicloud.com/usermanual-ecs/ecs_03_0163.html)。
1. 登录已准备好的执行机，执行机需满足的条件请参考[约束与限制]。
   详细操作，请参见[Linux ECS登录方式概述](https://support.huaweicloud.com/usermanual-ecs/zh-cn_topic_0013771089.html)。
   
2. 执行以下命令，安装批量脚本运行所需要的依赖。
   **yum install ansible -y**
   
3. 执行以下命令，将驱动安装脚本下载到root目录下。 **curl *URL* \> \~/resize_ecs_modify_linux.sh**
   其中，*URL*为驱动安装脚本的下载地址。
   请根据云服务器所在区域选择脚本的下载地址：
   - 华东-上海二：<https://cn-east-2-server-resize.obs.cn-east-2.myhuaweicloud.com/linux/server_resize/resize_ecs_modify_linux.sh>
   
   - 华北-北京一：<https://cn-north-1-server-resize.obs.cn-north-1.myhuaweicloud.com/linux/server_resize/resize_ecs_modify_linux.sh>
   
   - 华南-广州：<https://cn-south-1-server-resize.obs.cn-south-1.myhuaweicloud.com/linux/server_resize/resize_ecs_modify_linux.sh>
    
4. 执行以下命令，将批量操作脚本下载到root目录下。 **curl *URL* \> \~/batch_resize_ecs_modify_linux.py**
   其中，*URL*为批量操作的执行脚本。
   请根据云服务器所在区域选择脚本的下载地址：
   - 华东-上海二：<https://cn-east-2-server-resize.obs.cn-east-2.myhuaweicloud.com/linux/server_resize/batch_resize_ecs_modify_linux.py>
   
   - 华北-北京一：<https://cn-north-1-server-resize.obs.cn-north-1.myhuaweicloud.com/linux/server_resize/batch_resize_ecs_modify_linux.py>
   
   - 华南-广州：<https://cn-south-1-server-resize.obs.cn-south-1.myhuaweicloud.com/linux/server_resize/batch_resize_ecs_modify_linux.py>
    
5. 执行以下命令，新建并编辑host_list.txt，按i进入编辑模式。
   **vi host_list.txt**
   ![](https://support.huaweicloud.com/usermanual-ecs/public_sys-resources/caution_3.0-zh-cn.png)
   请将驱动安装脚本、批量操作执行脚本、host_list.txt文件放在一个目录下。
   
6. 将需要自动安装驱动的云服务器的相关信息填写到host_list.txt文件中。
   文件填写格式与登录待切换弹性云服务器的方式需要匹配。
   - 使用密钥对方式鉴权的云服务器，填写方式如下：
     ![](https://support.huaweicloud.com/usermanual-ecs/public_sys-resources/caution_3.0-zh-cn.png)
     - 使用密钥对方式鉴权的云服务器，请将创建弹性云服务器时保存的私钥文件，上传至与host_list.txt同一个文件夹下。
     
     - 使用密钥对方式鉴权的云服务器，请确保私钥文件的权限为400。 **chmod 400** ***私钥文件***
       
      
     每行仅需填写云服务器IP地址。
     示例：
     ```
     192.168.1.10
     192.168.1.11
     ```
     
   
   - 使用密码方式登录的云服务器，填写方式如下： 请严格按照每行**ip,root** **用户密码**，中间以英文逗号隔开的格式填写。
     示例：
     ```
     192.168.1.10,'**********'
     192.168.1.11,'**********'
     ```
     
   
   
   确认输入完毕后，按**Esc** 退出编辑模式，输入**:wq**保存退出。
   
7. 运行批量执行操作脚本"batch_resize_ecs_modify_linux.py"，该脚本会批量对配置好的云服务器进行自动检查并安装原生xen-pv驱动、virtio驱动。
   1. 执行以下命令，对配置好的云服务器安装驱动。
      - 密钥对鉴权方式的服务器 如果私钥文件与批量操作执行脚本在一个目录下，则直接指定私钥文件名称即可。
        **python batch_resize_ecs_modify_linux.py *{*** ***私钥文件路径/私钥文件名称** **}***
        图2运行脚本   
        ![](https://support.huaweicloud.com/usermanual-ecs/zh-cn_image_0291002831.jpg "点击放大") 
      
      - 密码方式鉴权的服务器。 **python batch_resize_ecs_modify_linux.py**
        图3运行脚本   
        ![](https://support.huaweicloud.com/usermanual-ecs/zh-cn_image_0291002944.jpg "点击放大") 
       
    
8. 查看运行结果。 请耐心等待脚本运行结束，脚本在确认驱动安装成功后会自动为云服务器设置标签，标记驱动安装成功，没有设置标签的云服务器无法执行变更规格的操作。
   运行结果如[图4]所示。[表2]，列举了常见的运行结果和说明。
   图4运行成功   
   ![](https://support.huaweicloud.com/usermanual-ecs/zh-cn_image_0291022599.jpg "点击放大")
   如果安装失败请参考[XEN实例变更为KVM实例（Linux-手动配置）](https://support.huaweicloud.com/usermanual-ecs/ecs_03_0163.html)手动配置或者联系客服寻求技术支持。
    表2运行结果对照表 
   | 回显信息                                                                     | 说明                                                                                                                                                        |
   |:---|:---|
   | Total: {数量} Success: {数量} Failed: 0                                       | 全部弹性云主机完成检查并安装驱动成功。                                                                                                                                          |
   | Total: {数量} Success: {数量} Failed: {数量}                                   | Failed数量不为零，表示部分弹性云主机检查或者安装驱动失败，可按照提示查看日志(logs/exec_origin.log)对应主机执行失败的原因。                                                                               |
   | Please check the format of host_list.txt                                 | host_list.txt文件填写不符合要求，需要重新按照步骤[6]要求进行填写。                                                                                      |
   | \[Error\] resize_ecs_modify_linux.sh not found.                          | 步骤[6]中的驱动安装脚本尚未下载，需要重新操作下载。                                                                                                 |
   | Host(s) is unreachable, please check the network or password of user root. | 当前云服务器无法访问以上弹性云服务器，需要确认网络是否互通，或者host_list.txt文件中配置的root用户密码是否正确。                                                                                          |
   | \[Error\] host_list.txt not found.                                      | host_list.txt文件尚未创建，需要按照步骤[6]进行操作。                                                                                           |
   | \[Error\] key-file {私钥文件} not found.                                    | 指定的私钥文件不存在，请确定私钥文件存在后，重新按照步骤[6]操作。 或者使用密码方式登录，重新按照操作流程步骤[6]进行操作。 |
   | Please confirm that the ansible has been installed.                      | 步骤[2]中的运行所需依赖尚未安装，需要执行命令进行安装。                                                                                               |
      
   
![](https://support.huaweicloud.com/usermanual-ecs/public_sys-resources/note_3.0-zh-cn.png)
- 驱动安装成功后，请妥善处理host_list.txt中的弹性虚拟机密码以及私钥文件，防止出现环境密码、私钥文件泄露。
- 请务必确保云服务器配置成功，否则，可能会导致变更规格后的弹性云服务器不可用。如果运行失败或者 ，请参考[XEN实例变更为KVM实例（Linux-手动配置）](https://support.huaweicloud.com/usermanual-ecs/ecs_03_0163.html)。
- 脚本安装失败常见问题请参考：
  - [CentOS5操作系统云服务器执行驱动安装脚本失败怎么办？](https://support.huaweicloud.com/ecs_faq/ecs_faq_0616.html)
  
  - [Linux云服务器变更规格时执行驱动安装脚本失败怎么办？](https://support.huaweicloud.com/ecs_faq/ecs_faq_0617.html)
   
 
 #### 步骤3：变更规格
1. 登录[ECS控制台](https://console.huaweicloud.com/ecm/?#/ecs/manager/vmList)，进入弹性云服务器列表页面。
2. 在弹性云服务器列表，查询待变更弹性云服务器状态。 如果不是关机状态，单击"操作"列下的"更多 \> 关机"。
   
3. 单击"操作"列下的"更多 \> 变更规格"。 系统进入"云服务器变更规格"页面。
   
4. 根据界面提示，选择变更后的云服务器类型、vCPU和内存。
5. （可选）选择"专属主机"。 对于在专属主机上创建的弹性云服务器，系统支持更换云服务器所在的专属主机。
   此时，您可以单击下拉列表，选择更换专属主机。如果下拉列表中无可用的专属主机，说明专属主机所剩资源不足，不能用于创建变更规格后的弹性云服务器。
   
6. 勾选复选框"我确认已完成对弹性云服务器的配置"，确认已完成[步骤2：批量安装和配置驱动]。
7. 单击"下一步"。
8. 确认变更后的配置无误后，阅读并勾选同意服务协议，单击"提交申请"。
   ![](https://support.huaweicloud.com/usermanual-ecs/public_sys-resources/note_3.0-zh-cn.png)
   - 单击"提交申请"后云平台自动为您制作系统盘快照。变更规格完成后，如已确认业务恢复正常，请在快照页面手动删除快照。
   
   - 如果变更规格失败后，弹性云服务器无法使用，可能会需要重装操作系统来恢复云服务器，请注意重装操作系统会清除系统盘数据，但不影响数据盘的数据。
     
 
 #### （可选）步骤4：检查磁盘挂载状态
XEN实例变更为KVM实例时，可能会发生磁盘脱机，因此，变更规格后，需检查磁盘挂载状态是否正常。如果正常，则变更成功。
- Linux弹性云服务器 详细操作请参考[Linux云服务器变更规格后数据盘脱机怎么办？](https://support.huaweicloud.com/ecs_faq/ecs_faq_0619.html)
  
 
#### 后续处理
如果控制台上云服务器列表页，显示弹性云服务器已变更规格成功，但是远程登录云服务器后，操作系统无法启动，此时，请联系客服进行恢复，或重装操作系统进行恢复。重装操作系统的操作指导，请参见[重装操作系统](https://support.huaweicloud.com/usermanual-ecs/zh-cn_topic_0024911405.html)。
![](https://support.huaweicloud.com/usermanual-ecs/public_sys-resources/note_3.0-zh-cn.png)
重装操作系统会清除系统盘数据，但不影响数据盘的数据。
变更规格完成后，如已确认业务恢复正常，请在快照页面手动删除快照。
