Redhat上进行物理机向虚拟机迁移P2V迁移

物理机迁移到虚拟机称之为P2V(Physical to Virtual Migration),虚拟化迁移技术分为P2V,V2V,V2P三种,按迁移方式又有静态迁移和动态迁移两种。今天说的是静态迁移。
P2V的主要工作是将物理机的磁盘设备制作成KVM的镜像,如使用dd命令(结合systemrescurecd引导物理机)或者磁盘/分区工具。但dd命令是磁盘的完整复制浪费空间,Linux的克隆工具clonezilla只克隆数据区。

1, 安装virt-p2v, sudo yum install virt-v2v  (virt-v2v包也包括了p2v的包)
2, [可选]创建kvm的存储池,sudo virsh pool-create-as kvm-storage-pool dir --target=/bak/images/storagepool
3, 文件/etc/virt-v2v.conf中的内容都被注释掉了,先去掉所有注释,然后将元素"<profile name="libvirt">"下的“<storage>default</storage>”改成“<storage> kvm-storage-pool </storage>"
4, 运行p2v server
   $ sudo virt-p2v-server
VIRT_P2V_SERVER 0.9.0 { MSG: METADATA OPTIONS PATH CONVERT LIST_PROFILES SET_PROFILE CONTAINER DATA } { CONT: RAW }
5, [可选]制作p2v客户端镜像启动盘(p2v client能从usb或者其它媒介如光盘中, 因为客户端是虚机,实际上什么也不用做,呆会设置虚机直接从iso启动即可。)
   rhel-6.x-p2v.iso是rhel安装盘的一部分,安装rhel之后位于/usr/share/virt-p2v/目录,因为我用的是fedora所以没有。
   我是从这个链接下载的:http://mirror.centos.org/centos/6/os/x86_64/Packages/virt-p2v-0.8.6-5.20120502.1.el6.centos.noarch.rpm
   如果需要制作USB启动盘的话,比如说U盘插进去了现在是/dev/sdb。
   sudo mount -o loop /usr/share/virt-p2v/virt-p2v-0.8.6-5.20120502.1.el6.centos.iso /mnt
   cd /mnt/LiveOS
   /livecd-iso-to-disk /usr/share/virt-p2v/virt-p2v-0.8.6-5.20120502.1.el6.centos.iso /dev/sdb
6, 创建kvm虚机,并设置从上面的virt-p2v.iso启动,因为我的kvm图形化工具virt-manager是用普通用户启动的,所以将/usr/share/virt-p2v目录也设置具有普通用户的权限。
   sudo chown -R hua:root /usr/share/virt-p2v
   选存储时选择在上面设置的kvm-storeage-pool中建立虚硬盘,并一定设置为raw格式。
7, 启动虚机,并设置虚机的网络信息,然后应该可以连接到上面的virt-p2v-server然后开始迁移的,但不知道为什么虚机在连接p2v server时总是报“conect failed, connection refused".
   原因是还要设置可以用root来登录ssh, 所以将/etc/ssh/sshd_config文件中的“PermitRootLogin yes”前的注释去掉,并重启ssh (sudo service sshd restart)
   上张图:


8,迁移成功之后,可以将raw格式的虚拟文件转换成qcow2格式,并上传到openstack的glance中。
  sudo qemu-img convert -f raw -O qcow2 test-p2v.raw test-p2v.qcow2
  glance add disk_format=qcow2 container_format=ovf name=fedora is_public=True < test-p2v.qcow2



下面看看Clonezilla

Clonezilla是一个类似于Ghost的磁盘克隆工具(Ghost只能克隆整个磁盘,它还结合了Partion Image的优点,也能克隆单个分区,哇,这个特性,现在做实验可以省不少空间了),它只克隆硬盘中被使用的块,从而节省了空间。它底层使用Partition Image, ntfscline, partcline和dd工具来克隆分区或磁盘,对于不能识别的文件系统(支持的文件系统包括:ext2, ext3, reiserfs, xfs, jfs, fat, ntfs),默认使用dd命令。也支持使用PXEBoot来进行Multicast克隆。
1, 下载Clonezilla, http://clonezilla.org/downloads/download.php?branch=stable
   并且UltraISO制作成启动U盘待用,我用的是usb-hdd+格式。
2, 如果是windows,在备份之前,也可下载https://www.virtualbox.org/raw-attachment/wiki/Migrate_Windows/MergeIDE.zip后双击MergeIDE.bat文件再重启,这样是为了让windows支持IDE设备。KVM的虚拟要设置为IDE来能顺利完成迁移,IDE设备是windows和linux沟通的最好桥梁.
  还可以为windows系统安装下列virtio驱动:
  硬盘驱动,http://download.longgeek.com/vmware/virtio-win-0.1-30.iso
  网卡驱动,http://download.longgeek.com/vmware/virtio-win-1.1.16.vfd
3, 用上面的Clonezilla启动U盘启动要迁移的物理机。
    它有device-image和device-device两种方式,后者是直接硬盘对硬盘对拷,前者是硬盘先转换成虚机的镜像格式,我们使用前者。
    但当用clonezilla的usb启动盘启动时报错:not a com32r image

    这很明显是usb启动盘没做成功,既然用ultraiso不行,我换成redhat光盘中自带的livecd-iso-to-disk命令创建usb启动盘一样报错。不清楚是什么原因,基本上过程就是这样子的,不弄了,以后有机会再搞。

    sudo ./livecd-iso-to-disk /bak/tools/clonezilla-live-2.1.2-20-amd64.iso /dev/sdb4

   

Reference: https://access.redhat.com/site/documentation/en-US/Red_Hat_Enterprise_Linux/6/html-single/V2V_Guide/index.html
### 物理机虚拟机之间无法互相Ping通的原因及解决方案 #### 一、常见原因分析 1. **网络模式设置错误** 如果虚拟机使用的网络模式不正确,可能会导致物理机虚拟机之间的通信失败。常见的 VMware 虚拟机支持三种主要的网络模式:桥接模式(Bridged)、NAT 模式以及仅主机模式(Host-only)。每种模式下的网络拓扑不同,可能导致 Ping 不通的情况[^2]。 2. **防火墙阻止通信** 防火墙规则可能限制了 ICMP 协议的数据包传输,从而导致无法通过 `ping` 测试网络连通性。无论是物理机还是虚拟机上的操作系统自带防火墙,都可能存在这样的配置问题。 3. **IP 地址冲突或不在同一网段** 在 NAT 或 Host-only 模式下,如果虚拟机物理机不在相同的 IP 子网中,则它们通常无法直接通信。即使在网络层面上可以路由数据包,在某些情况下仍然会因为子网划分而导致 Ping 不通[^4]。 4. **虚拟网络适配器配置不当** 虚拟机中的虚拟网络适配器需要正确绑定到对应的虚拟网络接口(如 VMnet0, VMnet8),并确保其 DHCP 功能正常工作以便获取有效的 IP 地址[^1]。 5. **DNS 和网关配置异常** 错误的 DNS 设置或默认网关配置也可能影响两台机器间的通讯能力。例如,在 NAT 模式下,虚拟机会被分配一个内部专用网络地址,并依赖于宿主机作为出口网关来访问外部资源[^3]。 6. **服务状态异常** 若负责处理网络请求的服务未运行(比如 Linux 中的 NetworkManager 或 Windows 下的相关组件),则即便其他条件满足也无法实现正常的网络交互。 --- #### 二、具体解决方法 ##### 方法一:确认当前所选网络模式是否适合需求场景 对于大多数希望让虚拟机能同时接入互联网又保持与本地主机良好互通的需求来说,“NAT”是一个不错的选择。然而需要注意的是,在此模式下两者并不处于相同的真实局域网之中——尽管可以通过特定手段模拟这种效果。 ```bash # 查看当前虚拟机网络模式 (以 VMware Tools 提供的功能为例) vmware-toolbox-cmd net list ``` ##### 方法二:调整防火墙策略允许ICMP流量通行 针对上述提到的安全防护措施阻碍了必要的探测信号传递这一情况,应当适当放宽相关限制: - 对于基于 RedHat/CentOS 的系统: ```bash firewall-cmd --add-rich-rule='rule family="ipv4" source address="<HOST_IP>" accept' --permanent && \ firewall-cmd --reload ``` - 对应 Microsoft 平台上操作如下所示: 打开高级安全Windows Defender防火墙界面 -> 新建入站规则 -> 自定义 -> 启用协议选项卡内的“ICMPv4”,最后完成向导即可生效。 ##### 方法三:核实双方IP参数一致性 利用命令工具分别查询各自的实际联网状况,重点对比以下几个方面是否存在差异之处: - 主机端执行以下指令获得基础信息: ```cmd ipconfig /all ``` - 客户端同样适用相似语法结构检索对应详情: ```bash ifconfig || ip addr show route -n cat /etc/resolv.conf ``` 假如发现目标对象未能遵循预期规划设定值范围之内的话,请及时予以修正更新至合理区间内去匹配实际应用环境要求。 ##### 方法四:重新初始化网络栈恢复初始态 当遇到难以定位确切故障源的时候,不妨尝试重置整个软件层面的基础架构部分看看能否解决问题。以下是几个典型平台的具体做法示范: - Ubuntu/Debian 类发行版: ```bash sudo systemctl restart networking.service sudo service network-manager restart ``` - RHEL/Fedora 系列产品线: ```bash nmcli con down "Wired connection 1"; sleep 5; nmcli con up "Wired connection 1" ``` - Window Server OS Family Member: 右键点击任务栏右下方图标选择属性窗口进入高级设置页面找到TCP/IP v4版本条目双击打开编辑对话框勾选自动获取IP/DNS服务器地址两项内容保存退出后再重复一遍先前测试动作验证最终成果如何变化。 --- ### 总结 综上所述,造成物理机虚拟机间相互不可达的主要因素涵盖了多个维度方向考量范畴,包括但不限于选用恰当类型的互联形式、妥善管理各类潜在干扰要素诸如防御机制屏蔽效应等多方面综合施策方能彻底根除此类顽疾现象发生几率降到最低限度以内达成稳定可靠的长期合作目的。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值