Centos7 創建LVM邏輯卷,在線擴容,縮容


查看命令:lvs   lsblk

lvm 邏輯卷管理
磁盤空間的動態划分和管理

lvm能夠實現分區的動態的拉伸和回縮

lvm的創建過程其實是一個先整合,再划分的過程。

LVM創建


一、LVM的創建過程
1)添加硬盤或者創建分區,通知內核
2)創建物理卷 PV (pvcreate)
3)創建卷組 VG (vgcreate)
4)創建邏輯卷 LV (lvcreate)
5)創建文件系統 (mkfs.xfs)
6)掛載使用 (mount /etc/fstab /etc/rc.d/rc.local)

1)創建分區
# parted /dev/sdd mklabel gpt
# parted /dev/sdd mkpart primary 1 1G
# parted /dev/sdd mkpart primary 1G 2G
# parted /dev/sdd mkpart primary 2G 3G
# parted /dev/sdd mkpart primary 3G 4G
# ll /dev/sdd
sdd sdd1 sdd2 sdd3 sdd4

2)創建物理卷
# pvcreate /dev/sdd{1..4}
Physical volume "/dev/sdd1" successfully created.
Physical volume "/dev/sdd2" successfully created.
Physical volume "/dev/sdd3" successfully created.
Physical volume "/dev/sdd4" successfully created.

2.1)查看物理卷
# pvs
PV VG Fmt Attr PSize PFree
/dev/sda2 cl lvm2 a-- 19.00g 0
/dev/sdd1 lvm2 --- 953.00m 953.00m
/dev/sdd2 lvm2 --- 953.00m 953.00m
/dev/sdd3 lvm2 --- 954.00m 954.00m
/dev/sdd4 lvm2 --- 954.00m 954.00m

# pvscan
PV /dev/sda2 VG cl lvm2 [19.00 GiB / 0 free]
PV /dev/sdd3 lvm2 [954.00 MiB]
PV /dev/sdd2 lvm2 [953.00 MiB]
PV /dev/sdd4 lvm2 [954.00 MiB]
PV /dev/sdd1 lvm2 [953.00 MiB]
Total: 5 [22.72 GiB] / in use: 1 [19.00 GiB] / in no VG: 4 [3.72 GiB]

# pvdisplay
"/dev/sdd3" is a new physical volume of "954.00 MiB"
--- NEW Physical volume ---
PV Name /dev/sdd3
VG Name
PV Size 954.00 MiB
Allocatable NO
PE Size 0
Total PE 0
Free PE 0
Allocated PE 0
PV UUID kRYrRB-0BZm-Z2h1-tQxu-kDUC-FvQF-4YSZ5L
...

3)創建卷組
語法:vgcreate [-s 大小] 卷組的名字 物理卷的設備路徑
# vgcreate [-s 8M] vg0 /dev/sdd{1..4}
Volume group "vg0" successfully created

-s 指定PE大小
PE(物理擴展單元) 大小(默認是4M)

3.1)
# vgs
VG #PV #LV #SN Attr VSize VFree
cl 1 2 0 wz--n- 19.00g 0
vg0 4 0 0 wz--n- 3.72g 3.72g

# vgscan
Reading volume groups from cache.
Found volume group "vg0" using metadata type lvm2
Found volume group "cl" using metadata type lvm2

# vgdisplay
--- Volume group ---
VG Name vg0
System ID
Format lvm2
Metadata Areas 4
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 4
Act PV 4
VG Size 3.72 GiB
PE Size 8.00 MiB
Total PE 476
Alloc PE / Size 0 / 0
Free PE / Size 476 / 3.72 GiB
VG UUID PWOx9H-9eP0-vkdz-v31T-cHxO-C80x-4BAMfE

4)創建邏輯卷
# lvcreate -n lv0 -L 1500M vg0
Rounding up size to full physical extent 1.47 GiB
Logical volume "lv0" created.

-n 指定lv的名字
-L 指定lv的大小
vg0 取vg0卷組的空間做lv

# lvcreate -n lv0 -l 188 vg0
-l 指定使用了多少個PE
LE 邏輯擴展單元

4.1)
#lvs
#lvscan
#lvdisplay

5)創建文件系統
# mkfs.xfs /dev/vg0/lv0

6)掛載
# mkdir /lv0
# mount /dev/vg0/lv0 /lv0/
# vim /etc/fstab
/dev/vg0/lv0 /lv0 xfs defaults 0 0

7)測試
# cd /lv0
# cat > lvm-test.txt << EOF
> ---------------
> Hello JIM
> hi jim
> hello world
> ---------------
> EOF

 

LVM動態擴容

xfs和ext4文件系統

擴容的區別
擴容文件系統的命令不一樣
xfs 使用的命令是xfs_growfs
ext4 使用的命令是resize2fs

XFS在線擴容

第1種情況:卷組內有空閑空間,直接從卷組取空間
1)對邏輯卷擴容
# lvextend -L +500M /dev/vg0/lv0 +表示在原來的空間
大小上加上多少空間大小
Rounding size to boundary between physical extents: 504.00 MiB.
Size of logical volume vg0/lv0 changed from 1.47 GiB (188 extents) to 1.96 GiB (251 extents).
Logical volume vg0/lv0 successfully resized.

2)對文件系統擴容
# xfs_growfs /dev/vg0/lv0

第2種情況:卷組內沒有空間
1)創建新分區
# parted /dev/sdd mkpart primary 4G 5G
# ll /dev/sdd
sdd sdd1 sdd2 sdd3 sdd4 sdd5

2)創建物理卷
# pvcreate /dev/sdd5
Physical volume "/dev/sdd5" successfully created.

3)加入卷組 vg擴容
# vgextend vg0 /dev/sdd5
Volume group "vg0" successfully extended

4)對邏輯卷擴容
# lvextend -L 4500M /dev/vg0/lv0
Rounding size to boundary between physical extents: 4.40 GiB.
Size of logical volume vg0/lv0 changed from 1.96 GiB (251 extents) to 4.40 GiB (563 extents).
Logical volume vg0/lv0 successfully resized.

5)對文件系統擴容
# xfs_growfs /dev/vg0/lv0 

 

ext4擴容

  創建lv0邏輯卷
# lvcreate -n lv0 -L 2G vg0

制作文件系統ext4
# mkfs.ext4 /dev/vg0/lv0

掛載
# mount /dev/vg0/lv0 /lv0

在邏輯卷中添加數據
# cd /lv0
# echo "ext4" >test.txt
# cat test.txt
ext4

擴容lv0
# lvextend -L +1G /dev/vg0/lv0
Size of logical volume vg0/lv0 changed from 2.00 GiB (256 extents) to 3.00 GiB (384 extents).
Logical volume vg0/lv0 successfully resized.

文件系統擴容
# resize2fs /dev/vg0/lv0

 

縮容

XFS不支持縮容

ext4支持縮容

 

 

ext4縮容


注意:
1.風險大有可能造成數據的損壞
2.確保縮減后的空間大小依然能存儲原來的所有數據
3.不要在線縮容
4.在縮減之前強制檢查文件系統

現在要在創建一個邏輯卷lv1,lv1的大小要求為1G,卷組內沒有空間,但邏輯卷lv0的空間過大,縮減lv0,給lv1

給lv0縮減
1)先卸載
# umount /lv0

2)強制檢查文件系統
# e2fsck -f /dev/vg0/lv0

3)縮減文件系統
# resize2fs /dev/vg0/lv0 1800M

4)縮減邏輯卷
# lvreduce -L 1800M /dev/vg0/lv0

5)測試縮減邏輯卷后邏輯卷能否正常使用
# mount /dev/vg0/lv0 /lv0
# cd /lv0
# cat
lost+found/ test.txt
# cat test.txt
ext4


# df -h
文件系統 容量 已用 可用 已用% 掛載點
/dev/mapper/cl-root 17G 4.3G 13G 26% /
devtmpfs 473M 0 473M 0% /dev
tmpfs 489M 84K 489M 1% /dev/shm
tmpfs 489M 7.1M 482M 2% /run
tmpfs 489M 0 489M 0% /sys/fs/cgroup
/dev/sda1 1014M 155M 860M 16% /boot
tmpfs 98M 16K 98M 1% /run/user/42
tmpfs 98M 0 98M 0% /run/user/0
/dev/mapper/vg0-lv0 1.7G 6.1M 1.6G 1% /lv0


創建快照

快照的工作原理:
保存數據某一刻的狀態。快照剛建立的時候,大小是空的,快照是訪問源數據的另一條路徑。快照是在數據改變之前將數據原封不動的保存在快照空間里面。注意變化數據的源數據不能超過快照空間的大小,否則,快照將崩潰。

寫時復制:快照做完以后,源文件要修改前,會復制一份到快照,以便恢復到最原始的時候

實驗:
1.掛載lv0邏輯卷,在邏輯卷內寫入數據
# mount /dev/vg0/lv0 /lv0
# cd /lv0
# ls
# cp /etc/passwd /etc/shadow .
# echo "hello" > lvmsnap-test.txt
# cat lvmsnap-test.txt
hello
# ll
總用量 12
-rw-r--r--. 1 root root 6 7月 7 22:34 lvmsnap-test.txt
-rw-r--r--. 1 root root 2229 7月 7 22:34 passwd
----------. 1 root root 1248 7月 7 22:34 shadow

2.給/dev/vg0/lv0邏輯卷做快照
# lvcreate -s /dev/vg0/lv0 -L 800M -n lv0.snap
Using default stripesize 64.00 KiB.
Logical volume "lv0.snap" created.

3.改變lv0邏輯卷的數據
# cp /etc/group .
# rm passwd
rm:是否刪除普通文件 "passwd"?y
# ls
group lvmsnap-test.txt shadow
# echo "world" >> lvmsnap-test.txt
# cat lvmsnap-test.txt
hello
world

4.恢復數據 會刪除快照卷 恢復之前要卸載
# umount /dev/vg0/lv0

# lvconvert --merge /dev/vg0/lv0.snap
Merging of volume vg0/lv0.snap started.
lv0: Merged: 100.00%

5.掛載lv0邏輯卷查看數據是否恢復到拍快照的那一刻的狀態
# mount /dev/vg0/lv0 /lv0
# cd /lv0
# ls
lvmsnap-test.txt passwd shadow
# cat lvmsnap-test.txt
hello

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM