LVM是linux操作系統的邏輯卷管理器,目前版本是LVM2。LVM2使用的模塊是DM模塊,在LVM2的管理下可控制創建的存儲卷的大小。
LVM2模型圖:
LVM2中的術語:
物理存儲介質:是存儲系統最底層的單元,是指物理存儲設備如/dev/sda1 /dev/sdb1...
PV:磁盤分區或從邏輯上與磁盤分區具有相同功能的設備,是LVM的基本存儲邏輯塊,包含了與LVM相關的管理參數
VG:卷組,由多個物理PV組成
LV:邏輯卷,在LV上可創建文件系統
PE:物理盤區/物理塊,邏輯存儲單位,類似RAID中的chunk,PE大小取決於卷組
LE:邏輯塊,邏輯卷LV被劃分爲可被尋址的基本單位,在同一個卷組中,LE的大小與PE是相同的,並一一對應
快照:創建一個新的塊設備來呈現一個邏輯卷的精確副本
術語對應關係如下圖:
首先:查看是否安裝lvm2
[root@WebA-136 ~]# rpm -qa lvm2
lvm2-2.02.143-12.el6_9.1.x86_64
[root@WebA-136 ~]# yum install lvm2 -y
1.與pv的命令,pvcreate創建pv、pvscan查看pv、pvdisplay詳細查看pv、pvmove移除某個pv的數據
[root@WebA-136 ~]# pvcreate /dev/sdd1 /dev/sdd2 #先將多個磁盤(這裏是多個分區)製作爲pv,基本的存儲邏輯塊
Physical volume "/dev/sdd1" successfully created
Physical volume "/dev/sdd2" successfully created
[root@WebA-136 ~]# pvscan
PV /dev/sdd1 lvm2 [50.98 MiB]
PV /dev/sdd2 lvm2 [51.00 MiB]
Total: 2 [101.98 MiB] / in use: 0 [0 ] / in no VG: 2 [101.98 MiB]
注:
不建議對整個磁盤做PV初始化工作。因爲其他操作系統不能識別LVM元數據,導致我們認爲磁盤是空閒的,重新設置分區覆蓋原有數據
如果是分區需要調整分區的類型爲LVM(代碼爲8e)
2.與vg的命令,vgcreate創建vg、vgremove移除vg、vgextend、vgreduce縮減vg,就是移除某個pv,但一定要先將pv的數據移動到另一個pv上、vgdisplay詳細展示vg信息、vgscan展示vg信息
[root@WebA-136 ~]# vgcreate yang /dev/sdd1 /dev/sdd2 #指定vg的名稱 和 pv,可使用-s 指定PE大小,默認4M
Volume group "yang" successfully created
[root@WebA-136 ~]# vgs
VG #PV #LV #SN Attr VSize VFree
yang 2 0 0 wz--n- 96.00m 96.00m
[root@WebA-136 ~]# vgdisplay
--- Volume group ---
VG Name yang
System ID
Format lvm2
Metadata Areas 2
Metadata Sequence No 1
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 0
Open LV 0
Max PV 0
Cur PV 2
Act PV 2
VG Size 96.00 MiB
PE Size 4.00 MiB
Total PE 24
Alloc PE / Size 0 / 0
Free PE / Size 24 / 96.00 MiB
VG UUID W5BWyZ-HvtU-WJ5m-Y6FM-i1KG-Vm5b-HRAeZd
[root@WebA-136 ~]# pvmove /dev/sdd1 #先將sdd1上的數據移除
No data to move for yang
[root@WebA-136 ~]# vgreduce yang /dev/sdd1 #再縮減vg
Removed "/dev/sdd1" from volume group "yang"
[root@WebA-136 ~]# pvs #查看pv信息可知sdd1已不屬於yang這個vg了
PV VG Fmt Attr PSize PFree
/dev/sdd1 lvm2 ---- 50.98m 50.98m
/dev/sdd2 yang lvm2 a--u 48.00m 48.00m
[root@WebA-136 ~]# vgs #查看vg,容量已變小
VG #PV #LV #SN Attr VSize VFree
yang 1 0 0 wz--n- 48.00m 48.00m
[root@WebA-136 ~]# vgextend yang /dev/sdd1 #爲pv增加容量
Volume group "yang" successfully extended
[root@WebA-136 ~]# vgs #查看vg,容量已變大
VG #PV #LV #SN Attr VSize VFree
yang 2 0 0 wz--n- 96.00m 96.00m
[root@WebA-136 ~]# pvs #查看pv信息可知sdd1又屬於yang這個vg了
PV VG Fmt Attr PSize PFree
/dev/sdd1 yang lvm2 a--u 48.00m 48.00m
/dev/sdd2 yang lvm2 a--u 48.00m 48.00m
3.與lv的命令,lvcreate創建lv、lvremove、lvextend、lvreduce、lvs、lvdisplay
[root@WebA-136 ~]# lvcreate -n lv-yang -L 50M yang # -n 指定lv的名稱 -L指定lv的大小 指定在哪個vg上創建lv Rounding up size to full physical extent 52.00 MiB Logical volume "lv-yang" created. [root@WebA-136 ~]#
注:分區是在物理邊界上創建一個文件系統,文件是在文件系統邊界上新建的。文件系統是邏輯邊界,so.首先擴展物理邊界再擴展邏輯邊界或先縮減邏輯邊界再縮減物理邊界
在線擴展物理邊界lv:使用lvextend命令
[root@WebA-136 ~]# mkfs.ext4 /dev/yang/lv-yang #在lv上創建文件系統
[root@WebA-136 ~]# mount /dev/yang/lv-yang /mnt/ #掛載
[root@WebA-136 ~]# df -h |grep "lv" #查看已掛載到/mnt上
/dev/mapper/yang-lv--yang 51M 4.9M 43M 11% /mnt
[root@WebA-136 ~]# lvextend -L +20M /dev/yang/lv-yang #擴展邏輯邊界
Size of logical volume yang/lv-yang changed from 52.00 MiB (13 extents) to 72.00 MiB (18 extents). #告知已經擴展了物理邊界
Logical volume lv-yang successfully resized.
[root@WebA-136 ~]# df -h |grep "lv" #查看掛載的容量沒有變化---->因爲需要再擴展邏輯邊界
/dev/mapper/yang-lv--yang 51M 4.9M 43M 11% /mnt
[root@WebA-136 ~]# resize2fs -p /dev/yang/lv-yang #進行擴展邏輯邊界(文件系統),-p擴展到與物理邊界(lv邊界)一樣大小的容量
resize2fs 1.41.12 (17-May-2010)
Filesystem at /dev/yang/lv-yang is mounted on /mnt; on-line resizing required
old desc_blocks = 1, new_desc_blocks = 1
Performing an on-line resize of /dev/yang/lv-yang to 73728 (1k) blocks.
The filesystem on /dev/yang/lv-yang is now 73728 blocks long.
[root@WebA-136 ~]# df -h |grep "lv" #查看掛載的容量已經變化,ok
/dev/mapper/yang-lv--yang 70M 5.1M 62M 8% /mnt
[root@WebA-136 ~]#
注:縮減lv
一定不能在線縮減lv(非掛載才行)
縮減後的空間依舊能保留原來的數據
先縮減邏輯編輯(文件系統邊界)再縮減物理邊界(lv邊界),resize2fs-->lvreduce -L
重新掛載
[root@WebA-136 ~]# umount /mnt #先卸載
[root@WebA-136 ~]# e2fsck -f /dev/yang/lv-yang #需要先檢查磁盤
e2fsck 1.41.12 (17-May-2010)
第一步: 檢查inode,塊,和大小
第二步: 檢查目錄結構
第3步: 檢查目錄連接性
Pass 4: Checking reference counts
第5步: 檢查簇概要信息
/dev/yang/lv-yang: 11/22848 files (9.1% non-contiguous), 8245/94208 blocks
[root@WebA-136 ~]# resize2fs /dev/yang/lv-yang 52m #縮減文件系統邊界到52M
resize2fs 1.41.12 (17-May-2010)
Resizing the filesystem on /dev/yang/lv-yang to 53248 (1k) blocks.
The filesystem on /dev/yang/lv-yang is now 53248 blocks long.
[root@WebA-136 ~]# lvreduce -L 52m /dev/yang/lv-yang #再縮減lv邊界到52m
WARNING: Reducing active logical volume to 52.00 MiB.
THIS MAY DESTROY YOUR DATA (filesystem etc.)
Do you really want to reduce yang/lv-yang? [y/n]: y #會讓你確認是否縮減,因爲可能會損壞數據
Size of logical volume yang/lv-yang changed from 92.00 MiB (23 extents) to 52.00 MiB (13 extents).
Logical volume lv-yang successfully resized.
[root@WebA-136 ~]# mount /dev/yang/lv-yang /mnt/ #掛載
[root@WebA-136 ~]# df -h |grep "lv" #查看已經縮減空間
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/yang-lv--yang 51M 4.9M 44M 11% /mnt
[root@WebA-136 ~]#
快照:
用於備份
生命週期:整個數據時長在這段時間內,數據的增長量不能超過快照卷的大小
快照是隻讀的
快照卷和原卷是在同一個卷組內
lvcreate -s -p r|w -L 大小 -n指定名稱 /dev/vgs-name/lv-name 對lv-name創建快照只讀/可寫
[root@WebA-136 ~]# lvcreate -s -p r -L 40m -n lv-snap /dev/yang/lv-yang #爲/dev/yang/lv-yang創建快照名爲lv-snap
Logical volume "lv-snap" created.
[root@WebA-136 ~]# mount /dev/yang/lv-snap /snap/ #掛載
mount: block device /dev/mapper/yang-lv--snap is write-protected, mounting read-only
[root@WebA-136 ~]# ls /snap #查看快照內容
aaa lost+found
當對邏輯捲進行備份後,就可以刪除快照了
[root@WebA-136 ~]# lvremove /dev/yang/lv-snap
Do you really want to remove active logical volume lv-snap? [y/n]: y
Logical volume "lv-snap" successfully removed
[root@WebA-136 ~]#
注:resize2fs是調整文件系統大小的工具,可以放大縮寫在線/非在線的文件系統大小。在線需內核支持。
語法:resize2fs [選項] device [size]