附註:

將 Red Hat Enterprise Linux Virtual Machine 從 Amazon Web Services 移轉至 Oracle Cloud Infrastructure

簡介

由於 OCI 是新一代雲端,讓應用程式以更低的成本更快、更安全地執行,因此從 Amazon Web Services (AWS) 移轉至 Oracle Cloud Infrastructure (OCI) 對許多組織而言越來越頻繁。

虛擬機器 (VM) 移轉通常是這種有利的核心部分,主要客戶會尋找如何將它們從 AWS 移轉至 OCI 的適當指引。此外,對於許多組織而言,Linux 構成其大量基礎架構。因此,本教學課程主要著重於將虛擬機器從 AWS 移轉至 OCI,執行全球最廣泛使用的 Linux 發行套件之一 (Red Hat Enterprise Linux)。

本教學課程為客戶提供將虛擬機器移轉至 OCI 的需求指導,以及如何準備並將 Red Hat Enterprise Linux VM 從 AWS 移轉至 OCI,以便在 OCI 的半虛擬化模式下啟動。OCI 也可讓執行處理以模擬模式啟動,但使用半虛擬化裝置的 VM 與以模擬模式執行相比,效能更快,磁碟 I/O 效能至少為 6 倍。

整體流程包括準備 AWS 中的 VM、將其匯出至 Amazon Simple Storage Service (Amazon S3)、將其傳輸至 OCI 物件儲存、在 OCI 中建立自訂映像檔,以及從中啟動執行處理。Amazon S3 與 OCI Object Storage 之間的映像檔傳輸是使用開源工具 rclone 執行,如果您只是對小型映像檔進行實驗,可以手動進行。不過,我們建議您使用 rclone ,因為這樣可以更快、更輕鬆地傳輸映像檔。

目標

必要條件

假設

作業 1:準備資料傳輸基礎架構

本教學課程使用下列資料傳輸架構:

作業 1.1:準備 Amazon S3 和 OCI 物件儲存的儲存桶

在此作業中,我們會在以下位置建立儲存桶:

使用下列特性在 Amazon S3 建立儲存桶:

在 Amazon S3 儲存桶權限中,使用與您正在處理之 AWS 區域相符的授權,將 ACL 連附至儲存桶,如下圖所示。請參閱受權者區域特定的正規帳戶 ID:使用 VM 匯入 / 匯出將執行處理匯出為 VM

S3 ACL 附件

在標準儲存層的 OCI 物件儲存中建立儲存桶,以完成這項作業。這是稍後將從 Amazon S3 傳輸 VM 映像檔的儲存桶。

作業 1.2:安裝並設定複製

在此作業中,我們將在 OCI 上執行的 VM 中安裝 rclone。如果您正在對小型 VM 進行實驗,並使用 2 個遠端設定 rclone,則可以在本機機器上安裝 rclone:Amazon S3 和 OCI Object Storage。

  1. 將 rclone 和 SSH 安裝到 OCI 中的 Oracle Linux VM 中。

    sudo -v ; curl https://rclone.org/install.sh | sudo bash
    
  2. 以 rclone 執行遠端組態。這是透過啟動 rclone 組態階段作業來完成的。在命令行中執行下列命令。

    rclone config
    
  3. 若為 Amazon S3 遠端組態,請輸入下列資訊。

    • 遠端名稱:輸入遠端名稱。
    • 遠端類型:選取 S3 類型。
    • 提供者:選取 AWS
    • access_key_id :輸入與您決定使用之 AWS 使用者關聯的存取金鑰 ID。
    • secret_access_key :輸入與存取金鑰 ID 相符的加密密碼存取金鑰。
    • 區域:選取您目前使用的 AWS 區域。
    • location_constraint :選取符合您目前處理之 Amazon Web 區域的位置限制條件。對於某些區域 (例如法蘭克福),這可能是空的。
    • acl :選取 private 以確定您建立的是限制更嚴格的 ACL。如需詳細資訊,請參閱掃描的 ACL
  4. 對於 OCI 物件儲存的 rclone 存取,本教學課程使用 OCI 使用者和 API 簽署金鑰。或者,您也可以使用動態群組。如需詳細資訊,請參閱從執行處理呼叫服務

    設定 OCI Object Storage 遠端之前,我們將:

    • 建立 rclone 的 OCI API 簽署金鑰,以認證至 OCI 物件儲存並執行映像檔資料傳輸。若要建立 API 簽署金鑰並記下您在 VM 上儲存金鑰的目錄,因為您將需要在 OCI 組態檔中提供該金鑰,請參閱 How to Generate an API Signing Key

    • 建立 OCI 組態檔。此組態檔需要 OCI API 簽署金鑰。如需詳細資訊,請參閱 SDK and CLI Configuration File

    若要瞭解 OCI 提供者 rclone 的認證選項,請參閱宣布推出 rclone 中的原生 OCI Object Storage 提供者後端支援

  5. OCI 組態檔通常會在目錄中儲存為 config 指定檔案。

    ~/.oci/
    
  6. 建立 OCI API 簽署金鑰和 OCI 組態檔之後,即可在 rclone 中設定 OCI 遠端。執行下列命令以啟動組態階段作業。

    rclone config
    
  7. 輸入下列 OCI 物件儲存遠端組態資訊。

    • 遠端名稱:輸入遠端名稱。
    • 類型:選取 Oracle Object Storage。
    • 提供者:如果您使用動態群組,請選取 user_principal_auth (當您將使用 OCI 使用者和 API 簽署金鑰時),請選取 instance_principal_auth
    • 命名空間:輸入租用戶命名空間。
    • 區間: 輸入 OCI 儲存桶區間 Oracle Cloud ID (OCID)。
    • 區域:輸入您在 OCI 中工作的區域。
    • 端點:保留空白或以下列格式輸入端點:https://<namespace>.objectstorage.<region-code>.oci.customer-oci.com/n/<namespace>
  8. 使用下列指令檢查 rclone 遠端配置檔案。

    cat ~/.config/rclone/rclone.conf
    

作業 2:準備來源 VM 開機磁碟區

作業 2.1:執行 AWS VM 開機磁碟區的必要快照

執行 AWS VM 開機磁碟區的快照。這是啟動任何開機磁碟區組態活動之前的必要項目。

作業 2.2:啟用序列主控台

序列主控台連線可讓使用者針對 VM 疑難排解、執行系統組態檔編輯和密碼重設等活動。一般而言,若要準備用於序列主控台的 VM,必須設定 GRUB 啟動載入器檔案。此檔案位於 /etc/default/grub 中。

最重要的 GRUB 配置參數為:

- GRUB_TIMEOUT_STYLE: make sure it is commented if its value is "hidden"; alternatively, change it to "menu"
- GRUB_TIMEOUT: make sure it is higher than 0 to allow boot mode selection without skipping directly to the default option. Specify this value in both files.
- GRUB_CMDLINE_LINUX: make sure "console=tty1 console=ttyS0, 115200" is appended to it
- GRUB_TERMINAL: make sure its value is "serial console"
- GRUB_SERIAL_COMMAND: make sure its value is "serial -- unit=0 --speed=115200"
  1. 開啟 /etc/default/grub

    sudo vi /etc/default/grub
    

    編輯檔案,讓它看起來像是下圖所示的檔案。

    grub 編輯

  2. 編輯檔案之後,請執行下列指令,確保已充分更新 GRUB 開機管理程式。

    sudo grub2-mkconfig -o /boot/grub2/grub.cfg
    

作業 2.3:檢查半虛擬化驅動程式

若要將 VM 匯入 OCI,以便能夠以半虛擬化模式啟動,映像檔中必須要有半虛擬化 VirtIO 驅動程式。在這項任務中,我們將檢查核心和 initramfs 暫存檔案系統以確認驅動程式存在。請注意,執行核心版本 3.4 或更新版本的 Linux 作業系統支援半虛擬化驅動程式,因此通常您只需要檢查並確認這些驅動程式是否存在。

所需的最小 VirtIO 驅動程式集包括 pciscsi。這些驅動程式應存在於核心或 initramfs 中。

  1. 使用下列命令檢查 AWS VM 的核心。

    sudo grep -i virtio /boot/config-$(uname -r)
    

    核對核心

    注意:核心中有 pci VirtIO 驅動程式。

  2. 使用下列命令檢查 AWS VM 的核心。

    sudo lsinitrd /boot/initramfs-$(uname -r).img | grep virtio
    

    檢查初始化

    注意: initramfs 中有 scsi VirtIO 驅動程式。

  3. 如果 VM 的開機磁碟區沒有驅動程式,您將需要使用 dracut 重新建立 initramfs。

    sudo dracut -v -f --add-drivers “virtio virtio_pci virtio_scsi” /boot/initramfs-$(uname -r).img $(uname -r)
    

作業 2.4:設定網路設定值

如果是網路配置,請確定:

有數種方式可以在 Linux 上執行網路組態。具體而言,在 RHEL 中,可以透過編輯 /etc/sysconfig/network-scripts/ifcfg-eth0 中的網路配置檔案或使用 NetworkManager 來執行乙太網路連線配置。本教學課程使用後者來執行必要的網路組態。如需詳細資訊,請參閱設定乙太網路連線

  1. 執行 NetworkManager 命令行工具 (nmcli) 以查看 VM 網路組態的摘要。

    網路組態摘要

  2. 若要列出 VM 中可用的連線,請執行下列命令。

    nmcli connection show
    

    您會找到連線清單。本教學課程中使用的 VM 具有下列連線。

    檢查連線

  3. 使用動態主機組態協定 (DHCP) 確認與 eth0 關聯的乙太網路連線。

    nmcli connection show <connection UUID>
    

    捲動直到找到 ipv4.method 參數為止。其值應為 auto

    確認 DHCP

  4. 編輯與介面 eth0 關聯的連線。您將使用下列指令從介面配置中移除 MAC 位址。

    sudo nmcli connection modify <connection UUID> 802-3-ethernet.mac-address ''
    
  5. 使用下列指令套用這些變更。

    sudo nmcli con up <connection UUID>
    
  6. 此外,檢查 /etc/udev/rules 目錄,查看是否有任何 udev 規則檔案包含 MAC 位址硬式編碼規則並加以刪除。本教學課程中使用的 AWS 影像有一個此類檔案 70-persistent-net.rules。請執行下列命令以刪除此檔案。

    sudo rm /etc/udev/rules.d/70-persistent-net.rules
    

網路配置現在已完成。您可以檢查 /etc/sysconfig/network-scripts/ifcfg-eth0 檔案來進行確認。

工作 3:將虛擬機器映像檔匯出至 Amazon S3

此工作需要使用 AWS CLI。此教學課程使用 AWS CloudShell,因為它略過 AWS CLI 組態作業。

  1. 停止 VM。開啟 AWS CloudShell 並執行下列命令來匯出映像檔。

    aws ec2 create-instance-export-task --instance-id <instance-id> --target-environment vmware --export-to-s3-task DiskImageFormat=vmdk,ContainerFormat=ova,S3Bucket=<bucket name>
    
  2. 請輸入下列資訊。

    • 磁碟映像檔格式:輸入 VMDK ,因為這是 OCI 唯一支援的 AWS 匯出格式。
    • 容器格式:輸入 OVA ,將磁碟映像檔與 VM 的相關描述資料結合在一起。或者,您可以匯出此參數。
    • 目標環境:輸入 vmware ,因為它是 OCI 中唯一支援的目標環境。
  3. 您可以在 AWS CloudShell 中執行下列命令來監督匯出工作的狀態。

    aws ec2 describe-export-tasks --export-task-ids <export task id>s
    

    當您第一次啟動工作時,會發現該工作處於作用中狀態。完成之後,您會發現狀態為已完成

工作 4:將映像檔傳輸至 OCI 物件儲存

將 SSH 移入在 Task 1.2 中設定 rclone 的 OCI VM。執行將匯出的映像檔從 AWS S3 儲存桶複製到 OCI 物件儲存的儲存桶。

rclone copy <aws-remote>:<bucket>/<imagefile> <oci-remote>:<bucket> -vv

作業 5:在 OCI 中建立自訂映像檔並啟動執行處理

  1. 在 OCI 主控台中,前往運算服務上的自訂映像檔,然後選取匯入映像檔

  2. 請輸入下列資訊。

    • 區間: 選取要在其中建立自訂映像檔的區間。
    • 名稱:輸入自訂影像的名稱。
    • 作業系統:選取 RHEL。
    • 來源:物件儲存的儲存桶匯入。選取您在「任務 1.1」中設定的分組。
    • 物件名稱:選取您從 Amazon S3 傳輸的影像。
    • 啟動模式:選取「半虛擬化」模式。
  3. 按一下匯入影像以開始影像匯入。

  4. 映像檔建立之後,您就可以從該映像檔啟動執行處理。在自訂映像檔詳細資訊頁面中,選取建立執行處理並輸入下列資訊。

    • 名稱:輸入執行處理的名稱。
    • 區間: 選取要啟動執行處理的區間。
    • 可用性網域
    • VCN子網路。在此自學課程中,您可以使用公用子網路來略過 VPN 連線。
    • SSH 金鑰:您有兩個選項:產生新的 SSH 金鑰,或使用與 AWS 中相同的一組金鑰。若要繼續使用同一組金鑰,請上傳與來源 VM 之 AWS 中相同的公開金鑰。假設您的 AWS 公開金鑰為 .pem 金鑰格式,請將它變更為 .pem.pub,以將它上傳至 OCI 執行處理。這可讓您在 VM 中使用相同的私密金鑰 SSH。
  5. 啟動虛擬機器。佈建完成後,您就可以連線至它。請注意,您連線的使用者為 ec2-user ,而非 opc

    ssh -i pathToKey/keyfile ec2-user@<publicIp>
    

認可

其他學習資源

瀏覽 docs.oracle.com/learn 的其他實驗室,或前往 Oracle Learning YouTube 頻道存取更多免費學習內容。此外,請造訪 education.oracle.com/learning-explorer 以成為 Oracle Learning Explorer。

如需產品文件,請造訪 Oracle Help Center