手動匯入開機磁碟

如要從實體資料中心、本機工作站的虛擬機器 (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 系統啟動載入程式正常啟動即可。
  • 開機磁碟上的系統啟動載入程式不得包含 quiet、rhgb 或 splashimage= 核心指令列引數。Compute Engine 不支援在啟動時顯示啟動畫面,因此您可以在系統啟動載入程式設定步驟中,將相關設定值從 GRUB 設定中移除。
  • 開機磁碟上的作業系統必須支援 ACPI。

圖片檔案規定

匯入的圖片檔案必須符合下列規定:

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

專案的需求

從匯入的映像檔建立 VM 執行個體時,執行個體必須能夠存取外部套件存放區,才能使用開機磁碟上設定的作業系統。

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

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

限制

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

匯入映像檔的費用

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

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

規劃及準備您的匯入路徑

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

  • 映像檔匯入路徑會要求您於作業系統正在運作的環境中設定開機磁碟。這項程序可能會導致開機磁碟無法在 Compute Engine 以外的環境中啟動。當您將系統匯入至 Compute Engine 時,必須負責確保您不會遺失磁碟上的資料,或造成運作中的企業應用程式服務中斷。
  • 找出您現有的系統存取設定,然後規劃將系統匯入至 Compute Engine 後要如何存取系統。
    • 如果系統目前已有使用者登入或 SSH 設定,您可以只設定系統啟動載入程式,之後再設定讓映像檔在 Compute Engine 上以最高效能執行。您可以透過現有的 SSH 設定存取執行個體,也可以在互動式序列主控台中直接登入使用者。
    • 如果您的系統目前沒有使用者登入或 SSH 設定,您必須先設定開機磁碟,開機磁碟在 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 不支援在啟動時顯示啟動畫面。
    • 移除 rhgb 和 quiet 核心指令列引數。
    • 將 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 中的無效項目可能會導致您的系統啟動程序停止。

設定開機載入程式後,請建立並壓縮磁碟映像檔。

設定映像檔的 SSH 或使用者登入存取權

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

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

建立及壓縮磁碟映像檔

建立並壓縮要匯入 Compute Engine 的系統開機磁碟映像檔。建立及壓縮圖片檔案的程序會因系統運作的平台而異。

一般

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

  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
    

VirtualBox

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

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

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

    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 控制台建立 bucket 並上傳檔案。

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

    前往瀏覽器

  2. 按一下頁面頂端的 [Create bucket] (建立值區)。
  3. 指定專屬 bucket 名稱、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. 按一下「建立」匯入圖片。這個程序可能需要幾分鐘才會完成,實際時間取決於開機磁碟映像檔的大小。

圖片現在會顯示在「圖片」頁面。您可以使用這個匯入的映像檔建立 VM。如果開機失敗,請確認開機載入程式設定正確無誤。

gcloud 和 gcloud storage

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

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

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

    gcloud storage buckets create gs://BUCKET_NAME
  3. 將 compressed-image.tar.gz 檔案上傳至新 bucket。

    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:儲存匯入圖片的 bucket 名稱。

圖片現在會顯示在自訂圖片清單中。您可以使用這個匯入的映像檔建立 VM。如果開機失敗,請確認開機載入程式設定正確無誤。

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

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

確認已匯入的映像檔如預期般正常運作,建立 VM,並使用匯入的映像檔做為開機磁碟。

控制台

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

    前往「建立執行個體」

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

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

gcloud

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

更改下列內容:

  • VM_NAME:VM 的專屬名稱。
  • ZONE:您建立獨立磁碟的可用區。
  • IMAGE_NAME:您匯入的映文件名稱。

建立 VM 後,請確認 VM 是否已正確啟動。並查看序列埠輸出內容:

控制台

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

    前往「執行個體」頁面

  2. 在 VM 清單中,按一下您從匯入映像檔建立的 VM 名稱。系統會開啟 VM 詳細資料頁面。
  3. 在「記錄」部分,按一下適當的序列埠,展開並查看這個 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:

  • SSH:如果 VM 的 SSH 設定正常運作,您可以使用 SSH 和私密金鑰連線至 VM。您可以在「VM 執行個體」頁面找到 VM 執行個體 IP 位址。
  • 序列埠主控台:如要直接登入 VM,而不使用 SSH,可以啟用序列埠主控台,然後使用使用者名稱和密碼登入。

後續步驟