注意:如果你是第二代虚拟机,那就别看这个了,老老实实在Azure上重新创建吧,Azure不支持第二代虚拟机。
写在之前,对Azure基本不了解只知道名字,完全是工作需要,正好也是微软的东西,也就没什么抵触心理,况且还有微软的朋友帮忙协助,正好把握机会好好了解一下。虽然SharePoint都学习不过来,但相关联的东西做一定程度的了解也是好的。感谢之前汀栎和克明对我的帮助,克明给我的课程文档让我对Azure有了整体的认识,汀栎FYI给我的文章让我对迁移到大概过程有了把握,同时也感谢海峰哥的帮助。
本周一我刚开始正八经的了解和使用Azure,所以如果哪里错了,各位大神轻拍。本篇也是对我这几天大致工作的一个总结。虽然最后都白费了。。。但如果不是第二代虚拟机,肯定好使没有问题,所以记录下来供参考。
1. 创建一个虚拟网络
![](https://i-blog.csdnimg.cn/blog_migrate/d103867c159381092bf138bac6fbdc18.png)
![](https://i-blog.csdnimg.cn/blog_migrate/7ed338434965273360d91938d530c3d4.png)
2. 创建一个存储账户
之后在创建好的存储账户下新建一个容器用来保存上传到VHD,把容器的URL记录下来之后要用。
![](https://i-blog.csdnimg.cn/blog_migrate/d532f109c2968c03f67e4cdb830a4f62.png)
![](https://i-blog.csdnimg.cn/blog_migrate/2db80ad70e5dfd5b56809a03e12b98d9.png)
3. 创建一个云服务
![](https://i-blog.csdnimg.cn/blog_migrate/c087e9ab7ac01e07e5703636d6350a84.png)
![](https://i-blog.csdnimg.cn/blog_migrate/a642bfb05b7fd1f1e91b748d95a9c300.png)
前期创建的这几个东西在之后创建虚拟机的时候都会用得到的,因为自动生成的那个名字没什么规律,还是自己创建了吧。
4. 将本地Hyper-V的vhdx转换为vhd
在Hyper-V服务器打开PowerShell。输入如下命令:
在Hyper-V服务器打开PowerShell。输入如下命令:
Convert-VHD –Path “C:\Hyper\JXT-AD\Virtual Hard Disks\JXT-AD.vhdx” –DestinationPath c:\VHD-HyperV\JXT-AD.vhd
Convert-VHD –Path “C:\Hyper\JXT-DB\Virtual Hard Disks\JXT-DB.vhdx” –DestinationPath c:\VHD-HyperV\JXT-DB.vhd
Convert-VHD –Path “C:\Hyper\JXT-SP\Virtual Hard Disks\JXT-SP.vhdx” –DestinationPath c:\VHD-HyperV\JXT-SP.vhd
5. 配置Azure PowerShell到云端Azure订阅的远程管理
PS:Azure PowerShell的相关配置在目录\%appdata%\Windows Azure Powershell,如果乱了就删了重新弄。
(1) 首先下载Azure命令行工具(即Azure PowerShell)
(2) 访问
https://manage.windowsazure.cn/publishsettings/下载publishSettingFile
(3) 在Powershell中执行Import-AzurePublishSettingsFile将下载到本地的publishiSettingFile导入。命令格式形如:
Import-AzurePublishSettingsFile -PublishSettingsFile C:\MyTest.publishsettings
(4) 在Powershell中执行命令
Get-AzureStorageAccount | Select StorageAccountName
获得当前订阅的所有存储账户名称。
执行命令
Set-AzureSubscription -SubscriptionName <你的订阅名称(用记事本打开下载的publishSettingFile文件可查看Name)> -CurrentStorageAccount jteststorage(你的存储账户名称)
将某个存储账户设置为当前存储账户,以后需要执行存储空间的指令时,就可将相关的文件放到当前设置的存储账户中。如创建VM时,需要将VM的文件放置到存储空间。
6. 将本地转换完的VHD文件上传到Azure存储空间
在Powershell执行Add-AzureVHD命令将VHD文件上传到Azure的存储账户。命令格式如下:
Add-AzureVHD -Destination <你的存储账户下某个容器的URL/目的端VHD(即文件名)> -LocalFilePath “C:\MyTest.vhd” -NumberOfUploaderThreads 5
Add-AzureVHD命令可以自动将动态大小的VHD转换为固定大小的;对VHD的MD5 HASH进行分析,识别空块,只传输实际容量数据;自动将Blob Type设置为Page Blob。
![](https://i-blog.csdnimg.cn/blog_migrate/ffd420ecdb9452e4f7be29082dc93243.png)
上传完之后有完成提示,并可在Azure管理界面的存储-容器中看到。
![](https://i-blog.csdnimg.cn/blog_migrate/889da5e80e232a4dbc49a454562c293f.png)
在管理界面中看到上传完的大小是127G,这个是默认的大小,跟VHD本身的大小无关。
7. 在Powershell执行Add-AzureDisk命令将VHD文件转换为Windows Azure VM OS磁盘,命令格式如下:
Add-AzureDisk -OS Windows -MediaLocation “https://jteststorage.blob.core.chinacloudapi.cn/jtestcontainer/JXT-AD.vhd” -DiskName “JXT-AD”
![](https://i-blog.csdnimg.cn/blog_migrate/4f4d8b1b5178e1a34012fb2e8cdde08a.png)
![](https://i-blog.csdnimg.cn/blog_migrate/343603c00351e37b5ac068f689cebe0b.png)
不执行命令也可以使用Azure管理控制台中的创建Disk进行配置。
8. 创建Azure上的VM
选择虚拟机->创建虚拟机->从库中,选择并填写之前创建的信息一直到完成点击创建。
![](https://i-blog.csdnimg.cn/blog_migrate/a3ed0daf6bdc11c7c7aeda9a1bb7bdb0.png)
![](https://i-blog.csdnimg.cn/blog_migrate/de742d3010d7a45a366367b40be55116.png)
![](https://i-blog.csdnimg.cn/blog_migrate/d00ddbbfe6b9a2ff5d4daff67974e2c1.png)
创建完成后也就完成了迁移,需要的是虚拟机的D盘是临时存储盘,所以不要存储有用的数据。
遇到的问题:
1. 基于上传到VHD创建的虚拟机无法远程连接。
该问题只是现象,真实原因是第二代系统Azure根本就不支持!做到这里我很崩溃,意味着我之前的准备没什么用了,只能在Azure上重建虚拟机重新配置了。
2. DB服务器无法上传成功,报错信息:
Upload failed with exceptions: Elapsed time for upload: 00:28:51
当NumberOfUploaderThreads参数过大的话就可能出现此问题,把它调小点儿再试一下可能就好了。
1. 基于上传到VHD创建的虚拟机无法远程连接。
该问题只是现象,真实原因是第二代系统Azure根本就不支持!做到这里我很崩溃,意味着我之前的准备没什么用了,只能在Azure上重建虚拟机重新配置了。
2. DB服务器无法上传成功,报错信息:
Upload failed with exceptions: Elapsed time for upload: 00:28:51
当NumberOfUploaderThreads参数过大的话就可能出现此问题,把它调小点儿再试一下可能就好了。
最后在吐槽一下Hyper-V:
转换完的第二代的vhd 新建虚拟机第一代的话就启动不了,出错
选第二代的话 就没法选择vhd。。。
选第二代的话 就没法选择vhd。。。
新增:关于服务器IP的固定,参见张磊的
blog
关于VIP的固定,参加汀栎的
blog
在Azure的虚拟机管理那里可以配置公网与内网的映射,然后在SharePoint配置备用访问映射就可以了。