目錄
概要
創建
擴容
洗掉
概要
LVM是 Logical Volume Manager(邏輯卷管理)的簡寫,它是Linux環境下對磁盤磁區進行管理的一種機制,它由Heinz Mauelshagen在Linux 2.4內核上實作,目前最新版本為:穩定版1.0.5,開發版 1.1.0-rc2,以及LVM2開發版,Linux用戶安裝Linux作業系統時遇到的一個常見的難以決定的問題就是如何正確地評估各磁區大小,以分配合適的硬碟空間,普通的磁盤磁區管理方式在邏輯磁區劃分好之后就無法改變其大小,當一個邏輯磁區存放不下某個檔案時,這個檔案因為受上層檔案系統的限制,也不能跨越多個磁區來存放,所以也不能同時放到別的磁盤上,而遇到出現某個磁區空間耗盡時,解決的方法通常是使用符號鏈接,或者使用調整磁區大小的工具,但這只是暫時解決辦法,沒有從根本上解決問題,隨著Linux的邏輯卷管理功能的出現,這些問題都迎刃而解,用戶在無需停機的情況下可以方便地調整各個磁區大小,
-
物理卷(Physical Volume,PV)
指磁盤磁區或從邏輯上與磁盤磁區具有同樣功能的設備(如RAID),是LVM的基本存盤邏輯塊,但和基本的物理存盤介質(如磁區、磁盤等)比較,卻包含有與LVM相關的管理引數,
-
卷組(Volume Group,VG)
類似于非LVM系統中的物理磁盤,其由一個或多個物理卷PV組成,可以在卷組上創建一個或多個LV(邏輯卷),
-
邏輯卷(Logical Volume,LV)
類似于非LVM系統中的磁盤磁區,邏輯卷建立在卷組VG之上,在邏輯卷LV之上可以建立檔案系統(比如/home或者/usr等),

創建(實操)
先添加兩塊5G的新硬碟(如果為了練習,可以先添加三塊5G的新硬碟,后面擴容方便點)


系統有兩塊對應的磁盤

按下面操作,對兩塊磁盤磁區(/dev/sdb和/dev/sdc)
[root@localhost /]# fdisk /dev/sdb
Welcome to fdisk (util-linux 2.23.2).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.
Device does not contain a recognized partition table
Building a new DOS disklabel with disk identifier 0xaefffe92.
Command (m for help): n
Partition type:
p primary (0 primary, 0 extended, 4 free)
e extended
Select (default p): p
Partition number (1-4, default 1):
First sector (2048-10485759, default 2048):
Using default value 2048
Last sector, +sectors or +size{K,M,G} (2048-10485759, default 10485759):
Using default value 10485759
Partition 1 of type Linux and of size 5 GiB is set
Command (m for help): t
Selected partition 1
Hex code (type L to list all codes): 8e
Changed type of partition 'Linux' to 'Linux LVM'
Command (m for help): w
The partition table has been altered!
磁區后 fdisk -l

創建物理卷(PV)
[root@localhost /]# pvcreate /dev/sdb1
Physical volume "/dev/sdb1" successfully created.
[root@localhost /]# pvcreate /dev/sdc1
Physical volume "/dev/sdc1" successfully created.
[root@localhost /]# pvdisplay
--- Physical volume ---
PV Name /dev/sda2
VG Name centos
PV Size <49.00 GiB / not usable 3.00 MiB
Allocatable yes
PE Size 4.00 MiB
Total PE 12543
Free PE 1
Allocated PE 12542
PV UUID kEEGeU-FT5a-Bz4W-3HQ4-V2c1-zqyP-nNyB3W
"/dev/sdb1" is a new physical volume of "<5.00 GiB"
--- NEW Physical volume ---
PV Name /dev/sdb1
VG Name
PV Size <5.00 GiB
Allocatable NO
PE Size 0
Total PE 0
Free PE 0
Allocated PE 0
PV UUID g4plDW-thjy-Jtw7-LxBX-zLIJ-LqAI-2LZg7M
"/dev/sdc1" is a new physical volume of "<5.00 GiB"
--- NEW Physical volume ---
PV Name /dev/sdc1
VG Name
PV Size <5.00 GiB
Allocatable NO
PE Size 0
Total PE 0
Free PE 0
Allocated PE 0
PV UUID 3prUPR-H5oT-OxAF-i2Hj-L9dS-Umks-lRg4mc
[root@localhost /]#
創建卷組(VG)
創建了一個VG(myvg1)
[root@localhost /]# vgcreate myvg1 /dev/sdb1 /dev/sdc1
Volume group "myvg1" successfully created
[root@localhost /]# vgdisplay
--- Volume group ---
VG Name myvg1
System ID
Format lvm2
Metadata Areas 2
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 2
Act PV 2
VG Size 9.99 GiB
PE Size 4.00 MiB
Total PE 2558
Alloc PE / Size 0 / 0
Free PE / Size 2558 / 9.99 GiB
VG UUID NucsdX-gjUo-XA7J-18ha-pK1E-YhlU-lHamqa
--- Volume group ---
VG Name centos
System ID
Format lvm2
Metadata Areas 1
Metadata Sequence No 3
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 2
Open LV 2
Max PV 0
Cur PV 1
Act PV 1
VG Size <49.00 GiB
PE Size 4.00 MiB
Total PE 12543
Alloc PE / Size 12542 / 48.99 GiB
Free PE / Size 1 / 4.00 MiB
VG UUID g4hpwo-ojVo-s7EC-GWfg-Mt0y-KVZv-QbaBPw
創建邏輯卷(LV)
創建了兩個各2G的LV(mylv1和mylv2)
[root@localhost /]# lvcreate -L 2G -n mylv1 myvg1
Logical volume "mylv1" created.
[root@localhost /]# lvcreate -L 2G -n mylv2 myvg1
Logical volume "mylv2" created.
[root@localhost /]# lvdisplay
--- Logical volume ---
LV Path /dev/myvg1/mylv1
LV Name mylv1
VG Name myvg1
LV UUID QEcn9V-3FKG-gJad-ldQU-WtdN-xr59-Ognnwt
LV Write Access read/write
LV Creation host, time localhost.localdomain, 2020-11-24 07:38:45 +0800
LV Status available
# open 0
LV Size 2.00 GiB
Current LE 512
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 8192
Block device 253:2
--- Logical volume ---
LV Path /dev/myvg1/mylv2
LV Name mylv2
VG Name myvg1
LV UUID OcR4go-Dacs-7C2d-2O5n-Me4u-HX51-F9lz1J
LV Write Access read/write
LV Creation host, time localhost.localdomain, 2020-11-24 07:38:52 +0800
LV Status available
# open 0
LV Size 2.00 GiB
Current LE 512
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 8192
Block device 253:3
--- Logical volume ---
LV Path /dev/centos/swap
LV Name swap
VG Name centos
LV UUID 3ry9vu-dSCg-CU5z-lm39-28q5-BOYK-B3mtEG
LV Write Access read/write
LV Creation host, time localhost, 2020-09-23 23:06:03 +0800
LV Status available
# open 2
LV Size <3.88 GiB
Current LE 992
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 8192
Block device 253:1
--- Logical volume ---
LV Path /dev/centos/root
LV Name root
VG Name centos
LV UUID zMe7qs-QyJF-odxN-ZJNk-wHw0-YKxv-3NrBRR
LV Write Access read/write
LV Creation host, time localhost, 2020-09-23 23:06:03 +0800
LV Status available
# open 1
LV Size <45.12 GiB
Current LE 11550
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 8192
Block device 253:0
[root@localhost /]#
格式化邏輯磁區和掛載
其中vim /etc/fstab 中最下面添加兩行(設定開機自動掛載)
/dev/myvg1/mylv1 /mytest1 xfs defaults 0 0
/dev/myvg1/mylv2 /mytest2 xfs defaults 0 0
[root@localhost /]# mkfs.xfs /dev/myvg1/mylv1
meta-data=/dev/myvg1/mylv1 isize=512 agcount=4, agsize=131072 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=0, sparse=0
data = bsize=4096 blocks=524288, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=1
log =internal log bsize=4096 blocks=2560, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
[root@localhost /]# mkfs.xfs /dev/myvg1/mylv2
meta-data=/dev/myvg1/mylv2 isize=512 agcount=4, agsize=131072 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=0, sparse=0
data = bsize=4096 blocks=524288, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=1
log =internal log bsize=4096 blocks=2560, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
[root@localhost /]# cd /
[root@localhost /]# mkdir mytest1
[root@localhost /]# mkdir mytest2
[root@localhost /]# mount /dev/myvg1/mylv1 /mytest1
[root@localhost /]# mount /dev/myvg1/mylv2 /mytest2
[root@localhost /]# vim /etc/fstab
[root@localhost /]# df -TH
Filesystem Type Size Used Avail Use% Mounted on
/dev/mapper/centos-root xfs 49G 11G 38G 23% /
devtmpfs devtmpfs 2.0G 0 2.0G 0% /dev
tmpfs tmpfs 2.0G 0 2.0G 0% /dev/shm
tmpfs tmpfs 2.0G 14M 2.0G 1% /run
tmpfs tmpfs 2.0G 0 2.0G 0% /sys/fs/cgroup
/dev/sda1 xfs 1.1G 188M 877M 18% /boot
tmpfs tmpfs 396M 33k 396M 1% /run/user/0
/dev/mapper/myvg1-mylv1 xfs 2.2G 34M 2.2G 2% /mytest1
/dev/mapper/myvg1-mylv2 xfs 2.2G 34M 2.2G 2% /mytest2
[root@localhost /]#
創建完成!
擴容(實操)
創建的時候創建了兩個2G的邏輯卷,這里把mylv1這個邏輯卷增加到6G,也就是增加4G
[root@localhost /]# lvs
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
root centos -wi-ao---- <45.12g
swap centos -wi-ao---- <3.88g
mylv1 myvg1 -wi-ao---- 2.00g
mylv2 myvg1 -wi-ao---- 2.00g
[root@localhost /]# lvextend -L +4G /dev/myvg1/mylv1
Size of logical volume myvg1/mylv1 changed from 2.00 GiB (512 extents) to 6.00 GiB (1536 extents).
Logical volume myvg1/mylv1 successfully resized.
[root@localhost /]# lvs
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
root centos -wi-ao---- <45.12g
swap centos -wi-ao---- <3.88g
mylv1 myvg1 -wi-ao---- 6.00g
mylv2 myvg1 -wi-ao---- 2.00g
[root@localhost /]# df -TH
Filesystem Type Size Used Avail Use% Mounted on
/dev/mapper/centos-root xfs 49G 11G 38G 23% /
devtmpfs devtmpfs 2.0G 0 2.0G 0% /dev
tmpfs tmpfs 2.0G 0 2.0G 0% /dev/shm
tmpfs tmpfs 2.0G 14M 2.0G 1% /run
tmpfs tmpfs 2.0G 0 2.0G 0% /sys/fs/cgroup
/dev/sda1 xfs 1.1G 188M 877M 18% /boot
tmpfs tmpfs 396M 33k 396M 1% /run/user/0
/dev/mapper/myvg1-mylv1 xfs 2.2G 34M 2.2G 2% /mytest1
/dev/mapper/myvg1-mylv2 xfs 2.2G 34M 2.2G 2% /mytest2
[root@localhost /]# xfs_growfs /dev/myvg1/mylv1
meta-data=/dev/mapper/myvg1-mylv1 isize=512 agcount=4, agsize=131072 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=0 spinodes=0
data = bsize=4096 blocks=524288, 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 524288 to 1572864
[root@localhost /]# df -TH
Filesystem Type Size Used Avail Use% Mounted on
/dev/mapper/centos-root xfs 49G 11G 38G 23% /
devtmpfs devtmpfs 2.0G 0 2.0G 0% /dev
tmpfs tmpfs 2.0G 0 2.0G 0% /dev/shm
tmpfs tmpfs 2.0G 14M 2.0G 1% /run
tmpfs tmpfs 2.0G 0 2.0G 0% /sys/fs/cgroup
/dev/sda1 xfs 1.1G 188M 877M 18% /boot
tmpfs tmpfs 396M 33k 396M 1% /run/user/0
/dev/mapper/myvg1-mylv1 xfs 6.5G 35M 6.4G 1% /mytest1
/dev/mapper/myvg1-mylv2 xfs 2.2G 34M 2.2G 2% /mytest2
[root@localhost /]#
LV擴展是基于VG足夠的情況
剛才我們一共創建了10G的VG,分了各2G的LV,再加擴展的4G,現在還剩下2G的VG
如果還需要把mylv2擴展3G,那么VG目前是不夠的(會報錯),需要進行VG擴容
[root@localhost ~]# vgs
VG #PV #LV #SN Attr VSize VFree
centos 1 2 0 wz--n- <49.00g 4.00m
myvg1 2 2 0 wz--n- 9.99g 1.99g
[root@localhost ~]# lvextend -L +3G /dev/myvg1/mylv2
Insufficient free space: 768 extents needed, but only 510 available
先關機給虛機添加一塊新磁盤(如果最前面添加了三塊,就不需要操作嘞)


先磁區
[root@localhost ~]# fdisk /dev/sdd
Welcome to fdisk (util-linux 2.23.2).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.
Device does not contain a recognized partition table
Building a new DOS disklabel with disk identifier 0xf30bfa41.
Command (m for help):
Command (m for help): n
Partition type:
p primary (0 primary, 0 extended, 4 free)
e extended
Select (default p):
Using default response p
Partition number (1-4, default 1):
First sector (2048-10485759, default 2048):
Using default value 2048
Last sector, +sectors or +size{K,M,G} (2048-10485759, default 10485759):
Using default value 10485759
Partition 1 of type Linux and of size 5 GiB is set
Command (m for help): t
Selected partition 1
Hex code (type L to list all codes): 8e
Changed type of partition 'Linux' to 'Linux LVM'
Command (m for help): w
The partition table has been altered!
Calling ioctl() to re-read partition table.
Syncing disks.
[root@localhost ~]#
擴展VG
[root@localhost ~]# pvcreate /dev/sdd1
Physical volume "/dev/sdd1" successfully created.
[root@localhost ~]# vgs
VG #PV #LV #SN Attr VSize VFree
centos 1 2 0 wz--n- <49.00g 4.00m
myvg1 2 2 0 wz--n- 9.99g 1.99g
[root@localhost ~]# pvs
PV VG Fmt Attr PSize PFree
/dev/sda2 centos lvm2 a-- <49.00g 4.00m
/dev/sdb1 myvg1 lvm2 a-- <5.00g 0
/dev/sdc1 myvg1 lvm2 a-- <5.00g 1.99g
/dev/sdd1 lvm2 --- <5.00g <5.00g
[root@localhost ~]# vgextend myvg1 /dev/sdd1
Volume group "myvg1" successfully extended
[root@localhost ~]# vgs
VG #PV #LV #SN Attr VSize VFree
centos 1 2 0 wz--n- <49.00g 4.00m
myvg1 3 2 0 wz--n- <14.99g <6.99g
[root@localhost ~]# pvs
PV VG Fmt Attr PSize PFree
/dev/sda2 centos lvm2 a-- <49.00g 4.00m
/dev/sdb1 myvg1 lvm2 a-- <5.00g 0
/dev/sdc1 myvg1 lvm2 a-- <5.00g 1.99g
/dev/sdd1 myvg1 lvm2 a-- <5.00g <5.00g
[root@localhost ~]#
然后按之前的方式擴展LV
[root@localhost ~]# lvextend -L +3G /dev/myvg1/mylv2
Size of logical volume myvg1/mylv2 changed from 2.00 GiB (512 extents) to 5.00 GiB (1280 extents).
Logical volume myvg1/mylv2 successfully resized.
[root@localhost ~]# lvs
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
root centos -wi-ao---- <45.12g
swap centos -wi-ao---- <3.88g
mylv1 myvg1 -wi-ao---- 6.00g
mylv2 myvg1 -wi-ao---- 5.00g
[root@localhost ~]# df -TH
Filesystem Type Size Used Avail Use% Mounted on
/dev/mapper/centos-root xfs 49G 11G 38G 23% /
devtmpfs devtmpfs 2.0G 0 2.0G 0% /dev
tmpfs tmpfs 2.0G 0 2.0G 0% /dev/shm
tmpfs tmpfs 2.0G 14M 2.0G 1% /run
tmpfs tmpfs 2.0G 0 2.0G 0% /sys/fs/cgroup
/dev/sda1 xfs 1.1G 188M 877M 18% /boot
/dev/mapper/myvg1-mylv2 xfs 2.2G 34M 2.2G 2% /mytest2
/dev/mapper/myvg1-mylv1 xfs 6.5G 35M 6.4G 1% /mytest1
tmpfs tmpfs 396M 4.1k 396M 1% /run/user/42
tmpfs tmpfs 396M 25k 396M 1% /run/user/0
[root@localhost ~]# xfs_growfs /dev/m
mapper/ mcelog mem midi mqueue/ myvg1/
[root@localhost ~]# xfs_growfs /dev/myvg1/mylv2
meta-data=/dev/mapper/myvg1-mylv2 isize=512 agcount=4, agsize=131072 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=0 spinodes=0
data = bsize=4096 blocks=524288, 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 524288 to 1310720
[root@localhost ~]# df -TH
Filesystem Type Size Used Avail Use% Mounted on
/dev/mapper/centos-root xfs 49G 11G 38G 23% /
devtmpfs devtmpfs 2.0G 0 2.0G 0% /dev
tmpfs tmpfs 2.0G 0 2.0G 0% /dev/shm
tmpfs tmpfs 2.0G 14M 2.0G 1% /run
tmpfs tmpfs 2.0G 0 2.0G 0% /sys/fs/cgroup
/dev/sda1 xfs 1.1G 188M 877M 18% /boot
/dev/mapper/myvg1-mylv2 xfs 5.4G 35M 5.4G 1% /mytest2
/dev/mapper/myvg1-mylv1 xfs 6.5G 35M 6.4G 1% /mytest1
tmpfs tmpfs 396M 4.1k 396M 1% /run/user/42
tmpfs tmpfs 396M 25k 396M 1% /run/user/0
[root@localhost ~]#
擴容完成!
洗掉(實操)
洗掉LV之前需要先卸載掛載點和在fstab中去掉加的兩行掛載資訊
[root@localhost ~]# umount /mytest1
[root@localhost ~]# umount /mytest2
[root@localhost ~]# vim /etc/fstab
洗掉LV、VG、PV
[root@localhost ~]# lvs
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
root centos -wi-ao---- <45.12g
swap centos -wi-ao---- <3.88g
mylv1 myvg1 -wi-a----- 6.00g
mylv2 myvg1 -wi-a----- 5.00g
[root@localhost ~]# lvremove /dev/myvg1/mylv1
Do you really want to remove active logical volume myvg1/mylv1? [y/n]: y
Logical volume "mylv1" successfully removed
[root@localhost ~]# lvremove /dev/myvg1/mylv2
Do you really want to remove active logical volume myvg1/mylv2? [y/n]: y
Logical volume "mylv2" successfully removed
[root@localhost ~]# lvs
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
root centos -wi-ao---- <45.12g
swap centos -wi-ao---- <3.88g
[root@localhost ~]#
[root@localhost ~]# vgs
VG #PV #LV #SN Attr VSize VFree
centos 1 2 0 wz--n- <49.00g 4.00m
myvg1 3 0 0 wz--n- <14.99g <14.99g
[root@localhost ~]# vgremove myvg1
Volume group "myvg1" successfully removed
[root@localhost ~]# vgs
VG #PV #LV #SN Attr VSize VFree
centos 1 2 0 wz--n- <49.00g 4.00m
[root@localhost ~]#
[root@localhost ~]# pvs
PV VG Fmt Attr PSize PFree
/dev/sda2 centos lvm2 a-- <49.00g 4.00m
/dev/sdb1 lvm2 --- <5.00g <5.00g
/dev/sdc1 lvm2 --- <5.00g <5.00g
/dev/sdd1 lvm2 --- <5.00g <5.00g
[root@localhost ~]# pvremove /dev/sdb1
Labels on physical volume "/dev/sdb1" successfully wiped.
[root@localhost ~]# pvremove /dev/sdc1
Labels on physical volume "/dev/sdc1" successfully wiped.
[root@localhost ~]# pvremove /dev/sdd1
Labels on physical volume "/dev/sdd1" successfully wiped.
[root@localhost ~]# pvs
PV VG Fmt Attr PSize PFree
/dev/sda2 centos lvm2 a-- <49.00g 4.00m
[root@localhost ~]#
洗掉完成!
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/227613.html
標籤:其他
