1、什麼是LVM
傳統的分區都是一次性分區,即分區後其大小就是固定的,不能後期因爲空間不足進行大小調整,如果要改變,唯一的操作辦法就是重新分區,這對於需要高可用的服務器環境是非常糟糕的,所以此時引入了LVM邏輯卷管理模式,LVM就是一個建立在物理存儲驅動器上的邏輯驅動機制,它的作用主要是使存儲設備的空間調整處於一種彈性的工作狀態,不在是固定的,可以根據環境的需求,動態的調整空間的使用量,不但可以擴容,也可以縮減,而且調整存儲空間的時候不需要重啓系統,它還有一個最大的優點就是可以跨硬盤調整分區大小,完全不影響系統的運行。
2、LVM邏輯卷的體系結構
3、LVM體系思路
首先將一個或者多個物理存儲空間,初始化配置,將它們都配置成爲LVM系統識別的物理卷,即將它們的磁盤標籤設置成爲Linux LVM類型,這裏的物理存儲空間可以是基本磁盤分區,也可以是整個物理磁盤,或者創建的RAID卷
當初始化完成後,都變成物理卷PV,接下來要他們組成一個隊伍,即分成一個組,因爲他們此前都是單兵作戰,不能同一隊形,這樣對於操作系統而言,還是認爲這是各自獨立的存儲磁盤,所以我們要讓操作系統知道這些都是一個存儲空間,至少在形式上讓它這樣以爲,這就爲我們後面調整存儲空間解放自由,不在受限,任意而爲。
在上述之後,我們就可以在這個組之上,任意劃分邏輯卷LV,並且建立文件系統,存儲我們的數據。
4、完整的配置實踐
這裏我們以centos7系統的根目錄爲例
操作平臺:VMware workstation
操作環境:centos7計算機一臺,添加一塊硬盤空間爲20G
這裏需要注意一點:操作之前,如果你是用磁盤分區的形式來做,記得將分區類型設置爲Linux LVM
5、命令操作
創建之前我們先看一下,我們當前根目錄的空間使用情況,可用空間爲12G
創建物理卷
[root@lab-235 ~]# pvcreate /dev/sdb
Physical volume "/dev/sdb" successfully created.
查看物理卷信息可以用到以下幾個命令
pvscan:掃描物理卷
[root@lab-235 ~]# pvscan
PV /dev/sda2 VG centos lvm2 [19.80 GiB / 0 free]
PV /dev/sdb lvm2 [20.00 GiB]
Total: 2 [39.80 GiB] / in use: 1 [19.80 GiB] / in no VG: 1 [20.00 GiB]
我們可以看到現在有兩個物理卷,一個是我們系統的根分區,還有一個是我們剛剛創建的/dev/sdb
pvs:顯示物理卷的基本信息
[root@lab-235 ~]# pvs
PV VG Fmt Attr PSize PFree
/dev/sda2 centos lvm2 a-- 19.80g 0
/dev/sdb lvm2 --- 20.00g 20.00g
pvdisplay:顯示物理卷的詳細信息
[root@lab-235 ~]# pvdisplay
--- Physical volume ---
PV Name /dev/sda2
VG Name centos
PV Size 19.80 GiB / not usable 3.00 MiB
Allocatable yes (but full)
PE Size 4.00 MiB
Total PE 5069
Free PE 0
Allocated PE 5069
PV UUID t9BxDY-n5nR-rkvF-V5zc-J3kU-3GML-27X82p
"/dev/sdb" is a new physical volume of "20.00 GiB"
--- NEW Physical volume ---
PV Name /dev/sdb
VG Name
PV Size 20.00 GiB
Allocatable NO
PE Size 0
Total PE 0
Free PE 0
Allocated PE 0
PV UUID Sv5VLs-ITKr-q0wj-z187-cbrW-cOUU-8gfySV
接下來我們要將新創建的物理卷添加到我們根分區所在的邏輯組,此處我們可以通過以下幾個命令首先獲取根分區所在組的名稱(VG name):
1、可以用上述pvscan、pvs、pvdisplay,我們都可以看到VG的名字是centos
2、也可以使用vgscan、vgs、vgdisplay,邏輯組專用命令查看
擴展根分區的邏輯組centos,此處因爲我們是擴展根分區,如果要創建可以使用vgcreate命令
[root@lab-235 ~]# vgextend centos /dev/sdb
Volume group "centos" successfully extended
查看擴展後VG的情況
[root@lab-235 ~]# vgdisplay centos
--- Volume group ---
VG Name centos
System ID
Format lvm2
Metadata Areas 2
Metadata Sequence No 4
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 2
Open LV 2
Max PV 0
Cur PV 2
Act PV 2
VG Size <39.80 GiB
PE Size 4.00 MiB
Total PE 10188
Alloc PE / Size 5069 / 19.80 GiB
Free PE / Size 5119 / <20.00 GiB
VG UUID RI64Bu-s1Gr-V1Jh-JcWr-EpSS-Z8zr-uwaKmp
此時我們看到VG Size明顯的變大了,從原來的19.8G,變成了39.8G
接下來我們將19G空間分配到根分區上去
[root@lab-235 ~]# lvresize -L +19G /dev/centos/root
Size of logical volume centos/root changed from 16.07 GiB (4115 extents) to 35.07 GiB (8979 extents).
Logical volume centos/root successfully resized.
此時邏輯卷已經增加,但是文件系統的容量是沒有增加的,此時我們還需要調整文件系統容量,這裏需要注意當前被擴展分區的系統類型,如果是xfs,就使用xfs_growfs,如果是ext系列的,就使用resize2f
查看文件系統類型我們可以使用blkid
[root@lab-235 ~]# blkid
/dev/sda1: UUID="a4afdc45-11ae-4ea5-afd4-394e94d3b2da" TYPE="xfs"
/dev/sda2: UUID="t9BxDY-n5nR-rkvF-V5zc-J3kU-3GML-27X82p" TYPE="LVM2_member"
/dev/sdb: UUID="Sv5VLs-ITKr-q0wj-z187-cbrW-cOUU-8gfySV" TYPE="LVM2_member"
/dev/mapper/centos-root: UUID="c33942b5-fd49-47e1-8d55-ea7dda4afc34" TYPE="xfs"
/dev/mapper/centos-swap: UUID="42ef240a-ebdf-4ef8-94ad-04a7a03b8915" TYPE="swap"
調整文件系統容量
[root@lab-235 ~]# xfs_growfs /dev/centos/root
meta-data=/dev/mapper/centos-root isize=512 agcount=4, agsize=1053440 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=0 spinodes=0
data = bsize=4096 blocks=4213760, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=1
log =internal bsize=4096 blocks=2560, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
data blocks changed from 4213760 to 9194496
此時查看文件系統容量,發生如下改變,從原來的12G變成31G
至此完成擴容
總結:
1、如果是新創建的LVM,操作如下
pvcreate /dev/sdb /dev/sdc
vgcreate -s 24M vgname /dev/sdb /dev/sdc
說明:在創建卷組時需要注意一點,因爲卷組相當於的存放很多物理卷的池子,我們可以在這個池子中添加物理卷,也可以移除,但是在卷組中,它會把這些物理卷的空間全部重新分配爲大小相同的容量區域,稱之爲PE,所以在實際工作需要中根據自身需求可以指定這個PE的大小,默認是4MB,可以通過-s選項指定大小
lvcreate -L +20G -n lvname vgname
也可以使用小L指定PE數創建邏輯卷,此時路基卷大小N*單個PE大小,N表示PE個數
接下來就是文件系統的創建,和上面擴容後操作一樣,根據需求選在文件系統格式
2、LVM減容操作時,如果從有數據的邏輯捲上操作,一定要先備份數據(當我們在做磁盤管理時,無論做何種操作,尤其是有危害到數據的動作,一定要先備份),因爲減容前,我們要先卸載目錄,然後操作,完成後,因爲存儲空間元數據發生改變,此時在掛載時,會提示找不到文件系統的超級塊,會要求重新建立文件系統,相當於格式化操作。具體操作如下
備份數據
cp -R /test /back
卸載目錄
mount /test
如果無法卸載,查看當前目錄有哪些用戶使用,可以使用kill命令直接殺死進程號,也可以使用fuser命令的選項-k,直接殺死指定文件的所有進程
fuser /test
fuser命令可以通過安裝psmisc軟件包獲取
壓縮空間
resize2fs /dev/vgname/lvname1 10G
減容
lvreduce -L 10G /dev/vgname/lvname1
表示將lvname1空間減少至10G
lvreduce -L -10G /dev/vgname/lvname1
表示將lvname1空間減少10G
3、查看LV邏輯卷配置信息,可使用如下命令
lvscan:掃描邏輯卷
lvs:顯示基本信息
lvdisplay:顯示詳細信息
4、快照卷的創建,用到如下選項
-s:表示創建快照
-p r|w:指定快照讀或者寫權限
用法:lvcreate -L 10G -n snap-name -s -p r /dev/vgname/lvname1
針對邏輯卷lvname1創建一個10G大小的快照卷
快照卷的作用:如果遇到邏輯卷數據被刪除,可從快照卷中恢復