Proxmox VE 安裝、配置、使用之第九章 實戰應用集(持續更新)


一、 刪除內建的LVM thin

LVM 有兩種,分爲 Thin 和 非Thin, 而 pve內建的 local-lvm 的格式是 LVM-Thin ,在使用上有好處也有壞處:

1) 好處:用來建vm or ct 可以有 snapshot(快照)的功能,而且可以超額分配硬碟空間(當然是有代價的)

2) 壞處:這個分割區你無法直接放檔案進去,等於這個分割區只能給 vm or ct 專用了

若你不想使用 LVM-Thin 想把它移掉,只當一般的 LVM 使用,LVM 相對於 LVM-thin 的優缺點如下:

1) 優點:你可以直接放檔案進去

2) 缺點:vm or ct 沒有快照功能,不能超額分配硬碟空間

按下面的方法轉換成一般的LVM 來使用

注意:底下的操作會刪掉你 local-lvm 裏的所有資料,請確定你 local-lvm 裏沒有要保留的資料

1.先移除 local-lvm

移除指令

# lvremove /dev/pve/data

執行上面這個指令會再次跟你確認。

2.查free PE數字

先查有多少free PE可用

# vgdisplay pve |grep Free

Free PE / Size 14367 / 56.12 GiB

請記住上面的可用空間的數字(標紅數字)

3.建新的lvm

把前面查到的數字填在這,意即針剩下的PE全用了

# lvcreate -l 14367 -n data pve

4.格式化、掛載使用

然後你就可以格式化,並掛載來使用了

# mkfs.ext4 /dev/pve/data

# mkdir /mnt/data

# mount /dev/pve/data /mnt/data

二、 quorum機制(Node管理和刪除)

Proxmox集羣採用了無中心結構,所有節點彼此平等。集羣每個服務器各自在本節點的 /etc/pve目錄下維護了一個fuse文件系統pmxcfs,並在其中保存了Proxmox集羣的全部狀態信息。爲了確保各個節點維護的集羣狀態信息及時同步,Proxmox採用了Corosync集羣組件管理所有節點,並採用Quorum機制來確保所有集羣狀態信息的一致性。

Quorum本質上是一種基於少數服從多數的投票機制。即,當集羣中各節點就某個狀態信息出現不一致意見時,少數服從多數,少數派將根據多數派修改自己的狀態信息,最終達到集羣中所有服務器狀態一致的效果。

爲了加深對Quorum機制的理解,可以思考下面的問題場景。

問題場景一:對於一個含有pve01、pve02、pve03三個節點的Proxmox集羣,如果pve03節點故障宕機短時間無法修復時,該如何把pve03節點上的虛擬機遷移到pve01節點啓動運行呢?

在三個節點均可以正常工作的情況下,可以通過webgui執行遷移操作,把一個節點上的虛擬機遷移到其他節點運行。但是在pve03意外宕機時,再通過webgui去執行遷移操作,會發現系統提示“連接超時”。

ssh登錄pve01節點,進入/etc/pve/nodes/pve03/qemu-server目錄,使用mv命令把該目錄下所有pve虛擬機配置文件移動到/etc/pve/nodes/pve01/qemu-server目錄下,然後在webgui裏查看,可以發現原來在pve03節點上的虛擬機全部轉移到了pve01節點上,然後再逐個啓動虛擬機即可。

注意,以上過程我們只是在pve01節點上執行了一個mv命令,並沒有操作pve02節點,那麼pve02節點上會是什麼情況呢?

在執行mv命令前後查看pve02節點上/etc/pve/nodes/pve01/qemu-server和/etc/pve/nodes/pve03/qemu-server目錄。可以發現,我們在pve01節點上手工執行的mv操作,Proxmox會自動在pve02節點對應目錄下進行同樣操作,就好像pve01和pve02對應目錄是同一個一樣。

這是因爲集羣一共有3個節點,雖然pve03節點宕機,但剩餘的pve01和pve02節點仍然能夠達到一個“多數投票”的狀態,即3票中的2票,在Quorum機制下,對pve01和pve02仍然能夠“代表集羣多數,繼續行使維護集羣狀態信息的權力”。所以,在pve01上執行的mv命令時,Proxmox會自動同步到pve02節點,而pve02節點也會配合完成同步操作,確保集羣狀態信息的完整同步。

問題場景二:pve03節點修復後,重新加入集羣時,pve03節點和pve01、pve02節點狀態信息不一致,該如何解決?

當pve03節點修復後,重新加入集羣前,在pve03節點的/etc/pve/nodes/pve03目錄下,原來的虛擬機配置文件都在,也就是說,pve03節點仍然認爲這些虛擬機是運行在本節點上,而不是已經被遷移到pve01節點去了。實際上,在斷網那一刻,pve03節點上的Proxmox服務會立刻發現自己和集羣其他服務器通信中斷,自己已經變成了“少數派”,Proxmox集羣文件系統服務pve-cluster會立刻把/etc/pve目錄設置爲只讀,你會發現無法對pve03節點的集羣文件系統做任何修改。

那麼當pve03重新加入集羣時,又會發生什麼事情呢?pve03在重新加入集羣時,作爲“少數派”,自然要服從“多數派”pve01和pve02的意見,同步pve01和pve02當前的集羣狀態信息,洗脫“少數派”的身份,加入“多數派”,確保集羣狀態一致。

試驗驗證:

1) 可以新建一個含有三個節點pve01、pve02、pve03的Proxmox集羣,在pve01節點/etc/pve目錄下執行touch test新建一個名爲test的文件,然後分別在pve02和pve03節點上執行ls /etc/pve/test,會發現集羣會自動將集羣信息變化同步到所有節點。

2) 在pve03的監視器中執行set_link net0 off,關閉pve03節點網卡,模擬斷網情況。然後在pve01執行rm /etc/pve/test刪除test文件,可以發現pve02節點會同步刪除/etc/pve/test,而pve03節點的test文件仍然存在。此時如果在pve03節點執行rm /etc/pve/test,系統會提示“rm: cannot remove test: permission denied”,原因就是此時pve03已經變成少數派,集羣文件系統目錄被強制只讀保護。

3) 在pve03的監視器中執行set_link net0 on,重新開啓pve03節點網卡,恢復和集羣其他服務器的通信,然後再pve03執行ls /etc/pve/test,系統會提示“ls: cannot access test: No such file or directory”,原因就是pve03從pve01和pve02同步了最新的集羣狀態,test文件被自動刪除了。

問題場景三:如果集羣裏只有兩個節點pve01和pve02,在一個節點故障宕機的情況下,又會發生什麼事呢?

在只有兩個節點的情況下,任何一個節點斷網,都會導致集羣的“腦裂”,pve01和pve02各有一票,都是“少數派”,無法形成有效的“多數派”,兩臺服務器的集羣文件系統目錄都會自動設置爲寫保護。

此種情況下,如果要刪除已宕機節點,可按下面方法操作:

1) 執行pvecm expected 1,降低Quorum要求,重新激活集羣文件系統。(但是在網絡通信恢復前,必須要手工確保pve01和pve02兩個節點的集羣狀態一致。否則,誰該聽誰的呢?這也是非常不推薦雙機Proxmox集羣的一個重要原因。)

2) # Pvecm delnode NodeName # 刪除集羣節點

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章