Linux LVM Logical Volume Management 邏輯卷的管理

翰墨文海發表於2021-01-11

博主是一個資料庫DBA,但是一般來說,是不做linux伺服器LVM 邏輯卷的建立、擴容和減容操作的,基本上有系統管理員操作,一是各司其職,專業的事專業的人做,二是做多了你的責任也多了,哈哈!

但是linux運維的人員肯定的要會的,面試的時候如果這個不會,基本上是OVER了。

 

參考資料來自網站:

https://opensource.com/business/16/9/linux-users-guide-lvm

https://wiki.archlinux.org/index.php/LVM

對於系統運維人員來說,管理磁碟空間一直是一項重要任務。耗盡磁碟空間通常是一系列漫長而複雜的任務的開始,以增加磁碟分割槽的可用空間。它還需要使系統離線。這通常涉及安裝新的硬碟驅動器,引導至恢復或單使用者模式,在新的硬碟驅動器上建立分割槽和檔案系統,使用臨時掛載點將資料從太小的檔案系統移至新的更大的檔案系統。 更改/etc/fstab檔案的內容以反映新分割槽的正確裝置名稱,然後重新引導以在正確的安裝點上重新安裝新的檔案系統。

David Both大神說:“當LVM(邏輯卷管理器)首次出現在Fedora Linux中時,他強烈反對它,他最初的反應是,我和硬碟之間不需要這個額外的抽象層。原來我錯了,邏輯卷管理非常有用”。

LVM允許非常靈活的磁碟空間管理。它提供了諸如在掛載和啟用該邏輯卷的同時向邏輯卷及其檔案系統新增磁碟空間的功能,並允許將多個物理硬碟驅動器和分割槽收集到單個卷組中,然後可以將其劃分為邏輯卷。 。

卷管理器還允許減少分配給邏輯卷的磁碟空間量,但是有一些要求。首先,必須解除安裝該卷。第二,必須減小檔案系統本身的大小,然後才能減小其所在的卷。

重要的是要注意檔案系統本身必須允許調整大小才能使此功能起作用。EXT2、3和4檔案系統在增加檔案系統大小時都允許離線(解除安裝)和聯機(掛載)大小調整,而在減小大小時允許離線大小調整。您應該檢查要使用的檔案系統的詳細資訊,以驗證它們是否可以完全調整大小,尤其是在聯機時是否可以調整大小。

 

一.LVM結構 

下面的圖1說明了Logical Volume Manager磁碟環境的結構。邏輯卷管理可將多個單獨的硬碟驅動器和/或磁碟分割槽組合到一個卷組(VG)中。然後可以將該卷組細分為邏輯卷(LV)或用作單個大卷。然後可以在邏輯捲上建立常規檔案系統,例如EXT3或EXT4。

  

  

在圖1中,兩個完整的物理硬碟驅動器和第三個硬碟驅動器的一個分割槽已合併到一個卷組中。已從卷組中的空間建立了兩個邏輯卷,並且已在兩個邏輯卷中的每個邏輯捲上建立了一個檔案系統,例如EXT3或EXT4檔案系統。

向主機新增磁碟空間非常簡單,但是以我的經驗,這種操作相對很少。下面列出了所需的基本步驟。您可以建立一個全新的卷組,也可以將新空間新增到現有的卷組中,然後擴充套件現有的邏輯卷或建立一個新的邏輯卷。

 

二.LVM說明 

LVM利用Linux核心的device-mapper功能來實現儲存系統的虛擬化(系統分割槽獨立於底層硬體)。 通過LVM,你可以實現儲存空間的抽象化並在上面建立虛擬分割槽(virtual partitions),可以更簡便地擴大和縮小分割槽,可以增刪分割槽時無需擔心某個硬碟上沒有足夠的連續空間,避免為正在使用的磁碟重新分割槽的麻煩、為調整分割槽而不得不移動其他分割槽的不便。

LVM的基本組成部分如下:

物理卷 (PV)

一個可供儲存LVM的塊裝置. 例如: 一塊硬碟, 一個MBR或GPT分割槽, 一個迴環檔案, 一個被核心對映的裝置 (例如 dm-crypt).它包含一個特殊的LVM頭。
卷組 (VG)
物理卷的一個組,作為存放邏輯卷的容器。 PE是從VG分配給LV的。
邏輯卷 (LV)
"虛擬/邏輯卷"存放在一個卷組中並由物理塊組成。是一個類似於物理裝置的塊裝置,例如,你可以直接在它上面建立一個檔案系統檔案系統
物理塊 (PE)
一個卷組中最小的連續區域(預設為4 MiB),多個物理塊將被分配給一個邏輯卷。你可以把它看成物理卷的一部分,這部分可以被分配給一個邏輯卷。 

三.LVM方式掛載磁碟

 cat /etc/redhat-release 

 

 版本是7.5的。

(1) 檢視分割槽情況 

fdisk -l

 

兩塊盤,/dev/sdb(這個是新加的一塊專門拿來做實驗的) ,/dev/sda(/dev/sda1,/dev/sda2這兩個分割槽)

(2) 檢視磁碟卷組資訊

lvmdiskscan

 

lsblk

 sda2分割槽採用了lvm管理,vg名為centos,sda1是我用的作為boot分割槽

檢視pv

檢視vg 

vgdisplay

檢視 lv

lvdisplay

 

[root@19c home]# lvdisplay 

--- Logical volume ---
LV Path /dev/centos/swap
LV Name swap
VG Name centos
LV UUID F3q7AE-E6rC-eq2H-0hvr-zjdt-r9ic-lvxHf7
LV Write Access read/write
LV Creation host, time localhost.localdomain, 2020-12-21 00:22:16 +0800
LV Status available
# open 2
LV Size 7.00 GiB
Current LE 1792
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 8192
Block device 253:1

--- Logical volume ---
LV Path /dev/centos/home
LV Name home
VG Name centos
LV UUID TzHMql-idEA-JYY0-IrFO-Nnxe-4lLQ-h8gtHU
LV Write Access read/write
LV Creation host, time localhost.localdomain, 2020-12-21 00:22:16 +0800
LV Status available
# open 1
LV Size <20.34 GiB
Current LE 5207
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 8192
Block device 253:2

--- Logical volume ---
LV Path /dev/centos/root
LV Name root
VG Name centos
LV UUID wkKvYa-wMT2-OZmN-N1yW-2817-cpCt-PpJEE9
LV Write Access read/write
LV Creation host, time localhost.localdomain, 2020-12-21 00:22:17 +0800
LV Status available
# open 1
LV Size <41.66 GiB
Current LE 10664
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 8192
Block device 253:0

 

做了三個LV,路徑分別是:

/dev/centos/swap,/dev/centos/home,/dev/centos/root 

(3) LVM的操作

新增新邏輯卷的基本步驟如下。

  1. 如有必要,請安裝新的硬碟驅動器。
  2. 可選:在硬碟驅動器上建立一個分割槽。
  3. 建立整個硬碟驅動器或硬碟驅動器上的分割槽的物理卷(PV)。
  4. 將新的物理卷分配給現有的卷組(VG)或建立一個新的卷組。
  5. 從卷組中的空間建立一個新的邏輯卷(LV)。
  6. 在新的邏輯捲上建立一個檔案系統。
  7. 將適當的條目新增到/etc/fstab以掛載檔案系統。
  8. 掛載檔案系統

3.1建立物理卷 pv

pvcreate /dev/sdb

  

3.2建立新的卷組 vg

  我有兩個pv,此次,我想新建一個vg(MyVolGroup ),不把原來的vg進行擴充套件,後面做完實驗了在進行擴充套件。

 vgcreate MyVolGroup /dev/sdb

3.3建立邏輯卷

本次測試建立2個lv,每個各站MyVolGroup一半的空間。

lvcreate -l +50%FREE MyVolGroup -n LogVo1         ##注意啊,這個50%是佔MyVolGroup 的50%

lvcreate -l +100%FREE MyVolGroup -n LogVo2        ##注意啊,這個100%是佔MyVolGroup 所有沒有分配的空間,第一次我也是搞錯了

弄成了lvcreate -l +50%FREE MyVolGroup -n LogVo2 ;如果你也寫成50%,那麼分配的空間是MyVolGroup*(1-50%) *50%=0.25MyVolGroup 

刪除後重建LV:

lvremove MyVolGroup/LogVo2

 

 lvcreate -l +100%FREE MyVolGroup -n LogVo2 

 

3.4檔案系統的掛載和開機自啟動

 格式化

mkfs.ext4 /dev/mapper/MyVolGroup-LogVo1

mkfs.ext4 /dev/mapper/MyVolGroup-LogVo2

mkdir lvtest01 lvtest02

mount /dev/mapper/MyVolGroup-LogVo1 /lvtest01
mount /dev/mapper/MyVolGroup-LogVo2 /lvtest02

載入到/etc/fstab 開機自啟

   

3.5擴充套件邏輯卷

把掛載的目錄unmount,刪除lv以及 /etc/fstab 記錄的新加內容

  如下

  

 

vgremove MyVolGroup

pvremove /dev/sdb

 

   此刻我想把 home 這個邏輯卷多餘的空間到根目錄下。

lvresize -L -15G --resizefs centos/home

xfs格式不支援

 算了只有擴充套件lv了。

 

擴充套件空間操作:磁碟我的前面測試已經格式化了(可以不分割槽)-->擴充套件卷組-->擴充套件邏輯卷

3.6擴充套件卷組

vgextend centos /dev/sdb

 

 3.7擴充套件邏輯卷

lvextend -l +100%free  /dev/mapper/centos-root

也可以把+100% 換成大小 +10G

# CentOS 7重新讀取磁碟大小:

xfs_growfs /dev/mapper/centos-root

# CentOS 6.5重新讀取磁碟大小: # ext4格式, resize2fs會遍歷整個磁碟, 速度比較慢, 但是不影響讀寫資料, 可以令其在後臺執行.

resize2fs xfs_growfs /dev/mapper/centos-root

 

 

 ok! 完事。

相關文章