邏輯卷LVM配置spa
LVM是邏輯盤卷管理(Logical Volume Manager)的簡稱,它是Linux環境下對磁盤分區進行管理的一種機制,LVM是創建在硬盤和分區之上的一個邏輯層,來提升磁盤分區管理的靈活性。經過LVM系統管理員能夠輕鬆管理磁盤分區,管理員能夠在卷組上隨意建立邏輯卷組(logical volumes),並進一步在邏輯卷組上建立文件系統。管理員經過LVM能夠方便的調整存儲卷組的大小,而且能夠對磁盤存儲按照組的方式進行命名、管理和分配。3d
PV(physical volume):物理卷在邏輯卷管理系統最底層,可爲整個物理硬盤或實際物理硬盤上的分區。blog
VG(volume group):卷組創建在物理捲上,一卷組中至少要包括一物理卷,卷組創建後可動態的添加捲到卷組中,一個邏輯卷管理系統工程中可有多個卷組。rem
LV(logical volume):邏輯卷創建在卷組基礎上,卷組中未分配空間可用於創建新的邏輯卷,邏輯卷創建後能夠動態擴展和縮小空間。虛擬機
PE(physical extent):物理區域是物理卷中可用於分配的最小存儲單元,物理區域大小在創建卷組時指定,一旦肯定不能更改,同一卷組全部物理卷的物理區域大小需一致,新的pv加入到vg後,pe的大小自動更改成vg中定義的pe大小。table
LE(logical extent):邏輯區域是邏輯卷中可用於分配的最小存儲單元,邏輯區域的大小取決於邏輯卷所在卷組中的物理區域的大小。基礎
底層PV是一種LVM格式,VG至關於普通磁盤,LV至關於磁盤上的分區,結構以下:擴展
任務配置 |
PV階段gc |
VG階段 |
LV階段 |
查找(scan) |
pvscan |
vgscan |
lvscan |
新建(create) |
pvcreate |
vgcreate |
lvcreate |
顯示(display) |
pvdisplay |
vgdisplay |
lvdisplay |
增長(extend) |
|
vgextend |
lvextend(lvresize) |
減小(reduce) |
|
vgreduce |
lvreduce(lvresize) |
刪除(remove) |
pvremove |
vgremove |
lvremove |
改變容量(resize) |
|
|
lvresize |
改變屬性(attribute) |
pvchange |
vgchange |
lvchange |
下面用一個示例,演示LVM經常使用的配置流程
如上圖,虛擬機新磁盤sdb爲10G,知足如下要求:
一、新建一個2G的邏輯卷,要求卷組名vg0_ext3,邏輯卷名lvm0,大小爲1G,文件系統類型ext3,掛載點/data0;
二、將lvm0增大2G,同時增大文件系統,不影響已有文件;
三、將lvm0減少660M,同時減少文件系統,不影響已有文件;
四、新建一個3G的邏輯卷,要求卷組名vg1_xfs,邏輯卷名爲lvm1,大小爲3G,文件系統類型xfs,掛載點/data1;
五、將lvm1增大1G,增大文件系統,不影響已有文件;
配置以下:
首先使用fdisk劃分出2G分區,分區類型爲LVM格式;
fdisk /dev/sdb
n(新增分區)--->p(基礎分區)--->1(分區號)--->Enter(起始柱面)--->+2G(分區大小)--->t(改變分區類型)--->1(改變的分區號)--->8e(LVM分區類型label)--->w(保存退出)
查看分區:
PV階段,將sdb1設置爲PV格式,並查看:
pvcreate /dev/sdb1
pvdisplay /dev/sdb1
VG階段,在sdb1分區,新建VG,卷組名vg0_ext3,並查看該卷組;
vgcreate vg0_ext3 /dev/sdb1
vgdisplay /dev/vg0_ext3 #注意此時卷組名/dev/vg0_ext3
LV階段,在卷組vg0_ext3上,新建LV,名稱lvm0,大小爲1G,並查看;
lvcreate -L 1G -n lvm0 /dev/vg0_ext3 #選項 -L指定大小 -n指定lvm名稱
lvdisplay /dev/vg0_ext3/lvm0 #注意此處lvm格式
查看LVM配置結果:
格式化lvm0,文件系統類型ext3,掛載點/data0
mkfs.ext3 /dev/vg0_ext3/lvm0
echo '/dev/vg0_ext3/lvm0 /data0 ext3 defaults 0 0' >> /etc/fstab
mkdir /data0
mount -a
查看掛載結果:
因爲剩餘PV空間不足2G,需從新劃分一個分區,大小2G,加到/dev/vg0_ext3/lvm0中;
配置以下:
fdisk /dev/sdb
N--->p--->2--->Enter--->+2G--->t--->2--->8e--->w--->partprobe(強制內核檢查分區表)
umount /data0 #擴大LVM,首先umount掛載點
pvcreate /dev/sdb2 #將/dev/sdb2建立PV
vgextend /dev/vg0_ext3 /dev/sdb2 #擴大原有VG,將/dev/sdb2加入
lvextend -L 3G /dev/vg0_ext3/lvm0 #擴大原有LV爲3G
e2fsck -f /dev/vg0_ext3/lvm0 #要求強制檢查文件系統
resize2fs /dev/vg0_ext3/lvm0 3G #調整/dev/vg0_ext3/lvm0分區大小爲3G
查看增大後分區,並掛載
縮小LVM,首先須要umount掛載點
umount /data0
減少660M文件系統,至關於文件系統減少爲1024*3-660=2412M
e2fsck -f /dev/vg0_ext3/lvm0
resize2fs /dev/vg0_ext3/lvm0 2412M
lvreduce -L 2412M /dev/vg0_ext3/lvm0 #再減少LVM到2412M
從新掛載後結果
首先使用fdisk建立/dev/sdb3,大小爲3G,以後開始建立LVM
pvcreate /dev/sdb3
vgcreate vg1_xfs /dev/sdb3
注意此處,因爲/dev/sdb3大小是3G,建立LV時可能出現PE不夠的狀況
用vgdisplay查看空閒PE數後,用PE數量建立LV
lvcreate -l 767 -n lvm1 /dev/vg1_xfs # -l 參數表示PE個數
LV創建後進行格式化、掛載
mkfs.xfs /dev/vg1_xfs/lvm1
echo '/dev/vg1_xfs/lvm1 /data1 xfs defaults 0 0' >> /etc/fstab
mkdir /data1
mount -a
擴大dev/vg1_xfs/lvm1,首先fdisk新建分區/dev/sdb4,大小爲1G,再增長LVM
pvcreate /dev/sdb4
vgextend /dev/vg1_xfs /dev/sdb4
查看VG,總PE數爲1022
lvextend -l 1022 /dev/vg1_xfs/lvm1
擴大xfs文件系統,注意xfs文件系統能夠在掛載的狀況下擴大
xfs_growfs /dev/vg1_xfs/lvm1
查看LVM擴大後結果
過程跟建立LVM相反,先刪除LV,再刪除VG,舉例刪除/dev/vg1_xfs/lvm1
umount /data1
lvremove /dev/vg1_xfs/lvm1
vgremove vg1_xfs
pvremove /dev/sdb4
pvremove /dev/sdb3
最後用fdisk刪除磁盤分區便可
一、ext3文件系統調整前必須umount,強制檢查後調整,即先e2fsck後再resize2fs;
二、xfs文件系統用xfs_growfs擴大,不能減少,沒有相應的減少命令,在掛載狀態下執行;
三、文件系統減少有風險,儘可能避免對根分區操做;
四、若是LV擴大提示空間不足,考慮使用PE個數擴大;
五、PE大小默認4MB,若是要改變,VG階段使用vgcreate -s指定PE大小,同時其餘要加入的邏輯卷PE大小須保持一致;