準備適用於 Azure 的 Oracle Linux 虛擬機器
適用於:✔️ Linux VM ✔️ 彈性擴展集
本文假設您已將 Oracle Linux 作業系統 (OS) 安裝到虛擬硬碟 (VHD)。 有多項工具可用來建立 .vhd 檔案。 一個範例是虛擬化解決方案,例如 Hyper-V。 如需指示,請參閱 安裝 Hyper-V 角色及設定虛擬機器 (VM)。
Oracle Linux 安裝注意事項
- 如需有關針對 Azure 準備 Linux 的更多祕訣,請參閱一般 Linux 安裝注意事項。
- Hyper-V 和 Azure 支援具有 Unbreakable Enterprise Kernel (UEK) 或 Red Hat Compatible Kernel 的 Oracle Linux。
- Hyper-V 和 Azure 不支援 Oracle 的 UEK2,因為不包含必要的驅動程式。
- Azure 不支援 VHDX 格式,只支援固定 VHD。 您可以使用 Hyper-V 管理員或
convert-vhd
Cmdlet,將磁碟轉換為 VHD 格式。 - 需要裝載了使用者定義函式 (UDF) 檔案系統的核心支援。 在 Azure 上第一次開機時,佈建組態會透過連接客體的 UDF 格式媒體傳遞至 Linux VM。 Azure Linux 代理程式必須能夠掛接 UDF 檔案系統讀取其組態並佈建 VM。
- 安裝 Linux 系統時,我們建議您使用標準磁碟分割而不是邏輯磁碟區管理員 (LVM),後者經常是許多安裝的預設設定。 這些標準磁碟分割可避免 LVM 與複製之虛擬機器的名稱衝突,特別是為了疑難排解而需要將作業系統磁碟連接至其他虛擬機器時。 您也可以在資料磁碟上使用 LVM (機器翻譯) 或 RAID (機器翻譯)。
- 早於 2.6.37 的 Linux 核心版本不支援具較大 VM 大小之 Hyper-V 上的 NUMA。 這個問題主要會影響使用上游 Red Hat 2.6.32 核心的較舊發行版本,且已在 Oracle Linux 6.6 和更新版本中加以修正。
- 請勿在 OS 磁碟上設定交換磁碟分割。
- Azure 上的所有 VHD 必須具有與 1 MB 對應的虛擬大小。 從原始磁碟轉換成 VHD 時,您必須在轉換前先確保原始磁碟大小是 1 MB 的倍數。 如需詳細資訊,請參閱 Linux 安裝注意事項。
- 確定已啟用
Addons
儲存機制。 編輯檔案/etc/yum.repos.d/public-yum-ol6.repo
(Oracle Linux 6) 或/etc/yum.repos.d/public-yum-ol7.repo
(Oracle Linux 7)。 將此檔案中的行enabled=0
變更為 [ol6_addons] 或 [ol7_addons] 底下的enabled=1
。
Oracle Linux 6.X
重要
請記住,Oracle Linux 6.x 的生命週期即將結束。 Oracle Linux 6.10 版已提供延伸生命週期支援,將於 2024 年 7 月結束。
您必須在 OS 中完成特定組態步驟,VM 才能在 Azure 中執行。
在 Hyper-V 管理員的中間窗格中,選取 VM。
選取 [連線],以開啟 VM 的視窗。
解除安裝
NetworkManager
:sudo rpm -e --nodeps NetworkManager
注意
如果尚未安裝封裝,此命令會失敗,並出現錯誤訊息。 這個訊息是預料中的。
在
/etc/sysconfig/
目錄中,建立名為 network 且包含下列文字的檔案:NETWORKING=yes HOSTNAME=localhost.localdomain
在
/etc/sysconfig/network-scripts/
目錄中,建立名為 ifcfg-eth0 且包含下列文字的檔案:DEVICE=eth0 ONBOOT=yes BOOTPROTO=dhcp TYPE=Ethernet USERCTL=no PEERDNS=yes IPV6INIT=no
修改 udev 角色可防止產生乙太網路介面的靜態規則。 在 Azure 或 Hyper-V 中複製 VM 時,這些規則可能會造成問題:
sudo ln -s /dev/null /etc/udev/rules.d/75-persistent-net-generator.rules sudo rm -f /etc/udev/rules.d/70-persistent-net.rules
確定網路服務在開機時啟動:
sudo chkconfig network on
安裝
python-pyasn1
:sudo yum install python-pyasn1
修改 grub 組態中的核心開機那一行,使其額外包含用於 Azure 的核心參數。 若要執行此步驟,請在文字編輯器中開啟
/boot/grub/menu.lst
,並確定核心包含以下參數:console=ttyS0 earlyprintk=ttyS0
此設定可確保所有主控台訊息都會傳送到第一個序列埠,以協助 Azure 支援團隊進行問題偵錯程序。
除了前述步驟以外,我們還建議您「移除」 下列參數:
rhgb quiet crashkernel=auto
在雲端環境中,您會將所有記錄傳送到序列埠,因此不適合使用圖形化和無訊息開機。
如果您需要,可以保留設定
crashkernel
選項。 此參數會減少 VM 中約 128 MB 或以上的可用記憶體數量,這可能會對較小型的 VM 造成問題。確定您已安裝 SSH 伺服器,並已設定為在開機時啟動。 此設定通常是預設值。
執行以下命令來安裝 Azure Linux 代理程式。 最新版為 2.0.15。
sudo yum install WALinuxAgent
如果
NetworkManager
和NetworkManager-gnome
套件沒有如步驟 2 所述遭到移除,則安裝WALinuxAgent
套件會將這兩個套件移除。請不要在 OS 磁碟上建立交換空間。
Azure Linux 代理程式可在 VM 佈建於 Azure 後,使用附加至 VM 的本機資源磁碟自動設定交換空間。 本機資源磁碟是暫存磁碟,可能會在 VM 取消佈建時清空。 安裝 Azure Linux 代理程式 (請參閱上一個步驟) 後,請在
/etc/waagent.conf
中適當修改下列參數:ResourceDisk.Format=y ResourceDisk.Filesystem=ext4 ResourceDisk.MountPoint=/mnt ResourceDisk.EnableSwap=y ResourceDisk.SwapSizeMB=2048 ## NOTE: set this to whatever you need it to be.
取消佈建 VM,並準備將其佈建於 Azure 上:
sudo waagent -force -deprovision sudo export HISTSIZE=0 sudo logout
在 Hyper-V 管理員中,選取 [動作]>[關閉]。 您現在可以將 Linux VHD 上傳至 Azure。
Oracle Linux 7.0 和更新版本
如果您使用 Oracle Linux 7.0 或更高版本,請遵循後續各節中的步驟。
Oracle Linux 7 中的變更
準備適用於 Azure 的 Oracle Linux 7 VM 與 Oracle Linux 6 類似,但有幾項差異值得注意:
- Azure 支援具有 Unbreakable Enterprise Kernel (UEK) 或 Red Hat Compatible Kernel 的 Oracle Linux。 建議您搭配 UEK 使用 Oracle Linux。
NetworkManager
套件不會再與 Azure Linux 代理程式發生衝突。 預設會安裝此套件,建議您不要將它移除。- GRUB2 現已作為預設的開機載入器使用,因此我們已變更編輯核心參數的程序。 (請參閱「設定步驟」一節。)
- XFS 現為預設的檔案系統。 如果需要,您仍可使用 ext4 檔案系統。
設定步驟
在 Hyper-V 管理員中,選取 VM。
選取 [連線],以開啟 VM 的主控台視窗。
在
/etc/sysconfig/
目錄中,建立名為 network 且包含下列文字的檔案:NETWORKING=yes HOSTNAME=localhost.localdomain
在
/etc/sysconfig/network-scripts/
目錄中,建立名為 ifcfg-eth0 且包含下列文字的檔案:DEVICE=eth0 ONBOOT=yes BOOTPROTO=dhcp TYPE=Ethernet USERCTL=no PEERDNS=yes IPV6INIT=no
修改 udev 角色可防止產生乙太網路介面的靜態規則。 在 Azure 或 Hyper-V 中複製 VM 時,這些規則可能會造成問題:
sudo ln -s /dev/null /etc/udev/rules.d/75-persistent-net-generator.rules
確定網路服務在開機時啟動:
sudo chkconfig network on
安裝
python-pyasn1
套件:sudo yum install python3-pyasn1
清除目前的 yum 中繼資料並安裝任何更新:
sudo yum clean all sudo yum -y update
修改 grub 組態中的核心開機那一行,使其額外包含用於 Azure 的核心參數。 若要執行此步驟,請在文字編輯器中開啟
/etc/default/grub
並編輯GRUB_CMDLINE_LINUX
參數。 例如:GRUB_CMDLINE_LINUX="console=ttyS0 earlyprintk=ttyS0 net.ifnames=0"
此修改作業也會確保所有主控台訊息都會傳送給第一個序列埠,以協助 Azure 支援團隊進行問題偵錯程序。 也會關閉具有 UEK 的 Oracle Linux 7 中對網路介面卡的命名慣例。 我們也建議您「移除」下列參數:
rhgb quiet crashkernel=auto
在雲端環境中,您會將所有記錄傳送到序列埠,因此不適合使用圖形化和無訊息開機。
如果您需要,可以保留設定
crashkernel
選項。 此參數會減少 VM 中約 128 MB 或以上的可用記憶體數量,這可能會對較小型的 VM 造成問題。編輯完
/etc/default/grub
之後,請重建 grub 設定:sudo grub2-mkconfig -o /boot/grub2/grub.cfg
確定您已安裝 SSH 伺服器,並已設定為在開機時啟動。 此設定通常是預設值。
安裝 Azure Linux 代理程式與相依性:
sudo yum install WALinuxAgent sudo systemctl enable waagent
安裝
cloud-init
來處理佈建:sudo yum install -y cloud-init cloud-utils-growpart gdisk hyperv-daemons
設定
cloud-init
的waagent
:sudo sed -i 's/Provisioning.UseCloudInit=n/Provisioning.UseCloudInit=y/g' /etc/waagent.conf sudo sed -i 's/Provisioning.Enabled=y/Provisioning.Enabled=n/g' /etc/waagent.conf
sudo echo "Adding mounts and disk_setup to init stage" sudo sed -i '/ - mounts/d' /etc/cloud/cloud.cfg sudo sed -i '/ - disk_setup/d' /etc/cloud/cloud.cfg sudo sed -i '/cloud_init_modules/a\\ - mounts' /etc/cloud/cloud.cfg sudo sed -i '/cloud_init_modules/a\\ - disk_setup' /etc/cloud/cloud.cfg
echo "Allow only Azure datasource, disable fetching network setting via IMDS"
sudo cat > /etc/cloud/cloud.cfg.d/91-azure_datasource.cfg <<EOF datasource_list: [ Azure ] datasource: Azure: apply_network_config: False EOF if [[ -f /mnt/resource/swapfile ]]; then echo Removing swapfile - Oracle Linux uses a swapfile by default swapoff /mnt/swapfile rm /mnt/swapfile -f fi echo "Add console log file" cat >> /etc/cloud/cloud.cfg.d/05_logging.cfg <<EOF # This tells cloud-init to redirect its stdout and stderr to # 'tee -a /var/log/cloud-init-output.log' so the user can see output # there without needing to look on the console. output: {all: '| tee -a /var/log/cloud-init-output.log'} EOF
交換組態:
請勿在作業系統磁碟上建立交換空間。
之前會使用 Azure Linux 代理程式,在 VM 佈建於 Azure 後,使用連結至 VM 的本機資源磁碟自動設定交換空間。 不過,
cloud-init
現在會處理此步驟。 您不得使用 Linux 代理程式格式化資源磁碟來建立分頁檔。 適當修改/etc/waagent.conf
中的下列參數:sudo sed -i 's/ResourceDisk.Format=y/ResourceDisk.Format=n/g' /etc/waagent.conf sudo sed -i 's/ResourceDisk.EnableSwap=y/ResourceDisk.EnableSwap=n/g' /etc/waagent.conf
如果您想要裝載、格式化和建立交換,您可以:
- 每次建立 VM 時,將此程式碼當做
cloud-init
設定傳入。 - 使用模擬到映像中的
cloud-init
指示詞,每次建立 VM 時都會執行此步驟:
echo 'DefaultEnvironment="CLOUD_CFG=/etc/cloud/cloud.cfg.d/00-azure-swap.cfg"' >> /etc/systemd/system.conf cat > /etc/cloud/cloud.cfg.d/00-azure-swap.cfg << EOF #cloud-config # Generated by Azure cloud image build disk_setup: ephemeral0: table_type: mbr layout: [66, [33, 82]] overwrite: True fs_setup: - device: ephemeral0.1 filesystem: ext4 - device: ephemeral0.2 filesystem: swap mounts: - ["ephemeral0.1", "/mnt/resource"] - ["ephemeral0.2", "none", "swap", "sw,nofail,x-systemd.requires=cloud-init.service,x-systemd.device-timeout=2", "0", "0"] EOF
- 每次建立 VM 時,將此程式碼當做
取消佈建 VM,並準備將其佈建於 Azure 上:
sudo cloud-init clean sudo rm -f /var/log/waagent.log sudo waagent -force -deprovision sudo rm -f ~/.bash_history sudo export HISTSIZE=0
注意
如果您要移轉特定的 VM,但不想建立一般化映像,請略過取消佈建步驟。
在 Hyper-V 管理員中,選取 [動作]>[關閉]。 您現在可以將 Linux VHD 上傳至 Azure。
相關內容
您現在可以開始使用您的 Oracle Linux .vhd 在 Azure 中建立新的 VM。 如果您是第一次將 .vhd 檔案上傳至 Azure,請參閱從自訂磁碟建立 Linux VM。