「緯育 2026-0413」修訂間的差異

出自頂極製作所
(建立內容為「本次講座聚焦於數據儲存的空間容量管理。講師先回顧過去面臨的儲存空間不足挑戰,說明安裝作業系統時進行磁碟分割的…」的新頁面)
 
 
行 85: 行 85:
** lvreduce:縮減 LV 容量。
** lvreduce:縮減 LV 容量。
[[檔案:2026-0413-05.png|800px]]
[[檔案:2026-0413-05.png|800px]]
=== LVM 基本架構與概念 ===
* LVM 元件與術語對應
** 實體硬碟需先轉為 PV(Physical Volume),PV 不可直接使用,須群組成 VG(Volume Group)。
** VG 內的最小單位為 PE(Physical Extent);LV 的邏輯單位為 LE(Logical Extent),LE 與 PE 大小一致,講座示例以 4MB 為 PE/LE 大小。
** 從 VG「挖出」容量建立 LV;LV 大小 = LE 數量 × 每個 LE 大小(與 PE 相同),例如 500MB 約對應 125 個 PE/LE(以 4MB 為單位)。
** 名稱範例:VG 名為 MyVG1、LV 名為 MyLV1;裝置路徑為 /dev/MyVG1/MyLV1。
* 建置流程總覽
** 轉換:以 pvcreate 將 SDC、SDD 轉為 PV。
** 群組:以 vgcreate 建立 MyVG1,並將 PV(SDC、SDD)加入;後續可用 vgextend 擴充。
** 切割:以 lvcreate 從 MyVG1 切出 MyLV1(例如大小 500MB)。
** 格式化與掛載:以 mkfs.ext4(講者口誤提及 esd)格式化 /dev/MyVG1/MyLV1,於 /mnt/LVM(示例目錄)掛載後使用。
** 驗證:於掛載點建立目錄與檔案(例如建立 vmvr1 目錄與 test.vmvr 檔,寫入字串以 echo,ls/cat 檢視)。
* 指令族群與檢視工具
** PV 層:pvscan(掃描 PV)、pvdisplay(細節顯示)。
** VG 層:vgscan(掃描 VG)、vgdisplay(細節顯示)、vgcreate(建立 VG)、vgextend(加入 PV 擴充 VG)、vgreduce(移除 PV 縮減 VG)。
** LV 層:lvscan(掃描 LV)、lvdisplay(細節顯示)、lvcreate(建立 LV)、lvremove(移除 LV)。
** 裝置與掛載檢視:lsblk、df、mount;/dev/MyVG1/MyLV1 為實際掛載設備。
=== 實作環境與硬體操作注意事項 ===
* VM 與熱插拔實務
** 在實務主機(如 VDS)通常可熱插拔硬碟;但本次於 VM 環境為模擬,需關機後新增硬碟。
** 新增兩顆硬碟以示範 LVM(示例容量 20G、10G),重點在分辨第一與第二顆。
** 昨日分割示範用過的硬碟需移除以避免裝置命名混淆(避免由 SDB 變為 SDC/STD 等)。
** 開機後以 lsblk/ls 確認裝置;順序可能受核心偵測影響,若順序不一致可重開機重試。
* 裝置命名與穩定性
** 裝置名稱(如 sdb、sdc、sdd)在重啟或硬體變更後可能改變;需以掃描與顯示指令確認對象。
** 建議以 /dev/MyVG1/MyLV1 等邏徑掛載,減少直接以裸裝置掛載造成的風險。
=== 建立 PV/VG/LV 的詳細步驟 ===
* PV 建立
** 指令:pvcreate /dev/sdc、pvcreate /dev/sdd。
** 可用整顆硬碟或特定 partition(例如 /dev/sdc2);使用 partition 前需先完成分割。
** 檢查:pvscan 顯示已建立的 PV,初始尚未隸屬任何 VG。
* VG 建立與擴充
** 建立:vgcreate MyVG1 /dev/sdd /dev/sdc(可先加一顆,後續 vgextend 再加)。
** 顯示:vgscan、vgdisplay 檢視 VG 與容量、PE 數量。
* LV 建立
** 建立:lvcreate -L 500M -n MyLV1 MyVG1(大小可用 500M、1G 等)。
** 檢視:lvscan、lvdisplay;裝置路徑 /dev/MyVG1/MyLV1 生成。
* 格式化與掛載
** 格式化:mkfs.ext4 /dev/MyVG1/MyLV1(講者示例提及 mkfs.esd,實務常用 ext4/xfs)。
** 建目錄並掛載:mkdir -p /mnt/LVM;mount /dev/MyVG1/MyLV1 /mnt/LVM。
** 寫入與驗證:在 /mnt/LVM 建立 vmvr1 目錄與 test.vmvr 檔,echo 寫入字串,ls/cat 確認。
=== LV 容量動態調整(擴充與縮減)===
* 擴充(增加容量)
** 指令偏好:lvresize(講者偏好 lvresize,亦稱 lvscale)。
** 相對擴充:lvresize -L +500M /dev/MyVG1/MyLV1,從 500M 擴至 1G(示例以 PE 計算:PE=4MB,125→250)。
** 絕對設置:lvresize -L 3G /dev/MyVG1/MyLV1,直接設定為 3G。
** 檢視:lsblk、lvdisplay、df 確認容量變更。
* 縮減(減少容量)
** 指令:lvresize -L 2G /dev/MyVG1/MyLV1,將 3G 改為 2G。
** 風險提示:系統會警告可能造成資料遺失;LVM 僅管理空間,不保證檔案系統內容安全。縮減前應確保檔案系統空間使用狀況、先行縮減檔案系統並備份。
** 驗證:縮減後進入掛載點檢視檔案是否仍在,示例中文件仍在。
* 實務建議
** 多採漸進式擴充(例如 +500M、+1G),減少縮減操作。
** 縮減需審慎,若使用者已將空間用滿,強制縮減易導致資料遺失與抱怨。
=== 新增硬碟、資料遷移與移除舊碟 ===
* 新增第三顆硬碟並加入 VG
** 關機新增 100G 硬碟(裝置示例 SDD),開機後以 pvscan 確認未加入任何 VG。
** 建立 PV:pvcreate /dev/sdd。
** 擴充 VG:vgextend MyVG1 /dev/sdd,使 MyVG1 容量由原約 60G 擴至約 160G(講者口語「1.9G」為口誤,脈絡為擴充總容量)。
** 檢視:vgdisplay 顯示 PV 數由 2→3。
* 以 pvmove 遷移資料
** 目的:將舊 20G 硬碟 SDB 上的內容遷移至新 100G 硬碟 SDD。
** 指令:pvmove /dev/sdb /dev/sdd(舊→新),過程需一段時間(示例一至兩分鐘)。
** 確認:遷移完成後資料仍在,掛載後可見。
* 正確移除舊硬碟
** 禁止直接拔除:直接抽出硬碟會使 VG 報錯(AO),影響後續操作。
** 正確流程:
    1. vgreduce MyVG1 /dev/sdb(將 SDB 自 VG 移除)。
    2. pvremove /dev/sdb(清除 PV 標籤,避免接到他機時造成誤判)。
    3. pvscan 確認 SDB 不再為 PV;vgdisplay 顯示 PV 數由 3→2。
    4. 關機拔除 SDB(20G),開機後以 lsblk/df 檢視,裝置編號可能改變但資料仍可掛載使用。
** 重新掛載:mount /dev/MyVG1/MyLV1 /mnt/LVM,ls/cat 檢視先前建立檔案(如 test.vmvr)仍在。
* 實務補充
** 操作前後皆建議使用 pvscan/vgscan/lvscan 進行確認。
** 若現場可熱插拔且設備與接頭可靠,可免關機;但為保險亦可選擇關機。
=== 分割、格式化、掛載三步驟邏輯 ===
* 通用流程
** 分割:決定使用整顆硬碟或特定分割區進行 LVM(示例選整顆)。
** 格式化:選擇檔案系統(ext4/xfs 等)於 LV 上建立。
** 掛載:建立目錄並掛載至系統以供使用者使用。
* 系統範例與理解
** 以 CentOS 為例,系統預設分割可能包含 /、/home、swap 等;理解系統如何使用 LVM 與分割有助於正確操作。
[[檔案:2026-0414-01.png|800px]]

於 2026年4月14日 (二) 06:59 的最新修訂

本次講座聚焦於數據儲存的空間容量管理。講師先回顧過去面臨的儲存空間不足挑戰,說明安裝作業系統時進行磁碟分割的傳統作法及其限制(例如為 /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 容量。

2026-0413-05.png

LVM 基本架構與概念

  • LVM 元件與術語對應
    • 實體硬碟需先轉為 PV(Physical Volume),PV 不可直接使用,須群組成 VG(Volume Group)。
    • VG 內的最小單位為 PE(Physical Extent);LV 的邏輯單位為 LE(Logical Extent),LE 與 PE 大小一致,講座示例以 4MB 為 PE/LE 大小。
    • 從 VG「挖出」容量建立 LV;LV 大小 = LE 數量 × 每個 LE 大小(與 PE 相同),例如 500MB 約對應 125 個 PE/LE(以 4MB 為單位)。
    • 名稱範例:VG 名為 MyVG1、LV 名為 MyLV1;裝置路徑為 /dev/MyVG1/MyLV1。
  • 建置流程總覽
    • 轉換:以 pvcreate 將 SDC、SDD 轉為 PV。
    • 群組:以 vgcreate 建立 MyVG1,並將 PV(SDC、SDD)加入;後續可用 vgextend 擴充。
    • 切割:以 lvcreate 從 MyVG1 切出 MyLV1(例如大小 500MB)。
    • 格式化與掛載:以 mkfs.ext4(講者口誤提及 esd)格式化 /dev/MyVG1/MyLV1,於 /mnt/LVM(示例目錄)掛載後使用。
    • 驗證:於掛載點建立目錄與檔案(例如建立 vmvr1 目錄與 test.vmvr 檔,寫入字串以 echo,ls/cat 檢視)。
  • 指令族群與檢視工具
    • PV 層:pvscan(掃描 PV)、pvdisplay(細節顯示)。
    • VG 層:vgscan(掃描 VG)、vgdisplay(細節顯示)、vgcreate(建立 VG)、vgextend(加入 PV 擴充 VG)、vgreduce(移除 PV 縮減 VG)。
    • LV 層:lvscan(掃描 LV)、lvdisplay(細節顯示)、lvcreate(建立 LV)、lvremove(移除 LV)。
    • 裝置與掛載檢視:lsblk、df、mount;/dev/MyVG1/MyLV1 為實際掛載設備。

實作環境與硬體操作注意事項

  • VM 與熱插拔實務
    • 在實務主機(如 VDS)通常可熱插拔硬碟;但本次於 VM 環境為模擬,需關機後新增硬碟。
    • 新增兩顆硬碟以示範 LVM(示例容量 20G、10G),重點在分辨第一與第二顆。
    • 昨日分割示範用過的硬碟需移除以避免裝置命名混淆(避免由 SDB 變為 SDC/STD 等)。
    • 開機後以 lsblk/ls 確認裝置;順序可能受核心偵測影響,若順序不一致可重開機重試。
  • 裝置命名與穩定性
    • 裝置名稱(如 sdb、sdc、sdd)在重啟或硬體變更後可能改變;需以掃描與顯示指令確認對象。
    • 建議以 /dev/MyVG1/MyLV1 等邏徑掛載,減少直接以裸裝置掛載造成的風險。

建立 PV/VG/LV 的詳細步驟

  • PV 建立
    • 指令:pvcreate /dev/sdc、pvcreate /dev/sdd。
    • 可用整顆硬碟或特定 partition(例如 /dev/sdc2);使用 partition 前需先完成分割。
    • 檢查:pvscan 顯示已建立的 PV,初始尚未隸屬任何 VG。
  • VG 建立與擴充
    • 建立:vgcreate MyVG1 /dev/sdd /dev/sdc(可先加一顆,後續 vgextend 再加)。
    • 顯示:vgscan、vgdisplay 檢視 VG 與容量、PE 數量。
  • LV 建立
    • 建立:lvcreate -L 500M -n MyLV1 MyVG1(大小可用 500M、1G 等)。
    • 檢視:lvscan、lvdisplay;裝置路徑 /dev/MyVG1/MyLV1 生成。
  • 格式化與掛載
    • 格式化:mkfs.ext4 /dev/MyVG1/MyLV1(講者示例提及 mkfs.esd,實務常用 ext4/xfs)。
    • 建目錄並掛載:mkdir -p /mnt/LVM;mount /dev/MyVG1/MyLV1 /mnt/LVM。
    • 寫入與驗證:在 /mnt/LVM 建立 vmvr1 目錄與 test.vmvr 檔,echo 寫入字串,ls/cat 確認。

LV 容量動態調整(擴充與縮減)

  • 擴充(增加容量)
    • 指令偏好:lvresize(講者偏好 lvresize,亦稱 lvscale)。
    • 相對擴充:lvresize -L +500M /dev/MyVG1/MyLV1,從 500M 擴至 1G(示例以 PE 計算:PE=4MB,125→250)。
    • 絕對設置:lvresize -L 3G /dev/MyVG1/MyLV1,直接設定為 3G。
    • 檢視:lsblk、lvdisplay、df 確認容量變更。
  • 縮減(減少容量)
    • 指令:lvresize -L 2G /dev/MyVG1/MyLV1,將 3G 改為 2G。
    • 風險提示:系統會警告可能造成資料遺失;LVM 僅管理空間,不保證檔案系統內容安全。縮減前應確保檔案系統空間使用狀況、先行縮減檔案系統並備份。
    • 驗證:縮減後進入掛載點檢視檔案是否仍在,示例中文件仍在。
  • 實務建議
    • 多採漸進式擴充(例如 +500M、+1G),減少縮減操作。
    • 縮減需審慎,若使用者已將空間用滿,強制縮減易導致資料遺失與抱怨。

新增硬碟、資料遷移與移除舊碟

  • 新增第三顆硬碟並加入 VG
    • 關機新增 100G 硬碟(裝置示例 SDD),開機後以 pvscan 確認未加入任何 VG。
    • 建立 PV:pvcreate /dev/sdd。
    • 擴充 VG:vgextend MyVG1 /dev/sdd,使 MyVG1 容量由原約 60G 擴至約 160G(講者口語「1.9G」為口誤,脈絡為擴充總容量)。
    • 檢視:vgdisplay 顯示 PV 數由 2→3。
  • 以 pvmove 遷移資料
    • 目的:將舊 20G 硬碟 SDB 上的內容遷移至新 100G 硬碟 SDD。
    • 指令:pvmove /dev/sdb /dev/sdd(舊→新),過程需一段時間(示例一至兩分鐘)。
    • 確認:遷移完成後資料仍在,掛載後可見。
  • 正確移除舊硬碟
    • 禁止直接拔除:直接抽出硬碟會使 VG 報錯(AO),影響後續操作。
    • 正確流程:
   1. vgreduce MyVG1 /dev/sdb(將 SDB 自 VG 移除)。
   2. pvremove /dev/sdb(清除 PV 標籤,避免接到他機時造成誤判)。
   3. pvscan 確認 SDB 不再為 PV;vgdisplay 顯示 PV 數由 3→2。
   4. 關機拔除 SDB(20G),開機後以 lsblk/df 檢視,裝置編號可能改變但資料仍可掛載使用。
    • 重新掛載:mount /dev/MyVG1/MyLV1 /mnt/LVM,ls/cat 檢視先前建立檔案(如 test.vmvr)仍在。
  • 實務補充
    • 操作前後皆建議使用 pvscan/vgscan/lvscan 進行確認。
    • 若現場可熱插拔且設備與接頭可靠,可免關機;但為保險亦可選擇關機。

分割、格式化、掛載三步驟邏輯

  • 通用流程
    • 分割:決定使用整顆硬碟或特定分割區進行 LVM(示例選整顆)。
    • 格式化:選擇檔案系統(ext4/xfs 等)於 LV 上建立。
    • 掛載:建立目錄並掛載至系統以供使用者使用。
  • 系統範例與理解
    • 以 CentOS 為例,系統預設分割可能包含 /、/home、swap 等;理解系統如何使用 LVM 與分割有助於正確操作。

2026-0414-01.png