什么是逻辑卷
LVM是Linux的逻辑卷管理器。它提供了对磁盘空间的管理,与基于主和逻辑分区的标准磁盘分区相比,磁盘空间更灵活,限制更少。LVM受到所有主要Linux发行版的支持,它甚至在Fedora和RHEL上默认使用
在计算机存储中,逻辑卷管理或LVM提供了一种在大容量存储设备上分配空间的方法,这种方法比传统的分区方案更灵活地存储卷。特别是,卷管理器可以连接、条带在一起或以其他方式将分区(或一般块设备)组合成更大的虚拟分区,管理员可以调整大小或移动,可能不会中断系统使用。
LVM是一个用于逻辑卷管理的工具,包括分配磁盘、条带、镜像和调整逻辑卷大小。
使用LVM,硬盘驱动器或一组硬盘驱动器被分配给一个或多个物理卷。LVM物理卷可以放置在可能跨越两个或更多磁盘的其他块设备上.
物理卷被合并成逻辑卷,但/boot分区除外。/boot分区不能在逻辑卷组上,因为引导加载程序无法读取它。如果根(/)分区位于逻辑卷上,请创建一个单独的/boot分区,该分区不是卷组的一部分。
由于物理卷不能跨越多个驱动器,要跨越多个驱动器,请为每个驱动器创建一个或多个物理卷。
用途
LVM用于以下目的:
- 创建多个物理卷或整个硬盘的单个逻辑卷(有点类似于RAID 0,但更类似于JBOD),允许动态重新调整卷大小。
- 通过允许添加和更换磁盘,而不会停机或服务中断,结合热交换来管理大型硬盘更换。
- 在小型系统(如桌面)上,LVM无需在安装时估计分区需要多大,而是允许文件系统根据需要轻松调整大小。
- 通过拍摄逻辑卷的快照来执行一致的备份。
- 用一个密码加密多个物理分区
专业术语
- 物理卷(Physical Volumes 缩写pv)
这是LVM使用的物理存储。它可能是整个磁盘或现有分区。
卷组(Volume Group vg)
这是一个或多个物理卷的集合,它包含逻辑卷。
逻辑卷(Logical Volume lv)
这是LVM提供的空间,您可以将其用作分区来制作文件系统和存储文件。
PE
最小存储单元,默认大小(4MB)
逻辑卷的管理
在Linux系统中如果没有LVM的命令(最小化安装)
[root@localhost ~]# dnf search lvm
======================================================= Name Matched: lvm ========================================================
llvm.i686 : The Low Level Virtual Machine
llvm.x86_64 : The Low Level Virtual Machine
lvm2.x86_64 : Userland logical volume management tools
[root@localhost ~]# dnf -y install lvm2.x86_64
一、 物理卷管理
1.1 创建物理卷
命令: pvcreate
描述:初始化磁盘或分区供 LVM 使用。
Ex:
[root@localhost ~]# pvcreate /dev/vdb
Wiping dos signature on /dev/vdb.
Physical volume "/dev/vdb" successfully created.
1.2 查看pv
- 命令:
pvdisplay
- 描述:
显示所有的物理卷
- 语法:
pvdisplay [pv_name]
Ex:
[root@localhost ~]# pvdisplay
"/dev/vdb" is a new physical volume of "20.00 GiB"
--- NEW Physical volume ---
PV Name /dev/vdb
VG Name
PV Size 20.00 GiB
Allocatable NO
PE Size 0
Total PE 0
Free PE 0
Allocated PE 0
PV UUID jzEyr7-KheP-2PiZ-G1Pz-b1xq-cZcc-G4gzkb
1.3 删除 PV
命令:pvremove
描述: 移除逻辑卷
Ex:
[root@localhost ~]# pvremove -f /dev/vdb
Labels on physical volume "/dev/vdb" successfully wiped
二、 卷组管理
2.1 创建卷组
命令:vgcreate
语法:vgcreate 卷组名称 {物理卷1 物理卷2 物理卷n}
Ex:
[root@localhost ~]# vgcreate test_vg /dev/vdb
Volume group "test_vg" successfully created
2.2 显示卷组
命令: vgdisplay
Ex:
[root@localhost ~]# vgdisplay
--- Volume group ---
VG Name test_vg
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 <20.00 GiB
PE Size 4.00 MiB
Total PE 5119
Alloc PE / Size 0 / 0
Free PE / Size 5119 / <20.00 GiB
VG UUID 3WGvBc-dyNf-1eYn-gIsi-V2zO-OPND-8YlIBY
2.3 删除卷组
命令: vgremove
Ex:
[root@localhost ~]# vgremove test_vg
Volume group "test_vg" successfully removed
三、 逻辑卷管理
3.1 创建逻辑卷
命令: lvcreate
语法: lvcreate [选项] 逻辑卷的名称 VG
选项:
-L #指定逻辑卷的大小,单位G M K
-i #指定raid的级别,磁盘阵列
-l #以逻辑扩展为单位指定新 LV 的大小
-n #指定逻辑卷的名称
Ex:
[root@localhost ~]# lvcreate -L5G test_vg
WARNING: ext4 signature detected on /dev/test_vg/lvol0 at offset 1080. Wipe it? [y/n]: y
Wiping ext4 signature on /dev/test_vg/lvol0.
Logical volume "lvol0" created.
3.2 查看逻辑卷
[root@localhost ~]# lvdisplay
--- Logical volume ---
LV Path /dev/test_vg/lvol0
LV Name lvol0
VG Name test_vg
LV UUID FZ32YS-sg2B-etWG-Y84C-hqyR-gaHG-9TCYnj
LV Write Access read/write
LV Creation host, time localhost, 2024-05-18 15:34:06 +0800
LV Status available
# open 0
LV Size 5.00 GiB
Current LE 1280
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 8192
Block device 252:0
3.3 移除逻辑卷
[root@localhost ~]# lvremove /dev/test_vg/lvol0
Do you really want to remove active logical volume test_vg/lvol0? [y/n]: y
Logical volume "lvol0" successfully removed.
3.4 扩容
命令: lvextend
描述:Add space to a logical volume 为逻辑卷添加空间
Ex:
[root@bogon ~]# lvextend -L 10G /dev/test_vg/test_lv
Size of logical volume test_vg/test_lv changed from 5.00 GiB (1280 extents) to 10.00 GiB (2560 extents).
Logical volume test_vg/test_lv successfully resized.
[root@bogon ~]# lvdisplay
--- Logical volume ---
LV Path /dev/test_vg/test_lv
LV Name test_lv
VG Name test_vg
LV UUID 9c1tLT-Dyul-qvWp-QdsN-pAYA-oyba-XeyKeW
LV Write Access read/write
LV Creation host, time localhost, 2024-05-18 15:46:39 +0800
LV Status available
# open 1
LV Size 10.00 GiB
Current LE 2560
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 8192
Block device 252:0
#刷新文件系统
- resize2fs 支持`ext2,3,4` 不支持xfs
- xfs_growfs 支持xfs文件系统
[root@bogon ~]# xfs_growfs /dev/mapper/test_vg-test_lv
meta-data=/dev/mapper/test_vg-test_lv isize=512 agcount=4, agsize=327680 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=1, sparse=1, rmapbt=0
= reflink=1 bigtime=0 inobtcount=0
data = bsize=4096 blocks=1310720, 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
data blocks changed from 1310720 to 2621440
[root@bogon ~]# df -h
Filesystem Size Used Avail Use% Mounted on
devtmpfs 1.8G 0 1.8G 0% /dev
tmpfs 1.8G 0 1.8G 0% /dev/shm
tmpfs 1.8G 25M 1.8G 2% /run
tmpfs 1.8G 0 1.8G 0% /sys/fs/cgroup
/dev/vda3 17G 5.1G 12G 30% /
/dev/vda2 2.0G 47M 2.0G 3% /home
/dev/vda1 1014M 212M 803M 21% /boot
/dev/mapper/test_vg-test_lv 10G 104M 9.9G 2% /test_lv
tmpfs 367M 0 367M 0% /run/user/0
四、 格式化逻辑卷(创建文件系统)
[root@localhost ~]# mkfs.xfs /dev/test_vg/test_lv
meta-data=/dev/test_vg/test_lv isize=512 agcount=4, agsize=327680 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=1, sparse=1, rmapbt=0
= reflink=1 bigtime=0 inobtcount=0
data = bsize=4096 blocks=1310720, 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
五、 挂载使用
5.1 临时挂载
[root@localhost ~]# mkdir /lv_tst
[root@localhost ~]# mount /dev/test_vg/test_lv /lv_tst/
[root@localhost ~]# df -h
Filesystem Size Used Avail Use% Mounted on
devtmpfs 1.8G 0 1.8G 0% /dev
tmpfs 1.8G 0 1.8G 0% /dev/shm
tmpfs 1.8G 17M 1.8G 1% /run
tmpfs 1.8G 0 1.8G 0% /sys/fs/cgroup
/dev/vda3 17G 5.1G 12G 30% /
/dev/vda2 2.0G 47M 2.0G 3% /home
/dev/vda1 1014M 212M 803M 21% /boot
tmpfs 367M 0 367M 0% /run/user/0
/dev/sr0 12G 12G 0 100% /mnt
/dev/mapper/test_vg-test_lv 5.0G 68M 5.0G 2% /lv_tst
5.2 永久挂载
实现永久挂载,需要修改主配置文件 /etc/fstab
[root@localhost ~]# cat /etc/fstab
UUID=787a972d-9811-42a3-b57b-8ecb567e23a4 / xfs defaults 0 0
UUID=2ccfb650-c2b0-4822-bea5-b8da75434b52 /boot xfs defaults 0 0
UUID=0541f6b0-a7f4-4566-8e63-30b87aa83a01 /home xfs defaults 0 0
# 挂载的目录 挂载点 文件系统 defaults 0 0
UUID=9c1tLT-Dyul-qvWp-QdsN-pAYA-oyba-XeyKeW /test_lv xfs defaults 0 0
或者使用文件的路径
/dev/test_vg/test_lv /test_lv xfs defaults 0 0
# 获取UUID
[root@localhost ~]# blkid
/dev/vdb: UUID="V6TrIv-Aip2-gyat-kxAa-6mK0-3zPL-zzRWEY" TYPE="LVM2_member"
/dev/mapper/test_vg-test_lv: UUID="f4366c5b-231b-47d8-a39a-41fc0b55c8b9" BLOCK_SIZE="512" TYPE="xfs"
切记:不能写错
5.2.1 测试文件是否输入正确
[root@localhost ~]# mount -a #读取/etc/fastab文件中的所有内容
[root@localhost ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/test_vg-test_lv 5.0G 68M 5.0G 2% /test_lv
案例
[root@localhost ~]# pvcreate /dev/vd{c..e}
Physical volume "/dev/vdc" successfully created.
Physical volume "/dev/vdd" successfully created.
Physical volume "/dev/vde" successfully created.
# 创建卷组
vgcreate my_test_vg /dev/vdc /dev/vdd
#创建逻辑卷
lvcreate -L 10G -n test_lv_test my_test_vg
#创建文件系统
mkfs.ext4 /dev/my_test_vg/test_lv_test
#创建挂载点
mkdir /test_lv_1
#挂载测试
mount /dev/my_test_vg/test_lv_test /test_lv_1/
#扩容
lvextend -L 15G /dev/my_test_vg/test_lv_test
#刷新文件系统
[root@localhost ~]# resize2fs /dev/my_test_vg/test_lv_test
resize2fs 1.45.6 (20-Mar-2020)
Filesystem at /dev/my_test_vg/test_lv_test is mounted on /test_lv_1; on-line resizing required
old_desc_blocks = 2, new_desc_blocks = 2
The filesystem on /dev/my_test_vg/test_lv_test is now 3932160 (4k) blocks long.
#验证
[root@localhost ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/my_test_vg-test_lv_test 15G 24K 14G 1% /test_lv_1
# 添加物理卷到卷组中
[root@localhost ~]# vgextend my_test_vg /dev/vd
vda vda1 vda2 vda3 vdb vdc vdd vde
[root@localhost ~]# vgextend my_test_vg /dev/vde
Volume group "my_test_vg" successfully extended
[root@localhost ~]# vgdisplay my_test_vg
--- Volume group ---
VG Name my_test_vg
System ID
Format lvm2
Metadata Areas 3
Metadata Sequence No 3
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 1
Open LV 1
Max PV 0
Cur PV 3
Act PV 3
VG Size <29.99 GiB
PE Size 4.00 MiB
Total PE 7677
Alloc PE / Size 2560 / 10.00 GiB
Free PE / Size 5117 / <19.99 GiB
VG UUID a5wcDK-0edK-LzGd-BV5a-GaSk-wuk3-iVEfct
评论 (0)