儲存賬戶之間轉移虛擬機器

2021-09-07 14:47:55 字數 3566 閱讀 2645

azure 中乙個常見的任務就是將虛擬機器從乙個儲存賬號轉移到另乙個。在我們深入了解這些步驟之前,簡要的回顧一下 azure 虛擬機器是如何被建立的。當您在建立一台 azure 虛擬機器時,有兩個服務會協同工作來建立該虛擬機器:計算和儲存。在儲存方面,azure 儲存服務會在您的乙個賬戶中建立乙個 vhd。該 vhd 的物理節點是儲存在您指定用於放置虛擬機器的區域。在計算方面,我們在第二個群集中找到乙個物理節點用於放置您的虛擬機器。當 vm 在該群集中啟動時,它會和儲存服務建立連線並且從該 vhd 啟動。當建立乙個虛擬機器時,我們要求您建立該 vm 時的 vhd 所位於的儲存賬戶在同一區域,這是為了確保當虛擬機器和儲存賬戶通訊時能夠保持效能一致性。

有了這個背景之後,讓我們通過以下步驟將虛擬機器從乙個區域轉移到另乙個:

停止虛擬機器

將 vhd blob 從源區域的儲存賬戶複製到目標區域的儲存賬戶

通過該 blob 建立虛擬機器磁碟

從該磁碟啟動虛擬機器

在管理門戶介面,選擇您需要轉移的虛擬機器,在控制選單中選擇 關閉。

或者使用 azure powershell cmdlet 來完成相同的操作:

$servicename = "kenaztestservice"

$vmname = "testvm1"

get-azurevm -servicename $servicename -name $vmname | stop-azurevm

當您進行複製操作時,乙個必要的步驟是關閉虛擬機器以保證檔案系統的一致性。azure 目前還不支援虛擬機器的實時轉移。該操作意味著您在將乙個專用的 vm 從乙個區域轉移到另乙個 。如果您想要通過乙個通用的映像建立 vm ,在虛擬機器停止之前使用系統準備工具(sys-prep)對映像進行一般化處理。

azure 儲存服務提供了將 blob 從乙個儲存賬戶移動到另乙個的功能,我們需要執行以下步驟來完成該操作:

確定源儲存賬戶資訊;

確定目標儲存賬戶資訊;

確保目標儲存賬戶中存在目標容器;

執行 blob 複製操作。

注意:在位於不同區域的儲存賬戶之間複製 blob 時,根據該 blob 的大小會出現花費乙個小時或更長的時間的情況。執行該操作最便捷的方式是通過 azure powershell:

select-azuresubscription "kenazsubscription" 

# vhd blob to copy #

$blobname = "kenaztestservice-testvm1-2014-8-26-15-1-55-658-0.vhd"

# source storage account information #

$sourcestorageaccountname = "kenazsa"

$sourcekey = "mysourcestorageaccountkey"

$sourcecontext = new-azurestoragecontext –storageaccountname $sourcestorageaccountname -storageaccountkey $sourcekey

$sourcecontainer = "vhds"

# destination storage account information #

$destinationstorageaccountname = "kenazdestinationsa"

$destinationkey = "mydestinationstorageaccountkey"

$destinationcontext = new-azurestoragecontext –storageaccountname $destinationstorageaccountname -storageaccountkey $destinationkey

# create the destination container #

$destinationcontainername = "destinationvhds"

new-azurestoragecontainer -name $destinationcontainername -context $destinationcontext

# copy the blob #

$blobcopy = start-azurestorageblobcopy -destcontainer $destinationcontainername `

-destcontext $destinationcontext `

-srcblob $blobname `

-context $sourcecontext `

-srccontainer $sourcecontainer

執行以上命令將會開始從您的源賬戶向目標賬戶進行 blob 的複製操作,此時,您可能需要稍作等待以確保 blob 能夠完全的複製。如您需要檢視該操作的狀態,您可以使用以下命令。

while(($blobcopy | get-azurestorageblobcopystate).status -eq "pending")

當完成 blob 複製操作後,該狀態將變為「成功」。更詳細的 vhd 拷貝操作示例可以參考 「azure 虛擬機器: 跨儲存賬戶拷貝 vhds」 。

azcopy   /sourcekey:key1 /destkey:key2 abc.txt
關於如何在不同場景使用 azcopy 工具更詳細的資訊,請檢視「使用 azcopy 命令列工具入門」。

此時,您複製到目標儲存賬戶中的 blob 仍然只是乙個 blob, 為了可以從該 blob 啟動,您需要通過該 blob 建立乙個虛擬機器磁碟。導航至虛擬機器 磁碟 部分並且選擇 建立。

注意:以上指令是特定的用於專用的 vms,如您想要使該 vhd 作為映像來載入,您需要重啟 vm, 使用 sysperp 工具一般化處理,複製 blob,然後作為映像新增(而非磁碟)。

在 vhd url 選項處選擇目標容器中複製的 blob,勾選選項「 vhd 包含作業系統」,這向 azure 表明您所建立的磁碟物件是用作 os 磁碟使用的,而非作為資料磁碟使用。

或者,您可以通過 執行 powershell 命令來進行相同的操作。

add-azuredisk -diskname "mymigratedtestvm" `

-os linux `

-medialocation "" `

-verbose

以上步驟完成後,該磁碟將出現在虛擬機器 磁碟 部分。

此時,您可以使用之前建立好的磁碟來建立虛擬機器,在經典管理門戶中,選擇從庫中建立虛擬機器並且在我的磁碟下選擇您建立好的磁碟。

注意:如果您轉移的虛擬機器有乙個已經配置好的儲存池(或者需要磁碟驅動器的字母排序保持不變),記錄下 vhd 對映到源 vm 的 lun 編號,並且確保資料磁碟在目標虛擬機器上被附加到了同樣的 lun 編號上。

現在虛擬機器已經在目標儲存賬戶中執行了。

立即訪問

openstack轉移新建虛擬機器儲存路徑

在雲計算openstack中以為新建的虛擬機器都存放在 var lib nova instances中,在新建虛擬機器時記憶體當然不夠用,所以可以將nova轉移到新的儲存位置 以下操作只在計算節點上進行 一 停止虛擬機器 檢視虛擬機器 nova list 停止將要遷移的虛擬機器 nova stop ...

kvm虛擬機器之間通訊

kvm虛擬機器間通訊,在不影響宿主機通訊或者各個虛機間通訊互不影響的情況下。各個虛擬機器網絡卡可以使用virtio驅動,使用宿主機的虛擬網橋進行通訊。1 首先使用brctl show檢視宿主機網橋使用情況。virbr0為宿主機預設建立的網橋,vnet0 vnet 均為虛擬介面 定義不一定準確 為虛擬...

虛擬機器轉移之後的配置使用

1 ip位址 網絡卡只修改03 04 05 的 02 不修改 ip全部修改 先進行ip分配再修改 修改網絡卡 vi etc udev rules.d 70 persistent net.rules 刪除eth0 將eth1改為eth0 vi etc sysconfig network scripts...