Linux P2V Azure
一:知识点:
将本地Hyper-V的VM上传至Windows Azure Virtual Machine
本章介绍的内容是将本地Hyper-V的VHD,上传到Azure数据中心,并且保留OS中的内容
1.首先在本地的Hyper-V上制作Server 2012的VHD,VHD Size必须为固定大小。
2.通过Azure Powershell上传 VHD
登陆Azure Management Portal。找到已经创建了叫的Storage Account,然后我们点击Add Container。
3.然后在弹出的New Container窗口中,我们设置NAME,访问方式设置为 Private(也可以设置为Public Container)
4.创建成功后,我们将来会通过访问这个URL,将本地的Server 2012 VHD上传至这个Blob Container。
5.然后就可以做接下来就正式进入上传VHD的过程了。
6.请先确认已经安装最新的Azure SDK,目前最新的SDK版本是2.0,http://www.windowsazure.com/en-us/downloads/进行下载,通过Web Installer进行安装。
安装完成,以管理员身份运CMD命令提示符,进入C:\Program Files\Microsoft SDKs\Windows Azure\.NET SDK\v2.0\bin目录,执行csupload.exe命令
7.同时也要下载Azure PowerShell工具通过http://go.microsoft.com/?linkid=9811175&clcid=0x409,继续下载PowerShell。随后通过Web Installer安装。安装完 Azure PowerShell,以管理员身份运行Azure PowerShell。
8.本地计算机和Azure建立可靠的安全连接。请在Azure PowerShell输入以下命令:
Get-AzurePublishSettingsFile
9.这时候计算机会弹出新的IE窗口,导航至Windows Azure。并要求我们输入登陆Azure的用户名和密码并登陆。
10.登陆完毕后,系统会要求我们保存扩展名为publishsettings的文件,我们保存至本地计算机的磁盘上。
11.然后我们回到Azure PowerShell窗口,继续输入以下命令:
Import-AzurePublishSettingsFile <PathToFile>
PathToFile就是我们保存步骤11中扩展名为publishsettings的文件位置(文件路径+文件名),比如我将该文件保存至D盘根目录,我们就输入以下命令:
Import-AzurePublishSettingsFile 'D:\Windows Azure MSDN - Visual Studio Ultimate-7-2-2013-credentials.publishsettings'
上面的命令实际上是将本地的publishsettings文件上传至Azure的Management Certificates。我们可以打开Azure Management Portal。点击Settings,并选择 Management Certificates,查看上传的publishsettings文件
这样,本地计算机就和Azure建立了可靠安全的链接了。接下来就可以上传我们的VHD文件了。
上传VHD文件在之前的内容提到过。主要以Azure PowerShell 的命令上传方式。
12.请在本地Azure PowerShell继续输入以下命令。
Add-AzureVhd -Destination <BlobStorageURL>/<YourImagesFolder>/<VHDName> -LocalFilePath <PathToVHDFile>
上面的参数说明是这样的:例如:
Add-AzureVhd -Destination 'http://leivms.blob.core.windows.net/uploadvm/Server2012_CHN_64bit.vhd' - LocalFilePath 'D:\VHD\Server2012_CHN_64bit\Server2012_CHN_64bit.vhd'
接下来的Azure PowerShell会做出上传VHD的操作。
13.最后,我们可以通过Azure Management Portal查看到上传成功的VHD
上传完毕后,我们可以在Azure Management Portal -> Azure Storage中观察结果:
上传之后将VHD外挂在VM 上
14.在Azure Management Portal中,选择Virtual Machine,Disk,选择Create A Disk 创建一个磁盘
15.在弹出的窗口中,选择VHD URL。之前存放vhd的路径
16.浏览到我们上传VHD的Storage路径:
17.然后输入其他相关信息。这点上传跟VHD上传文件不同,这个VHD是有操作系统存在的。
18.然后我们开始创建Azure Virtual Machine:
19.在mydisks 镜像中选择我们之前上传的操作系统。
20.Azure VM创建完毕后,我们通过远程桌面连接可以观察结果,VM的机器名与在本地Hyper-V上设置的一致。
CPU和内存是按照Azure VM Size来设置的,本地Hyper-V的设置已经不再有效。
二:知识点:
1. MA介绍:MA是为无缝迁移物理机、Vmware虚拟机、Amazon网页服务以及微软Hyper-V应用到Azure而设计的工具软件,迁移时,能够自动发现源工作流,自动发现远程客户端,网络适配器及配置。
2. Sysprep的作用:是一个“系统准备”工具,主要功能是在创建磁盘映像之前删除当前操作系统的所有唯一性信息,便于Ghost之类的工具复制磁盘映像。在VHD上创建模板的时候,会用到这个功能。
3. 创建并上传包含linux操作系统的VHD
在 Windows Azure 中创建的虚拟机运行您从支持的操作系统版本中选择的操作系统。您可以自定义虚拟机的操作系统设置以快速运行您的应用程序。您设置的配置存储在磁盘上。您可以使用虚拟硬盘 (VHD) 文件在 Windows Azure 中创建虚拟机。您可以选择使用映像库中的 VHD 文件创建虚拟机,也可以选择创建您自己的映像,然后以 VHD 文件的形式将其上载到 Windows Azure。
1)在hype-v 上创建虚拟机之后,然后在虚拟机上创建存储账户
2)准备要上载的映像,这里以linux的CentOS 为例
准备 CentOS 6.2 和 CentOS 6.3 操作系统
您必须在操作系统中完成特定的配置步骤才能使虚拟机在 Windows Azure 中运行。
1.在 Hyper-V 管理器的中间窗格中,选择虚拟机。
2.单击“连接”以打开该虚拟机的窗口。
3.通过运行以下命令卸载 NetworkManager:
rpm -e --nodeps NetworkManager
注意:如果未安装此包,则该命令将失败,并显示一条错误消息。这是所期望的情况。
4.在 /etc/sysconfig/ 目录中创建一个名为 network 的文件,该文件包含以下文本:
NETWORKING=yes HOSTNAME=localhost.localdomain
5.在 /etc/sysconfig/network-scripts/ 目录中创建一个名为 ifcfg-eth0 的文件,该文件包含以下文本:
DEVICE=eth0 ONBOOT=yes DHCP=yes BOOTPROTO=dhcp TYPE=Ethernet USERCTL=no PEERDNS=yes IPV6INIT=no
6.通过运行以下命令启用网络服务:
chkconfig network on
7.安装适用于 Linux Integration Services 的驱动程序。
a) 从下载中心获取包含适用于 Linux Integration Services 的驱动程序的 .iso 文件。
b) 在 Hyper-V 管理器中的“操作”窗格中,单击“设置”。
c) 在“硬件”窗格中,单击“IDE 控制器 1”。
d) 在“IDE 控制器”框中,单击“DVD 驱动器”,然后单击“添加”。
e) 选择“映像文件”,浏览到“Linux IC v3.2.iso”,然后单击“打开”。
f) 在“设置”页中,单击“确定”。
g) 单击“连接”以打开该虚拟机窗口。
h) 在命令提示符窗口中键入以下命令:
mount /dev/cdrom /media /media/install.sh` reboot
8.通过运行以下命令安装 python-pyasn1:
sudo yum install python-pyasn1
9.将其 /etc/yum.repos.d/CentOS-Base.repo 文件替换为以下文本
[openlogic] name=CentOS-$releasever - openlogic packages for $basearch baseurl=http://olcentgbl.trafficmanager.net/openlogic/$releasever/openlogic/$basearch/ enabled=1 gpgcheck=0 [base] name=CentOS-$releasever - Base baseurl=http://olcentgbl.trafficmanager.net/centos/$releasever/os/$basearch/ gpgcheck=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
#released updates [updates] name=CentOS-$releasever - Updates baseurl=http://olcentgbl.trafficmanager.net/centos/$releasever/updates/$basearch/ gpgcheck=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
#additional packages that may be useful [extras] name=CentOS-$releasever - Extras baseurl=http://olcentgbl.trafficmanager.net/centos/$releasever/extras/$basearch/ gpgcheck=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
#additional packages that extend functionality of existing packages [centosplus] name=CentOS-$releasever - Plus baseurl=http://olcentgbl.trafficmanager.net/centos/$releasever/centosplus/$basearch/ gpgcheck=1 enabled=0 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
#contrib - packages by Centos Users [contrib] name=CentOS-$releasever - Contrib baseurl=http://olcentgbl.trafficmanager.net/centos/$releasever/contrib/$basearch/ gpgcheck=1 enabled=0 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
10.将下列行添加到 /etc/yum.confhttp_caching=packagesexclude=kernel*
11.通过编辑文件“/etc/yum/pluginconf.d/fastestmirror.conf”禁用 yum 模块“fastestmirror”,并在 [main] 下面
设置 enabled=0
12.清除当前 Yum 元数据。您需要清除当前 yum 元数据:
yum clean all
13.通过运行以下命令来更新正在运行的 VM 的内核对于 CentOS 6.2,请执行:
sudo yum remove kernel-firmware
sudo yum --disableexcludes=main install kernel-2.6.32-279.14.1.el6.openlogic.x8664 kernel-firmware-2.6.32-279.14.1.el6.openlogic.x8664
对于 CentOS 6.3,请执行:yum install kernel-2.6.32-279.14.1.el6.openlogic.x86_64.rpm
14.确保您已修改内核引导行以包含以下内容的行
console=ttyS0(这将启用串行控制台输出)rootdelay=300
15.确保您内核中安装的所有 SCSI 设备都包含 300 秒或更长时间的 I/O 超时。
16.在 /etc/sudoers 中注释掉 Defaults targetpw
17.默认情况下,应包括 SSH 服务器
18.不应该在主机操作系统磁盘上创建 SWAP,如果需要,Linux 代理可请求在本地资源磁盘上创建 SWAP。可以适当地修改 /etc/waagent.conf。
19.通过运行以下命令来安装 Windows Azure Linux 代理 yum install WALinuxAgent-1.2-1
20.运行以下命令以取消设置虚拟机:
waagent –force –deprovision export HISTSIZE=0 logout
21.在 Hyper-V 管理器中单击“关闭”。