一個VG(卷組)可以包含不同類型的PV(實體卷)嗎?

一個VG(卷組)可以包含不同類型的PV(實體卷)嗎?

背景是我們的資料庫資料目錄位於 LV 上,該目錄位於 VG 上。我們想使用LVM的快照功能來備份我們的資料庫數據,但這個VG已經沒有剩餘的空閒PE了。我們也無法縮小 LV(我們使用 XFS)。 VG有兩個PV,每個PV有一個RAID 10(每個PV有8個硬碟)。我們有兩個額外的備用硬碟(用於熱故障轉移,大小與組成 RAID10 PV 的大小相同)。

我正在考慮使用備用磁碟機並在其上建立 PV,並將其新增至託管資料庫資料目錄的 VG 中。這有效嗎?一個 VG 是否可以包含不同類型的 PV,例如 2 個 RAID 10 PV 和 1 個非 RAID 硬碟?

答案1

任何屬於區塊設備的設備節點都可以成為 PV 並且新增為 VG 的成員。例如,我的一台電腦中有一個硬碟和一個固態磁碟,它們是單一 PV 的成員並用作快取(https://man7.org/linux/man-pages/man7/lvmcache.7.html)。

建立快照 LV 時,您可能希望使用 RAID10 PV 來託管即時資料庫數據,並使用備用磁碟來儲存寫入時複製 (COW) 快照。我建議這樣做,因為如果備用磁碟發生故障,正在進行的備份將會丟失,而不是即時資料庫。可以在建立快照的命令列中指定託管 LV 的確切 PV,如下所示。

# lvcreate -L 10G -n backup_snap_lv -s data_vg/data_lv /dev/sdb
# lvdisplay --maps data_vg/backup_snap_lv

答案2

應該沒有問題,因為這就是LVM的想法。在底層你有實體儲存設備。在它們上建立PV,然後當您將PV新增到VG時,VG不關心下面的內容,然後當您向LV添加空間/建立LV時,LV不關心VG從哪裡擁有這個空間。

當然,在特殊情況下,當您建立鏡像(LV 的兩個副本)時,您可以將它們駐留在不同的 PV 上(對於非常嚴格的模式,您還需要第三個 PV)

答案3

LVM(大多數情況下)不關心 VG 的 PV 所在的區塊設備的具體情況。唯一的主要例外是,如果底層塊設備宣稱支援此類操作,它可能會嘗試將丟棄操作傳遞給底層塊設備。

例如,在我的家庭伺服器系統上,我有四個 4TB SATA 硬碟和兩個 1TB NVMe SSD,全部設定為系統上唯一 VG 的 PV,我這樣做是因為這樣可以在需要時更輕鬆地遷移資料替換磁碟(它變成一個簡單的pvmove命令,而不需要執行諸如合併 VG 之類的操作)。

然而,對此有一個很大的警告。因為 LVM 不關心底層的塊設備,所以它不夠智能,無法「智能地」放置新的 LV(或在某些情況下擴展現有的 LV),除非您關心的只是最小化可用空間碎片。因此,您應該總是在這樣的設定中建立新的 LV 時,明確指定要使用的 PV,以便您準確地獲得預期的行為。


順便說一句,假設這些備用驅動器是真的熱備件(也就是說,如果陣列的其餘部分發生驅動器故障,系統將自動使用它們作為替代品),我不建議重新調整其中一個的用途,除非您迫切需要更多空間並且確實不關心雙驅動器故障的可能性(實際上每個陣列中有這麼多驅動器的可能性相對較大)。如果您可以透過其他方式釋放空間,這可能應該是您獲得更多可用空間的第一個方法。

相關內容