虚拟化和系统迁移方法.docx
《虚拟化和系统迁移方法.docx》由会员分享,可在线阅读,更多相关《虚拟化和系统迁移方法.docx(14页珍藏版)》请在冰豆网上搜索。
虚拟化和系统迁移方法
虚拟化和系统迁移工具
在将物理服务器迁移到虚拟机时,可能会和在物理服务器之间迁移一样,受到一些限制。
例如,您不能够将一个64位系统映像迁移到一个32位平台。
在将Windows映像恢复到虚拟机时,很可能还会遇到HardwareAbstractLayer(HAL)问题。
许多免费或商业工具可以帮助实现物理和虚拟世界之间的系统迁移(PlateSpinPowerConvert、VMwareConvert、Microsoft®VirtualServerMigrationTookit和克隆软件);这些迁移工具还可以解决由于物理服务器和虚拟机之间的硬件不匹配引起的问题。
它们的作用之一就是在系统启动阶段将必需的驱动程序传递给操作系统内核并初始化这些驱动程序。
当然,大部分P2V工具的作用远不止仅执行单机迁移。
VMwareServer是一个免费的专用平台,在Linux和Windows主机上提供了对多种客户操作系统类型的支持(包括Windows、Linux、Solaris等等)。
作为一种全面的虚拟化解决方案,运行在hypervisor上的虚拟机监视器(VMM)为虚拟机提供了所有可用的硬件资源类型,包括虚拟BIOS、虚拟内存、虚拟SCSI控制器、虚拟网卡,等等。
由于客户操作系统与底层硬件完全分离,因此不需要修改就可以运行。
现在,让我们看看如何使用ClonezillaLive将Windows系统映像克隆到VMwareServer托管的虚拟机上,从而实现P2V迁移。
回页首
步骤1.克隆系统分区
Clonezilla技巧
要实现成功的迁移,在遵循本文介绍的步骤时,应当牢记这些技巧,并作为总结经验加以参考。
1.确保映像库具有足够的空间来存储分区内的数据。
2.可以将映像划分到多个卷文件,避免最大文件大小的限制。
3.Clonezilla不支持从大硬盘和分区中将映像恢复到较小的磁盘和分区。
4.如果ClonezillaLive对所有VMware版本都不支持SCSI磁盘,那么在创建VM时应使用IDE类型。
5.要在ClonezillaLiveshell下恢复映像,您需要以根用户身份登录。
6.要恢复被克隆的分区映像,目标虚拟磁盘必须以格式化的形式呈现给Clonezilla。
7.要成功地实现Windows®迁移,您需要精通HAL和并了解sysprep等工具。
首先,从ClonezillaLiveCD启动物理服务器。
Clonezilla提供了一些启动选项。
例如,可以选择ToRAM选项将DebianLive和Clonezilla加载到内存中,并将CD-ROM用于其他应用。
选择默认设置,您将得到语言和键盘布局设置。
使用默认设置。
接下来选择是否使用基于GUI的备份和恢复向导或Debianshell,用于高级访问和操作。
除非您是一名有经验的用户,否则使用Start_Clonezilla选项。
您将在将映像恢复到虚拟机中了解如何使用shell。
现在列出了两个有关克隆类型的选项:
∙device-device用于设备到设备之间的直接克隆。
∙device-image用于设备到映像之间的备份。
由于您要将一个物理系统转换为一个虚拟机,因此device-image类型是最佳选择。
接下来,必须选择在其中写入或从其中恢复备份映像的映像目录,如图1所示。
ssh-server、samba-server和nfs-server选项适合有网络连接但本地磁盘空闲空间或备份映像不可用的情况。
在我们的例子中,我们将克隆系统分区并将其保存到相同硬盘中的另一个分区中。
如果选择local_dev,您将有机会选择USB设备作为Clonezilla映像库。
图1.映像库选项
您现在需要选择将被链接到映像库/home/partimag中的位置,这取决于内部和外部的(USB)插入磁盘。
映像实际上是位于/home/partimag下目录中,它包含了所有有关映像的信息和数据文件。
在本例中,系统分区/dev/sda1将被作为映像保存到/dev/sda5中。
因此,将选择sda5并将其挂载为/home/partimag/,如图2所示。
图2.映像分区
确保映像库具有足够的空闲空间来存储系统分区内的数据。
如图3所示,可以为映像设备中的Clonezilla映像确认主目录。
图3.Clonezilla模式
图2还展示了额外的命令信息,帮助使用关于/home/partimag空间使用报告挂载映像设备和当前的文件系统布局。
在执行这一步骤之后,选择计划在ClonezillaLive中使用的模式。
可以选择保存或恢复整个本地磁盘或单独的分区。
对于磁盘备份,选择第三项saveparts。
选择模式之后,将要求您输入要进行备份的映像名(Sys01-2009-02-23-img)和源设备(/dev/sda1)。
下面的图展示了映像创建过程的高级选项。
由于Clonezilla支持不同的文件系统格式,并且集成了ntfsclone、partclone、partimage和dd等分区克隆工具,可以为当前的文件系统设置要使用的工具的优先顺序。
如果不了解将要克隆的文件系统的话,那么保持默认设置。
-q(ntfsclone>partimage>dd)也是默认设置,非常适合我们的基于NTFS的备份。
图4展示了可以进行设置以优化克隆的其他参数。
图4.其他Clonezilla高级参数:
克隆
对于Windows系统映像,-rm-win-swap-hib选项非常有助于保存备份和恢复时间,它的做法是排除swap和hibernation文件。
如果需要将保存后的映像传递到另一个位置,并且需要在恢复映像时检查映像的完整性,那么建议使用-gm或-gs选项。
ClonezillaLive还允许您在选择压缩方法时考虑到效率和期间的一些注意事项。
一些文件系统不支持大于2G的文件,因此,可以通过将映像分解到多个卷文件,从而设置最大文件大小。
最后,可以使用-p参数指定一个动作,表示要在克隆过程结束后执行的动作。
完成设置后,现在来查看操作并确认您的选择。
备份和恢复过程都使用ocs-sr工具,而带有相应参数的ocs-sr命令则作为记录提供,供以后使用。
现在,坐下来等待备份完成。
完成备份并启动系统之后,将映像目录从物理服务器传递到一个位置,这个位置将作为虚拟机的恢复源。
回页首
步骤2.准备虚拟机
从现在开始,我们将在VMwareServer内创建一个虚拟机作为系统迁移的目标。
确保主机环境与VMwareServer兼容并能满足guest操作系统需求和限制。
由于虚拟机将使用与主机相同的处理器作为基准,因此要求我们克隆的主机环境和物理服务器具有兼容的处理器类型。
首先,使用VMwareNewVirtualMachineWizard创建虚拟机。
在此过程中,选择和物理服务器中已克隆的操作系统相匹配的操作系统版本。
同时,需要创建一个虚拟磁盘,它的大小必须等于或大于原始的已克隆的系统所在的分区,因为Clonezilla不支持将映像从大硬盘或分区恢复到更小的硬盘或分区。
然而,在ClonezillaLive恢复过程中,您将能够根据初始磁盘布局将映像恢复到大硬盘。
图5.指定虚拟机的磁盘容量
注意:
对于早期VMwareServer版本,ClonezillaLive内核可能不支持SCSI磁盘。
在这种情况下,创建虚拟机时使用IDE类型的虚拟磁盘。
其次,将虚拟CD-ROM设备修改为对虚拟机使用ClonezillaLiveISO映像,如图6所示。
图6.在VM中使用ClonezillaLiveISO映像
第三,将前面小节中的系统映像文件放到主机服务器的备用磁盘中,即PhysicalDrive1的Partition0。
由于VMwareServer支持在主机系统上进行直通式(pass-through)SCSI驱动访问,因此可以为虚拟机添加另一个磁盘,将PhysicalDrive1的Partition0直接附加到VMware中。
在恢复阶段,这个设备将呈现给/home/partimag。
图7.将系统映像附加到分区
现在,您已经创建了一个精简的虚拟机,接下来将从ClonezillaLive启动虚拟机。
回页首
步骤3.将映像恢复到虚拟机
当虚拟机从ClonezillaLive映像启动之后,ClonezillaLive为恢复提供了和备份过程相同的基于GUI的向导界面,引导您选择模式。
在本例中,我们将直接输入基于Debian的ClonezillaLiveshell,以选择一个手动恢复。
图8.ClonezillaLiveshell
要在ClonezillaLiveshell下恢复映像,必须以根用户身份登录;随后可以完全地访问Clonezilla。
清单1.成为根用户
user@debian:
~$sudosu-
debian:
~#
现在,需要为恢复确定一个目标磁盘以及将要放置源映像的磁盘。
清单2展示了两个本地硬盘。
清单2.查看磁盘信息
debian:
~#fdisk-l
Disk/dev/sda:
42.9GB,42949672960bytes
255heads,63sectors/track,5221cylinders
Units=cylindersof16065*512=8225280bytes
Diskidentifier:
0x00000000
Disk/dev/sdadoesn'tcontainavalidpartitiontable
Disk/dev/sdb:
160.0GB,160039272960bytes
255heads,63sectors/track,19457cylinders
Units=cylindersof16065*512=8225280bytes
Diskidentifier:
0xa0bea0be
DeviceBootStartEndBlocksIdSystem
/dev/sdb11194571562883217HPFS/NTFS
我们将/dev/sda虚拟磁盘创建为恢复的目标磁盘;它尚未格式化。
/dev/sdb是主机服务器的PhysicalDrive1,我们将把它作为直通式SCSI磁盘直接附加到虚拟机;我们将在其上放置克隆后的系统映像。
要恢复克隆后的分区映像,必须将格式化后的目标虚拟磁盘提供给Clonezilla。
您可以使用fdisk工具将标签写到虚拟磁盘上。
该过程如清单3所示。
清单3.格式化目标磁盘
#fdisk/dev/sda
DevicecontainsneitheravalidDOSpartitiontable,norSun,SGIorOSFdisklabel
BuildinganewDOSdisklabelwithdiskidentifier0xee2955bc.
Changeswillremaininmemoryonly,untilyoudecidetowritethem.
Afterthat,ofcourse,thepreviouscontentwon'tberecoverable.
Thenumberofcylindersforthisdiskissetto5221.
Thereisnothingwrongwiththat,butthisislargerthan1024,
andcouldincertainsetupscauseproblemswith:
1)softwarethatrunsatboottime(e.g.,oldversionsofLILO)
2)bootingandpartitioningsoftwarefromotherOSs
(e.g.,DOSFDISK,OS/2FDISK)
Warning:
invalidflag0x0000ofpartitiontable4willbecorrectedbyw(rite)
Command(mforhelp):
Commandaction
eextended
pprimarypartition(1-4)
p
Partitionnumber(1-4):
1
Firstcylinder(1-5221,default1):
Usingdefaultvalue1
Lastcylinderor+sizeor+sizeMor+sizeK(1-5221,default5221):
Usingdefaultvalue5221
Command(mforhelp):
Command(mforhelp):
w
Thepartitiontablehasbeenaltered!
Callingioctl()tore-readpartitiontable.
[866.679048]sd0:
0:
0:
0:
[sda]83886080512-bytehardwaresectors(42950MB)
[866.682658]sd0:
0:
0:
0:
[sda]WriteProtectisoff
[866.683795]sd0:
0:
0:
0:
[sda]Cachedataunavailable
[866.683822]sd0:
0:
0:
0:
[sda]Assumingdrivecache:
writethrough
[866.686443]sda:
sda1
[866.695530]sd0:
0:
0:
0:
[sda]83886080512-bytehardwaresectors(42950MB)
[866.698278]sd0:
0:
0:
0:
[sda]WriteProtectisoff
[866.699422]sd0:
0:
0:
0:
[sda]Cachedataunavailable
[866.699495]sd0:
0:
0:
0:
[sda]Assumingdrivecache:
writethrough
[868.702058]sda:
sda1
Syncingdisks.
我们可以使用清单3所示的默认值。
这一次,不需要关心分区类型,因为Clonezilla将在映像恢复过程中重新创建它。
和备份过程一样,必须将一个可写设备或空间挂载为/home/partimag,Clonezilla随后将在/home/partimag下搜索克隆后的映像目录。
如果要将分区/dev/sdb1中的映像恢复到新创建的分区/dev/sda1中,必须使用写权限将/dev/sdb1挂载到/home/partimag。
注意,/dev/sdb1在主机服务器上是一个NTFS文件系统,它可能是公开的,因此要成功地挂载它,可能需要使用一个强制选项。
参见清单4。
清单4.将映像设备挂载到/home/partimag
debian:
~#mount-tntfs-3g/dev/sdb1/home/partimag-oforce
debian:
~#ls/home/partimag
Sys01-2009-02-23-img
当准备好/home/partimag和目标分区后,需要选择一种最佳方式来为您的环境恢复映像。
和备份一样,Clonezilla也为映像恢复提供了各种高级和灵活的选项。
图9展示了恢复参数及其含义。
图9.更多Clonezilla高级参数:
恢复
对于Windows系统映像恢复,必须将启动头部(header)写入到目标磁盘中。
为此,推荐使用-j0(使用dd创建分区表)和-t1(客户机从syslinux恢复预构建的MBR)。
hnXPC(X为0或1)选项可以确保您的环境拥有一个惟一的Windows机器名。
如果您不希望保持当前的目标分区布局,也可以尝试使用-k1或另一个分区参数来创建不同的分区表。
清单5从/home/partimag(/dev/sdb1)将映像Sys01-2009-02-23-img恢复到目标设备/dev/sda1中。
清单5.使用命令行恢复映像
debian:
~#/opt/drbl/sbin/ocs-sr-e1auto-c-t1-r-j3-cm-j0-prebootrestoreparts
"Sys01-2009-02-23-img""sda1"
图10展示了在确认选项后您将收到的摘要和进度更新。
在此之后,克隆后的系统将被放到虚拟机中。
图10.Clonezilla恢复摘要和进度
恢复完成后,可以看到系统将从虚拟机中启动。
为了获得更好的性能,需要为虚拟操作系统安装VMwareTools。
要确保在Windows上成功完成迁移,应当精通HAL并能够使用sysprep等工具来配置虚拟服务器,使它支持虚拟机环境。