差異處

這裏顯示兩個版本的差異處。

連向這個比對檢視

- 兩邊的前次修訂版 前次修改
下次修改
-tech:pvetips [2020/09/02 17:43]
– 還原成舊版 (2020/09/01 09:08) jonathan_tsai
+ 前次修改
+tech:pvetips [2025/04/11 15:28] (目前版本)
– [Proxmox VE(PVE) 安裝相關紀錄] jonathan
@@ 行 -1,99 +1,143 @@ 移除 建立
 ====== Proxmox VE(PVE) 安裝相關紀錄 ======
   * 版本資訊(Roadmap) - https://pve.proxmox.com/wiki/Roadmap
 ===== 更改 Package Repositories =====
   * [[https://pve.proxmox.com/wiki/Package_Repositories]] 
   * 參考網址 - https://nevertired.nctu.me/2019/11/09/proxmox-ve-%E6%9B%B4%E6%96%B0/
 
 ==== PVE 5 ===== 
     - <code h {{tabinclude>tech/etcpvetips/aptpve8, tech/sources.list> 
 deb http:pvetips/pve7, tech/pvetips/pve6, tech/ftp.debian.orgpvetips/debian stretch main contribpve5}}
 
 # PVE pve-no-subscription repository provided by proxmox.com,==== 執行命令列更新 ==== 
  # NOT recommended for production use * <cli> 
 deb http://download.proxmox.com/debianapt update 
 apt upgrade 
 </pve stretch pve-no-subscriptioncli>
 
 # security updates 
 deb http://security.debian.org stretch/updates main contrib===== PVE 主機安裝 snmpd ===== 
   * 安裝與設定程序</codecli
    apt install snmpd -<code h 
 cd /etc/aptsnmp/sources 
 mv snmpd.listconf snmpd.d/pve-enterpriseconf.listorg 
 vi snmpd.conf 
 
 依照實際需要編輯 
 
 service snmpd restart 
 systemctl enable snmpd 
 </cli
  #deb  * 參考網址 : https://enterprisewww.proxmoxsvennd.com/debianbe/pve stretch pvehow-enterprise 
 <to-install-snmp-service-on-proxmox/code>
 
 ====PVE 6 = 如有使用 ZFS 可限制使用記憶體大小 ===== 
      * 參考 <code h /etc/apt/sources.list> 
 deb httphttps://ftpwww.twichiayi.debian.orgcom/tech/debian buster main contribzfs#%E9%99%90%E5%88%B6_zfs_%E4%BD%BF%E7%94%A8%E5%A4%9A%E5%B0%91_ram_%E7%95%B6_cache_%E6%96%B9%E5%BC%8F
 
 deb http===== PVE 主機設定 Postfix 由 GMail 寄發信件方式 ===== 
   * 假設預計 Relay 的 SMTP Server - smtp.gmail.com:587 (STARTTLS) 認證帳號:username 密碼:password 
   - 安裝相關套件 <cli> 
 apt install libsasl2-modules -y 
 </cli> 
   - 編輯 /ftpetc/postfix/main.twcf <file> 
 
 # GMail Setting 
 relayhost = [smtp.debiangmail.org/debian buster-updates main contribcom]:587 
 #  use tls 
 smtp_use_tls=yes
 
 deb http://download# MailU Setting 
 #relayhost = [mail.proxmoxmailu.com/debian/pve buster pve-no-subscription]:465 
 #smtp_tls_security_level = encrypt 
 #smtp_tls_wrappermode = yes
 
 security updatesuse sasl when authenticating to foreign SMTP servers 
 deb httpsmtp_sasl_auth_enable = yes 
 # path to password map file 
 smtp_sasl_password_maps = hash:/etc/security.debian.org busterpostfix/updates main contribsasl_passwd 
 # list of CAs to trust when verifying server certificate 
 smtp_tls_CAfile = /etc/ssl/certs/ca-certificates.crt 
 # eliminates default security options which are imcompatible with gmail 
 smtp_sasl_security_options = noanonymous 
 smtp_always_send_ehlo = yes 
 </codefile
      <code h 編輯 /etc/aptpostfix/sourcessasl_passwd <file> 
 [smtp.listgmail.dcom]:587  username:password 
 #[mail.mailu.com]:465  username:password 
 </pvefile> 
   enterprise.list更改檔案權限 <cli
 #deb https:newaliases 
 postmap /etc/enterprise.proxmox.compostfix/debiansasl_passwd 
 cd /pve stretch pveetc/postfix 
 chown postfix /etc/postfix/sasl_passwd* 
 </cli> 
   enterprise讓 postfix 新設定生效 <cli> 
 /etc/init.d/postfix reload 
 </codecli>
 
 ==== 執行命令列更新 ==== 
     <code sh> 
 apt參考網址 : http://mhawthorne.net/posts/postfix-configuring-gmail-as-get updaterelay.html 
 apt upgrade 
 </codenote
  ===== 移除 Cluster  * 如果 Google 帳號有設定二階段認證, 密碼的部份就必須到 Google 帳號產生應用程=====密碼  
   * [[參考 - https://pvesupport.proxmoxgoogle.com/wikimail/Cluster_Manager]] <code sh>?p=InvalidSecondFactor 
  pvecm nodes 
 systemctl stop pve-cluster 
 systemctl stop corosync 
 pmxcfs -l 
 rm /etc/pve/corosync * ++看建立應用程式密碼畫面|{{:tech:2019110801.conf 
 rm -rf /etc/corosync/
 killall pmxcfs 
 systemctl start pve-clusterpng}} \\ {{:tech:2019110802.png}}++ 
 </codenote>
 
 ===== 移除 cluster 內的一個 node =====
   * 參考網址 - https://pve.proxmox.com/pve-docs/pve-admin-guide.html#_remove_a_cluster_node 
   * [[http://www.gienginali.idv.tw/modules/tad_book3/html.php?tbdsn=500| Exp. pve01 移除方式]]  
     * 先進入 cluster 內其中一台 (不能是 pve01) 
     * 執行以下的語法將 pve01 刪除<code shcli>
 pvecm nodes
 pvecm delnode pve01
 pvecm status
 rm -rf /etc/pve/nodes/pve01
 </codecli> 
     * 進入每個 node 將 pve cluster 服務重新啟動<cli> 
 systemctl restart corosync 
 systemctl restart pve-cluster 
 </cli>
 
   * <note WRAP important> 
   * 為了避免之後設定相同 IP 或 hostname 無法順利加入 Cluster 後, 因為之前的 ssh fingerprint / authorized_keys 在各節點都還有殘存, 所以需要在新增的節點上執行以下程序: 
     * 每個 Node 都要清除已經移除 node 的 ssh fingerprint / authorized_keys Exp. hostname : pve01命令<code shcli>pvecm updatecerts</cli
  cd .ssh 
 grep pve01   
 cd 可以直接編輯 /etc/pve/priv 內的 known_hosts 與 authorized_keys 將已經不在 cluster 內的 node ip 紀錄移除 
  grep pve01   
 ssh-keygen -f "/etc/ssh/ssh_known_hosts" -R "pve01" 
 ssh-keygen -f "再至所有 cluster 內 node 的 /root/.ssh/ 內 known_hosts " -R "pve01" 
 </code> 如果有出現哪個檔案還殘存這資訊, 透過 vi 編輯刪將已經不在 cluster 內的 node ip 紀錄移該行即可 
 </noteWRAP>
 
 ===== 一個新安裝 node 加入 cluster =====
 <WRAP tip> 
 透過 Web 介面直接加入會比較簡單, 以下是針對無法呈現 Web 時透過命令列方式處理的程序 
 </WRAP>
   * Exp. pve02 加入 cluster, 這 cluster 其中一個 node 是 192.168.11.250
   * 進入 pve02 主機內, 執行以下指令 <code shcli>
 pvecm add 192.168.11.250
 </codecli>
   * 會出現需要輸入 192.168.11.250 內的 root 密碼
   * 如果沒有異常訊息就完成加入 cluster
   * <noteWRAP info
  無法加入通常會顯示出原因, Exp. 
      * corosync 服務是啟動狀態 
      * 認證 key 已經存在... 等等 
 </noteWRAP>
 
 
 ===== 有主機故障, 出現 no quorum 問題的處理方式 =====
   * 因為預設 cluster 的 quorum 要兩個才能運作, 所以如果兩台的 cluster 壞了一台, 一段時間後就會出現這樣的問題, 如果想讓還正常的主機啟動 vm / ct , 可以將 quorum 的限制改成 1 , 然後重起 clusrter 服務即可, 手動解決方式如下: <code shcli>
 pvecm expected 1
 service pve-cluster restart
 </codecli>
   * 參考網址 - http://blog.pulipuli.info/2014/08/proxmox-ve-fix-proxmox-ve-cluster-not.html
 
 
 ===== 移除 Cluster 的方式 =====
   * [[https://pve.proxmox.com/wiki/Cluster_Manager]] <cli>
 pvecm nodes
 systemctl stop pve-cluster
 systemctl stop corosync
 pmxcfs -l
 rm /etc/pve/corosync.conf
 rm -rf /etc/corosync/*
 killall pmxcfs
 systemctl start pve-cluster
 </cli>
 
 
 ===== 更改 hostname 方式 =====
   * 參考 - https://pvecli.xuan2host.com/proxmox-host-name-change/
 
 
 ===== 更改主機 IP 方式 =====
@@ 行 -101,31 +145,31 @@ 移除 建立
   - Web UI 更改 IP : System->Network-> 選定介面卡 -> Edit 
   - 更改 /etc/hosts 內的 IP
   - 關閉 cluster 服務<code shcli>service pve-cluster stop</codecli>
   - 修改 /etc/pve/corosync.conf 內 node ip 與 totem 內的 ip
   - 重新開機
 ===== 設定 SSD 硬碟當 Swap Memory 方式 =====
   * 當 PVE 系統安裝在 USB or HD 上時, 預設會將 Swap Memory 指定在其中的一個 Partition 上, 導致使用到 Swap Memory 效能會變很差
   * 先查看目前系統記憶體使用狀況 <code shcli>
 free -m
 swapon -s
 </codecli>
 
 ==== 建立 Linux Swap 方式 ====  
   * 假設 SSD 所在 /dev/sdc , 透過 fdisk 建立 16GB 的 Swap Memory Partition <code shcli>
 fdisk /dev/sdc
 </codecli
     - 建立 16GB Partition<xtermrtfcli>
 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
 </xtermrtfcli
     - 更改 type 為 Linux Swap<xtermrtfcli>
 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'.
 </xtermrtfcli
     - 檢視與寫入 <xtermrtfcli>
 Command (m for help): p
 :
@@ 行 -135,20 +179,21 @@ 移除 建立
 :
 Syncing disks.
 </xtermrtfcli
     - 使用 mkswap 讓系統知道 /dev/sdc1 是 Swap Memory Partition <code shcli>
 mkswap /dev/sdc1
 </codecli
     - 讓 /dev/sdc1 的 Swap Memory 立即生效<code shcli>
 swapon /dev/sdc1
 </codecli
     - 使用 swapon -s 列出目前的 Swap Memory <xtermrtfcli>
 :
 /dev/zd0                                partition       8388604 434944  -2
 /dev/sdc1                               partition       16777212        0       -3
 </xtermrtfcli
     - 確認 /dev/sdc1 的 id <code shcli> 
 blkid | grep swap</code><xtermrtf>
 /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"
 </xtermrtfcli>
     - 關閉原本 /dev/zd0 的 swap memory 設定, 修改 <code h /etc/fstab>
 :
@@ 行 -157,25 +202,25 @@ 移除 建立
 :
 </code>
     - 重新啟動 pve node <code shcli>
 sync;sync;sync;reboot
 </codecli>
   * 參考 - https://www.linux.com/news/all-about-linux-swap-space
 
 ==== 建立 ZFS Swap 方式 ====  
   * 假設 SSD 所在的 zfs pool 為 rpool
   - 關閉所有swap:<code shcli>swapoff -a</codecli
   - 建立 16GB ZFS swap: <code shcli>
 zfs create -V 16G -b $(getconf PAGESIZE) -o compression=zle \
       -o logbias=throughput -o sync=always \
       -o primarycache=metadata -o secondarycache=none \
       -o com.sun:auto-snapshot=false rpool/swap
 </codecli
   - 格式化swap分區:<code shcli>mkswap -f /dev/zvol/rpool/swap</codecli
   - 增加新的swap到 /etc/fstab :<code shcli>echo /dev/zvol/rpool/swap none swap defaults 0 0 >> /etc/fstab</codecli
   - 啟用所有swap:<code shcli>swapon -av</codecli
   - 調整Swap優先權:<code shcli>
 echo "vm.swappiness = 10" >> /etc/sysctl.conf
 sysctl -p
 </codecli>
 
   * 參考 - https://pvecli.xuan2host.com/swap/
@@ 行 -184,15 +229,15 @@ 移除 建立
   * [[https://pve.proxmox.com/wiki/Storage:_LVM_Thin]]
     - [[https://www.ichiayi.com/wiki/tech/lvm|手動將實體硬碟透過 fdisk 建立 partition 設定 type = 31 (Linux LVM) Exp. /dev/sdb1]]
     - [[https://www.ichiayi.com/wiki/tech/lvm|透過 pvcreate/vgcreate 建立 VG Exp. vg-ssd]]<code shcli>
 pvcreate /dev/sdb1
 vgcreate vg-ssd /dev/sdb1
 vgdisplay vg-ssd
 </codecli
     - 因為 LVM thin 需要一些 VG 空間(至少 30 PE), 所以建立 lv 時必須保留 VG 一些空間給 LVM thin pool 使用 Exp. VG Free  PE / Size       76310 / 298.09 GB, 保留 100 PE : 76310-100=76210<code shcli>
 lvcreate -l 76210 -n ssd vg-ssd
 </codecli
     - 將 LVM 轉換成 LVM thin <code shcli>
 lvconvert --type thin-pool vg-ssd/ssd
 </codecli>
     - 再透過 PVE web 介面 Datacenter -> Storage -> Add -> LVM-Thin
       - 輸入 ID Exp. ssd
@@ 行 -204,9 +249,8 @@ 移除 建立
     * pvcreate /dev/sdb1
     * vgcreate vg-ssd /dev/sdb1
     * vgdisplay vg-ssd  
 <code shcli>
 vgremove vg-ssd
 pvremote /dev/sdb1
 </codecli>
 </note>
 
@@ 行 -215,17 +259,16 @@ 移除 建立
 ===== 將一顆實體 硬碟 加入 VM 使用 =====
   * [[https://pve.proxmox.com/wiki/Physical_disk_to_kvm]]
     - 先確認實體硬碟的廠牌、型號與序號 <code shcli>
 ls -l /dev/disk/by-id/ | grep ata-*
 </codecli
     - 確認要加入的實體硬碟連結 Exp. ata-TOSHIBA_DT01ACA300_Z3MH9S1GS
     - 加入 VM Exp. VM 編號 106 <code shcli>
 qm set 106 -virtio2 /dev/disk/by-id/ata-TOSHIBA_DT01ACA300_Z3MH9S1GS
 </codecli
     - 檢查是否 VM 106 的設定檔有出現實體硬碟設定<code shcli>
 cat /etc/pve/qemu-server/106.conf
 </code><xtermrtf>
 :
 virtio2: /dev/disk/by-id/ata-TOSHIBA_DT01ACA300_Z3MH9S1GS,size=2930266584K
 </xtermrtfcli>
     - 關閉 VM , 再透過 PVE Web 介面重新啟動
 
@@ 行 -238,7 +281,25 @@ 移除 建立
   * 主要問題是 vm 目前的主機端認為遷移目標主機有問題, 所以出現這樣的訊息.. 
   * 參考網址 - https://forum.proxmox.com/threads/no-such-cluster-node.35190/
   * 解決方式 - 連入遷移主機可以看到目標主機是離線狀態(實際上並沒有離線), 所以要重新啟動 pve-cluster corosync 服務<code shcli>
 systemctl restart pve-cluster corosync
 </codecli> 
  
 ===== migration 出現 volume 'xxx' already exists 問題 ===== 
   * 主要問題是 vm/ct 的硬碟檔名已出現在遷移目標的主機內, 所以出現這樣的訊息.. 可能之前遷移過程失敗沒有正確移除, 或是之前所建立的 vm/ct 移除時的硬碟沒有移除所造成硬碟檔名重複 
   * 解決方式 - 連入遷移主機將檔案移除即可, 如果是 zfs 可以使用 zfs destroy 方式移除, Exp. local-zfs/subvol-109-disk-1 是出現重複的硬碟<cli> 
 root@aac:~# zfs list 
 NAME                          USED  AVAIL     REFER  MOUNTPOINT 
 local-zfs                    9.60G   889G      128K  /local-zfs 
 local-zfs/subvol-103-disk-0   522M  7.49G      522M  /local-zfs/subvol-103-disk-0 
 
 local-zfs/subvol-109-disk-1  2.99G  5.01G     2.99G  /local-zfs/subvol-109-disk-1 
 
 local-zfs/subvol-131-disk-0  2.31G  13.7G     2.31G  /local-zfs/subvol-131-disk-0 
 rpool                        1.32G   227G      104K  /rpool 
 rpool/ROOT                   1.32G   227G       96K  /rpool/ROOT 
 rpool/ROOT/pve-1             1.32G   227G     1.32G 
 rpool/data                     96K   227G       96K  /rpool/data 
 root@aac:~# zfs destroy -r local-zfs/subvol-109-disk-1 
 </cli>
 
 ===== migration 出現 Host key verification failed 問題 =====
@@ 行 -250,5 +311,5 @@ 移除 建立
 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
 </file>登入 PVE 主機執行以下語法 <xtermrtfcli>
 root@pve-55:/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.
@@ 行 -256,5 +317,9 @@ 移除 建立
 Are you sure you want to continue connecting (yes/no)? yes
 Warning: Permanently added 'pve-45' (ECDSA) to the list of known hosts.
 </xtermrtfcli> 
 <WRAP center round tip 60%> 
   * 如果是因為之前有移除與新增設定相同 IP 或 hostname 的節點, 因為之前的 ssh fingerprint / authorized_keys 在各節點都還有殘存, 所以需要在新增的節點上執行以下命令<cli>pvecm updatecerts</cli> 
 </WRAP> 
 
 ===== online migration 使用本機硬碟的 VM =====
@@ 行 -262,31 +327,44 @@ 移除 建立
   * PVE Cluster 內的 node 有相同名稱的 Local Storage Exp. ssd-zfs
   * VM 不能設定 Replication 設定
   * 在 VM 所在的節點 shell 下以下的命令<file>qm migration <vmid> <目標節點名稱> --with-local-disks --online</file>Exp. VM 原本在節點 TP-PVE-250 , vmid: 104 , 目標節點名稱: TP-PVE-249 , 在 TP-PVE-250 節點 shell 下以下命令<code shcli>
 root@TP-PVE-250:~# qm migrate 104 TP-PVE-249 --with-local-disks --online
 </codecli>
   * 會出現先將 VM Disk 複製過去目標節點, 之後會將記憶體資料同步過去目標節點, 才完成切換, 所以 VM Disk 如果愈大, 遷移時間就會愈久
   * 參考網址 : https://blog.jason.tools/2018/12/pve-local-disk-migration.html
 
 ===== migration 使用第二張網卡的設定方式 =====
   * 因為 migration 過程可能會需要使用大量頻寬, 所以指定走另外一個網卡介面應該會比較合適
   * 參考 - http://blog.jason.tools/2019/01/pve-migrate-network.html
   * Exp. 第二張網卡網路的 Subnet 是 192.168.100.0/24 , 所以直接修改<cli>vi /etc/pve/datacenter.cfg</cli><file>
 :
 migration: secure,network=192.168.100.0/24
 </file>
 
 ===== 設定使用 iSCSI 的 LVM Storage 方式 =====
   * 先確認已經有 iSCSI 的分享來源 Exp. [[tech/freenas_iscsi|FreeNAS]] IP: 192.168.11.246
   * 登入 PVE Node 掛載 iSCSI Volume 
     - 先確認 iSCSI 分享的 target <code shcli>
 iscsiadm -m discovery -t sendtargets -p 192.168.11.246
 </code><xtermrtf>
 192.168.11.246:3260,-1 iqn.2005-10.org.freenas.ctl:freenas
 </xtermrtfcli
     - 登錄 iSCSI target <code shcli>
 iscsiadm -m node -T iqn.2005-10.org.freenas.ctl:freenas -p 192.168.11.246 -l
 </code><xtermrtf>
 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.
 </xtermrtfcli
     - 設定開機可以自動登錄 iSCSI <code shcli>
 iscsiadm -m node -p 192.168.11.246 -o update -n node.startup -v automatic
 </codecli>
     - 如果有其他 PVE Node 每一台都執行以上兩個步驟
 <note>
 如果 iscsi 的連線要移除, 語法如下<cli>
 iscsiadm -m node -T iqn.2005-10.org.freenas.ctl:freenas -p 192.168.11.246 -o delete
 </cli>
 </note>
   * 將 iSCSI 的 Volume 建立成為 LVM partition
     - 執行後可以使用 fdisk -l 看到 PVE Node 多出來一個 Disk Exp. /dev/sdg <code>
 fdisk -l</code><xtermrtfcli>
 :
 Disk /dev/sdg: 500 GiB, 536870912000 bytes, 1048576000 sectors
@@ 行 -294,8 +372,8 @@ 移除 建立
 Sector size (logical/physical): 512 bytes / 131072 bytes
 I/O size (minimum/optimal): 131072 bytes / 1048576 bytes
 </xtermrtfcli
     - 使用 fdisk /dev/sdg 建立 LVM partition <code shcli>
 fdisk /dev/sdg
 </codecli>
       - Command (m for help): g      (建立GPT Partition Table)
       - Command (m for help): n      (建立新的 Partition )
@@ 行 -303,10 +381,10 @@ 移除 建立
       - Command (m for help): p      (列出新建立的 Partition 是否正確)
       - Command (m for help): w      (沒問題就 w 寫入)
     - 使用 pvcreate 建立 LVM 的 Physical Volume(PV) <code shcli>
 pvcreate /dev/sdg1
 </codecli
     - 使用 vgcreate 建立 LVM 的 Volume Group (VG) <code shcli>
 vgcreate vg-pve /dev/sdg1
 </codecli>
     - 在 PVE Web UI -> Datacenter -> Storage -> Add -> LVM {{:tech:2018081001.png?400|}}
     - 在彈出的 Add:LVM 視窗內 {{ :tech:2018081002.png?400|}}
@@ 行 -329,15 +407,42 @@ 移除 建立
     * https://pve.proxmox.com/wiki/Storage
 
 ===== CT(lxc) 設定掛載 CIFS 網路磁碟方式 =====
   - 這問題主要是預設建立 CT 會是 UnPrivilegied 模式, 所以建立時必須要將 UnPrivilegied 打勾拿掉  {{:tech:2021052401.png?600|}}
   - 建立之後還要將 Features 的 CIFS 打勾 {{:tech:2021052402.png?600|}} 
   - 這樣就可以將 cifs 掛載上去 Exp. <cli>cat /etc/fstab
 # UNCONFIGURED FSTAB FOR BASE SYSTEM
 //10.20.0.131/data/template/iso/ /omv-iso cifs username=isouser,password=xxxx,rw,users,dir_mode=0777,file_mode=0777 0 0
 </cli>
   * 參考網址 :
     * https://forum.proxmox.com/threads/vm-and-lxc-mount-cifs-problem-solved.64157
 ===== 中斷 Backup 的處理方式 ===== 
   * 正常只要透過 UI 的 Tasks->點開正在 Backup 的項目->Stop 即可中斷
   * 但有時無法順利中斷, 或是中斷後對 VM 進行操作時出現 **TASK ERROR: VM is locked (backup)** 的錯訊息
   * 可以在PVE主機端透過以下語法進行: Exp. VM id = 111<code shcli>
 vzdump -stop
 ps -ef | grep vzdump
 qm unlock 111
 </codecli>
   * 參考網址 : 
     * https://forum.proxmox.com/threads/proxmox-backup-wont-stop.23219/ 
 <note tip> 
 **對備份到共用目錄 exp. NFS 無法中斷的處理方式** 
   * 參考 - https://forum.proxmox.com/threads/cannot-kill-vzdump-process.55038/ 
   * 先確認 vzdump 程式是否 stat 出現 'D'(已經是 uninterruptible sleep 狀態) Exp. <cli> 
 root@PVE-13:~# ps ax | grep vzdump 
 2991321 ?        Ds     0:01 task UPID:PVE-13:002DA4D9:064C84B2:6598045A:vzdump::root@pam: 
 3158042 pts/0    S+     0:00 grep vzdump 
 </cli>如果 stat 有出現 D 的狀態, 原則上需要重開機才能砍掉 
   * 如果不想重開機, 可以試看看強制卸載該 node 的共用目錄後, 再中斷 vzdump 的 Workaround 方式, Exp. <cli> 
 root@PVE-13:/# cd /mnt/pve 
 root@PVE-13:/mnt/pve# ls 
 omv-nfs  NFS-13 
 root@PVE-13:/mnt/pve# umount -f /mnt/pve/NFS-13 
 umount.nfs4: /mnt/pve/NFS-13: device is busy 
 root@PVE-13:/mnt/pve# umount -f -l /mnt/pve/NFS-13 && vzdump --stop 
 root@PVE-13:/mnt/pve# ps -ef | grep vzdump 
 root     3158849 3019745  0 06:26 pts/0    00:00:00 grep vzdump 
 </cli> 
 </note>
 ===== 設定自動 Snapshot 的方式 =====
 <note warning>
@@ 行 -348,11 +453,11 @@ 移除 建立
 </note>
   * 使用套件 [[https://github.com/EnterpriseVE/eve4pve-autosnap/releases|eve4pve-autosnap]]
   * 安裝語法 <code shcli>
 wget https://github.com/EnterpriseVE/eve4pve-autosnap/releases/download/0.1.8/eve4pve-autosnap_0.1.8_all.deb
 dpkg -i eve4pve-autosnap_0.1.8_all.deb
 </codecli
   * 建立 vm ID: 115 每小時自動快照一次, 保留 24 份 <code shcli>
 eve4pve-autosnap create --vmid=115 --label='hourly' --keep=24
 </codecli>
   * 這樣每小時 VM 115 就會自動產生一份快照 ++參考 PVE 管理畫面|{{:tech:2019042201.png}}++
   * 參考網址 :
@@ 行 -367,7 +472,7 @@ 移除 建立
 </code>
   * 查看原因是前一天自動備份時出現異常, 導致目前這個 CT 155 是在 lock 狀態, 查看 Snapshots 也有一個 backup 的 snapshot, 無法手動刪除, 原因也是 snapshot-delete
   * 可以在 PVE 主機端透過以下語法解開 lock 狀態: Exp. CT id=115<code shcli>
 pct unlock 115
 </codecli>
   * 完成後就可以刪除 CT 115 的 snapshot 以及進行 backup
 
@@ 行 -380,4 +485,18 @@ 移除 建立
   * 參考網址 :
     * https://forum.proxmox.com/threads/task-error-vm-is-locked-snapshot.24012/
 
 ===== CT 啟動失敗出現 run_buffer: 321 Script exited with status 2 的解決方式 ===== 
   * 更新 PVE 系統重開後, 發現部分 CT 無法正常啟動, 出現<cli>
 run_buffer: 321 Script exited with status 2
 lxc_init: 847 Failed to run lxc.hook.pre-start for container "1xx"
 __lxc_start: 2008 Failed to initialize container "1xx"
 TASK ERROR: startup for container '1xx' failed
 </cli>
   * 只要在 PVE 主機內安裝 binutils 即可解決這問題<cli>
 apt install binutils 
 </cli>
 
   * 參考網址 :
     * https://forum.proxmox.com/threads/proxmox-lxc-start-issue-after-apt-upgrade.118117/
 
 ===== Replication 異常解決方式 =====
@@ 行 -391,8 +510,8 @@ 移除 建立
   * 解決方式
     - 將備份時間錯開, Exp 原本設定 1:30 備份要改成 1:25 ++參考PVE畫面|{{:tech:2019112402.png}}++
     - 中斷正在 freeze 的程序<code shcli>
 ps -ef | grep free
 kill <程序ID>
 </code><xtermrtf>
 root@nuc:~# ps -ef | grep free
 root     13352 11857  0 20:06 pts/8    00:00:00 grep free
@@ 行 -403,5 +522,5 @@ 移除 建立
 root     15153 11857  0 20:07 pts/8    00:00:00 grep free
 root     20692      0 19:55 ?        00:00:00 [kworker/u16:3-events_freezable_power_]
 </xtermrtfcli>
     - 可以看到下一個 Replication 程序就開始進行, 最後也會執行原本卡住的程序
   * 參考 - https://forum.proxmox.com/threads/storage-replication-regularly-stops.36150/
@@ 行 -413,9 +532,9 @@ 移除 建立
         * zpool list : 查看有哪些 ZFS pool
         * zfs list : 查看有哪些 ZFS dataset
         * zfs destroy : 將不要的 ZFS dataset 刪除掉 Exp. <code shcli>zfs destroy -r rpool/data/subvol-105-disk-1</codecli
         * zfs create  : 建立一個新的 ZFS dataset Exp. 建立 400G 命名 v400 的 dataset 執行語法:<code shcli>zfs create -V 400g rpool/v400</codecli
     * 安裝 iSCSI Target 服務<code shcli>
 apt-get install tgt
 </codecli>
     * 設定 iSCSI Target Exp. 
       * 儲存路徑 : 上面 zfs create 建立的 rpool/v400 對應路徑 - /dev/zvol/rpool/v400
@@ 行 -432,8 +551,8 @@ 移除 建立
 </target>
 </code>
     * 啟動與設定 iSCSI Target 服務開機自動啟動<code shcli>
 service tgt start
 systemctl enable tgt
 </codecli>
   * 參考網址 :
     * https://www.tecmint.com/setup-iscsi-target-and-initiator-on-debian-9/
@@ 行 -534,10 +653,32 @@ 移除 建立
 ===== Guest VM 安裝 Agent =====
   * 安裝程序 : 
     * CentOS VM <code shcli>
 yum install qemu-guest-agent
 systemctl start qemu-guest-agent 
 </codecli
     * Debian / Ubuntu VM <code shcli>
 apt install qemu-guest-agent
 systemctl start qemu-guest-agent 
 </codecli> 
     * Alpine VM <cli> 
 apk add qemu-guest-agent 
 </cli> 修改 /etc/conf.d/qemu-guest-agent 設定 GA_PATH="/dev/vport2p1"<file> 
 
 # Specifies the device path for the communications back to QEMU on the host 
 # Default: /dev/virtio-ports/org.qemu.guest_agent.0 
 GA_PATH="/dev/vport2p1" 
 </file><cli> 
 rc-update add qemu-guest-agent 
 rc-service qemu-guest-agent restart 
 </cli> 
     * Freebsd <cli> 
 pkg install qemu-guest-agent 
 sysrc qemu_guest_agent_enable="YES" 
 service qemu-guest-agent start 
 </cli> 
     * Windows VM  
       - 先下載 [[https://fedorapeople.org/groups/virt/virtio-win/direct-downloads/stable-virtio/virtio-win.iso |virtio-win.iso]] 掛上 Windows 的 VM CD-ROM 
       - 進入光碟路徑內找到 **virtio-win-gt-x64** 與 **guest-agent/qemu-ga-x86_64** 進行安裝  
       - 重新啟動 Windows VM
   * PVE 端設定 VM -> Option -> Qemu Agent -> [v]Enabled
   * {{:tech:2019031101.png}}
@@ 行 -548,5 +689,37 @@ 移除 建立
   * 參考網址 - https://pve.proxmox.com/wiki/Qemu-guest-agent
 
 ===== 解決 VM 時間無法和 Host 同步問題 ===== 
   * 主要發生在 Alpine VM 內的系統時間無法和 PVE 主機時間相同的議題 
   * 解決方案 : 在 vmid.conf 內加入 args: -rtc clock=vm,base=utc 來解決 Exp. /etc/pve/qemu-server/111.conf <file> 
 agent: 1 
 args: -rtc clock=vm,base=utc 
 boot: order=scsi0;ide2;net0 
 cores: 2 
 cpu: x86-64-v2-AES 
 ide2: none,media=cdrom 
 memory: 2048 
 meta: creation-qemu=8.1.2,ctime=1702131932 
 name: pve-rproxy-internet 
 net0: virtio=BC:24:11:8F:41:CE,bridge=vmbr0,firewall=1 
 numa: 0 
 onboot: 1 
 ostype: l26 
 scsi0: ssd-zfs:vm-111-disk-0,iothread=1,size=32G 
 scsihw: virtio-scsi-single 
 smbios1: uuid=595b1cc9-fbf0-4c16-a580-401bee86ac25 
 sockets: 1 
 tags: service 
 vmgenid: 58a2ec03-e357-4aa9-8567-9e58ec447890 
 </file> 
  
 ===== CT (Centos7) 忘記 root 密碼重設方式 ===== 
   * 參考網址 - https://pve.proxmox.com/wiki/Root_Password_Reset 
   * 執行方式 <cli> 
 pct enter <VEID> 
 passwd  
 <new password> 
 exit 
 </cli> 
 ++++之前 (Centos7) 處理方式| 
   * 參考網址 - https://www.thegeekdiary.com/how-to-change-password-of-an-lxc-container-user-account/
   * 執行方式 :
@@ 行 -555,58 +728,5 @@ 移除 建立
     - 輸入 password root 重設 root 密碼
     * 參考以下實際操作畫面 {{:tech:2019121301.png}}
 ===== PVE 主機安裝 snmpd ===== 
   * 安裝與設定程序<code sh> 
 apt-get install snmpd 
 cd /etc/snmp/ 
 mv snmpd.conf snmpd.conf.org 
 vi snmpd.conf 
 
 依照實際需要編輯 
 
 service snmpd restart 
 systemctl enable snmpd 
 </code> 
   * 參考網址 : https://www.svennd.be/how-to-install-snmp-service-on-proxmox/ 
  
 ===== PVE 主機設定 Postfix 由 GMail 寄發信件方式 ===== 
   * 假設預計 Relay 的 SMTP Server - smtp.gmail.com:587 (STARTTLS) 認證帳號:username 密碼:password 
   - 安裝相關套件 <code sh> 
 apt-get install libsasl2-modules 
 </code> 
   - 編輯 /etc/postfix/main.cf <file> 
 
 # GMail Setting 
 relayhost = [smtp.gmail.com]:587 
 #  use tls 
 smtp_use_tls=yes 
 # use sasl when authenticating to foreign SMTP servers 
 smtp_sasl_auth_enable = yes 
 # path to password map file 
 smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd 
 # list of CAs to trust when verifying server certificate 
 smtp_tls_CAfile = /etc/ssl/certs/ca-certificates.crt 
 # eliminates default security options which are imcompatible with gmail 
 smtp_sasl_security_options = noanonymous 
 smtp_always_send_ehlo = yes 
 </file> 
   - 編輯 /etc/postfix/sasl_passwd <file> 
 [smtp.gmail.com]:587  username:password 
 </file> 
   - 更改檔案權限 <code sh> 
 postmap /etc/postfix/sasl_passwd 
 cd /etc/postfix 
 chown postfix /etc/postfix/sasl_passwd* 
 </code> 
   - 讓 postfix 新設定生效 <code sh> 
 /etc/init.d/postfix reload 
 </code> 
  
   * 參考網址 : http://mhawthorne.net/posts/postfix-configuring-gmail-as-relay.html 
  
 <note> 
   * 如果 Google 的帳號有設定二階段認證, 密碼的部份就必須到 Google 帳號產生應用程式密碼  
   * 參考 - https://support.google.com/mail/?p=InvalidSecondFactor 
   * ++看建立應用程式密碼畫面|{{:tech:2019110801.png}} \\ {{:tech:2019110802.png}}++ 
 </note>
 ===== 設定 VM 的開機與關機順序 =====
   * PVE Web UI -> 選定 VM -> Options -> Start/Shutdown order -> Edit 
@@ 行 -623,7 +743,61 @@ 移除 建立
     * 新增完成後就點下 Order Certificate Now 就會自動進行申請 SSL 憑證與佈署到 PVE 的自動程序, 如果都沒問題就可完成 \\ {{:tech:nuc_-_proxmox_virtual_environment_-_google_chrome_2020_7_11_下午_10_18_52.png}}
     * 接著在瀏覽器網只用 domain name 就不會出現憑證警告訊息 \\ {{:tech:2020071101.png?500}} 
 
 ===== VM 寫入效能調整議題 =====
   * 參考 - https://pve.proxmox.com/wiki/Performance_Tweaks
   * 原則上 Disk Cache 使用預設 none 模式即可(Host Page Cache:disabled, Disk Write Cache:enabled)  \\ {{:tech:20231018-0557.png|}}
   * 也可調整為 writeback 模式後(Host Page Cache:enabled, Disk Write Cache:enabled), 進入 VM 內使用 wget -qO- bench.sh | bash 進行效能測試來比對調整後的結果 \\ {{:tech:20231018-0605.png|}}
 
 ===== Move Disk 出現 timeout 議題 =====
   * 參考 - https://forum.proxmox.com/threads/how-do-you-move-large-disk.117633/
   * 當 VM Hard Disk 透過 Disk Action -> Move Storage 到 NFS 的 Storage Exp. pvs-253-nfs 結果等 60 秒出現 timed out 類似以下的訊息<cli>
 create full clone of drive scsi0 (zfs-raid:vm-106-disk-0)
 Formatting '/mnt/pve/pbs-253-nfs/images/106/vm-106-disk-0.qcow2', fmt=qcow2 cluster_size=65536 extended_l2=off preallocation=metadata compression_type=zlib size=536870912000 lazy_refcounts=off refcount_bits=16
 TASK ERROR: storage migration failed: unable to create image: 'storage-pbs-253-nfs'-locked command timed out - aborting
 </cli> 
   * 主要的原因就是 pve-253-nfs 這 Storage 速度太慢, 無法在 60 秒內建立出 500G 的磁碟空間(preallocation).. 所以可以設定對這 storage 不要 preallocation, 作法如下<cli>
 pvesm set pbs-253-nfs --preallocation off
 </cli>這樣針對 pbs-253-nfs 這 storage 就不會在搬移前進行 preallocation.
 
 ===== 讓 PVE 6 安裝 CentOS7 的 CT 移轉至 PVE 7 的妥協做法 =====
   * [[https://www.ichiayi.com/tech/pve6_and_pve7#%E8%AE%93_pve_6_%E5%85%A7%E7%9A%84_centos7_%E7%9A%84_ct_%E7%A7%BB%E8%BD%89%E8%87%B3_pve_7_%E7%9A%84%E5%A6%A5%E5%8D%94%E5%81%9A%E6%B3%95| 在 PVE 7 的主機 kernel option 加上 systemd.unified_cgroup_hierarchy=0 來改變使用之前 CGroup 版本]]
 
 ===== 清除舊版 kernel 的做法 ======
   * 參考 - https://forum.proxmox.com/threads/proper-way-to-remove-old-kernels-from-pve-8-0-4-which-are-safe-to-remove.131644/
   * 雖然每次升級後透過 apt autoremove 會自動移除掉不需要的舊版 kernel 但仍然會殘留一些不需要的 kernel 版本在系統內.. Exp. pve-kernel-5.4: 6.4-12 .. 
   * 所以可透過 [[https://tteck.github.io/Proxmox/|tteck]] 提供的 Proxmox VE Kernel Clean 工具將 kernel 5.x 全部清除 <cli>
 bash -c "$(wget -qLO - https://github.com/tteck/Proxmox/raw/main/misc/kernel-clean.sh)"
 </cli>
 
 ==== PVE ISO 安裝無法啟動 XWindow 的解決方式 ====
   * 參考 - https://forum.proxmox.com/threads/generic-solution-when-install-gets-framebuffer-mode-fails.111577/
   * 對於比較新的硬體可能 ISO 內還未支援 X driver, 所以會出現中斷在以下的訊息, 無法進入 GUI 安裝畫面<cli>
 Starting the installer GUI - see tty2 (CTRL-ALT-F2) for any errors...
 </cli>按下 (CRTL-ALT-F2) 出現以下類似的錯誤訊息<cli>
 :
 (EE)
 Fatal server error:
 (EE) Cannot run in framebuffer mode. Please spacify busIDs 
 (EE)
 :
 </cli>
   * 切回 Console 畫面編輯 X Driver config file
     * 先以 lspci | grep -i vga 來確認 vga pci 編號<cli>
 root@TN1-PVE-103:~# lspci | grep -i vga
 00:02.0 VGA compatible controller: Intel Corporation Device a780 (rev 04)
 </cli>
     * 編輯 config 檔案 Exp. /usr/share/X11/xorg.conf.d/my-vga.conf <file>
 Section "Device"
     Identifier "Card0"
     Driver "fbdev"
     BusID "pci0:00:02:0:"
 EndSection
 </file>
   * 重啟 XWindows <cli>
 xinit -- -dpi 96 >/dev/tty2 2>&1
 </cli>
 
 ===== 相關頁面 =====
 {{topic>pve}}
 
 {{tag>pve tips cloudos 虛擬化 opensource}} 
  • tech/pvetips.1599039814.txt.gz
  • 上一次變更: 2020/09/02 17:43
  • jonathan_tsai