ubuntu 的 LVM 邏輯卷

什麼是 LVM邏輯卷?

在此之前,傳統的linux的磁盤管理 和 window 的磁盤管理大同小異,都是使用MBR磁盤分區方式,通過磁盤分區、再去創建文件系統;

問題:

當分區的空間不夠用時無法擴展其大小,只能通過添加硬盤、創建新的分區來擴充空間,但是新添加進來的硬盤是作爲獨立文件系統存在的,原有的文件系統並未得到擴充,上層應用很多時候只能訪問一個文件系統。所以只能讓現有磁盤下線,換上新的磁盤之後,再將原始數據導入。

image

如果在實際生產環境的服務器中,出現這種分區已用完的時,我們是很難對原有分區處理擴容的,處理的方式就是我們不得不先擴容更大的新分區,然後停止項目的運行,移動項目到新的擴容分區中;非常麻煩~

雖然有第三方解決方案對原有分區進行擴容,但是這些第三方的擴容解決方案實踐起來後是非常不穩定的,很容易引起數據的丟失、丟盤的情況發生;

LVM 就很好的解決了上面分區擴容麻煩的問題;

LVM(Logical volume Manager) 邏輯卷管理:通過將底層物理硬盤抽象地封裝起來,以邏輯卷的形式表現給上層系統。邏輯卷的大小可以動態調整,而且不會丟失現有的數據。新加入的硬盤也不會改變現有上層的邏輯卷。

作爲一種 動態磁盤管理機制,邏輯卷技術大大提高了磁盤管理的靈活性!

我們能操作的只是 邏輯卷,邏輯卷說白了,就是可伸縮的 "分區卷",其分區大小可以動態調節,而不受制於原始的固定分區大小;

LVM 的底層概念

image

上圖中,我們最終能使用和操作的就是 LV邏輯卷,所做的很多操作都是爲了 LV邏輯卷;邏輯卷就是爲取代原先的分區

一句話概括:物理磁盤被格式化爲PV(physical volume),空間被分爲一個個PE(physical extend)【大小爲 4 MB,爲邏輯卷的最小單位】。不同的PV加入同一個VG(volume group),不同PV的PE全部進入VG的PE池內。LV(logical volume)基於PE創建,大小爲PE的整數倍,組成LV的PE可能來自於不同的物理磁盤。LV現在就能掛載使用了。

詳解:

假如有一塊硬盤,我們使用LVM技術時,將硬盤插入服務器中,將該硬盤條帶化(格式化)成物理卷PV,即把硬盤空間劃分爲以4M的基準切割N多個PE;比如一個硬盤容量爲400M,那麼一共就有 100(400/4) 個PE;(PE是邏輯卷空間管理的最基本單位,PE默認是4M大小)

創建一個卷組VG,可以理解爲空間池(或者說 地址池),作用是用來裝 PE 的,如上圖,多個硬盤的PE裝入到了 VG 中;VG 必須有名稱的;VG的大小由多少個PE來決定;

基於卷組VG來創建我們每個邏輯卷LV(相當於傳統的分區),從VG拿出來多少個PE到LV中,這個LV的空間就有多大;我們把創建好的邏輯卷格式化,然後掛載,就可以用了;LV 必須有名稱的;LV的大小由多少個PE來決定;

當創建好卷組VG時,會創建目錄 /dev/卷組名/ ;而當邏輯卷創建好時,會創建文件 /dev/卷組名/邏輯卷名;

注意:組成邏輯卷的PE可以來自不同的硬盤,如上圖,sda的PE是灰色的,而 sdb的PE是白色的,lV有3個灰1個白的PE:

image

我們不需要關心也不能操作 VG、PV 和 PE,我們只能操作 LV邏輯卷;

當我們對LV拉伸活收縮時,實際上就是增加活減少PE,來達到伸縮LV邏輯卷的目的;

對 卷組VG 的伸縮,就是加減硬盤;

image

LVM邏輯卷 是一個動態磁盤管理的工具,原理非常簡單~

總結:

  • 物理磁盤被格式化爲PV,空間被分爲一個個PE
  • 不同的PV加入同一個VG,不同PV的PE全部進入VG的PE池內
  • LV基於PE創建,大小爲PE的整數倍,組成LV的PE可能來自不同物理磁盤
  • LV現在就直接可以格式化後掛載使用了
  • LV的擴充縮減實際上就是增加或減少組成該LV的PE的數量。其過程不丟失原始數據

LVM邏輯卷 的 基本管理操作

image

先檢查新硬盤是否插入: fdisk -l 或者 df -h 或者 lsblk

創建LVM

1、將物理磁盤設備初始化爲物理卷
pvcreate /dev/sdb /dev/sdc 查看物理卷信息:pvdispaly 或者 pvs
2、創建卷組,並將上面兩個PV加入卷組juanzuming中
vgcreate juanzuming /dev/sdb /dev/sdc
3、基於卷組juanzuming創建2G大小空間的邏輯卷
lvcreate -n mylv -L 2G juanzuming 查看卷組信息:vgdisplay 或者 vgs
4、爲創建好的邏輯卷格式化創建文件系統
mkfs.ext4 /dev/juanzuming/mylv 查看邏輯卷信息:lvdisplay 或者 lvs
5、將格式化好的邏輯卷掛載使用
mount/dev/juanzuming/mylv /mnt 將邏輯卷掛載到 /mnt 中

一定要按照上面順序一步步下來

卷組VG 和 邏輯卷LV 可以有多個,主要是爲了方便管理和維護;

上面命令全部運行完後,其在目錄 /dev/juanzuming/mylv 中多一個設備;但是,執行 mount 時,顯示的lv邏輯卷的位置是在 /dev/mapper/juanzuming-mylv 中的;答:/dev/juanzuming/mylv 只是一個鏈接,實際是在 /dev/mapper 這目錄裏面;

image

刪除 LVM

0、卸載已經掛載
umount /nmt

1、刪除LV
lvremove /dev/juanzuming/mylv
2、刪除 VG
vgremove juanzuming
3、刪除物理卷
pvremove /dev/sdb

一定要按照上面順序一步步下來

LVM 邏輯卷的 擴大 與 縮小(動態伸縮磁盤分區卷空間)

image

拉伸LV邏輯卷

邏輯卷的 拉伸操作 可以在線執行,不需要卸載邏輯卷,數據不會丟失
邏輯卷的 縮小 操作,必須先卸載邏輯卷

1、保證VG中有足夠的空閒空間
vgdisplay
2、擴充mylv邏輯卷,增加1G空間
lvextend -L +1G /dev/juanzuming/mylv
3、查看擴充後LV大小
lvdisplay
4、更新文件系統(必須的,否則 df -h 還是顯示原來的空間大小)
resize2fs /dev/juanzuming/mylv
5、查看更新後文件系統
df-h

爲什麼要需要更新文件系統?因爲LV邏輯卷是個底層的東西,操作系統需要使用任何的底層的空間,都要對其進行格式化(即創建文件系統),而文件系統在創建的時候大小就已經固定了,我們拉伸的底層空間,但是沒有更新mylv這個邏輯卷的文件系統~,所以,系統並沒有識別到拉伸出來的空間,所以 df -h 還是顯示原來的空間大小;

拉伸VG卷組

1、將要添加到VG的硬盤格式化爲PV
pvcreate /dev/sdd
2、將新的PV添加到指定卷組中
vgextend juanzuming /dev/sdd
3.查看擴充後VG大小
vgdisplay

縮小LV邏輯卷

image

邏輯卷的縮小操作必須離線執行,要卸載邏輯卷

1、卸載已經掛載的邏輯卷
umount /dev/juanzuming/mylv
2、縮小文件系統,縮小到1G
(會提示需要運行fsck檢查文件系統)
resize2fs /dev/juanzuming/mylv 1G
3、縮小LV
lvreduce -L -1G /dev/juanzuming/mylv
4、查看縮小後的LV
lvdisplay
5、掛載
mount /dev/juanzuming/mylv /mnt

注意一定要按照上面順序執行

縮小LV是比較危險的事,如果設置空間大小不對,那麼會導致數據的丟失

縮小VG卷組

即:拿走一個硬盤的情景;

image

1、將一個PV從制定卷組中移除
vgreduce juanzuming /dev/sdc
2、查看縮小後的卷組大小
vgdisplay

注意,卷組的大小必須比要拿走硬盤的空間大小還大!否則會造成數據丟失的風險;

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章