Linux LVM Logical Volume Management 邏輯卷的管理

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

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

 

參考資料來自網站:

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

//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! 完事。

Tags: