说到IP迁移,其实也是我很想写的一篇博客,这项技术,当时大概是2013年的时候学习的这项技术,只是一直没找到很好的机会去实践,前一阵子,笔者参与负责了一个研发项目,项目背景,使用MVMC 3.1 powershell 迁移vmware 到 hyper-v ,同时编写异构混合云门户.NET程序,调用MVMC的powershell在UI界面进行操作,然后采用变量的方式传入到程序。
在进行这项工作的时候,笔者发现一个问题,例如,我需要把虚拟机从ESXI5.1迁移至hyper-v3.0,我的ESXI是192.168.6.0这个网段,hyper-v3.0是192.168.2.0这个网段,当我在MVMC UI界面执行的时候,实质上,MVMC会去读取esxi里面虚拟机的配置,然后完全在hyper-v这面建立出来一个一模一样的虚拟机配置,但是,如果说esxi里面某台虚拟机的ip地址是192.168.6.1,当我把这台虚拟机迁移过来的时候,实质上,网卡信息是被清空的,当我把192.168.6.1这台虚拟机迁移到hyper-v平台下,hyper-v会重新为这台虚拟机挂载新的网卡,而不是完全把原来esxi里面虚拟机的网卡信息同步过来,所以造成的效果就是虚拟机迁移到hyper-v平台后,会重新通过hyper-v网段的dhcp获取到一个IP地址,如果hyper-v网段内没有DHCP,那么迁移过来的虚拟机会拿到一个169的IP地址。
这个是我在UI界面执行的效果,但是当我使用 MVMC powershell 进行迁移,例如我在ESXI5.1中,有一台虚拟机是192.168.6.1,那么迁移过来之后,hyper-v的网卡是 未连接状态,你需要手动去hyper-v中重新手动连接这块网卡,手动连接上之后,网卡信息也是被清空的,所以当网卡被连接上之后,也会在hyper-v网段,重新DHCP获取到一个hyper-v网段的地址,我不知道是不是由于我的环境中,vmware和hyper-v不在同一个网段所导致的,但是我猜想,更可能是发生在VMDK转VHDX那个过程,IP地址丢了,如果您测试发现同一网段下的迁移,IP地址可以同步过来,欢迎您告诉我结果。
那么,当时我就想,怎么能把vmware里面的网卡信息,能够迁移到hyper-v来呢,于是我立刻就想到了一个办法,这个办法需要用到三句powershell。
第一句,很简单,在MVMC转换的powershell后面,根据前面传入的变量,即迁移到hyper-v之后的hyper-v主机,添加一个挂载网卡的命令,先让迁移过来之后网卡挂载上再说。
第二句,就是用到了Windows 迁移工具,这条命令,我加在了转换前面的一个步骤,首先,转换需要确定Vmware里面需要转换那台虚拟机,那我就把这个转换虚拟机的变量,传入到后面的Windwos迁移工具模块,首先,获取到需要进行转换的虚拟机之后,使用远程会话连接进去,运行export-smigserversetting -ipconfig命令,把这台虚拟机的IP地址信息保存到一个网络路径下、
第三句,就是当迁移完成之后,也成功迁移虚拟机到hyper-v平台下,也成功执行了挂载网卡之后,在挂载网卡的后面,再加上一个powershell,import-smigserversetting -ipconfig,将之前保存到网络路径下的IP地址再迁移回来,这样子,vmware里面的网卡信息就可以同步到hyper-v里面了,从某些程度来说网卡信息的迁移,也减少了一定的宕机时间与风险性。
这个就是我想到的一个ip地址迁移,能用到的场景,或者比如说,当前我的2003服务器里面配置了很多块网卡,每块网卡又包括了很多设置,诸如DNS后缀,TCP/IP连接等等,我希望,在保留现有2003的网卡配置上,迁移到2012平台上,同时,我希望这个步骤可以自动化来完成,避免人工操作的错误,那么您也可以尝试使用Windows迁移工具进行IP信息的迁移。
OK,那么言归正传,先来帮助大家复习一下
1.Windwos迁移工具,如果需要迁移,首先,需要在来源端和目标端分别安装Windows迁移工具,才可以实施。
2.如果源端是2008R2及以上,可以直接通过添加Windows迁移工具功能,如果源端是2008/2003,需要在通过在目标端,生成可用于03端的迁移工具包,然后将迁移工具包复制到03上面进行安装,让03上面也可以具备Windows迁移工具功能。
3.由于Windwos迁移工具主要是在powershell工具下面进行执行,所以要求,来源端,至少安装powershell1.0、.NET2.0
4.使用Windows迁移工具,主要是执行导入/导出操作,在来源端导出,在目标端导入,这句话如果大家暂时不理解没关系,随着我们一步一步的深入,你就会看到。
介绍一下今天的环境。
1台Windows server 2003 VM虚拟环境
两块网卡 分别配置有IP地址
已通过迁移工具包安装Windows迁移工具
1台Windows server 2012R2 VM虚拟环境
两块网卡,目前都是DHCP到的IP地址
已通过服务器角色与功能安装Windows迁移工具
我要做的是将2003里面的两块网卡的所有信息迁移到2012R2对应的网卡下,之后彻底替代掉2003这台服务器的网络对外连接。
首先,我们可以打开server 2003的网卡信息进行查看
记录下这两块网卡的信息,第一块management网卡的IP地址是10.0.0.3,第二块Intranet网卡的信息是20.0.0.2,同时也请记下两块网卡的MAC地址
在源端Windows Server 2003上面,打开Windows迁移工具的powershell tools
执行命令如下
export-smigserversetting -ipconfig -path c:\ipconfig -verbose
这条命令的意义如下
export-smigserversetting 导出源端服务器配置
-ipconfig 导出源端服务器的IP地址信息
-path 导出文件的路径
-verbose 是否在输出端显示导出信息
当执行了这条命令之后,会提示让你输入一个password,这个password,主要是用于加密Mig迁移文件的,避免Mig文件被恶意使用。
随意输入一个你喜欢的密码之后,smigserver就会开始执行导出IP地址的操作,不光是IP地址,可以看到,整个网卡的所有信息,都会被导出出来。
执行完成导出命令后,我们将导出得到的 被加密的 mig文件,复制到2012R2服务器上
在2012R2服务器上打开Windows迁移工具powershell管理
执行import-smigserversetting
或者你也可以通过这条命令,在Windwos powershell中运行Add-PSSnapin,加载迁移工具的命令
Always 如果你想要使用命令提示符运行也是可以的,在命令提示符下输入以下命令即可
powershell.exe -PSConsoleFile %SystemRoot%\system32\ServerMigrationTools\ServerMigration.psc1
注意:如果你的迁移源端和目标端在同一个可以通讯的网络环境下,这里你就需要选择一个合适的时间点,将Windows server 2003里面的网卡禁用掉,总之一定在导入前执行,否则就会出现两个机器,ip地址冲突的情况!!!
这里我们选择在Windwos powershell中执行import-smigserversetting导入操作
Import-SmigServerSetting -ipconfig all -SourcePhysicalAddress "00-0C-29-E4-B5-92","00-0C-29-E4-B5-9C" -TargetPhysicalAddress "00-0C-29-5E-9E-84","00-0C-29-5E-9E-8E" -path c:\ipconfig -Verbose
这条命令的意义如下
Import-SmigServerSetting 导入服务器配置
-ipconfig 导入服务器配置信息类型,ipconfig为ip信息
all 为所有网卡
-SourcePhysicalAddress
-TargetPhysicalAddress
看到这里,我猜大家应该就会知道,Windows迁移工具,在做网卡信息映射的时候,是根据MAC地址进行映射的,比如说,2003里面第一块网卡,management的MAC地址信息是00-0C-29-E4-B5-92,2012R2里面第一块网卡的MAC地址信息是00-0C-29-5E-9E-84,Windows迁移工具,就会将MAC地址为00-0C-29-E4-B5-92的所有网卡信息,全部映射给00-0C-29-5E-9E-84。我这里用了一个英文的,号隔离开了多个MAC地址信息 ,代表我可以同时将多块网卡,按照顺序进行映射。
-path 要导入的mig文件路径
-verbose 输出导入信息
输入之前在导出时候设定的密码,采用密文输入
输入完成后,Windows迁移工具就会开始映射网卡信息
映射完成后,我们打开2012R2里面的网卡信息,发现03里面的多块网卡信息已经按照顺序映射了过来
到此结束,希望您能通过本篇博客得到收获,出发去见老朋友了!