openstack 平台P2V迁移

目录

  • 【Openstack】P2V迁移

    • 一、前言
    • 二、前提准备
    • 三、操作步骤
      • 1、安装迁移中转机
      • 2、配置中转机
      • 3、创建存储池(可选)
      • 4、制作virt-p2v的 U盘引导启动工具
      • 5、操作物理机,进行迁移。
      • 6、优化参数
      • 7、上传到openstack 平台
    • 四、常见问题解决方法
      • 1、windows启动不了,显示为蓝屏
      • 解决方法:

【Openstack】P2V迁移

一、前言

P2V,含义为物理机转成虚拟机,并可以健康运行在openstack或其他虚拟化的环境中。

二、前提准备

  • 中转机操作系统:CentOS-7.6.1801
  • 中转机所需rpm安装包:virt-p2v 、virt-manager 、virt-v2v、 libguestfs-win-support、 libguestfs* 、virtio-win 以及它们相关的依赖包
  • 中转机针对windows 需要下载的文件:

    https://github.com/jakobadam/kvm-mergeide/archive/master.zip

  • 被迁移的物理机为windows 的时候 ,需要准备的文件:

    https://www.virtualbox.org/raw-attachment/wiki/Migrate_Windows/MergeIDE.zip

  • windows 虚拟机驱动程序

    https://fedorapeople.org/groups/virt/virtio-win/direct-downloads/archive-virtio/virtio-win-0.1.171-1/virtio-win-0.1.171.iso

  • virt-p2v.iso 镜像文件

    http://oirase.annexia.org/virt-p2v/RHEL-7.4-preview/virt-p2v-1.36.3-1.el7.iso

三、操作步骤

1、安装迁移中转机

安装步骤省略,

需要注意的是,一般被迁移的物理机,磁盘比较大,所以中转机的磁盘空间最好大于1T。

2、配置中转机

a)、制作的离线仓库

b)、安装软件包

# 安装kvm 虚拟化环境
yum install  virt-p2v virt-manager virt-v2v  virt-* libguestfs-win-support  libguestfs*  -y

# 安装virtio-win-0.1.141-1.noarch.rpm
yum localinstall virtio-win-0.1.141-1.noarch.rpm

3、创建存储池(可选)

[[email protected] ~]# mkdir /p2v-pool    #创建存储目录

[[email protected] ~]# chown root:root /p2v-pool    #修改属主属组

[[email protected] ~]# chmod 755 /p2v-pool     #更改权限

[[email protected] ~]# virsh pool-define-as P2vPool --type dir --target /p2v-pool     #定义存储池
Pool P2vPool defined

[[email protected] ~]# virsh pool-build P2vPool      #创建存储池
Pool P2vPool built

[[email protected] ~]# virsh pool-start P2vPool      #启动存储池
Pool P2vPool started

[[email protected] ~]# virsh pool-autostart P2vPool      #设置自动启动
Pool P2vPool marked as autostarted

[[email protected] ~]# virsh pool-info P2vPool     #查看存储池信息
Name:           P2vPool
UUID:           f7f2dc1c-67ab-48b9-891b-bb3698fbc040
State:          running
Persistent:     yes
Autostart:      yes
Capacity:       499.76 GiB
Allocation:     84.87 MiB
Available:      499.67 GiB

4、制作virt-p2v的 U盘引导启动工具

a)、下载virt-p2v镜像文件

下载地址: http://oirase.annexia.org/virt-p2v/RHEL-7.4-preview/virt-p2v-1.36.3-1.el7.iso

b)、使用 UltraISO 软件制作u盘启动盘

选择 写入硬盘映像。

目前virt-p2v-1.32.7-2.el7.iso此版本不支持centos6.x系统的迁移,可以使用virt-p2v-1.36.10-1.el7.iso或更新版本对centos6.x系统进行迁移

5、操作物理机,进行迁移。

将使用virt-p2v镜像制作的U盘启动盘来引导物理机。

进入到图形界面

1.填写中转机的IP地址

2.填写中转机的sshd服务端口号(默认为22)

3.填写中转机用户名

4.填写中转机对应用户名的密码

5.填写私有sshd服务密钥路径(可以不填写)

配置网络, 如果没有dhcp。需要手动配置一个静态ip地址,点击configure network ,删除所有默认的网络配置,手动创建新的

选择网卡设备,这里我们要选择可以 连接到 中转机的网卡设备

配置ip地址

通常这里保存之后,会有一会时间,网络才会配置上,可能需要进入到xterm ,查看一下。

点击Test connection,然后 测试通过后,点击Next。

设置迁移信息,

1.填写主机名称,cpu数量,内存容量(此项自定义)

2.选择管理工具(libvirt),生成镜像文件的输出位置(存储池名称)和输出格式(raw,qcow2)

填写 物理机转换为虚拟机的输出方式和格式,具体如下:

output to (-o): 选择输出模式,推荐选择 libvirt 模式或者 local 模式
output conn (-oc): 填写一个 kvm 虚拟化的域名 (可选)
output storage (-os): 填写一个存储位置,对应输出模式选择存储位置, libvirt 对应存储池名称, local 对应中转机的存储目录
output format (-of): 填写输出格式,推荐 qcow2 格式,如果存储位置空间够大,可以填写 raw 格式

3.选择需要转换的硬盘

4、要转换成虚拟机的时候,保留的物理网卡

配置好后,点击Start conversion。

以下是示例配置信息:

将转换成的虚拟机磁盘,保存到中转机的/p2v-pool,虚拟磁盘格式为qcow2 格式。

登录到中转机查看过程

根据被迁移的物理机的磁盘大小决定迁移时间,1.4T迁移了大概一天的时间,
#####会在中转机的/tmp目录下面,生成相关文件

查看迁移进度:
# tailf /tmp/virt-p2v-20191031-a2b1r92d/virt-v2v-conversion-log.txt

查看转换成功的虚拟机磁盘文件
[[email protected] /p2v-pool]# qemu-img info P2V-DISK-NAME  #切换到存储池目录查看磁盘信息

image: P2V-DISK-NAME
file format: qcow2
virtual size: 6.3G (6713966592 bytes)
disk size: 1.5G
cluster_size: 65536
Format specific information:
    compat: 1.1
    lazy refcounts: false
    refcount bits: 16
    corrupt: false

迁移过程中选择了libvirt模式,那么物理机的操作系统迁移过来后,会直接在中转机virt-manager中生成shut off状态的虚拟机。

6、优化参数

刚p2v迁移过来的虚拟机是无法正常使用的,需要进行优化参数,尤其是windows操作系统。另外如果要迁移到云平台上面,那么需要安装一些软件。

a)、优化windows

  • 更新驱动

    windows 驱动程序:

    https://fedorapeople.org/groups/virt/virtio-win/direct-downloads/archive-virtio/virtio-win-0.1.171-1/virtio-win-0.1.171.iso

    将准备好的windows 驱动iso镜像,上传到中转机上

     virt-install --name p2v-win-test--ram 8192 --vcpus 2 --boot hd --network network=default,model=virtio --disk path=/p2v-pool/win08-new-sda,format=raw,device=disk,bus=ide --disk path=/p2v-pool/virtio-win-0.1.141.iso,device=cdrom --graphics vnc,listen=0.0.0.0 --noautoconsole --os-type windows --os-variant win2k8r2

    使用vnc 软件远程登录到 虚拟机里面,

    # 查看虚拟机的vnc 端口
    virsh vncdisplay p2v-win-test
    :0
    
    #####使用 ip+vnc端口远程连接虚拟机。(ip为中转机的ip地址)

    更新驱动主要驱动

    
    #根据实际情况填写路径
    
    PnPutil.exe -i -a D:\viostor\2k8r2\amd64\viostor.inf
    PnPutil.exe -i -a D:\vioserial\2k8R2\amd64\vioser.inf
    PnPutil.exe -i -a D:\vioscsi\2k8R2\amd64\vioscsi.inf
    PnPutil.exe -i -a D:\viorng\2k8R2\amd64\viorng.inf

    更新其他驱动

  • 安装Balloon服务

    拷贝 D:\Balloon\2k8r2\amd64 (使用对应操作系统版本的Balloon下的文件)目录到 C:\Program Files 下并重命名为 Balloon

    打开PowerShell并运行命令: & ‘C:\Program Files\Balloon\blnsvr.exe‘ -i


    .png)

  • 安装qemu-guest-agent

  • 安装cloudbase-init

  • 最后一步比较重要,如果是迁移物理机,可以不用执行这一步,因为物理机就这一台,而且物理机一般硬盘比较大,我们要直接上传到openstack 平台作为虚拟机,而不是作为镜像。

b)、优化linux

  1. 安装基本软件包

    # 安装NetworkManager,用于网卡的自动发现及管理
    # 安装acpid,用于虚拟机的电源管理
    yum install -y NetworkManager acpid
    
    # 开机启动服务
    
    #centos6:
    chkconfig acpid on
    chkconfig NetworkManager on
    
    #centos7:
    systemctl enable acpid
    systemctl enable NetworkManager
  2. 安装cloud-init相关软件包
    # 安装cloud-init,用于注入密码/密钥和主机名
    # 安装qemu-guest-agent,用于在面板更新密码/密钥
    # 安装cloud-utils,用于更改虚拟机根分区大小(可选安装,需要启用epel源)
    yum install -y cloud-init qemu-guest-agent cloud-utils
    
    # 开机启动服务(有的linux发行版默认不开机自启这些服务,需要手动设置开机自启)
    
    #centos6:
    chkconfig cloud-init on
    chkconfig cloud-init-local on
    chkconfig cloud-config on
    chkconfig cloud-final on
    chkconfig qemu-ga on
    
    #centos7:
    systemctl enable cloud-init
    systemctl enable cloud-init-local
    systemctl enable cloud-config
    systemctl enable cloud-final
    systemctl enable qemu-guest-agent
  3. 修改配置文件

    /etc/cloud/cloud.cfg

    users:
     - default
    
    disable_root: 0
    ssh_pwauth:   1
    locale_configfile: /etc/sysconfig/i18n
    mount_default_fields: [~, ~, 'auto', 'defaults,nofail', '0', '2']
    resize_rootfs_tmp: /dev
    ssh_deletekeys:   0
    ssh_genkeytypes:  ~
    syslog_fix_perms: ~
    datasource_list: ['ConfigDrive','Ec2','NoCloud']
    datasource:
       Ec2:
         timeout: 2
         max_wait: 5
    cloud_init_modules:
     - migrator
     - seed_random
     - bootcmd
     - write-files
     - growpart
     - resizefs
     - set_hostname
     - update_hostname
     - update_etc_hosts
     - ca-certs
     - rsyslog
     - users-groups
     - ssh
    cloud_config_modules:
     - mounts
     - locale
     - set-passwords
     - timezone
     - puppet
     - chef
     - salt-minion
     - mcollective
     - disable-ec2-metadata
     - runcmd
    cloud_final_modules:
     - rightscale_userdata
     - scripts-per-once
     - scripts-per-boot
     - scripts-per-instance
     - scripts-user
     - ssh-authkey-fingerprints
     - keys-to-console
     - phone-home
     - final-message
    system_info:
      distro: rhel
      default_user:
        name: cloud-user
      paths:
        cloud_dir: /var/lib/cloud
        templates_dir: /etc/cloud/templates
      ssh_svcname: sshd
  4. 禁用默认的 zeroconf route
    echo "NOZEROCONF=yes" >> /etc/sysconfig/network
  5. 修改kernel启动参数,编辑/boot/grub/grub.conf,在kernel所在行添加console字段

    Note

    centos6需要配置此项

    kernel ... console=ttyS0,115200n8 console=tty0

7、上传到openstack 平台

a) 、更改虚拟机磁盘文件的格式

将转换后的qcow2文件转换成 raw 格式

[[email protected] ~]# qemu-img convert win08-new-sda.qcow2 -f qcow2 -O raw win08-new-sda.raw
# 如果已经转换成 raw 格式,就不需要进行这一步了

b)、 在openstack平台上新创建一个虚拟机,并将虚拟机关机。

此步骤略

c)、因为我的环境使用的是ceph 环境,所以进行如下操作

# rbd ls -l -p vms | grep <vm id>
1c10d2d5-0c90-420c-b07c-0719a91fb66d_disk 40960M images/[email protected]   2

# 其中《vm id》为平台所创建虚拟机的 id

d)、 删除新建虚拟机的磁盘文件,使用迁移过来的磁盘文件替换新建虚拟机的磁盘文件。

# rbd -p vms rm 1c10d2d5-0c90-420c-b07c-0719a91fb66d_disk
Removing image: 100% complete...done.

# rbd import -p vms P2V-DISK-NAME.raw 1c10d2d5-0c90-420c-b07c-0719a91fb66d_disk
rbd: --pool is deprecated for import, use --dest-pool
Importing image: 100% complete...done.

e)、回到openstack 平台,开启刚创建的虚拟机,进入系统后,为被迁移物理机的操作系统。

四、常见问题解决方法

1、windows启动不了,显示为蓝屏

解决方法:

1、删除虚拟机

virsh destroy win-08-new
virsh undefine win-08-new

2、修改启动参数,重新启动虚拟机

修改--disk path=/p2v-pool/win08-new-sda.raw,format=raw,device=disk,bus=virtio

为 --disk path=/p2v-pool/win08-new-sda.raw,format=raw,device=disk,bus=ide

 virt-install --name win-08-new --ram 8192 --vcpus 2 --boot hd --network network=default,model=virtio --disk path=/p2v-pool/win08-new-sda.raw,format=raw,device=disk,bus=ide --disk path=/p2v-pool/virtio-win-0.1.141.iso,device=cdrom --graphics vnc,listen=0.0.0.0 --noautoconsole --os-type windows --os-variant win2k8r2

3、在中转机上强制关闭虚拟机

virsh destroy  win-08-new

4、在中转机上执行如下操作

wget https://github.com/jakobadam/kvm-mergeide/archive/master.zip
unzip  master.zip
cd kvm-mergeide-master
virt-win-reg --merge win-08-new  mergeide.reg
# 注意:这条命令里的win-08-new是你之前创建kvm虚拟机的名称,virt-win-reg会自动搜索KVM中noactive的虚拟机名称,然后执行mergeide.reg

4、使用vnc软件远程连接,安装驱动(重要),具体步骤看优化windows 步骤。

# 启动虚拟机
virsh start win-08-new

更新驱动步骤省略

5、在中转机上为刚启动的windows虚拟机,动态添加磁盘 (重要)

# 创建空的虚拟机磁盘文件
dd if=/dev/zero  of=/opt/test.img bs=4k count=20
# 挂载文件
virsh attach-disk p2v-test-win2008-2 /opt/test.img  --targetbus=virtio vdb

6、使用vnc 进入设备管理器,查看磁盘控制器,可以看到redhar virtio scsi device 设备驱动,说明操作成功。

然后关闭虚拟机,删除虚拟机,将bus修改成 virtio ,重新启动虚拟机。

virsh destroy win-08-new
virsh undefine win-08-new

virt-install --name win-08-new --ram 8192 --vcpus 2 --boot hd --network network=default,model=virtio --disk path=/p2v-pool/win08-new-sda.raw,format=raw,device=disk,bus=vitio--disk path=/p2v-pool/virtio-win-0.1.141.iso,device=cdrom --graphics vnc,listen=0.0.0.0 --noautoconsole --os-type windows --os-variant win2k8r2

虚拟机正常启动,导致虚拟机无法正常启动,是因为没有vitio的驱动程序,所以bus为virtio的时候,系统无法启动。

参考文档:

https://blog.csdn.net/tianci_zzz/article/details/73896955

https://bugzilla.redhat.com/show_bug.cgi?id=1142993

原文地址:https://www.cnblogs.com/yanling-coder/p/11814045.html

时间: 2024-10-10 16:46:12

openstack 平台P2V迁移的相关文章

vmware P2V迁移同步实践

                         作者 :杨 坚 第一部分:P2V迁移 P2V迁移需要使用VMware vCenter Converter Standalone 5.0 ,该软件提供了一种易于使用的解决方案,可以从物理机(运行 Windows 和 Linux).其他虚拟机格式及第三方映像格式自动创建 VMware 虚拟机.通过简单易用的向导驱动界面和集中管理控制台,Converter Standalone 无需任何中断或停机便可快速而可靠地转换多台本地物理机和远程物理机.通过在数

Openstack平台搭建之第三天

Openstack平台搭建之第三天 Author :xxbAndy If you have any question ,please contact me by [email protected] or 371990778(qq) 注意:主控节点为server10.example.com: 新增nova节点为desktop10.example.com 在实验环境中已经对各个主机做了DNS解析 1.管理neutron节点服务,为nova-compute节点进行配置网络服务 [[email prot

转 【TTS】AIX平台数据库迁移到Linux--基于RMAN(真实环境)

[TTS]AIX平台数据库迁移到Linux--基于RMAN(真实环境) http://www.cnblogs.com/lhrbest/articles/5186933.html 各位技术爱好者,看完本文后,你可以掌握如下的技能,也可以学到一些其它你所不知道的知识,~O(∩_∩)O~: ① 异构平台下传输表空间的实施 ② 传输表空间基于表空间的read only和rman2种方式 ③ 平台字节序.自包含概念 ④ expdp/impdp的应用 ⑤ 数据库迁移一般情况下应该收集哪些信息及相应的脚本

Openstack平台搭建之第二天

Openstack平台搭建之第二天 环境准备:RHEL6.5 内存4G 硬盘70Gyum源的制定(分别制定三个yum源,其中前面三个是自己本地定制的yum源)baseurl=ftp://instructor.example.com/pub/rhel6.5/Serverbaseurl=ftp://instructor.example.com/pub/erratabaseurl=http://instructor.example.com/pub/OpenStack/baseurl=ftp://ftp

OpenStack平台功能性测试工具Tempest安装

社区对OpenStack平台功能性的测试工具采用Tempest,性能测试采用Rally. 1.什么是Tempest tempest├── api # API的测试集├── cli # OpenStack的命令行工具测试集├── common # 一些公共的工具类和函数├── scenario # 对OpenStack的常用场景进行测试,包括基本的启动VM,挂载volumn和网络配置等├── services # tempest自己实现的OpenStack API Client,自己实现是为了不让

Ubuntu搭建Openstack平台(kilo)(七.Dashboard)

安装Dashboard 参考文档:http://docs.openstack.org/mitaka/install-guide-ubuntu/horizon-install.html - 安装dashboard apt-get install openstack-dashboard 修改配置 vim /etc/openstack-dashboard/local_settings.py OPENSTACK_HOST = "controller" #允许所有的主机访问dashboard A

openstack平台虚拟机vip设置

虚拟机vip设置 1. 创建vip port 2. 更新端口信息 3. 给vip绑定浮动ip(vlan网络模式无需操作) openstack平台 port与mac地址是强绑定关系,所以当在虚拟机上启动keepalived vip时如果不做操作无法被外面通行到,作如下操作即可 1. 创建vip port source keystonerc_admin && neutron port-create --fixed-ip ip_address=${VIP_IP} ${NETID} 参数说明 ${

VMware虚拟机迁移到openstack平台

1.检查内核是否支持virtio驱动grep -i virtio /boot/config-$(uname -r)2.如果内核没有virtio驱动需要指定virtio驱动cp /boot/initramfs-$(uname -r).img /boot/initramfs-$(uname -r).img.bakmkinitrd -f --with=virtio_blk --with=virtio_pci /boot/initramfs-$(uname -r).img $(uname -r)3.关闭

VMware Converter Standalone 6.1.1 P2V迁移Linux一例

VMware vCenter Converter Standalone是P2V的重要工具,可以迁移Windows,Linux等操作系统,但是经常会出现一些细节问题造成无法成功,本文通过VMware vCenter Converter standalone6.1.1工具成功迁移DELL R310老旧服务器(Centos5.8 x64)到ESXi6.0U2虚拟化平台上,现通过虚拟机模拟与记录过程与处理方式. 一.注意事项: (1)必须要有root权限,可以SSH登录.   (2)网络没有问题,转换的