Tag: VM

  • VMware ESXi 手動更新版本

    最近因為碰到 ESXi 8.0 U2 bug 的問題,要將原本的主機更新為 ESXi 8.0 U2b。本來想要重新裝一台主機再將 VM 過去,但伺服器原廠並未提供對應的 Custom ESXi 安裝包。再從VMware 的版本對應表 ( Build numbers and versions of VMware ESXi/ESX (2143832) )確認改版的 release 形式為 Patch,原則上也不會有伺服器原廠整合好的安裝包,故即便新安裝也還是要再手動進行升級。

    先登入 VMware 官網後,連到下載 Patch 的頁面,下載ESXi 8.0 U2b 的 Depot 包 Zip 壓縮檔,並複製到 ESXi 主機的儲存區中:https://my.vmware.com/group/vmware/patch#search

    確認 ESXi Server 有開啟 SSH 後,使用 Putty 等 SSH 溝通工具連線並登入至 ESXi。

    參考官方的 ESXCLI 指令說明 ( Update a Host with Individual VIBs ) 先查詢 Depot 包內的 VIB 清單:

    esxcli –server=<server_name> software sources vib list –depot=absolute_path_to_depot_zip_file

    再從列出來的清單中找出要用來更新VIB (通常會最新版本號的 standard )後,下指令更新即可:

    esxcli software vib update –depot=absolute_path_to_depot_zip_file

    另外,如果有需要也可在指令後面加入 –no-hardware-warning,以忽略硬體警告。

    跑完確認無誤後重啟主機,透過指令來確認版本是否已更新:vmware -vl

  • 在Ubuntu Linux上擴充虛擬機的邏輯分割區

    流程說明

    • 檢查磁區:使用 lsblk 命令來檢查磁碟設備名稱與分割區位置。
    • 更改硬碟容量:將虛擬機硬碟從原始大小擴充至新的大小,例如從8G到16G。
    • 擴充分割區:使用 growpart 命令來擴充分割區,並確認變更後的大小。
    • 擴充檔案系統:執行 pvs 和 pvresize 來擴充物理分割區,然後用 lvextend 擴充邏輯分割區並整合所有可用空間。

    以下以 UBuntu 22.04 使用單顆虛擬硬碟,並使用安裝程式預設的磁碟分割方式所建立的虛擬機器為例:

    1. 刪除虛擬機器的快照並合併硬碟 (不做會無法更動硬碟容量)

    2. 設定虛擬機器所需要的硬碟容量

    3. 重啟虛擬機器(不重啟系統認不到擴充後的容量):reboot

    4. 檢查磁區:lsblk

    5. 擴充硬碟容量:sudo growpart /dev/sda 3

    6. 檢查磁區確認硬碟是否已擴充:lsblk

    7. 再次重啟虛擬機器(我的情況是不重啟無法擴充檔案系統):reboot

    8. 擴充檔案系統:sudo pvs

    9. 擴充檔案系統(續):sudo pvresize /dev/sda3

    10. 檢查檔案系統是否已擴充:lsblk

    11. 擴充邏輯分割:sudo lvextend -r -l +100%FREE /dev/mapper/ubuntu–vg-ubuntu–lv

    12. 檢查邏輯分割是否已擴充:lsblk

    13. 重啟虛擬機器已確認系統是否運作正常無誤:reboot

    14. 檢查所有確認硬碟分割設定是否正確無誤:lsblk

  • ESXi – 自動化重置 VM 虛擬機器

    ESXi – 自動化重置 VM 虛擬機器

    在 VM 的應用上,有時候需要定期將 VM 環境到特定的狀態,如設定還原、連線數量清零 … 等等的維護。下面為透過 crontab 自動還原 VM 狀態並啟動的做法。

    使用軟體:ESXi管理工具 (ex: VMware Host Client, VMware Workstation, … )、SSH Client (ex: putty)

    Automatic Reset ESXi VM State (Snapshot)

    1. 確保 ESXi 的 SSH 服務已啟用

    2. 設定 VM 重啟後自動還原到最後一個快照 snapshots。這裡可以透過 VMware Workstation 設定 VM 選項裡的快照設定,或是透過VMware Host Client 在 VM 編輯設定的組態參數中,直接新增參數:
    anapshot.action : autoRevert

    3. 使用 putty 等工具連線登入到 ESXi (由於屬於系統的核心設定,建議用 root 身分操作)

    4. 登入後透過內建的 vim ,建立關閉指定 VM 的 script 執行檔
    (進入vim 後按[A]即可編輯, 按[Esc]退出編輯模式, 按[Shift]+[:]後輸入 wq 即可存檔離開)

    vi /power-off.sh
    chmod 755 /power-off.sh
    vmname=”您的虛擬機器名稱”
    vmid=$(vim-cmd vmsvc/getallvms | grep “$vmname” | awk ‘{print$1}’)
    stat1=$(vim-cmd vmsvc/power.getstate “$vmid” | grep “on”)
    if [ “$stat1” == “Powered on” ]
    then
    vim-cmd vmsvc/power.off “$vmid”
    fi

    5 建立啟動指定 VM 的 script 執行檔,並於編輯完成後授予執行的權限

    vi /power-on.sh
    chmod 755 /power-on.sh
    vmname=”您的虛擬機器名稱”
    vmid=$(vim-cmd vmsvc/getallvms | grep “$vmname” | awk ‘{print$1}’)
    stat1=$(vim-cmd vmsvc/power.getstate “$vmid” | grep “off”)
    if [ “$stat1” == “Powered off” ]
    then
    vim-cmd vmsvc/power.on “$vmid”
    fi
    6. 編輯 crontab 排程設定檔,以設定定期執行的時間。這裡以每天晚上10點02分執行 power-off.sh 關閉 VM,並每隔16分鐘確保 VM 開啟為例。
    vi /var/spool/cron/crontabs/root
    2 14 * * * /power-off.sh
    */16 * * * * /power-on.sh

    7. 為了讓排程設定生效,需要重啟 crontab 服務。先確認目前 crontab 執行中的 process id,刪除後重新執行即可。

    cat /var/run/crond.pid
    kill {找到的process id}
    crond

    8. 上述步驟便能讓目前 ESXi 上的 VM 自動重置狀態並啟動,但由於 ESXi 開機時會重置 crontab 設定,故還需要透過 ESXi 開機執行的 script 檔來自動加上設定。

    /bin/kill ${cat /var/run/crond.pid}
    /bin/echo ‘2 14 * * * /power-off.sh’ >> /var/spool/cron/crontabs/root
    /bin/echo ‘*/16 * * * * /power-on.sh’ >> /var/spool/cron/crontabs/root
    crond

    以上,便能自動化的讓 VM 虛擬機器定期重置。

  • Hyper-V 和 ESX/ESXi 虛擬網路卡的 MAC 範圍

    Hyper-V 和 ESX/ESXi 虛擬網路卡的 MAC 範圍

    如同資料管理需要建立編碼原則一樣,在維護 VM 虛擬機器上,至關重要的虛擬網路卡也建議建立對應的 MAC 編碼原則以及資料維護的清單。

    微軟的 Hyper-V 和 VMware 的 ESX/ESXi 有各自限定的 MAC 範圍,自訂的 MAC 必須落在該範圍內,否則會 VM 啟動時會報錯。(跨虛擬環境移轉時,務必確認該環節)

    各虛擬環境的虛擬網路卡MAC範圍

    • Hyper-V:00:1D:D8:B7:1C:00 ~ 00:1D:D8:F4:1F:FF
    • ESX/ESXi:00:50:56:00:00:00 ~ 00:50:56:3F:FF:FF
  • CentOS 7-Install VMTools

    以root身份依序執行以下指令:

    yum groupinstall -y "Perl Support"
    
    yum install -y open-vm-tools
    
    yum install -y net-tools
    
    mkdir /mnt/cdrom
    
    mount /dev/cdrom /mnt/cdrom
    
    cd /mnt/cdrom
    
    cp VMwareTools* /tmp
    
    cd /tmp
    
    tar zxpf VMwareTools*
    
    cd VMware-tools-distrib
    
    ./VMware-install.pl