Linux 遷移至……時的考量事項 IBM Cloud VPC

請參閱 Linux 中關於 IBM Cloud VPC 的遷移注意事項,包括 VirtIO 驅動程式驗證、cloud-init 設定以及網路設定。

在開始遷移之前,請先考慮以下資訊。

驗證 VirtIO 驅動程式

Linux 遷移通常比 Windows 簡單,但本指南描述了一些需要注意的重要事項。

下列 Linux 發行版本在核心中包含 VirtIO 驅動程式:

  • Ubuntu: 16.04 及以後版本
  • RHEL/CentOS: 6.x 及後
  • Debian: 8 及後續版本
  • SUSE:12 歲及以後

請使用以下指令,確認是否已安裝 VirtIO 驅動程式。

lsmod | grep virtio

您會看到以下驅動程式:

  • virtio_blk- 區塊裝置驅動程式
  • virtio_net- 網路驅動程式
  • virtio_scsi- SCSI 驅動程式
  • virtio_pci- PCI 匯流排驅動程式

如果缺少這些驅動程式,您需要重建支援 VirtIO 的核心,或安裝更新的發行版。

不需要等效的 Sysprep

Linux 不將驅動程式與硬體綁定。 核心會在開機時偵測新硬體,並載入適當的驅動程式。 此過程令遷移變得簡單,通常不需要任何準備。

調整網路設定

Linux 不會像 Windows 般將驅動程式與硬體綁定。 核心會在開機時偵測新硬體,並載入適當的驅動程式,這讓遷移變得更容易,通常不需要特別準備。

常見問題:網路介面名稱在遷移過程中改變。

在 VMware 中,您的介面可能會被命名:

  • ens192 (systemd 可預測命名)
  • eth0 (傳統命名)

在 VPC 中,它可以變更為:

  • ens3 或 ens33 (常見於 VirtIO 環境)
  • eth0 (如果您使用傳統的命名慣例)

要解析靜態 IP 設定,請使用下列資訊:

  • NetworkManager-based ( Red Hat Enterprise Linux (RHEL) 7 及以上版本,或 Ubuntu 版本)

    # Identify new interface name
    ip link show
    # Edit connection
    nmcli con edit "System eth0"
    # Change interface-name to new name
    # Save and quit
    # Restart NetworkManager
    systemctl restart NetworkManager
    
  • 基於 Netplan ( Ubuntu 18.04 +)

    # /etc/netplan/01-netcfg.yaml
    network:
      version: 2
      ethernets:
        ens3:  # Updated from ens192
          addresses: [10.240.0.10/24]
          gateway4: 10.240.0.1
          nameservers:
            addresses: [8.8.8.8, 8.8.4.4]
    
  • 傳統 /etc/network/interfaces ( Debian, 舊版 Ubuntu )

    auto ens3
    iface ens3 inet static
      address 10.240.0.10
      netmask 255.255.255.0
      gateway 10.240.0.1
    

修正 DHCP 設定:

如果您使用 DHCP,設定會自動進行,但您可能需要更新設定檔中的介面名稱。

雲端啟動注意事項

Cloud-init 用於初始化雲端實體,通常與影像範本一起使用。 該工具會在首次開機時執行,並執行以下操作:

  • 設定主機名稱
  • 配置網路
  • 建立使用者與 SSH 金鑰
  • 執行自訂腳本

遷移背景:若您已將 cloud-init 安裝在已遷移的虛擬伺服器上,VPC 會將首次開機視為「首次開機」,並觸發以下動作:

  • 主機名稱變更
  • 網路重新配置
  • 使用者帳號變更
  • 執行雲端啟動指令碼

設計決定

選項 1:停用雲端啟動

# Before migration
sudo touch /etc/cloud/cloud-init.disabled
# Or after migration via VNC console

選項 2:接受第一次開機的行為

  • 如果您希望 VPC 透過 DHCP 自動設定網路,這將非常有用
  • 可能需要在開機後進行手動調整(主機名稱、使用者)

選項 3:配置雲端啟動

  • 建立雲端啟動設定以保留您的設定
  • 較為複雜,但可讓您控制

對於個別 VM 移轉 (非範本部署),請停用 cloud-init 以保留現有組態。 對於基於範本的部署,請使用 cloud-init 進行自動組態。

磁碟分割與檔案系統注意事項

磁碟分割表驗證:傳輸磁碟後,使用下列指令驗證磁碟分割表是否完好:

# On worker virtual server instance (VSI) after transfer
fdisk -l /dev/vdb
# For GPT
gdisk -l /dev/vdb

調整開機磁碟區大小: 如果您向上調整開機磁碟區的大小 (例如:從 VMware 的 80 GB 到 VPC 的 100 GB)、

  1. 您可能需要更新磁碟分割表:

如果您向上調整開機磁碟區的大小 (從 VMware 的 80 GB 調整為 VPC 的 100 GB):

# For MBR
fdisk /dev/vda
# Delete and recreate partition with same start sector, new end sector
# For GPT (automatic backup GPT update)
gdisk /dev/vda
  1. 調整檔案系統大小:
# For ext4
resize2fs /dev/vda1
# For xfs
xfs_growfs /
# For LVM
pvresize /dev/vda2
lvextend -l +100%FREE /dev/mapper/vg-root
resize2fs /dev/mapper/vg-root

fstrim 與精簡配置

在 VMware 中,您可以使用 fstrim 來回收薄配置 VMDK 中的未使用空間。 在 VPC 中,所有磁碟區都在儲存層進行精簡預設,但 fstrim 對 VPC 中的空間回收沒有影響。 請記住,fstrim 並不會釋放儲存空間。

現有的 fstrim cron 作業可以維持原狀或移除,以避免不必要的 I/O。