LVM主要用于解决 服务器磁盘存储数据、分区磁盘空间不足时实现磁盘动态扩容。
磁盘和文件系统之间增加一个逻辑层,来动态的调整文件系统的大小,从而实现对磁盘的管理
组成关系:
多个磁盘/分区/raid–>多个物理卷PV–>合成卷组VG–>从VG划出逻辑卷LV–>格式化LV挂载使用

常用命令:

-s 存储文件比较大文件, PE 调大一下,读取快
[root@localhost lv01]# vgcreate -s 16M vg03 /dev/sdb4Volume group "vg03" successfully created
[root@localhost lv01]# vgsVG #PV #LV #SN Attr VSize VFreecentos_anonymous 1 2 0 wz--n- <19.00g 0 vg01 1 2 0 wz--n- <4.00g 3.96gvg02 2 0 0 wz--n- 7.99g 7.99gvg03 1 0 0 wz--n- 3.98g 3.98g
[root@localhost lv01]# vgdisplay vg03--- Volume group ---VG Name vg03System ID Format lvm2Metadata Areas 1Metadata Sequence No 1VG Access read/writeVG Status resizableMAX LV 0Cur LV 0Open LV 0Max PV 0Cur PV 1Act PV 1VG Size 3.98 GiBPE Size 16.00 MiBTotal PE 255Alloc PE / Size 0 / 0 Free PE / Size 255 / 3.98 GiBVG UUID MU9NLn-IIJG-Immq-h2DK-s1B9-BESR-OAA40w
常用参数:
-L +30M 20M --50M
-L 30M 30M
实操:
[root@localhost lv01]# lvsLV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convertroot centos_anonymous -wi-ao---- <17.00g swap centos_anonymous -wi-ao---- 2.00g lv01 vg01 -wi-ao---- 16.00m lv02 vg01 -wi-a----- 16.00m
[root@localhost lv01]# lvextend -L +30M /dev/vg01/lv01Rounding size to boundary between physical extents: 32.00 MiB. ##PE必须是4M的倍数Size of logical volume vg01/lv01 changed from 16.00 MiB (4 extents) to 48.00 MiB (12 extents).Logical volume vg01/lv01 successfully resized.
[root@localhost lv01]# lvsLV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convertroot centos_anonymous -wi-ao---- <17.00g swap centos_anonymous -wi-ao---- 2.00g lv01 vg01 -wi-ao---- 48.00m lv02 vg01 -wi-a----- 16.00m
[root@localhost lv01]# df -Th /lv01/
文件系统 类型 容量 已用 可用 已用% 挂载点
/dev/mapper/vg01-lv01 xfs 13M 896K 12M 7% /lv01
[root@localhost lv01]# xfs_
xfs_admin xfs_db xfs_fsr xfs_io xfs_metadump xfs_quota
xfs_bmap xfs_estimate xfs_growfs xfs_logprint xfs_mkfile xfs_repair
xfs_copy xfs_freeze xfs_info xfs_mdrestore xfs_ncheck xfs_rtcp
[root@localhost lv01]# xfs_growfs /dev/vg01/lv01
meta-data=/dev/mapper/vg01-lv01 isize=512 agcount=1, agsize=4096 blks= sectsz=512 attr=2, projid32bit=1= crc=1 finobt=0 spinodes=0
data = bsize=4096 blocks=4096, imaxpct=25= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=1
log =internal bsize=4096 blocks=855, version=2= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
data blocks changed from 4096 to 12288
[root@localhost lv01]# df -Th /lv01/
文件系统 类型 容量 已用 可用 已用% 挂载点
/dev/mapper/vg01-lv01 xfs 45M 960K 44M 3% /lv01
[root@localhost lv01]#
[root@localhost lv01]# df -Th /lv01/
文件系统 类型 容量 已用 可用 已用% 挂载点
/dev/mapper/vg01-lv01 xfs 45M 960K 44M 3% /lv01
[root@localhost lv01]# df -Th /lv01/
文件系统 类型 容量 已用 可用 已用% 挂载点
/dev/mapper/vg01-lv01 xfs 45M 960K 44M 3% /lv01
[root@localhost lv01]# lvextend -L 80M -r /dev/vg01/lv01Size of logical volume vg01/lv01 changed from 48.00 MiB (12 extents) to 80.00 MiB (20 extents).Logical volume vg01/lv01 successfully resized.
meta-data=/dev/mapper/vg01-lv01 isize=512 agcount=3, agsize=4096 blks= sectsz=512 attr=2, projid32bit=1= crc=1 finobt=0 spinodes=0
data = bsize=4096 blocks=12288, imaxpct=25= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=1
log =internal bsize=4096 blocks=855, version=2= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
data blocks changed from 12288 to 20480
[root@localhost lv01]# df -Th /lv01/
文件系统 类型 容量 已用 可用 已用% 挂载点
/dev/mapper/vg01-lv01 xfs 77M 1.0M 76M 2% /lv01
[root@localhost ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 20G 0 disk
├─sda1 8:1 0 1G 0 part /boot
└─sda2 8:2 0 19G 0 part ├─centos_anonymous-root 253:0 0 17G 0 lvm /└─centos_anonymous-swap 253:1 0 2G 0 lvm [SWAP]
sdb 8:16 0 20G 0 disk
├─sdb1 8:17 0 4G 0 part
│ ├─vg01-lv01 253:2 0 80M 0 lvm /lv01
│ └─vg01-lv02 253:3 0 16M 0 lvm
├─sdb2 8:18 0 4G 0 part
│ └─vg02-lv03 253:4 0 100M 0 lvm /lv03
├─sdb3 8:19 0 4G 0 part
└─sdb4 8:20 0 4G 0 part
sr0 11:0 1 4.2G 0 rom /run/media/root/CentOS 7 x86_64
[root@localhost ~]# umount /dev/vg01/lv01
[root@localhost ~]# df -h !$
df -h /dev/vg01/lv01
文件系统 容量 已用 可用 已用% 挂载点
devtmpfs 1.9G 0 1.9G 0% /dev
[root@localhost ~]# lvremove /dev/vg01/lv01
Do you really want to remove active logical volume vg01/lv01? [y/n]: yLogical volume "lv01" successfully removed
[root@localhost ~]# lvremove /dev/vg01/lv02
Do you really want to remove active logical volume vg01/lv02? [y/n]: yLogical volume "lv02" successfully removed
[root@localhost ~]# vgremove vg01Volume group "vg01" successfully removed
[root@localhost ~]# pvremove /dev/sdb1Labels on physical volume "/dev/sdb1" successfully wiped.
[root@localhost ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 20G 0 disk
├─sda1 8:1 0 1G 0 part /boot
└─sda2 8:2 0 19G 0 part ├─centos_anonymous-root 253:0 0 17G 0 lvm /└─centos_anonymous-swap 253:1 0 2G 0 lvm [SWAP]
sdb 8:16 0 20G 0 disk
├─sdb1 8:17 0 4G 0 part
├─sdb2 8:18 0 4G 0 part
│ └─vg02-lv03 253:4 0 100M 0 lvm /lv03
├─sdb3 8:19 0 4G 0 part
└─sdb4 8:20 0 4G 0 part
sr0 11:0 1 4.2G 0 rom /run/media/root/CentOS 7 x86_64
[root@localhost ~]#
[root@localhost ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 20G 0 disk
├─sda1 8:1 0 1G 0 part /boot
└─sda2 8:2 0 19G 0 part ├─centos_anonymous-root 253:0 0 17G 0 lvm /└─centos_anonymous-swap 253:1 0 2G 0 lvm [SWAP]
sdb 8:16 0 20G 0 disk
sr0 11:0 1 4.2G 0 rom /run/media/root/CentOS 7 x86_64[root@localhost ~]# fdisk /dev/sdb
欢迎使用 fdisk (util-linux 2.23.2)。更改将停留在内存中,直到您决定将更改写入磁盘。
使用写入命令前请三思。Device does not contain a recognized partition table
使用磁盘标识符 0x1287997e 创建新的 DOS 磁盘标签。命令(输入 m 获取帮助):n
Partition type:p primary (0 primary, 0 extended, 4 free)e extended
Select (default p):
Using default response p
分区号 (1-4,默认 1):
起始 扇区 (2048-41943039,默认为 2048):
将使用默认值 2048
Last 扇区, +扇区 or +size{K,M,G} (2048-41943039,默认为 41943039):+4G
分区 1 已设置为 Linux 类型,大小设为 4 GiB命令(输入 m 获取帮助):n
Partition type:p primary (1 primary, 0 extended, 3 free)e extended
Select (default p):
Using default response p
分区号 (2-4,默认 2):
起始 扇区 (8390656-41943039,默认为 8390656):
将使用默认值 8390656
Last 扇区, +扇区 or +size{K,M,G} (8390656-41943039,默认为 41943039):+4G
分区 2 已设置为 Linux 类型,大小设为 4 GiB命令(输入 m 获取帮助):n
Partition type:p primary (2 primary, 0 extended, 2 free)e extended
Select (default p):
Using default response p
分区号 (3,4,默认 3):
起始 扇区 (16779264-41943039,默认为 16779264):
将使用默认值 16779264
Last 扇区, +扇区 or +size{K,M,G} (16779264-41943039,默认为 41943039):+4G
分区 3 已设置为 Linux 类型,大小设为 4 GiB命令(输入 m 获取帮助):n
Partition type:p primary (3 primary, 0 extended, 1 free)e extended
Select (default e): p
已选择分区 4
起始 扇区 (25167872-41943039,默认为 25167872):
将使用默认值 25167872
Last 扇区, +扇区 or +size{K,M,G} (25167872-41943039,默认为 41943039):+4G
分区 4 已设置为 Linux 类型,大小设为 4 GiB命令(输入 m 获取帮助):p磁盘 /dev/sdb:21.5 GB, 21474836480 字节,41943040 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x1287997e设备 Boot Start End Blocks Id System
/dev/sdb1 2048 8390655 4194304 83 Linux
/dev/sdb2 8390656 16779263 4194304 83 Linux
/dev/sdb3 16779264 25167871 4194304 83 Linux
/dev/sdb4 25167872 33556479 4194304 83 Linux命令(输入 m 获取帮助):w
The partition table has been altered!Calling ioctl() to re-read partition table.
正在同步磁盘。
[root@localhost ~]# ll /dev/sdb*
brw-rw----. 1 root disk 8, 16 11月 14 14:08 /dev/sdb
brw-rw----. 1 root disk 8, 17 11月 14 14:08 /dev/sdb1
brw-rw----. 1 root disk 8, 18 11月 14 14:08 /dev/sdb2
brw-rw----. 1 root disk 8, 19 11月 14 14:08 /dev/sdb3
brw-rw----. 1 root disk 8, 20 11月 14 14:08 /dev/sdb4
2.创建PV
[root@localhost ~]# pvcreate /dev/sdb{1..4}Device /dev/sdb4 not found (or ignored by filtering).Physical volume "/dev/sdb1" successfully created.Physical volume "/dev/sdb2" successfully created.Physical volume "/dev/sdb3" successfully created.Physical volume "/dev/sdb4" successfully created.
[root@localhost ~]# pvsPV VG Fmt Attr PSize PFree/dev/sda2 centos_anonymous lvm2 a-- <19.00g 0 /dev/sdb1 lvm2 --- 4.00g 4.00g/dev/sdb2 lvm2 --- 4.00g 4.00g/dev/sdb3 lvm2 --- 4.00g 4.00g/dev/sdb4 lvm2 --- 4.00g 4.00g
[root@localhost ~]#
3.创建VG
[root@localhost ~]# vgcreate vg01 /dev/sdb1Volume group "vg01" successfully created
[root@localhost ~]# vgdisplay vg01 --- Volume group ---VG Name vg01System ID Format lvm2Metadata Areas 1Metadata Sequence No 1VG Access read/writeVG Status resizableMAX LV 0Cur LV 0Open LV 0Max PV 0Cur PV 1Act PV 1VG Size <4.00 GiBPE Size 4.00 MiBTotal PE 1023Alloc PE / Size 0 / 0 Free PE / Size 1023 / <4.00 GiBVG UUID lb05QT-DCip-Lcbx-sahb-dKA1-KAnc-nHXnYD[root@localhost ~]#
4.创建LV
[root@localhost ~]# lvcreate -n lv01 -L 16M vg01 Logical volume "lv01" created.
[root@localhost ~]# lvcreate -n lv02 -l 4 vg01Logical volume "lv02" created.
[root@localhost ~]# lvsLV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convertroot centos_anonymous -wi-ao---- <17.00g swap centos_anonymous -wi-ao---- 2.00g lv01 vg01 -wi-a----- 16.00m lv02 vg01 -wi-a----- 16.00m
[root@localhost ~]# lvdisplay /dev/vg01/lv01--- Logical volume ---LV Path /dev/vg01/lv01LV Name lv01VG Name vg01LV UUID DjHCEk-m7Ng-oCE2-sQjH-UoiK-fDif-KIRtMMLV Write Access read/writeLV Creation host, time localhost.localdomain, 2022-11-14 14:40:38 +0800LV Status available# open 0LV Size 16.00 MiBCurrent LE 4Segments 1Allocation inheritRead ahead sectors auto- currently set to 8192Block device 253:2
5.格式化挂载LV
[root@localhost ~]# mkdir /lv01
[root@localhost ~]# mkfs.xfs /dev/vg01/lv01
meta-data=/dev/vg01/lv01 isize=512 agcount=1, agsize=4096 blks= sectsz=512 attr=2, projid32bit=1= crc=1 finobt=0, sparse=0
data = bsize=4096 blocks=4096, imaxpct=25= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=1
log =internal log bsize=4096 blocks=855, version=2= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
[root@localhost ~]# mount !$ /lv01/
mount /dev/vg01/lv01 /lv01/
[root@localhost ~]# df -Th /lv01/
文件系统 类型 容量 已用 可用 已用% 挂载点
/dev/mapper/vg01-lv01 xfs 13M 896K 12M 7% /lv01
[root@localhost ~]#