手動匯入虛擬磁碟

如要從實體資料中心、本機工作站的虛擬機器 (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,開機磁碟必須符合下列需求條件:

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

映像檔的需求

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

  • 磁碟映像檔的名稱必須為 disk.raw
  • RAW 映像檔的檔案大小必須是 1 GB 的倍數。舉例來說,檔案必須是 10 GB 或 11 GB,而不能是 10.5 GB。
  • 壓縮檔必須是採用 gzip 壓縮格式和 tar 公用程式 --format=oldgnu 選項的 .tar.gz 檔案 (詳情請參閱這份手冊)。

您可以匯入您偏好的任何作業系統開機磁碟,但部分系統比其他系統更容易針對 Compute Engine 環境進行設定。下列作業系統已經過測試,適用於本指南:

  • Debian 7 和 Debian 8
  • RHEL/CentOS 6
  • openSUSE 13.x
  • Ubuntu 12.04、14.04 和 16.04

可能需要額外設定步驟而本指南未提及的作業系統如下:

  • Debian 6 以下版本
  • RHEL/CentOS 7
  • RHEL/CentOS 5 以下版本
  • Ubuntu 10.04 以下版本

專案的需求

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

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

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

匯入映像檔的費用

在您開始之前,請先瞭解匯入程序的費用。使用網路輸入將開機磁碟映像檔上傳至 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:sudo grub-mkconfig -o /boot/grub/grub.cfg
    • SUSE、openSUSE:sudo grub2-mkconfig -o /boot/grub/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

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

AWS EC2

如果您要匯入 Amazon EC2 執行個體,請使用 AMI 工具打包 Amazon EBS 磁碟區:

  1. 帳戶設定主控台中找到並記下您的 Amazon 帳戶 ID

  2. 在您的 Amazon EC2 執行個體上,下載並安裝 EC2 AMI 工具。

  3. 透過以下引數以 Root 權限執行 ec2-bundle-vol,其中 cert-<hash>.pem 要改成憑證檔案,pk-<hash>.pem 要改成私密金鑰,AWS_ACCOUNT_ID 要改成您的 Amazon 帳戶 ID。這個指令會建立 image 檔案。

    ec2-bundle-vol -c /tmp/build/cert-<hash>.pem \
        -k /tmp/build/pk-<hash>.pem -u AWS_ACCOUNT_ID \
        -r x86_64 --no-filter --exclude /tmp/build \
        --grub-config /tmp/build/menu.lst \
        --fstab /tmp/build/fstab
    
  4. 將原始磁碟壓縮成 tar.gz 格式。這個步驟會壓縮映像檔,讓您可更快將該映像檔上傳至 Cloud Storage。如果您是使用 OSX,請安裝 gtar 並用於完成這個步驟,而不要使用 tar

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

VirtualBox

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

  1. 關閉您要匯入的 VirtualBox 訪客機器。您可以透過 VirtualBox 介面或 VBoxManage 公用程式關閉訪客機器。

    VBoxManage controlvm [GUEST_NAME] acpipowerbutton
    

    其中 [GUEST_NAME] 是訪客機器的名稱。

  2. 透過 VBoxManage 公用程式將訪客映像檔轉換為 RAW 格式:

    VBoxManage clonemedium [GUEST_IMAGE] \
        ~/disk.raw --format RAW
    

    其中 [GUEST_IMAGE] 是訪客映像檔 .vdi.qcow2 檔案的路徑。

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

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

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

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

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

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

主控台

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

  1. 前往 GCP Console 的 Cloud Storage「Browser」(瀏覽器) 頁面。

    前往「Browser」(瀏覽器) 頁面

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

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

  1. 前往 GCP Console 的「Images」(映像檔) 頁面。

    前往「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] (建立) 按鈕匯入映像檔。這個程序可能需要幾分鐘才會完成,實際時間取決於開機磁碟映像檔的大小。

這個映像檔現已包含在「Images」(映像檔) 頁面中,但您必須設定系統啟動載入程式,才能使用該映像檔建立可運作的 VM 執行個體。

gcloud 和 gsutil

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

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

  2. 使用 gsutil 工具建立新的 Cloud Storage 值區。

     $ gsutil mb gs://[BUCKET_NAME]
     

  3. compressed-image.tar.gz 檔案上傳到新值區。

     $ gsutil cp compressed-image.tar.gz gs://[BUCKET_NAME]
     

  4. 匯入映像檔做為新的自訂映像檔。

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

這個映像檔現已包含在自訂映像檔清單中,但您必須設定系統啟動載入程式,才能使用該映像檔建立可運作的 VM 執行個體。

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

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

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

主控台

  1. 前往 GCP Console 的「VM instances」(VM 執行個體) 頁面。

    前往「Instances」(執行個體) 頁面

  2. 按一下 [Create] (建立) 按鈕。
  3. 在「Boot disk」(開機磁碟) 區段中,按一下 [Change] (變更) 開始設定開機磁碟。
  4. 在「Custom images」(自訂映像檔) 分頁中,按一下您已匯入的映像檔。
  5. 按一下 [Select] (選取) 即可確認開機磁碟的設定。
  6. 按一下 [Create] (建立) 按鈕來建立執行個體。

gcloud

gcloud compute instances create [INSTANCE_NAME] --zone [ZONE] --image [IMAGE_NAME]

其中:

  • [INSTANCE_NAME] 是您執行個體的專屬名稱。
  • [ZONE] 是您用於建立獨立磁碟的區域。
  • [IMAGE_NAME] 是您匯入的映像檔名稱。

建立執行個體後,請確認該執行個體可正常啟動,並查看序列埠輸出內容:

主控台

  1. 前往 GCP Console 的「VM instances」(VM 執行個體) 頁面。

    前往「Instances」(執行個體) 頁面

  2. 在執行個體清單上,按一下您從已匯入映像檔建立的執行個體名稱。執行個體詳細資料頁面會隨即開啟。
  3. 在執行個體詳細資料頁面底部,按一下 [View serial port] (查看序列埠),查看這個執行個體的序列埠輸出內容。

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

gcloud

gcloud compute instances get-serial-port-output [INSTANCE_NAME]

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

您也能以連線至執行個體的方式測試執行個體。請透過下列任一方式連線至執行個體:

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

排解開機磁碟問題

如果您的執行個體未啟動,而且您無法連線至該執行個體或透過互動式序列主控台登入,請找出開機磁碟未能完成啟動和開機程序的原因。

找到啟動和開機程序失敗的原因後,您可以透過下列任一方式修正這個問題:

在 Compute Engine 中排解開機磁碟問題

請在連接至臨時 VM 執行個體的次要磁碟上,掛接您匯入的映像檔。接著,使用 GCP Console 或 gcloud 工具,透過您上傳的映像檔建立獨立磁碟,並透過已連接的獨立磁碟建立臨時 VM。您可以使用這個執行個體修改獨立磁碟上的檔案,並修正導致該映像檔無法完成啟動程序的問題。

主控台

您可以透過您匯入的開機磁碟映像檔建立獨立磁碟。或者,您也可以將開機磁碟從執行個體卸離,然後改用卸離的開機磁碟建立執行個體。

  1. 前往 GCP 主控台的「Disks」(磁碟) 頁面。

    前往「磁碟」頁面

  2. 按一下 [建立磁碟]
  3. 在「Create a new disk」(建立新磁碟)頁面上指定以下屬性:
    • 「Zone」(區域)選取您附近的區域。建立臨時執行個體時,您必須使用這個區域。
    • 「Source Type」(來源類型):Image (映像檔)
    • 「Source Image」(來源映像檔):指定您匯入的開機磁碟映像檔名稱。
  4. 按一下 [Create] (建立) 即可建立磁碟。

建立臨時執行個體,以便在當中連接獨立磁碟及設定系統啟動載入程式,使其能在 GCP Console 環境中正常運作。

  1. 前往 GCP Console 的「VM instances」(VM 執行個體) 頁面。

    前往「Instances」(執行個體) 頁面

  2. 按一下 [Create instance] (建立執行個體) 按鈕。
  3. 在「Create a new instance」(建立新執行個體) 頁面上,指定執行個體名稱和執行個體所在區域。這個區域必須與您建立獨立磁碟的區域相同。
  4. 展開 [Management, security, disks, networking, sole tenancy] (管理、安全性、磁碟、網路、單獨租用) 區段。
  5. 在「Additional disks」(其他磁碟) 區段的「Disks」(磁碟) 分頁底下,按一下 [Attach existing disk] (連接現有的磁碟)。系統隨即會顯示新的區段。
  6. 從「Disk」(磁碟) 區段的下拉式選單中選取您建立的獨立磁碟。這項操作會將獨立磁碟連接至執行個體,以便您之後掛接及修改磁碟內容。
  7. 按一下 [Done] (完成) 來完成磁碟連接程序。
  8. 按一下 [Create] (建立) 按鈕來建立執行個體。

gcloud

您可以透過您匯入的開機磁碟映像檔建立獨立磁碟。或者,您也可以將開機磁碟從執行個體卸離,然後改用卸離的開機磁碟建立執行個體。

gcloud compute disks create [DISK_NAME] --zone [ZONE] --image [IMAGE_NAME]

其中:

  • [DISK_NAME] 是新獨立磁碟的名稱。
  • [ZONE] 是您附近的區域。建立臨時執行個體時,您必須使用這個區域。
  • [IMAGE_NAME] 是您匯入的開機磁碟映像檔名稱。

建立臨時執行個體,以便在當中連接獨立磁碟及設定系統啟動載入程式,使其能在 GCP Console 環境中正常運作。

gcloud compute instances create [INSTANCE_NAME] --zone [ZONE] --disk name=[DISK_NAME]

其中:

  • [INSTANCE_NAME] 是您執行個體的專屬名稱。
  • [ZONE] 是您用於建立獨立磁碟的區域。
  • [DISK_NAME] 是您透過匯入的開機磁碟映像檔建立的獨立磁碟名稱。

當您建立已連接獨立磁碟的執行個體後,您就會有一個虛擬環境,可供您透過原始開機磁碟映像檔修改系統啟動載入程式。

連線至執行個體、掛接獨立磁碟,然後設定系統啟動載入程式,使其可在 Compute Engine 中正常啟動。

  1. 透過瀏覽器建立安全殼層連線或使用 gcloud compute ssh 指令,藉此連線至臨時執行個體
  2. 使用 blkid 指令找到您要修改的磁碟以及您要掛接的磁碟分區。在以下範例中,/dev/sdb 是您匯入的磁碟。

    $ lsblk
    
    NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
    sda      8:0    0   10G  0 disk
    └─sda1   8:1    0   10G  0 part /
    sdb      8:16   0  100G  0 disk
    ├─sdb1   8:17   0   96G  0 part
    ├─sdb2   8:18   0    1K  0 part
    └─sdb5   8:21   0    4G  0 part
    
  3. 將獨立磁碟的根磁碟分區掛接至 /tmp 目錄。在以下範例中,/dev/sdb1 是根磁碟分區,且您不必對其他磁碟分區進行任何修改。視您的磁碟分區配置而定,您可能得掛接多個磁碟分區,才能存取所有您必須變更的檔案。

    $ sudo mount /dev/sdb1 /tmp
    
  4. 編輯可能導致磁碟啟動程序失敗的檔案。詳情請參閱系統啟動載入程式設定操作說明

  5. 從臨時執行個體卸載開機磁碟。

    $ sudo umount /tmp
    

設定完這個磁碟後,請將其卸離,並做為新執行個體的開機磁碟使用。

主控台

從臨時執行個體卸離獨立磁碟。

  1. 前往 GCP Console 的「VM instances」(VM 執行個體) 頁面。

    前往「Instances」(執行個體) 頁面

  2. 在執行個體清單上,按一下您修改的獨立磁碟所在的臨時個體名稱。執行個體詳細資料頁面隨即會開啟。
  3. 在執行個體詳細資料頁面的頂端,按一下 [Edit] (編輯)。
  4. 在「Additional disks」(其他磁碟) 區段之下,按一下獨立磁碟旁邊的 [X],表示您要從臨時執行個體卸離獨立磁碟。
  5. 在執行個體詳細資料頁面的底部,按一下 [Save] (儲存) 來儲存變更。

使用卸離的獨立磁碟建立新執行個體。

  1. 前往 GCP Console 的「VM instances」(VM 執行個體) 頁面。

    前往「Instances」(執行個體) 頁面

  2. 按一下 [Create instance] (建立執行個體) 按鈕。
  3. 在「Create a new instance」(建立新執行個體) 頁面上,指定執行個體名稱和執行個體所在區域。這個區域必須與您建立獨立磁碟的區域相同。
  4. 在「Boot disk」(開機磁碟) 區段中,按一下 [Change] (變更) 開始設定您的開機磁碟。
  5. 在「Existing disks」(現有磁碟) 分頁中,選擇獨立開機磁碟做為這個新執行個體的開機磁碟。
  6. 按一下 [Create] (建立) 按鈕來建立執行個體。

gcloud

從臨時執行個體卸離獨立磁碟。

gcloud compute instances detach-disk [INSTANCE_NAME] --disk [DISK_NAME]

其中:

  • [INSTANCE_NAME] 是您執行個體的專屬名稱。
  • [DISK_NAME] 是新獨立磁碟的名稱。

使用卸離的獨立磁碟建立新執行個體。

gcloud compute instances create [INSTANCE_NAME] --zone [ZONE] --disk name=[DISK_NAME],boot=yes

其中:

  • [INSTANCE_NAME] 是您執行個體的專屬名稱。
  • [ZONE] 是獨立磁碟所在的區域。
  • [DISK_NAME] 是您透過匯入的開機磁碟映像檔建立的獨立磁碟名稱。

測試您使用已修改的開機磁碟建立的執行個體。如果您仍無法連線至執行個體,請再次詳閱序列控制台輸出內容,找出啟動程序失敗的原因,然後重複執行疑難排解程序,直到您修正開機磁碟映像檔的問題。

後續步驟

本頁內容對您是否有任何幫助?請提供意見:

傳送您對下列選項的寶貴意見...

這個網頁
Compute Engine 說明文件