Azure 虛擬機能很容易地導出 vhd 并遷移到各種環(huán)境中屹徘,包含本地及云端環(huán)境,或者遷移至其他區(qū)域沐旨。這為開發(fā)森逮、測試、擴展帶來了極大的便利磁携。因此本文以阿里云為例褒侧,闡述的是如何將 CentOS 6.8 的虛擬機遷移到 Azure 環(huán)境,同時能保存虛擬機內的數(shù)據(jù)颜武,不需重新部署應用的方法璃搜。
主要步驟
遷移的主要步驟分為:準備環(huán)境,調整服務器配置鳞上,導出磁盤这吻,上傳磁盤,建立新的虛擬機篙议。
在這幾個步驟中唾糯,調整服務器配置將對阿里云中的配置進行調整以符合 Azure 的需求,因此將會涉及一些影響在阿里云運行的調整鬼贱。有幾個推薦的做法:
如本地有 Hyper-V 機器这难,可先進行導出磁盤再進行調整服務器配置舟误。
因此,根據(jù)你的策略姻乓,流程可分為
準備環(huán)境=>調整服務器配置=>導出磁盤=>上傳磁盤=>建立新的虛擬機
準備環(huán)境=>導出磁盤=>調整服務器配置=>上傳磁盤=>建立新的虛擬機
由于修改服務配置可能造成云端服務中斷嵌溢,而在本地則需要額外的資源及較長的操作時間,你可根據(jù)需要決定選擇何種流程蹋岩,以下我們將針對各步驟進行詳細說明赖草。
準備環(huán)境
首先,推薦先對現(xiàn)有磁盤進行快照剪个。
接著秧骑,為了導出虛擬機的磁盤,我們需要掛載數(shù)據(jù)盤以存放導出的虛擬磁盤文件(.vhd),大小建議為需要備份的磁盤大小的兩倍乎折,詳細方法請參考掛載數(shù)據(jù)盤绒疗,值得提醒的是,除了在阿里云控制臺進行掛載笆檀,也需要在操作系統(tǒng)內進行配置忌堂。
最后,為了準備上傳磁盤的空間酗洒,需要在 Azure 上創(chuàng)建一個存儲賬戶,值得注意的是這個存儲賬戶必須與虛擬機是同一種類型枷遂,這邊采用的是資源管理模式(Azure Resource Manager)樱衷,進行存儲賬戶創(chuàng)建,同時請創(chuàng)建一個容器(container)酒唉,名為vhds矩桂。
調整服務器配置
在此步驟中,我們將進行服務器的調整以兼容于 Azure 的環(huán)境痪伦。
用具有管理員權限的賬戶登入阿里云的 Linux 虛擬機侄榴。
修改/etc/sysconfig/network:
復制
vi /etc/sysconfig/network
修改為
復制
NETWORKING=yes
HOSTNAME=localhost.localdomain
修改/etc/sysconfig/network-scripts/ifcfg-eth0:
復制
vi /etc/sysconfig/network-scripts/ifcfg-eth0
修改為
復制
DEVICE=eth0
ONBOOT=yes
BOOTPROTO=dhcp
TYPE=Ethernet
USERCTL=no
PEERDNS=yes
IPV6INIT=no
修改/etc/sysconfig/network-scripts/ifcfg-eth1,將其禁用:
復制
vi /etc/sysconfig/network-scripts/ifcfg-eth0
修改為
復制
DEVICE=eth1
#ONBOOT=yes
#BOOTPROTO=static
#IPADDR=1.1.1.1
#NETMASK=255.255.255.0
修改 udev 規(guī)則网沾,以避免產生以太網接口的靜態(tài)規(guī)則癞蚕。在 Azure 或 Hyper-V 中克隆虛擬機時,這些規(guī)則會引發(fā)問題辉哥。
復制
sudo ln -s /dev/null /etc/udev/rules.d/75-persistent-net-generator.rules
sudo rm -f /etc/udev/rules.d/70-persistent-net.rules
修改服務啟動的配置桦山,禁用阿里云的服務。
復制
sudo chkconfig network on
sudo chkconfig aegis off
sudo chkconfig aliyun-util off
更新鏡像庫
復制
wget -q https://aliyunmigration.blob.core.chinacloudapi.cn/packages/CentOS-Base.repo -O /etc/yum.repos.d/CentOS-Base.repo
修改/etc/yum.conf:
復制
vi /etc/yum.conf
添加一行
復制
http_caching=packages
清除 yum 元數(shù)據(jù)并進行更新:
復制
yum clean all
sudo yum -y update
安裝 Azure Linux 代理和依賴項:
復制
sudo yum install python-pyasn1 WALinuxAgent
在 grub 配置中修改內核引導行醋旦,以使其包含 Azure 的其他內核參數(shù)恒水。 為此,請在文本編輯器 (vi) 中打開/boot/grub/menu.lst饲齐,并確保默認內核包含以下參數(shù)钉凌。
復制
console=ttyS0 earlyprintk=ttyS0 rootdelay=300
編輯磁盤文件,將不需用到的磁盤禁用:
復制
vi /etc/fstab
在本例中捂人,將數(shù)據(jù)盤標注掉:
復制
#/dev/vdb1 /mnt ext3 defaults 0 0
至此御雕,你已完成 CentOS 6.8 上傳至 Azure 磁盤前的準備。
導出磁盤
在 Linux 中先慷,我們所使用的工具是dd饮笛,進行整個磁盤的備份,再備份完成后再用qemu工具论熙,轉成 vhd 的文件格式福青。
首先,執(zhí)行 dd 指令,這里我導出的磁盤為 /dev/vda无午,額外掛載作為備份的磁盤為 /mnt媒役,導出的文件為 aliyuncentos68.raw。
復制
dd if=/dev/vda of=/mnt/aliyuncentos68.raw bs=100M
等待 dd 完成后宪迟,安裝 qemu 工具酣衷。
復制
sudo yum install qemu-kvm
安裝完成后,進行格式轉換次泽,其中 /mnt 為剛才的備份目錄穿仪,aliyuncentos68.raw 為剛才的備份文件,aliyuncentos68.vhd 則為轉換后的文件意荤。
復制
cd /mnt
qemu-img convert -f raw -o subformat=fixed -O vpc aliyuncentos68.raw aliyuncentos68.vhd
等待直至轉換磁盤完成啊片。
上傳磁盤
在此我們將運用 Azure CLI 將剛才導出的磁盤上傳至先前創(chuàng)建的存儲賬戶中。
首先需要安裝 NodeJS:
復制
curl --silent --location https://rpm.nodesource.com/setup_6.x | bash -
sudo yum -y install nodejs
接著安裝 Azure CLI:
復制
npm install -g azure-cli
然后需要剛才在 Azure 創(chuàng)建的存儲賬戶信息及密鑰組成連結字符串玖像,如:
復制
DefaultEndpointsProtocol=https;BlobEndpoint=storagename.blob.core.chinacloudapi.cn;AccountName=storagename;AccountKey=storagekey
接著執(zhí)行指令進行上傳:
復制
cd /mnt
azure storage blob upload -c 'DefaultEndpointsProtocol=https;BlobEndpoint=storagename.blob.core.chinacloudapi.cn;AccountName=storagename;AccountKey=storagekey' -t page --container vhds -f aliyuncentos68.vhd
建立新的虛擬機
當上述步驟都已經完成紫谷,可以點選下面圖標根據(jù)你上傳的磁盤url創(chuàng)建機器。
在欄位中依序填入 VM 創(chuàng)建的地點捐寥,剛才上傳的系統(tǒng)磁盤 url笤昨,OS 類型(這邊應該選 Linux),VM 的大小及 VM 的名稱握恳。
接著點選創(chuàng)建瞒窒,虛擬機將開始進行部署。過一段時間之后睡互,便可以連結上你所遷移的機器了根竿。
立即訪問http://market.azure.cn