將 CentOS 6.8 的虛擬機遷移到 Azure 環境
主要步驟
遷移的主要步驟分爲:準備環境,調整服務器配置,導出磁盤,上傳磁盤,建立新的虛擬機。在這幾個步驟中,調整服務器配置將對阿里雲中的配置進行調整以符合
Azure
的需求,因此將會涉及一些影響在阿里雲運行的調整。有幾個推薦的做法:
在調整前進行快照,操作錯誤時可進行回滾
如本地有 Hyper-V 機器,可先進行導出磁盤再進行調整服務器配置
因此,根據你的策略,流程可分爲
準備環境=>調整服務器配置=>導出磁盤=>上傳磁盤=>建立新的虛擬機
準備環境=>導出磁盤=>調整服務器配置=>上傳磁盤=>建立新的虛擬機
由於修改服務配置可能造成雲端服務中斷,而在本地則需要額外的資源及較長的操作時間,你可根據需要決定選擇何種流程,以下我們將針對各步驟進行詳細說明。
準備環境
首先,推薦先對現有磁盤進行快照。
接着,爲了導出虛擬機的磁盤,我們需要掛載數據盤以存放導出的虛擬磁盤文件(.vhd),大小建議爲需要備份的磁盤大小的兩倍,詳細方法請參考掛載數據盤,值得提醒的是,除了在阿里雲控制檯進行掛載,也需要在操作系統內進行配置。
最後,爲了準備上傳磁盤的空間,需要在 Azure
上創建一個存儲賬戶,值得注意的是這個存儲賬戶必須與虛擬機是同一種類型,這邊採用的是資源管理模式(Azure
Resource Manager),進行存儲賬戶創建,同時請創建一個容器(container),名爲
vhds。
調整服務器配置
在此步驟中,我們將進行服務器的調整以兼容於 Azure 的環境。
1.用具有管理員權限的賬戶登入阿里雲的 Linux 虛擬機。
2.修改 /etc/sysconfig/network
vi /etc/sysconfig/network
修改爲:
NETWORKING=yes
HOSTNAME=localhost.localdomain
3.修改 /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
4.如果阿里主機上有eth1網卡,則我們需要修改eth1配置,如果沒有eth1,這步跳過。
修改 /etc/sysconfig/network-scripts/ifcfg-eth1,將其禁用。
vi /etc/sysconfig/network-scripts/ifcfg-eth1
修改爲:
DEVICE=eth1
#ONBOOT=yes
#BOOTPROTO=static
#IPADDR=1.1.1.1
#NETMASK=255.255.255.0
5.修改 udev 規則,以避免產生以太網接口的靜態規則。在 Azure 或 Hyper-V
中克隆虛擬機時,這些規則會引發問題:
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
6.修改服務啓動的配置,禁用阿里雲的服務。
sudo chkconfig network on
sudo chkconfig aegis off
sudo chkconfig aliyun-util off
7.更新鏡像庫。
wget -q https://aliyunmigration.blob.core.chinacloudapi.cn/packages/CentOS-Base.repo -O
/etc/yum.repos.d/CentOS-Base.repo
8.修改 /etc/yum.conf
vi /etc/yum.conf
添加一行:
http_caching=packages
9.清除 yum 元數據並進行更新。
yum clean all
sudo yum -y update
10.安裝 Azure Linux 代理和依賴項。
sudo yum install python-pyasn1 WALinuxAgent
11.在 grub 配置中修改內核引導行,以使其包含 Azure 的其他內核參數。
爲此,請在文本編輯器(vi)中打開 /boot/grub/menu.lst,並確保默認內核包含以下參數。
console=ttyS0 earlyprintk=ttyS0 rootdelay=300
12.編輯磁盤文件,除系統盤之外,將其他不需用到的磁盤禁用。
vi /etc/fstab
至此,你已完成 CentOS 6.8 上傳至 Azure 磁盤前的準備。
遷移大概步驟是:1、在阿里主機上增加一塊存儲vhd鏡像的磁盤並格式化掛載到/mnt/下
2、將阿里雲主機系統打包成RAW鏡像
3、在阿里雲主機上使用qemu工具將raw鏡像轉換成vhd格式
4、將vhd鏡像上傳到Azure的存儲賬號下
5、Azure上創建新磁盤,使用vhd鏡像創建虛機
1、在阿里主機上增加一塊存儲vhd鏡像的磁盤並格式化掛載到/mnt/下
導出磁盤
在 Linux 中,我們所使用的工具是 dd,進行整個磁盤的備份,再備份完成後再用
qemu 工具,轉成vhd的文件格式。
查看更新的分區表:
Cat /proc/partitions
格式化 新加的分區表
Mkfs –t ext3 格式區
格式化後掛載到想要掛載的位置下(臨時掛載)
比如:mount /dev/sdb1 /mnt
查看是否掛載成功
Df
2、將阿里雲主機系統打包成RAW鏡像
首先,執行 dd 指令,這裏我導出的磁盤爲
/dev/vda,額外掛載作爲備份的磁盤爲 /mnt,導出的文件爲 aliyuncentos68.raw
dd if=/dev/vda of=/mnt/aliyuncentos68.raw bs=100M
等待 dd 完成後,安裝 qemu 工具。
sudo yum install qemu-kvm
3、在阿里雲主機上使用qemu工具將raw鏡像轉換成vhd格式
安裝完成後,進行格式轉換,其中 /mnt 爲剛纔的備份目錄,aliyuncentos68.raw
爲剛纔的備份文件,aliyuncentos68.vhd 則爲轉換後的文件
#cd/mnt
#qemu-img convert -f raw -o subformat=fixed -O vpc aliyuncentos68.raw aliyuncentos68.vhd
等待直至轉換磁盤完成。
4、將vhd鏡像上傳到Azure的存儲賬號下
上傳磁盤
在此我們將運用 Azure CLI 將剛纔導出的磁盤上傳至先前創建的存儲賬戶中。
首先需要安裝 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 創建的存儲賬戶信息及密鑰組成連結字符串,如:
DefaultEndpointsProtocol=https;BlobEndpoint=storagename.blob.core.chinacloudapi.cn;AccountName=storagename;AccountKey=storagekey
接着執行指令進行上傳
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
5、Azure上創建新磁盤,使用vhd鏡像創建虛機
當上述步驟都已經完成,在azure上新添加一塊磁盤。
創建好磁盤後,點擊創建VM虛機
在欄位中依序填入 VM 創建的地點,剛纔上傳的系統磁盤 url,OS
類型(這邊應該選Linux),VM 的大小及 VM 的名稱。
接着點選創建,虛擬機將開始進行部署。
過一段時間之後,便可以連結上你所遷移的機器了。