使用者工具

網站工具


tech:pvetips

Proxmox VE(PVE) 安裝相關紀錄

更改 Package Repositories

移除 Cluster 的方式

移除 cluster 內的一個 node

  • Exp. pve01 方式
    pvecm nodes
    pvecm delnode pve01
    pvecm status
    rm -rf /etc/pve/nodes/pve01

更改 hostname 方式

更改主機 IP 方式

  1. Web UI 更改 IP : System→Network→ 選定介面卡 → Edit
  2. 更改 /etc/hosts 內的 IP
  3. 關閉 cluster 服務
    service pve-cluster stop
  4. 修改 /etc/pve/corosync.conf 內 node ip 與 totem 內的 ip
  5. 重新開機

設定 SSD 硬碟當 Swap Memory 方式

  • 當 PVE 系統安裝在 USB or HD 上時, 預設會將 Swap Memory 指定在其中的一個 Partition 上, 導致使用到 Swap Memory 效能會變很差
  • 先查看目前系統記憶體使用狀況
    free -m
    swapon -s
  • 假設 SSD 所在 /dev/sdc , 透過 fdisk 建立 16GB 的 Swap Memory Partition
    fdisk /dev/sdc
    1. 建立 16GB Partition
      Command (m for help): n
      Partition number (1-128, default 1): 1
      First sector (34-937703054, default 2048):
      Last sector, +sectors or +size{K,M,G,T,P} (2048-937703054, default 937703054): +16G
      
    2. 更改 type 為 Linux Swap
      Command (m for help): t
      Selected partition 1
      Hex code (type L to list all codes): 19
      Changed type of partition 'Linux swap' to 'Linux swap'.
      
    3. 檢視與寫入
      Command (m for help): p
      :
      /dev/sdc1   2048 33556479 33554432  16G Linux swap
      :
      Command (m for help): w
      :
      Syncing disks.
      
    4. 使用 mkswap 讓系統知道 /dev/sdc1 是 Swap Memory Partition
      mkswap /dev/sdc1
    5. 讓 /dev/sdc1 的 Swap Memory 立即生效
      swapon /dev/sdc1
    6. 使用 swapon -s 列出目前的 Swap Memory
      :
      /dev/zd0                                partition       8388604 434944  -2
      /dev/sdc1                               partition       16777212        0       -3
      
    7. 確認 /dev/sdc1 的 id
      blkid | grep swap

      /dev/sdc1: UUID="068ba285-5bb9-4b2f-b2e1-4dc599bd22e1" TYPE="swap" PARTUUID="1d334105-c76e-4ab2-baec-2b35fde71a02"
      /dev/zd0: UUID="a06df01d-bf15-4816-bc3e-f1d3c623ff20" TYPE="swap"
      

    8. 關閉原本 /dev/zd0 的 swap memory 設定, 修改
      /etc/fstab
      :
      #/dev/zvol/rpool/swap none swap sw 0 0
      UUID=068ba285-5bb9-4b2f-b2e1-4dc599bd22e1       none swap sw  0 0
      :
    9. 重新啟動 pve node
      sync;sync;sync;reboot

加入一顆 LVM thin 的硬碟方式

  • 移除 lvm 的方式 Exp. 以下所建立的 vg-ssd
    • pvcreate /dev/sdb1
    • vgcreate vg-ssd /dev/sdb1
    • vgdisplay vg-ssd
vgremove vg-ssd
pvremote /dev/sdb1

加入一顆 ZFS 的硬碟方式

  • 建立一個 ZFS 的 Partation Exp. /dev/sdb
    fdsik /dev/sdb
    • n : 建立一個新的 Partation
    • t : 48 - Solaris /usr & Apple ZFS
    • w : 寫入
  • 透過 zfs 工具建立 pool Exp. /dev/sdb2 → ssd-zpool
    zpool create -f -o ashift=12 ssd-zpool /dev/sdb2
    zfs set compression=lz4 ssd-zpool
    zpool list
    [email protected]:~# zpool list
    NAME        SIZE  ALLOC   FREE  EXPANDSZ   FRAG    CAP  DEDUP  HEALTH  ALTROOT
    rpool       928G   169G   759G         -     8%    18%  1.00x  ONLINE  -
    ssd-zpool   448G   444K   448G         -     0%     0%  1.00x  ONLINE  -
  • 再透過 PVE web 介面 Datacenter → Storage → Add → ZFS
    • 輸入 ID Exp. ssd-zfs
    • 選擇 ZFS Pool : ssd-zpool
    • 這樣就可以加入 ZFS 的磁碟

將一顆實體 硬碟 加入 VM 使用

    1. 先確認實體硬碟的廠牌、型號與序號
      ls -l /dev/disk/by-id/ | grep ata-*
    2. 確認要加入的實體硬碟連結 Exp. ata-TOSHIBA_DT01ACA300_Z3MH9S1GS
    3. 加入 VM Exp. VM 編號 106
      qm set 106 -virtio2 /dev/disk/by-id/ata-TOSHIBA_DT01ACA300_Z3MH9S1GS
    4. 檢查是否 VM 106 的設定檔有出現實體硬碟設定
      cat /etc/pve/qemu-server/106.conf

      :
      virtio2: /dev/disk/by-id/ata-TOSHIBA_DT01ACA300_Z3MH9S1GS,size=2930266584K
      

    5. 關閉 VM , 再透過 PVE Web 介面重新啟動

直接使用 virt-install 建立的 CentOS6 VM Image 開機程序過久問題

  • 主要問題是在 pve 建立一個新的 VM 時, 預設並不會加入 serial 虛擬裝置, 造成原本的 CentOS6 VM Image 在開機過程中一直出現 press any key to continue 嘗試到最後才會跳過進入登入畫面
  • 解決方式 - messageimage_1532527631952.jpg

migration 出現 No such cluster node 問題

  • 主要問題是 vm 目前的主機端認為遷移目標主機有問題, 所以出現這樣的訊息..
  • 解決方式 - 連入遷移主機可以看到目標主機是離線狀態(實際上並沒有離線), 所以要重新啟動 pve-cluster corosync 服務
    systemctl restart pve-cluster corosync

migration 出現 Host key verification failed 問題

  • 主要是 ssh 遠端免密碼登入認證檔出現異常問題.
  • 解決方式 - 依據錯誤訊息提示的命令語法重新執行一次 Exp. migration 出現的錯誤訊息
    2018-08-30 12:34:47 # /usr/bin/ssh -e none -o 'BatchMode=yes' -o 'HostKeyAlias=pve-45' [email protected] /bin/true
    2018-08-30 12:34:47 Host key verification failed.
    2018-08-30 12:34:47 ERROR: migration aborted (duration 00:00:00): Can't connect to destination address using public key
    TASK ERROR: migration aborted

    登入 PVE 主機執行以下語法

    [email protected]:/etc/pve/priv# /usr/bin/ssh -e none -o 'HostKeyAlias=pve-45' [email protected] /bin/true
    The authenticity of host 'pve-45 (192.168.1.45)' can't be established.
    ECDSA key fingerprint is SHA256:NtU1vxeu32E9nXdhI8rjjRIxxAisGZRo/pmpW630XGk.
    Are you sure you want to continue connecting (yes/no)? yes
    Warning: Permanently added 'pve-45' (ECDSA) to the list of known hosts.
    

online migration 使用本機硬碟的 VM

  • PVE Cluster 內的 node 有相同名稱的 Local Storage Exp. ssd-zfs
  • VM 不能設定 Replication 設定
  • 在 VM 所在的節點 shell 下以下的命令
    qm migration <vmid> <目標節點名稱> --with-local-disks --online

    Exp. VM 原本在節點 TP-PVE-250 , vmid: 104 , 目標節點名稱: TP-PVE-249 , 在 TP-PVE-250 節點 shell 下以下命令

    [email protected]:~# qm migrate 104 TP-PVE-249 --with-local-disks --online
  • 會出現先將 VM Disk 複製過去目標節點, 之後會將記憶體資料同步過去目標節點, 才完成切換, 所以 VM Disk 如果愈大, 遷移時間就會愈久

設定使用 iSCSI 的 LVM Storage 方式

  • 先確認已經有 iSCSI 的分享來源 Exp. FreeNAS IP: 192.168.11.246
  • 登入 PVE Node 掛載 iSCSI Volume
    1. 先確認 iSCSI 分享的 target
      iscsiadm -m discovery -t sendtargets -p 192.168.11.246

      192.168.11.246:3260,-1 iqn.2005-10.org.freenas.ctl:freenas
      

    2. 登錄 iSCSI target
      iscsiadm -m node -T iqn.2005-10.org.freenas.ctl:freenas -p 192.168.11.246 -l

      Logging in to [iface: default, target: iqn.2005-10.org.freenas.ctl:freenas, portal: 192.168.11.246,3260] (multiple)
      Login to [iface: default, target: iqn.2005-10.org.freenas.ctl:freenas, portal: 192.168.11.246,3260] successful.
      

    3. 設定開機可以自動登錄 iSCSI
      iscsiadm -m node -p 192.168.11.246 -o update -n node.startup -v automatic
    4. 如果有其他 PVE Node 每一台都執行以上兩個步驟
  • 將 iSCSI 的 Volume 建立成為 LVM partition
    1. 執行後可以使用 fdisk -l 看到 PVE Node 多出來一個 Disk Exp. /dev/sdg
      fdisk -l

      :
      Disk /dev/sdg: 500 GiB, 536870912000 bytes, 1048576000 sectors
      Units: sectors of 1 * 512 = 512 bytes
      Sector size (logical/physical): 512 bytes / 131072 bytes
      I/O size (minimum/optimal): 131072 bytes / 1048576 bytes
      

    2. 使用 fdisk /dev/sdg 建立 LVM partition
      fdisk /dev/sdg
      1. Command (m for help): g (建立GPT Partition Table)
      2. Command (m for help): n (建立新的 Partition )
      3. Command (m for help): t (更改 Type 為 31 Linux LVM)
      4. Command (m for help): p (列出新建立的 Partition 是否正確)
      5. Command (m for help): w (沒問題就 w 寫入)
    3. 使用 pvcreate 建立 LVM 的 Physical Volume(PV)
      pvcreate /dev/sdg1
    4. 使用 vgcreate 建立 LVM 的 Volume Group (VG)
      vgcreate vg-pve /dev/sdg1
    5. 在 PVE Web UI → Datacenter → Storage → Add → LVM
    6. 在彈出的 Add:LVM 視窗內
      1. 填入 ID Exp. freenas-lvm
      2. 選擇剛剛建立的 vg-pve
      3. 將 Shared 打勾
      4. 點下 Add
    7. Datacenter → Storage 內就可以看到增加 freenas-lvm 的項目

中斷 Backup 的處理方式

  • 正常只要透過 UI 的 Tasks→點開正在 Backup 的項目→Stop 即可中斷
  • 但有時無法順利中斷, 或是中斷後對 VM 進行操作時出現 TASK ERROR: VM is locked (backup) 的錯訊息
  • 可以在PVE主機端透過以下語法進行: Exp. VM id = 111
    vzdump -stop
    ps -ef | grep vzdump
    qm unlock 111
  • 參考網址 :

設定自動 Snapshot 的方式

CT Backup 出現 CT is locked (snapshot-delete) 的解決方式

  • 設定每天自動備份, 結果某一天突然看到備份失敗, 紀錄出現類似以下的訊息
    :
    ERROR: Backup of VM 115 failed - CT is locked (snapshot-delete)
    :
  • 查看原因是前一天自動備份時出現異常, 導致目前這個 CT 155 是在 lock 狀態, 查看 Snapshots 也有一個 backup 的 snapshot, 無法手動刪除, 原因也是 snapshot-delete
  • 可以在 PVE 主機端透過以下語法解開 lock 狀態: Exp. CT id=115
    pct unlock 115
  • 完成後就可以刪除 CT 115 的 snapshot 以及進行 backup
  • 如果 unlock 之後, 還是因為 snapshot 持續造成異常 lock 且 snapshot-delete 也無法刪除
  • 可以手動修改 /etc/pve/qemu-server/ or /etc/pve/lxc 內的 <vm_id>.conf 內, 移除 [snapshot] 段落
  • 然後需要關閉 vm , 在透過 pve 啟動 vm 就可解決這問題

PVE 主機啟用 iSCSI target(server) + ZFS

  • 安裝與設定程序
    • 建立 ZFS 預計提供給 iSCSI target 的儲存空間
      • 透透過 PVE 1)建立 ZFS pool 或使用安裝時建立的 ZFS rpool
      • ZFS 參考語法:
        • zpool list : 查看有哪些 ZFS pool
        • zfs list : 查看有哪些 ZFS dataset
        • zfs destroy : 將不要的 ZFS dataset 刪除掉 Exp.
          zfs destroy -r rpool/data/subvol-105-disk-1
        • zfs create : 建立一個新的 ZFS dataset Exp. 建立 400G 命名 v400 的 dataset 執行語法:
          zfs create -V 400g rpool/v400
    • 安裝 iSCSI Target 服務
      apt-get install tgt
    • 設定 iSCSI Target Exp.
      • 儲存路徑 : 上面 zfs create 建立的 rpool/v400 對應路徑 - /dev/zvol/rpool/v400
      • 命名 iqn.2018-09.everplast.net:v400
      • 允許 iSCSI initiator(Client) 的 IP 範圍 : 10.168.0.0/24
      • 不特別設定密碼與加密
      • 編輯設定檔語法
        /etc/tgt/conf.d/ever_iscsi.conf
        <target iqn.2018-09.everplast.net:v400>
        # Provided device as an iSCSI target
        backing-store /dev/zvol/rpool/v400
        initiator-address 10.168.0.0/24
        #incominguser tecmint-iscsi-user password
        #outgoinguser debian-iscsi-target secretpass
        </target>
    • 啟動與設定 iSCSI Target 服務開機自動啟動
      service tgt start
      systemctl enable tgt
  • 參考網址 :

PVE 主機建立 ZFS Storage

  • pve 5.2-8 之後開始可以再 WebUI 建立 ZFS
  • 測試透過外接 USB 兩顆 1TB 硬碟建立 Mirror ZFS 的 Storage
    1. 需要將兩棵 USB 現有的 Partation 刪除才可以出現在 Create ZFS 的未使用清單內
    2. RAID Level 選 Mirror
    3. 完成建立後透過選這新增 usb-zfs 的 detail 可以看到狀態
    4. 之後就可以在 Datacenter 建立 usb-zfs 的 Storage 提供放置 VM Image
  • 測試將一顆 USB 硬碟拔掉, 跑在上面的 VM 確實不會受到影響
  • 將 USB 硬碟接回, 處理復原程序(必須在主機端下命令處理):
    • 透過 zpool status -x 了解目前的狀況
    • 透過 zpool replace 無法將接回的硬碟加回
    • 透過 zpool detach 將硬碟移出
    • 透過 zpool attach 將硬碟加回
    • 透過 WebUI 也可以了解目前的狀況

Guest VM 安裝 Agent

  • 安裝程序 : CentOS VM
    yum install qemu-guest-agent
  • PVE 端設定 VM → Option → Qemu Agent → [v]Enabled
  • 要透過 PVE 重起 VM 才會生效
  • VM → Summary → IPs 可以看到 VM 內分配的 IP

PVE 主機安裝 snmpd

設定 VM 的開機與關機順序

參考網址

1)
PVE 5.2-8 開始可以透過 UI 建立
tech/pvetips.txt · 上一次變更: 2019/04/22 17:30 由 jonathan_tsai