緯育 2026-0413
出自頂極製作所
本次講座聚焦於數據儲存的空間容量管理。講師先回顧過去面臨的儲存空間不足挑戰,說明安裝作業系統時進行磁碟分割的傳統作法及其限制(例如為 /boot 與 / 目錄配置固定容量)。接著轉入現代化解決方案,詳述邏輯磁碟區管理員(LVM)的概念、架構與優勢。
LVM 透過將多個實體硬碟或分割區整合為可動態調整的儲存池,突破傳統固定分割區難以擴充的瓶頸,允許在不停機、使用者無感的情況下進行擴充、縮減與管理。最後,講師介紹與 LVM 相關的核心名詞(PV、VG、LV)及基本指令,為後續實作打下基礎。
儲存空間規劃與挑戰
- 傳統空間管理的演變
- 過去:主要擔心容量不足,重點在限制使用量(如 Quota)。
- 現在:硬碟容量大幅提升,課題轉為如何有效規劃與管理龐大儲存空間。
- 作業系統安裝時的磁碟分割
- 傳統上安裝 Linux(如 CentOS)時,常將不同目錄(如 /boot, /home)分割至獨立分割區。
- 優點:未來如需擴充特定目錄的空間較為彈性。
- /boot 目錄容量規劃:
- 常見建議為 200MB。
- 實際需求取決於核心檔案大小。單一核心版本(含 vmlinuz 與 initramfs)約 67MB(範例為 16MB + 51MB)。
- 若需同時存放多個核心版本(如軟硬體測試),200MB 可能不足。
- /(根)目錄容量規劃:
- 建議值約 50GB~100GB。
- 實務上,基本 CentOS 約 2.6GB,Ubuntu 桌面版約 5.5GB~8GB;相較之下 100GB 顯得偏大。
- 相較 Windows 11(約 20GB),其大型更新會產生 Windows.old,暫時佔用近雙倍空間。
- /home 目錄容量規劃:
- 建議 200GB 以上,仍須視實際需求調整。若使用者不在伺服器存放個人資料,無須分配過大空間。
- 傳統硬碟擴充流程
- 空間不足時,多以更換更大容量硬碟因應。
- 流程耗時繁瑣,常需離峰(如半夜)進行。
- 步驟:停止服務 -> 關機 -> 安裝新碟 -> 開機 -> 複製資料至新碟 -> 關機 -> 拔除舊碟與調整排線 -> 開機 -> 設定掛載 -> 啟動服務。
- 全程至少數小時,過程若出錯將更耗時。
現代儲存空間管理方案
- 掛載遠端網路儲存(NAS)
- 將 Linux 伺服器的儲存空間掛載到遠端 NAS。
- 優點:擴充、縮減、備份等在 NAS 端完成;伺服器專注運算,即使主機故障,資料仍保存在 NAS。
- 注意伺服器與 NAS 連線的穩定性。
- 使用 Ceph 儲存系統
- Ceph 為軟體定義儲存方案,可視作更強大的 NAS。
- 建立分散式儲存池;安裝設定較複雜,甚至有專門付費課程。
- 邏輯磁碟區管理員(LVM)
- LVM(現行為 LVM2)為解決 Linux 空間不足而設計,源自 IBM 在 AIX 的技術。
- 允許不停機、使用者無感地動態調整(建立、擴充、縮減)儲存空間,常以一行指令即可完成。
LVM 的核心概念與架構
- 核心名詞解釋
- PV(Physical Volume,實體卷):
- 指實體硬碟、磁碟分割區或 RAID 陣列,為 LVM 最底層單元。
- 以將分割區型別標示為 8e(Linux LVM)作為建立 PV 的基礎。
- VG(Volume Group,卷群組):
- 由一個或多個 PV 組成的儲存池,即大的容量集合。
- LV(Logical Volume,邏輯卷):
- 自 VG 切割出的空間,等同傳統分割區(如 /dev/sda1)。
- 建立後需格式化才能掛載使用。
- PE(Physical Extent,實體範圍):
- VG 的最小儲存單位,預設 4MB,類似檔案系統的區塊大小。
- LE(Logical Extent,邏輯範圍):
- LV 的最小儲存單位,通常大小與 PE 相同。
- LV 總容量 =(PE 或 LE 的大小)× LE 數量。
- LVM 運作流程
1. 準備硬碟:備妥實體硬碟或分割區(如 /dev/sdc, /dev/sdd1)。 2. 建立 PV:使用指令將這些裝置轉為 PV。 3. 建立 VG:將一個或多個 PV 組合為 VG,並命名(如 myvg)。 4. 建立 LV:自 VG 切出所需大小的 LV,命名(如 mylv1)。 5. 格式化與掛載:如同一般分割區,先格式化再掛載至目錄。
- 擴充性:當 VG 容量不足時,可新增硬碟建立為 PV,加入既有 VG,即可擴大儲存池。
LVM 相關指令介紹
- PV(實體卷)相關指令
- pvscan:掃描系統所有 PV。
- pvdisplay:顯示 PV 詳細資訊。
- pvs:簡要顯示 PV 資訊。
- pvcreate /dev/sdX1:將指定分割區建立為 PV。
- pvremove /dev/sdX1:移除分割區的 PV 屬性。
- pvmove /dev/sdX1 /dev/sdY1:將來源 PV 上資料遷移至目標 PV。
- VG(卷群組)相關指令
- vgscan:掃描系統所有 VG。
- vgdisplay:顯示 VG 詳細資訊。
- vgs:簡要顯示 VG 資訊。
- vgcreate <vgname> /dev/sdX1 /dev/sdY1:以指定 PV 建立新的 VG。
- vgremove <vgname>:移除指定 VG。
- vgrename <oldvgname> <newvgname>:重新命名 VG。
- vgextend <vgname> /dev/sdZ1:將新 PV 加入現有 VG 擴充容量。
- vgreduce <vgname> /dev/sdX1:自 VG 移除指定 PV。
- LV(邏輯卷)相關指令
- lvscan:掃描系統所有 LV。
- lvdisplay:顯示 LV 詳細資訊。
- lvs:簡要顯示 LV 資訊。
- lvcreate -n <lvname> <vgname>:自指定 VG 建立新 LV。
- lvremove /dev/<vgname>/<lvname>:移除指定 LV。
- lvrename:重新命名 LV。
- lvresize:調整 LV 大小(可增減),支援 +10G、-10G、100G 等語法。
- lvextend:擴充 LV 容量。
- lvreduce:縮減 LV 容量。