什么是逻辑卷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-G4gzkb1.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 created2.2 显示卷组 命令： vgdisplayEx:[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-8YlIBY2.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:03.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_tst5.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
问题 系统磁盘总容量500G，在安装ubuntu系统选择使用LVM作为分区，所以导致现在系统磁盘不够使用排查：查看卷组：查看逻辑卷：ubuntu系统默认不会把所有的存储空间划分给系统，以保证系统安全性，所以保留了一些存储空间，解决方案：从卷组里划分出一些空间给逻辑卷扩容y36@y36-server-ubuntucom:~$ sudo lvextend -L +100G /dev/ubuntu-vg/ubuntu-lv Size of logical volume ubuntu-vg/ubuntu-lv changed from 100.00 GiB (25600 extents) to 200.00 GiB (51200 extents). Logical volume ubuntu-vg/ubuntu-lv successfully resized.刷新逻辑卷y36@y36-server-ubuntucom:~$ sudo resize2fs /dev/ubuntu-vg/ubuntu-lv resize2fs 1.47.0 (5-Feb-2023) Filesystem at /dev/ubuntu-vg/ubuntu-lv is mounted on /; on-line resizing required old_desc_blocks = 13, new_desc_blocks = 25 The filesystem on /dev/ubuntu-vg/ubuntu-lv is now 52428800 (4k) blocks long.查看系统磁盘空间y36@y36-server-ubuntucom:~$ df -h Filesystem Size Used Avail Use% Mounted on tmpfs 3.2G 1.9M 3.2G 1% /run /dev/mapper/ubuntu--vg-ubuntu--lv 197G 81G 108G 43% / tmpfs 16G 0 16G 0% /dev/shm tmpfs 5.0M 0 5.0M 0% /run/lock tmpfs 16G 0 16G 0% /run/qemu /dev/sda1 2.0G 243M 1.6G 14% /boot tmpfs 3.2G 4.0K 3.2G 1% /run/user/1000