LVM:Logical Volume Manager 。LVM利用Linux內核的device-mapper功能來實現存儲系統的虛擬化(系統分區獨立於底層硬件)。 通過LVM,你可以實現存儲空間的抽象化並在上面建立虛擬分區(virtual partitions),可以更簡便地擴大和縮小分區,可以增刪分區時無需擔心某個硬盤上沒有足夠的連續空間,避免為正在使用的磁盤重新分區的麻煩、為調整分區而不得不移動其他分區的不便。
LVM的基本組成部分如下:
物理卷 (PV):一個可供存儲LVM的塊設備. 例如: 一塊硬盤, 一個MBR或GPT分區, 一個回環文件, 一個被內核映射的設備 (例如 dm-crypt).它包含一個特殊的LVM頭。
卷組 (VG):物理卷的一個組,作為存放邏輯卷的容器。 PEs are allocated from a VG for a LV.
邏輯卷 (LV):"虛擬/邏輯卷"存放在一個卷組中並由物理塊組成。是一個類似於物理設備的塊設備,例如,你可以直接在它上面創建一個文件系統文件系統。
物理塊 (PE):一個卷組中最小的連續區域(默認為4 MiB),多個物理塊將被分配給一個邏輯卷。你可以把它看成物理卷的一部分,這部分可以被分配給一個邏輯卷。
創建lvm步驟
1、fdisk進行分區,並將磁盤分區格式調整成lvm。(如果是某個分區需要此步驟,如果是某塊硬盤略過此步)
#fdisk
t
8e
2、創建pv物理卷(可以將某個分區划分為pv,也可以將某塊硬盤化為pv)
查看pv命令
# pvdisplay
# pvs
創建pv步驟
# pvcreate /dev/sda3(某分區) /dev/sdb(某硬盤)
注意:如創建某個硬盤如/dev/sda創建的pv時報錯(如下): Device /dev/sda excluded by a filter 原因:此硬盤已經分區,存在分區表,可以將某個分區划分為pv如/dev/sda1等,如果要將/dev/sda整個硬盤划分為pv可以破壞硬盤/dev/sda的分區表,然后再創建 破壞分區表的兩種方法: # dd if=/dev/urandom of=/dev/sda bs=512 count=1 # wipefs -a /dev/sda |
3、創建vg卷組
查看vg命令:
# vgs
# vgdisplay
創建vg步驟1:
# vgcreate [-s 16M] VG_Name /dev/sda3 /dev/sdb
-s 16M #指定PE大小為16M,如不指定默認為4M
步驟2(擴展vg時用):
# vgextend VG_Name /dev/sda4
4、創建lv邏輯卷
查看lv命令
# lvs
# lvdisplay
創建lv步驟1:
# lvcreate -L #[mMgGtT] -n LV_Name VG_Name
-l 3000 # 3000為pe的個數
-L 8G # 8G為實際容量容量,建議采用此方法
步驟2:對創建好的lv邏輯卷生成文件系統
# mke2fs -t ext4 /dev/VG_Name/LV_Name
步驟3:將lv掛載
# mount /dev/VG_Name/LV_Name /media
5、擴大lv邏輯卷
方法一:
步驟1:擴大邏輯卷
# lvextend -L [+]#[mMgGtT] -n /dev/VG_Name/LV_Name
-l +100%FREE #將所有剩余空間都進行擴展
步驟2:將擴大的邏輯卷空間進行文件系統擴展調整
(1)ext系列擴展文件系統采用此命令
# resize2fs /dev/VG_Name/LV_Name
(2)xfs系列擴展文件系統采用此命令,注意:要接掛載的目錄/media
# xfs_growfs /media
方法二:
可通過一條命令直接擴展文件系統,替代步驟1和步驟2,包括ext,xfs
# lvextend -r -L [+]#[mMgGtT] -n /dev/VG_Name/LV_Name
6、縮減lv邏輯卷:只有ext系列支持縮減,xfs不支持縮減
步驟一:取消掛載
# umount /dev/VG_Name/LV_Name
步驟2:檢查文件系統完整性
# e2fsck -f /dev/VG_Name/LV_Name
步驟3:縮減文件系統容量
# resize2fs /dev/VG_Name/LV_Name #[mMgGtT]
步驟4:縮減邏輯卷容量
# lvreduce -L [-]#[mMgGtT] /dev/ VG_Name/LV_Name
步驟5:重新掛載縮減好的邏輯卷
# mount /dev/VG_Name/LV_Name /media
7、快照:創建快照相當於針對某個邏輯卷lv創建了還原點。快照卷和原邏輯卷lv在同一個卷組vg中。
需要查看vg中空間是不是夠創建快照,創建快照也相當於創建一個lv
創建快照:
# lvcreate -L #[mGgGtT] -p r -s -n snapshot_lv_name /dev/VG_Name/LV_Name
-p r # 設置快照為只讀屬性
-s # 創建快照
示例:
# lvcreate -L 1G -p r -s -n kuaizhao /dev/VG_Name/LV_Name
注意:快照可以像一般的lv一樣掛載,xfs的快照掛載的時候需要給mount加擴展選項 # mount -o nouuid,ro
快照還原:
步驟1:取消快照和邏輯卷的掛載
# umount /users
步驟2:將快照合並到源lv上,注意還原后快照自動刪除
# lvconvert --merge /dev/VG_Name /kuaizhao
lvm創建舉例:
1) 創建一個至少有兩個PV組成的大小為20G的名為testvg的VG;要求PE大小 為16MB, 而后在卷組中創建大小為5G的邏輯卷testlv;掛載至/users目錄 # pvcreate /dev/sdb /dev/sdc #創建pv # vgcreate -s 16M testvg /dev/sdb /dev/sdc #創建vg # lvcreate -L 5G -n testlv testvg #創建lv # mkfs.ext4 /dev/testvg/testlv #創建lv的文件系統 # mkdir /users #創建掛載目錄 # mount /dev/testvg/testlv /users/ #掛載 2) 擴展testlv至7G,要求archlinux用戶的文件不能丟失 # cp -a /etc/ /users/ #復制測試文件 # lvextend -r -L 7G -n /dev/testvg/testlv #擴展lv到7G 3) 收縮testlv至3G,要求archlinux用戶的文件不能丟失 # umount /users/ #卸載 # e2fsck -f /dev/testvg/testlv #檢查文件系統 # resize2fs /dev/testvg/testlv 3G #縮減文件系統 # lvreduce -L 3G /dev/testvg/testlv #縮減lv容量 # mount /dev/testvg/testlv /users/ #掛載 4) 對testlv創建快照,並嘗試基於快照備份數據,驗證快照的功能 # lvcreate -L 1G -p r -s -n kuaizhao /dev/testvg/testlv #創建快照 # rm /users/etc/passwd #刪除文件測試 # umount /users/ # lvconvert --merge /dev/testvg/kuaizhao #快照恢復 # mount /dev/testvg/testlv /users/ #重新掛載恢復后的lv # ls /users/etc/passwd #查看文件是否恢復