1.邏輯卷LVM簡介
(1)目的:
管理磁盤的一種方式,性質與基本磁盤無異
(2)特點:
隨意擴張大小,縮減大小,快照備份。
(3)流程對比:
基本分區(MBR|GPT) ----> Filesystem ----> mount
邏輯卷 ----> Filesystem ----> mount
(4)工作原理:
名詞
PV:物理卷(Physical volume)
VG:卷組(Volume Group)
LV:邏輯卷(Logical Volume)
PE:物理塊(Physical Extent)
LE:邏輯塊(Logical Extent)
圖示:
2.創建LVM
(1)添加物理磁盤並查看
[root@server0 ~]# ll /dev/sd* ----查看添加的物理磁盤
brw-rw----. 1 root disk 253, 32 Jun 6 17:38 /dev/sdc
brw-rw----. 1 root disk 253, 48 Jun 6 17:38 /dev/sdd
brw-rw----. 1 root disk 253, 64 Jun 6 17:38 /dev/sde
(2)創建物理卷PV
將物理磁盤,轉換成物理卷-PV
[root@server0 ~]# pvcreate /dev/sdc
查看PV信息
方法1:# pvscan
方法2 : # pvs
方法3 :# pvdisplay
(3)創建卷組VG
創建卷組
[root@server0 ~]# vgcreate vg1 /dev/sdc
查看卷組信息
第一種方法,查看卷組的摘要信息。卷組名,物理卷數量,邏輯卷數量,大小等。
[root@server0 ~]# vgs
VG #PV #LV #SN Attr VSize VFree
vg1 1 0 0 wz--n- 2.00g 2.00g
第二種方法,掃描卷組信息。
[root@server0 ~]# vgscan
Reading all physical volumes. This may take a while...
Found volume group "vg1" using metadata type lvm2
第三種方法。顯示卷組詳細信息。
[root@server0 ~]# vgdisplay
--- Volume group ---
VG Name vg1
System ID
Format lvm2
Metadata Areas 1
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 1
Act PV 1
VG Size 2.00 GiB //重點觀察
PE Size 4.00 MiB //重點觀察
Total PE 511 //重點觀察
Alloc PE / Size 0 / 0
Free PE / Size 511 / 2.00 GiB
VG UUID 7E4tlj-l0a2-ph52-OytH-eaq7-58K6-2S4n8V
(4)創建邏輯卷LV
[root@server0 ~]# lvcreate -L 200M -n lv2 vg1
-L 是指 指定創建邏輯卷的大小位200M
-n 是指定邏輯卷的名字爲lv2
vg1是卷組的名字
查看邏輯卷LV
[root@server0 ~]# lvscan
ACTIVE '/dev/vg1/lv1' [400.00 MiB] inherit
ACTIVE '/dev/vg1/lv2' [200.00 MiB] inherit
(5)創建文件系統(格式化)並掛載
創建文件系統
[root@server0 ~]# mkfs.ext4 /dev/vg1/lv2
創建掛載點
[root@server0 ~]# mkdir /mnt/lv2
方法一:手動掛載
掛載
[root@server0 ~]#mount /dev/vg1/lv2 /mnt/lv2
方法二:自動掛載
#vim /etc/fstab
在/etc/fstab文件最後一行添加下列一行命令
/dev/vg1/lv1或UUID /mnt/lv2 ext4 defaults 0 0
磁盤分區 或UUID 掛載點 文件系統 屬性 壓縮 檢測
#mount -a ----全部掛載( mount -a 的意思是將/etc/fstab的所有內容重新加載)
(6)查看掛載結果
# df -hT
3.卷組VG管理
(1)==擴大VG vgextend==
第一步,創建PV。而後使用第二部,增加到VG中。
[root@server0 ~]# pvcreate /dev/sdd1
第二步:擴展VG(把創建的物理卷添加到卷組vg1中)
[root@server0 ~]# vgextend vg1 /dev/sdd1
第三步: 查看卷組的size變化
[root@server0 ~]# vgdisplay
VG Size 2.00 GiB //重點觀察
PE Size 4.00 MiB //重點觀察
Total PE 511 //重點觀察
==減小VG vgextend==
==減小VG ,命令雖少。但千萬需要注意的是數據遷移。
1.查看當前的VG中PV的使用情況
[root@server0 ~]# pvs
PV VG Fmt Attr PSize PFree
/dev/sdc vg1 lvm2 a-- 2.00g 1.76g
/dev/sde vg1 lvm2 a-- 2.00g 2.00g
注意觀察,PV的空間。一個是使用過的,一個是滿的
2. pvmove,會將sdc中的數據,移動到sde中。
[root@server0 ~]# pvmove /dev/sdc
/dev/sdc: Moved: 16.7%
/dev/sdc: Moved: 100.0%
可以看到移動過程。
3.再次查看,空間已經發生變化。
[root@localhost ~]# pvs
PV VG Fmt Attr PSize PFree
/dev/sda2 centos lvm2 a-- <19.00g 0
/dev/sdc vg1 lvm2 a-- <2.00g <2.00g
/dev/sde vg1 lvm2 a-- <2.00g 1.80g
4.vgreduce VG縮減。
[root@server0 ~]# vgreduce vg1 /dev/sdd
Removed "/dev/sdd" from volume group "vg1"
5.再次觀察,VG中少了一個PV
[root@server0 ~]# vgs
VG #PV #LV #SN Attr VSize VFree
vg1 1 2 0 wz--n- 2.00g 1.80g
觀察,PV的數量變少了。
(2)邏輯卷lv擴容
1.查看VG空間。
[root@server0 ~]# vgs -------------也可以使用 #df -hT
VG #PV #LV #SN Attr VSize VFree
vg1 2 2 0 wz--n- 1.88g 1.00g
請觀察,VG是否有剩餘空間。
2.擴容LV。
[root@server0 ~]# lvextend -L +100M /dev/vg1/lv2
增加100M空間,給lv2
3.FS擴容---刷新一下,擴容更新 (把更改的大小寫入到fs中,如果不執行這一步,擴容操作後用#df -hT 查看容量大小不會更新)
[root@server0 ~]# resize2fs /dev/vg1/lv2
4.測試命令------->向邏輯卷中寫東西
[root@server0 ~]# dd < /dev/zero > /mnt/lv2/file.txt bs=2M count=300
邏輯卷lv減容
邏輯卷/dev/vg1/lv2,大小400M,並掛載到/mnt/lv2
需要先將lv卸載(umount),再進行減容操作。
1.首先查看磁盤使用情況-----#df -hT
注意分區大小400M
/dev/mapper/vg1-lv2 ext4 380M 2.3M 356M 1% /mnt/lv2
2.卸載 ---------------#umount /dev/vg1/lv2
3.調整分區大小
#e2fsck -f /dev/vg1/lv2 ------檢測磁盤是否出錯
#resize2fs -p /dev/vg1/lv2 200M -----把更新的大小的信息發送給FS文件系統進行刷新
4、設置空閒空間,減容
#lvreduce -L 200M /dev/vg1/lv2
5、掛載上/mnt/lv2,查看磁盤使用情況
#mount /dev/vg1/lv2 /mnt/lv2/
#df -h
看到分區大小已經200M
/dev/mapper/vg1-lv2 ext4 186M 1.6M 171M 1% /mnt
注意
不要對已經掛載的LV進行兼容,會損壞文件系統。
千萬注意,縮減後的LV大小,要大於存儲數據的大小。
(重新格式化才能用)
更新XFS文件系統
如果您的文件系統,不是EXT4。那請用下列命令來更新XFS文件系統
xfs的LVM不支持縮容,只可以擴容
xfs文件系統擴容請注意,不同的文件系統,擴容指令不同。
[root@server0 ~]# xfs_growfs /dev/vg1/lv1
4.命令歸類彙總圖
VG減容時,數據遷移命令# pvmove /dev/sdc(想遷移數據的磁盤)
5.邏輯卷LVM卸載流程
lvm卸載流程
1.umount #umount /mnt/lv2(掛載點)
2.刪除LV。 #lvremove /dev/vg1/lv2
3.將PV從所在的VG中刪除。
4.刪除VG。
6.LVM快照snapshot
(1)快照的目的
快速-------備份數據。
(2)創建快照 (EXT4)
第一步:創建快照 卷(EXT4)
[root@server0 ~]# lvcreate -L 128M -s -n lv2-snap /dev/vg1/lv2
或者這樣看呢,創建LV,名字lv2-snap,根據lv2進行快照,大小128M
lvcreate -n lv2-snap -s /dev/vg1/lv2 -L 128M -s(snapshot快照)
注意:製作快照受VG大小的影響(VG要有足夠的空間去創建這個快照)
第二步: 查詢快照卷大小。
[root@server0 ~]# lvs
LV VG Attr LSize Pool Origin Data% Move Log Cpy%Sync Convert
lv1 vg1 -wi-ao---- 768.00m
lv2 vg1 owi-aos--- 512.00m
lv2-snap vg1 swi-aos--- 128.00m lv2 5.92
第三步:掛載快照卷,恢復數據(驗證)
將快照卷掛載,拷貝出數據。可以用作回覆數據使用了。
[root@server0 ~]# mkdir /mnt/lv2-snap
[root@server0 ~]# mount -o ro /dev/vg1/lv2-snap /mnt/lv2-snap/
註釋: -o ---options 來描述設備的掛載方式爲只讀readonly
ro----readonly
注意:提示xfs文件系統快照注意事項
XFS:不識別uuid ,所以需要單獨加上一個-o nouuid 來忽略掉。就可以使用xfs的快照了。
[root@server0 ~]# mount -o nouuid,ro /dev/vg1/lv1-snap /mnt/lv1-snap/
掛載快照,儘量使用ro的方式,將不會破壞快照卷中的數據
7.交換分區管理 Swap
(1)作用:
"提升"內存的容量,防止OOM(Out Of Memory)
(2)swap大小
推薦-------------設置交換分區大小爲內存的2倍
生產-------------大於 4GB 而小於 16GB 內存的系統,最小需要 4GB 交換空間;
大於 16GB 而小於 64GB 內存的系統,最小需要 8GB 交換空間;
大於 64GB 而小於 256GB 內存的系統,最小需要 16GB 交換空間。
(3)查看當前的交換分區
一、查看當前的交換分區
[root@server0 ~]# free -m ----> m(以兆爲單位查看)
total used free shared buff/cache availableMem: 489 140 145 4 202 304
Swap: 0 0 0
二、增加交換分區----(可以是分區或者LVM或者File)
1. 準備分區
(準備將/dev/sde磁盤,劃分爲1G分區)
[root@server0 ~]# fdisk /dev/sde (按 t 轉換分區的 ID 爲82)
[root@server0 ~]# partprobe /dev/sde ----刷新做好的分區
[root@server0 ~]# ll /dev/sde* ----查看做好的分區
brw-rw----. 1 root disk 253, 16 12月 6 10:18 /dev/sde
brw-rw----. 1 root disk 253, 17 12月 6 10:18 /dev/sde1
2.格式化
[root@server0 ~]# mkswap /dev/sde1
3.掛載
[root@server0 ~]# blkid /dev/sde1 ------查看/dev/sde1的UUID
/dev/sde1: UUID="ea5b1c77-e540-463c-9644-0d75450f8b4c" TYPE="swap"
[root@server0 ~]# vim /etc/fstab -------進開機默認啓動文件,在最後一行添加
UUID="ea5b1c77-e540-463c-9644-0d75450f8b4c" swap swap defaults 0 0
掛載點 文件系統 屬性 不壓縮 不檢測
4.查看
[root@server0 ~]# swapon -s
Filename Type Size Used Priority(優先級)
/dev/vdb1 partition 524284 0 1
擴展:對交換分區調優
1. swap分區的優先級(Priority)從高到低依次使用,最高32767,最低優先級是0
這樣設置使得Linux並行的使用優先級相同的swap分區(Priority = 1的分區),這會大幅的提高對swap的讀寫。當這些分區滿了,就會使用較低優先級swap分區(Priority = 0的分區)
掛載時,使用相同的優先級
[root@server0 ~]# vim /etc/fstab
UUID="ea5b1c77-e540-463c-9644-0d75450f8b4c" swap swap defaults,pri=1 0 0
UUID="ea5b1c77-e540-465c-9644-0d75457f8b45" swap swap defaults,pri=1 0 0
pri是優先級的意思,設置相同即可。
[root@server0 ~]# swapon -a ------重新都掛載一遍,自動啓動所有SWAP裝置
Filename Type Size Used Priority
/dev/sdb1 partition 524284 0 1
/dev/sdc1 partition 524284 0 1