手動匯入開機磁碟


如要從實體資料中心、本機工作站的虛擬機器 (VM) 或在其他雲端平台上執行的虛擬機器,將開機磁碟映像檔匯入至 Compute Engine,建議您使用虛擬磁碟匯入工具,自動執行本指南中的所有步驟。

如果您不想使用自動化工具,則可按照本指南中的逐步說明手動操作。

這種映像檔匯入程序一次只能匯入一個磁碟,而本指南將著重說明如何匯入開機磁碟映像檔。

只有在您無法建構或遷移應用程式以透過 Compute Engine 公開映像檔執行時,才有必要匯入您現有的開機磁碟。公開映像檔已經過設定,可在 Compute Engine 環境中執行,因此您可以在這些映像檔上執行應用程式,而不必擔心系統啟動載入程式和作業系統的設定。然而在下列情況下,您可能需要匯入您自己的開機磁碟:

  • 您的應用程式所需的作業系統沒有可用的公開映像檔。
  • 您已有一組用來在其他雲端平台上建立 VM 的基本映像檔。
  • 相較於完成開機磁碟映像檔匯入程序,將應用程式程式碼遷移至其中一個公開映像檔需要更多作業。

或者,您也可以使用合作夥伴提供的服務遷移 VM。詳情請參閱將 VM 遷移至 Compute Engine 一文。

總覽

如要將開機磁碟映像檔匯入至 Compute Engine,請按照下列程序操作:

  1. 規劃您的匯入路徑。上傳開機磁碟映像檔前,您必須確定映像檔的來源路徑;映像檔在 Compute Engine 環境中開始執行後,您也必須知道如何連結至該映像檔。
  2. 準備您的開機磁碟,讓磁碟可以在 Compute Engine 環境中啟動,以便您在啟動後進行存取。
  3. 建立及壓縮開機磁碟映像檔。
  4. 將映像檔上傳至 Cloud Storage,然後匯入至 Compute Engine 做為新的自訂映像檔
  5. 使用匯入的映像檔建立 VM 執行個體,並確認該執行個體已正常啟動。
  6. 如果映像檔無法成功啟動,請將開機磁碟映像檔掛接至其他執行個體並重新進行設定,即可排解這個問題。
  7. 將映像檔最佳化並安裝訪客環境,讓您匯入的作業系統映像檔可與中繼資料伺服器進行通訊,以及運用其他 Compute Engine 功能。

需求

開機磁碟的需求條件

如要將開機磁碟匯入至 Compute Engine,開機磁碟必須符合下列需求條件:

  • 建議您在來源 VM 中安裝所有可用的更新。
  • 如果您建構了自訂作業系統核心,該核心必須符合硬體與核心設定需求條件。多數 Linux 發行版已符合這些需求,因此這項條件僅適用於自行建構自訂作業系統並在 Compute Engine 上執行的進階使用者。
  • 開機磁碟的大小不得超過 2048 GB (2 TB)。
  • 您匯入的開機磁碟必須具備可用的 MBR 磁碟分區表,或 GPT 磁碟分區表與 MBR 系統啟動載入程式的混合配置。
  • 開機磁碟的主要分區可以是您偏好的任何格式,只要開機磁碟可透過 MBR 系統啟動載入程式正常啟動即可。
  • 開機磁碟上的系統啟動載入程式不得包含 quietrhgbsplashimage= 核心指令列引數。Compute Engine 不支援在啟動時顯示啟動畫面,因此您可以在系統啟動載入程式設定步驟中,將相關設定值從 GRUB 設定中移除。
  • 開機磁碟上的作業系統必須支援 ACPI

映像檔的需求

您匯入的映像檔必須符合下列需求條件:

  • 使用磁碟上的 qemu-img check 指令,對磁碟映像檔執行一致性檢查。
  • 如要匯出虛擬磁碟,請使用 VM 管理軟體的匯出功能。請勿從 VM 管理員的檔案系統複製 VMDK 檔案。
  • 圖片檔案必須是支援的圖片
  • 磁碟映像檔的名稱必須為 disk.raw
  • RAW 映像檔的檔案大小必須是 1 GB 的倍數。舉例來說,檔案必須是 10 GB 或 11 GB,而不能是 10.5 GB。
  • 壓縮檔必須是採用 gzip 壓縮格式和 tar 公用程式 --format=oldgnu 選項的 .tar.gz 檔案 (詳情請參閱這份手冊)。

專案的需求

如要透過匯入的映像檔建立 VM 執行個體,該執行個體必須能夠存取開機磁碟所設定作業系統的外部套件存放區。

您可直接從作業系統廠商,或透過與託管這些存放區的內部部署基礎架構的網路連線,存取這個存放區。

如要設定外部存放區的存取權,請在專案中完成以下任一步驟:

限制

如要使用不允許外部 IP 位址的網路匯入磁碟,您必須符合額外的網路需求。詳情請參閱「使用不允許外部 IP 位址的網路匯入磁碟」。

匯入映像檔的費用

在您開始之前,請先瞭解匯入程序的費用。使用入站網路資料傳輸將開機磁碟映像檔上傳至 Cloud Storage,以及匯入該映像檔做為 Compute Engine 自訂映像檔時,您不須支付任何費用。然而,匯入程序中部分的特定步驟會產生下列費用:

  • 在 Cloud Storage 標準值區中暫時儲存已壓縮映像檔的費用。您必須使用臨時 Cloud Storage 值區存放您的檔案,才能匯入檔案做為自訂 Compute Engine 映像檔。完成匯入程序後,您就可以移除值區。
  • 將自訂映像檔匯入至 Compute Engine 後儲存自訂映像檔的費用。
  • 從現有的資料中心、網路供應商或現有的雲端服務輸出資料時可能產生的費用。即使您已壓縮映像檔,映像檔仍可能非常大,因此當您將這些檔案複製到 Compute Engine 時,部分平台可能會收取巨額的資料傳輸費用。
  • Compute Engine 永久磁碟VM 機器執行個體 (可讓您在匯入映像檔至 Compute Engine 後對映像檔進行設定) 的費用。

規劃及準備您的匯入路徑

匯入磁碟的方法取決於您要遷移至 Compute Engine 的現有系統設定。您的系統必須要能讓您建立及壓縮開機磁碟映像檔,以及將映像檔上傳至 Cloud Storage。規劃匯入路徑時,請注意下列事項:

  • 映像檔匯入路徑會要求您於作業系統正在運作的環境中設定開機磁碟。這項程序可能會導致開機磁碟無法在 Compute Engine 以外的環境中啟動。當您將系統匯入至 Compute Engine 時,必須負責確保您不會遺失磁碟上的資料,或造成運作中的企業應用程式服務中斷。
  • 找出您現有的系統存取設定,然後規劃將系統匯入至 Compute Engine 後要如何存取系統。
    • 如果系統目前已有使用者登入或安全殼層設定,您可以只設定系統啟動載入程式,之後再設定讓映像檔在 Compute Engine 上以最佳效能執行。您可以透過現有安全殼層設定或互動式序列主控台中的使用者直接登入功能,存取執行個體。
    • 如果您的系統目前沒有使用者登入或安全殼層設定,您必須先設定開機磁碟,讓您能夠在開機磁碟於 Compute Engine 上啟動後存取開機磁碟。
  • 匯入程序可能需要幾小時或幾天才會完成,實際時間取決於開機磁碟的大小和網路連線的速度。
  • 您用於建立及壓縮開機磁碟映像檔的系統必須具備足夠的儲存空間,可供您在儲存裝置 (而不是開機磁碟本身) 上建立映像檔。一般來說,您的映像檔和 tar.gz 檔案會使用開機磁碟本身 2 至 3 倍的儲存空間。
  • 針對您要匯入的現有系統,瞭解其檔案系統結構。
    • 如果您的作業系統和應用程式檔案分布在多個磁碟中,請個別匯入各個磁碟,然後使用各個映像檔為您的 Compute Engine 虛擬機器執行個體建立專屬永久磁碟。
    • 如果您的系統有 RAID 開機磁碟區 (將多個磁碟做為單一邏輯磁碟區),請為整個陣列建立單一映像檔,而不要為陣列中的每個磁碟建立個別的映像檔。如果您是使用 Compute Engine 永久磁牒,就不必設定 RAID。
  • 如果您的系統使用可信平台模組或軟體層級加密技術將開機磁碟內容加密,請在建立開機磁碟映像檔前先將開機磁碟解密。Google 無法讀取已加密的映像檔。在您上傳映像檔後,Google 會將您的映像檔加密,並讓您針對永久磁碟Cloud Storage 值區提供自己的加密金鑰。

當您確認或建立您要用來完成匯入程序的系統後,請連線至該系統並設定系統啟動載入程式

準備開機磁碟映像檔

在運作中的系統上,準備開機磁碟映像檔,讓該映像檔在 Compute Engine 環境中運作。

  • 在開機磁碟上設定系統啟動載入程式,讓映像檔可在 Compute Engine 上啟動。
  • 在開機磁碟上設定安全殼層或使用者登入存取權,這樣在將開機磁碟匯入至 Compute Engine 並做為虛擬機器執行個體啟動後,您才能存取該開機磁碟。

這項程序可能會導致系統在 Compute Engine 環境外無法啟動,因此最佳做法是在隔離的系統上使用您要匯入的開機磁碟副本完成這個步驟。

設定系統啟動載入程式

在系統上設定系統啟動載入程式,讓系統可在 Compute Engine 上啟動。

  1. 在您要匯入開機磁碟的系統上,連線至終端機。

  2. 編輯 GRUB 設定檔。這個檔案通常位於 /etc/default/grub,但在部分版本較舊的發行版上,該檔案可能位於非標準的目錄中。

  3. 對 GRUB 設定檔進行下列變更:

    • 移除任何包含 splashimage= 的行。Compute Engine 不支援在啟動時顯示啟動畫面。
    • 移除 rhgbquiet 核心指令列引數。
    • console=ttyS0,38400n8d 新增至核心指令列引數,讓執行個體可與序列主控台互動
  4. 重新產生 grub.cfg 檔案。根據您的發行版使用下列其中一個指令。

    • Debian 與 Ubuntu:sudo update-grub
    • RHEL、CentOS、SUSE、openSUSE:sudo grub2-mkconfig -o /boot/grub2/grub.cfg
  5. 編輯 /etc/fstab 檔案,並移除所有磁碟和磁碟分區的參照,但不要移除開機磁碟本身和該開機磁碟上磁碟分區的參照。/etc/fstab 中的無效項目可能會導致您的系統啟動程序停止。

設定好系統啟動載入程式後,請建立及壓縮磁碟映像檔

設定映像檔的安全殼層或使用者登入存取權

當映像檔做為 VM 執行個體在 Compute Engine 中執行後,您必須要能夠存取該執行個體。您可以使用現有安全殼層設定連線至執行個體,或連線至序列主控台透過使用者名稱和密碼登入。

建立及壓縮磁碟映像檔前,請先完成安全殼層或使用者登入設定。

建立及壓縮磁碟映像檔

為您要匯入至 Compute Engine 的系統建立及壓縮開機磁碟映像檔。建立及壓縮映像檔的程序會視您系統運作的平台而有所不同。

一般

在幾乎所有的系統上,您都可使用這項程序建立能匯入至 Compute Engine 的 RAW 映像檔。如果要匯入的系統正在運作中,您仍可在該系統上完成這項程序;或者,您也可以在其他系統上連接您的開機磁碟做為次要磁碟,然後透過已停止的磁碟建立開機磁碟映像檔。請確認您的可用儲存空間足以用來暫時存放磁碟映像檔。以下範例將說明如何從運作中的系統建立映像檔。

  1. 在包含待匯入開機磁碟的系統上,連線至終端機。

  2. 使用 lsblk 指令找到您要用於建立映像檔的來源開機磁碟,以及儲存空間足以寫入映像檔的位置。在以下範例中,/dev/sda 是來源開機磁碟,而 /dev/sdb 是掛接在 /tmp 目錄的大型次要磁碟。雖然 /dev/sda 正在運作,但您仍可透過這個開機磁碟建立映像檔。不過,建議您在並未主動處理資料或執行應用程式的閒置系統上執行這項操作。

    lsblk
    
    NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
    sda      8:0    0  100G  0 disk
    ├─sda1   8:1    0   96G  0 part /
    ├─sda2   8:2    0    1K  0 part
    └─sda3   8:5    0    4G  0 part [SWAP]
    sdb      8:16   0  500G  0 disk /tmp
    sr0     11:0    1 1024M  0 rom
    
  3. 透過您的開機磁碟建立映像檔。

    sudo dd if=/dev/sda of=/tmp/disk.raw bs=4M conv=sparse
    
  4. 切換至您已在當中寫入 disk.raw 檔案的目錄。

    cd /tmp
    
  5. 將原始磁碟壓縮成 tar.gz 格式。這個步驟會壓縮映像檔,讓您可更快將該映像檔上傳至 Cloud Storage。如果您是使用 OSX,請安裝 gtar 並用於完成這個步驟,而不要使用 tar

    tar --format=oldgnu -Sczf /tmp/compressed-image.tar.gz disk.raw
    

AWS EC2

如要進一步瞭解如何將 Amazon Machine Images (AMI) 和虛擬磁碟映像檔從 Amazon Web Services (AWS) 匯入至 Compute Engine,請參閱「從 AWS 匯入映像檔」。

VirtualBox

如果您已在 VirtualBox 環境中準備好您的系統,可以使用 VBoxManage 工具將 .vdi.qcow2 磁碟映像檔轉換為 disk.raw 格式。

  1. 關閉您要匯入的 VirtualBox 訪客機器,並將 GUEST_NAME 替換為訪客機器的名稱。您可以透過 VirtualBox 介面或 VBoxManage 公用程式關閉訪客機器。

    VBoxManage controlvm GUEST_NAME acpipowerbutton
  2. 透過 VBoxManage 公用程式將訪客映像檔轉換為 RAW 格式,並將 GUEST_NAME 替換為訪客映像檔的路徑。這個訪客映像檔可以以 vdiqcow2 檔案的形式提供:

    VBoxManage clonemedium GUEST_NAME ~/disk.raw --format RAW
  3. 將原始磁碟壓縮成 tar.gz 格式。這個步驟會壓縮映像檔,讓您可更快將該映像檔上傳至 Cloud Storage。如果您是使用 OSX,請安裝 gtar 並用於完成這個步驟,而不要使用 tar

    sudo tar --format=oldgnu -Sczf /tmp/compressed-image.tar.gz disk.raw
    

映像檔已經過壓縮且準備就緒,可上傳至 Cloud Storage。

將映像檔匯入至您的自訂映像檔清單

將檔案上傳至 Cloud Storage,並將映像檔匯入至您的自訂映像檔清單。您也可以選擇在映像檔匯入期間將映像檔加密

透過主控台或 Google Cloud CLI 工具匯入映像檔:

主控台

compressed-image.tar.gz 檔案複製到本機工作站,然後使用 Google Cloud 控制台建立值區並上傳檔案

  1. 前往 Google Cloud 控制台中的 Cloud Storage 瀏覽器頁面。

    前往瀏覽器

  2. 按一下頁面頂端的 [Create bucket] (建立值區)。
  3. 指定專屬的值區名稱、Standard 儲存空間級別以及您要用於儲存映像檔的位置。
  4. 按一下 [Create] (建立) 來建立值區。「Browser」(瀏覽器) 頁面隨即會切換到新值區的頁面。
  5. 按一下頁面頂端的 [Upload files] (上傳檔案)。
  6. 在檔案對話方塊中,選取您從系統下載的 compressed-image.tar.gz 檔案。系統會從本機工作站上傳這個檔案。這個步驟可能需要幾小時才會完成,實際時間取決於壓縮映像檔的大小和網路連線的速度。

將映像檔上傳至 Cloud Storage 後,請將映像檔匯入至您的自訂映像檔清單。

  1. 前往 Google Cloud 控制台的「Images」頁面。

    前往「圖片」

  2. 按一下頁面頂端的 [Create image] (建立映像檔)
  3. 在 [Name] (名稱) 欄位中,為映像檔指定專屬名稱。
  4. (選用) 為新的映像檔指定映像檔系列,或調整特定加密設定。
  5. 按一下 [Source] (來源) 選單並選取 [Cloud Storage file] (Cloud Storage 檔案)。
  6. 輸入您已上傳至 Cloud Storage 的 compressed-image.tar.gz 檔案路徑。

    BUCKET_NAME/compressed-image.tar.gz
  7. 按一下「Create」即可匯入圖片。這個程序可能需要幾分鐘才會完成,實際時間取決於開機磁碟映像檔的大小。

這個圖片現已包含在「圖片」頁面中。您可以使用這個匯入的映像檔建立 VM。如果發生開機失敗,請確認您已正確設定 Bootloader。

gcloud 和 gcloud storage

使用 gcloud CLI 上傳已壓縮的開機磁碟映像檔。您可以在已建立開機磁碟映像檔的系統上完成這項程序;或者,您也可以將該檔案複製到其他系統,然後在該系統上完成上傳程序。

  1. 在您要用於上傳 compressed-image.tar.gz 的系統上安裝並初始化 gcloud CLI

  2. 使用 gcloud CLI 建立新的 Cloud Storage 值區。

    gcloud storage buckets create gs://BUCKET_NAME
  3. compressed-image.tar.gz 檔案上傳到新值區。

    gcloud storage cp compressed-image.tar.gz gs://BUCKET_NAME
  4. 匯入映像檔做為新的自訂映像檔。

    gcloud compute images create IMAGE_NAME --source-uri gs://BUCKET_NAME/compressed-image.tar.gz
    

    更改下列內容:

    • IMAGE_NAME:您匯入的映像檔名稱。
    • BUCKET_NAME:匯入圖片的儲存位置。

圖片現已列入自訂圖片清單。您可以使用這個匯入的映像檔建立 VM。如果發生開機失敗,請確認您已正確設定 Bootloader。

gcloud compute images list --no-standard-images
NAME                                            PROJECT                  FAMILY                    DEPRECATED  STATUS
[IMAGE_NAME]                                    [PROJECT_ID]                                                   READY

測試已匯入的映像檔,確保其可正常運作

確認已匯入的映像檔如預期般正常運作,然後透過使用該映像檔的開機磁碟建立 VM。

主控台

  1. 前往 Google Cloud 控制台的「Create an instance」(建立執行個體) 頁面。

    前往「Create an instance」(建立執行個體)

  2. 在「Boot disk」(開機磁碟) 專區中,按一下「Change」(變更),然後執行下列操作:

    1. 選取「自訂圖片」分頁標籤。
    2. 如要選取圖片專案,請按一下「選取專案」,然後執行下列操作:
      1. 選取含有該圖片的專案。
      2. 按一下「開啟」
    3. 在「Image」清單中,按一下您已匯入的圖片。
    4. 選取開機磁碟的類型和大小。
    5. 如要確認開機磁碟選項,請按一下「選取」
  3. 按一下 [建立]。

gcloud

gcloud compute instances create VM_NAME --zone ZONE --image IMAGE_NAME

更改下列內容:

  • VM_NAME:VM 的專屬名稱。
  • ZONE:您用於建立獨立磁碟的區域。
  • IMAGE_NAME:您匯入的映像檔名稱。

建立虛擬機後,請確認虛擬機可正常啟動,並查看序列埠輸出內容:

主控台

  1. 前往 Google Cloud 控制台的「VM instances」(VM 執行個體) 頁面

    前往「Instances」(執行個體)

  2. 在 VM 清單中,按一下您從匯入的映像檔建立的 VM 名稱。系統會開啟 VM 詳細資料頁面。
  3. 在「Logs」專區中,按一下適當的序列埠,展開並查看這個 VM 的序列埠輸出內容。

如果 VM 在 Booting from Hard Disk 0... 時停止,您必須從 Compute Engine 環境內部排解這個問題,或是在原始系統上重新設定開機磁碟並重複執行匯入程序。

gcloud

gcloud compute instances get-serial-port-output VM_NAME

如果 VM 在 Booting from Hard Disk 0... 時停止,您必須從 Compute Engine 環境內部排解這個問題,或是在原始系統上重新設定開機磁碟並重複執行匯入程序。

您也可以連線至 VM 來測試。請透過下列任一方式連線至 VM:

  • 安全殼層:如果 VM 有可正常運作的安全殼層設定,您就能使用安全殼層和私密金鑰連線至 VM。您可以在「VM instances頁面上找到 VM 執行個體 IP 位址。
  • 序列主控台:如要不透過安全殼層直接登入 VM,您可以啟用序列主控台並透過使用者名稱和密碼登入。

後續步驟