通過命令模式進行LVM分區,也就是通過命令進行LVM邏輯卷分區。
1、物理卷管理
(1)准備硬盤或者分區
前提還是首先要有一塊硬盤或者分區。
創建方式就是使用fdisk交互命令,不過需要注意的是,分區的系統ID不再是Linux默認的分區ID號83了,而要改成LVM的ID號8e。
通過fdisk交互命令,在擴展分區sdb3中創建了三個邏輯分區sdb4、sdb5和sdb6。
如下圖所示:

從圖中可以看出,這三個分區的默認系統ID號為83,我們需要修改程LVM的ID號8e。
執行如下命令即可,逐一修改。

最后結果如下:

最后保存退出即可,如下圖所所示:

需要執行reboot命令,重啟一下系統。
(2)建立物理卷
有了上邊的分區之后,我們就可以把分區建立成物理卷了。
創建物理卷命令:
[root@localhost ~]# pvcreate [設備文件名]
建立物理卷時,我們說即可以把整塊硬盤都建立成物理卷,也可以把某個分區建立成物理卷。
如果要把整塊硬盤都建立成物理卷,命令如下:
[root@localhost ~]# pvcreate /dev/sdb(硬盤的設備文件名)
在我們的使用中,是要把分區建立成為物理卷,執行以下命令:
[root@localhost ~]# pvcreate /dev/sdb5(分區名稱)
執行命令結果:

(3)查看物理卷
需要執行pvscan 命令查看物理卷。
[root@localhost ~]# pvscan
命令結果如下:

我們可以看到在我的系統中,/dev/sdb5-7這三個分區是物理卷。
最后一行的意思是:總共3個物理卷[大小] / 使用了0個卷[大小] / 空閑3個卷[大小]。
第二個查詢命令是pvdisplay命令,它可以查看到更詳細的物理卷狀態。
命令如下:
[root@localhost ~]# pvdisplay
命令結果如下:

(3)刪除物理卷
需要執行pvremove命令。
命令如下:
[root@localhost ~]# pvremove /dev/sdb7
2、創建卷組
(1)建立卷組
建立卷組格式如下:
[root@localhost ~]# vgcreate [選項] 卷組名 物理卷名
選項:
-s:指定PE的大小,單位可以是MB,GB,TB等。如果不寫默認PE大小是4MB。(vgcreate命令的選項就-s一個,還是修改PE大小的,所以上邊命令中選項就可以省略了。 )
我們有三個物理卷/dev/sdb5-7,我們先把/dev/sdb5和/dev/sdb6加入卷組,留着/dev/sdb7一會實驗調整卷組大小。
命令如下:
[root@localhost ~]# vgcreate scvg /dev/sdb5 /dev/sdb6
Volume group "scvg" successfully created
# 提示:名稱為scvg的VG創建成功
上邊命令的作用就是把/dev/sdb5和/dev/sdb6物理卷加入到scvg卷組中。
(2)查看卷組
查看卷組的命令同樣是兩個,vgscan命令主要是查看系統中是否有卷組,而vgdisplay命令則是查看卷組的詳細狀態的。
執行vgscan命令,結果如下:

執行vgdisplay命令,結果如下:

(3)增加卷組容量
卷組是可以進行擴容的,使用的命令是vgextend。
執行命令:把/derv/sdb7物理卷也加入scvg卷組。
[root@localhost ~]# vgextend scvg /dev/sdb7
Volume group "scvg" successfully extended
執行vgdisplay命令查看卷組,結果如下:

說明:如果有更多的物理卷,可以隨時加入到卷組中。
(4)減小卷組容量
特別注意:
理論上卷組容量是可以縮減的,但是不允許進行縮減操作。例如:如果你6GB容量寫滿數據,你縮減2GB容量,數據肯定會丟失。
# 在卷組中刪除/dev/sdb7物理卷
[root@localhost ~]# vgreduce scvg /dev/sdb7
Removed "/dev/sdb7" from volume group "scvg"
# 刪除所有的未使用物理卷
[root@localhost ~]# vgreduce -a
(5)刪除卷組
使用vgremove 命令,可以刪除卷組。
[root@localhost ~]# vgremove scvg
Volume group "scvg" successfully removed
卷組刪除之后,才能刪除物理卷。
還要注意的是,
scvg卷組還沒有添加任何的邏輯卷,才可以刪除,那如果擁有了邏輯卷,記得先刪除邏輯卷再刪除卷組。還記得我剛說的嗎?刪除就是安裝的反過程,每一步都不能跳過。
3、創建邏輯卷管理
(1)建立邏輯卷
建立邏輯卷命令:
[root@localhost ~]# lvcreate [選項] [-n 邏輯卷名] 卷組名
選項:
-L容量:指定邏輯卷大小,單位MB,GB,TB等。(只要卷組中有空間,分配多大的空間都可以,不一定按照物理卷的大小進行分配。)-l個數:按照PE個數指定邏輯卷大小,這個參數需要換算容量,太麻煩。-n邏輯卷名:指定邏輯卷名。
那我們就建立一個3GB的sclv邏輯卷,建立命令如下:
#在scvg卷組中建立3GB的sclv邏輯卷
[root@localhost ~]# lvcreate -L 3G -n sclv scvg
Logical volume "sclv" created
建立完邏輯卷之后,還要對邏輯卷進行格式化和掛載,之后邏輯卷才能正常使用。格式化和掛載命令的操作,和操作普通分區時是一樣的,不過需要注意的是,邏輯卷的設備文件名是/dev/卷組名/邏輯卷名,如我們的sclv的設備文件名就是/dev/scvg/sclv。
具體命令如下:
# 格式化
[root@localhost ~]# mkfs -t ext4 /dev/scvg/sclv
# 建立掛載點,並掛載
[root@localhost ~]# mkdir /disklvm
[root@localhost ~]# mount /dev/scvg/sclv /disklvm/
再用mount命令查看分區掛載情況(用df -h命令也可以查看)。
執行命令如下:

可以看到sclv邏輯卷,已正常掛載。
當然如果需要開機自動掛載,也要修改/etc/fstab文件。
(2)查看邏輯卷
同樣的查看命令是兩個,第一個lvscan命令只能看到系統中是否擁有邏輯卷。
命令如下:
# 能夠看到激活的邏輯卷,大小事3GB
[root@localhost ~] # lvscan
ACTIVE '/dev/scvg/sclv' [3 GiB]inherit
第二個命令是lvdisplay,可以看到邏輯卷的詳細信息。
命令如下:

(3)調整邏輯卷大小
調整邏輯卷大小用lvresize命令,執行命令如下。
[root@localhost ~]# lvresize [選項] 邏輯卷設備文件名
選項:
-L容量:安裝容量調整大小,單位KB,GB,TB等。使用+代表增加空間,-號代表減少空間。如果直接寫容量,代表設定邏輯卷大小為指定大小。-l個數:按照PE個數調整邏輯卷大小。(一般不按這個分配空間,不好算。)
提示:邏輯卷增加容量,邏輯卷中的文件是不會丟失的。縮減容量不符合使用習慣,不要使用。
剛剛的sclv邏輯卷的大小是3GB,我們的scvg卷組中還有3GB的空閑空間,那么增加sclv邏輯卷的大小到4GB。
命令如下:
# 增加sclv邏輯卷的大小到4GB
[root@localhost ~]# lvresize -L 4G /dev/scvg/sclv
Size of logical volume scvg/sclv changed from 3.00 GiB (768 extents) to 4.00 GiB(1024 extents).
Logical volume userlv successfully resized
# 當然命令也可以這樣寫
[root@localhost ~]# lvresize -L +1G /dev/scvg/sclv
執行lvdisplay命令查看卷組,結果如下:

邏輯卷的大小已經改變了,但是好像有些問題,我通過df -h命令查看磁盤信息,發現sclv邏輯卷的大小還是3GB,如下圖:

是因為sclv邏輯卷的大小調整了,但是sclv邏輯卷的掛載,依舊掛的是3GB大小。
如果需要讓分區使用這個新擴容的邏輯卷,我們還要使用resize2fs命令來調整分區的大小。不過這里就體現了LVM的優勢,我們不需要卸載分區,直接就能調整分區的大小。(總結一下說,lvresize命令是邏輯卷的擴容,resize2fs命令是邏輯卷文件系統的擴展。)
resize2fs命令格式如下:
[root@localhost ~]# resize2fs [選項] [設備文件名] [調整的大小]
選項:
-f:強制調整。- 設備文件名:指定調整哪個分區的大小。
- 調整的大小:指定把分區調整到多大,要加
M,G等單位。如果不加大小,會使用整個分區。
執行resize2fs命令,之后再用df -h命令查看磁盤信息。
執行命令結果如下:

可以看到sclv邏輯卷的大小變成了4GB。(不需要卸載分區,里邊的數據也不會丟失,很方便。)
(4)刪除邏輯卷
一般不用此需求,創建好的邏輯卷就踏實的用。
lvremove命令是刪除邏輯卷,格式如下:
[root@localhost ~]# lvremove 邏輯卷設備文件名
我們刪除sclv這個邏輯卷,記得刪除時要先卸載。
命令如下:
[root@localhost ~]# umount /dev/scvg/sclv
[root@localhost ~]# lvremove /dev/scvg/sclv
