1、背景说明
安装好openEuler操作系统后为其增加新的磁盘进行逻辑卷的扩容与缩容
本次测试使用VMware Workstation Pro虚拟机增加一个磁盘大小为500GB,虚机不关机直接加盘后,使用ls /dev/sd* 或者fdisk -l 发现没有新加的磁盘设备Disk /dev/sdb ,重启操作系统再次检查就有新加的磁盘设备信息
[root@openEuler ~]# fdisk -l
Disk /dev/sda: 100 GiB, 107374182400 bytes, 209715200 sectors
Disk model: VMware Virtual S
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0xe68d90bc
Device Boot Start End Sectors Size Id Type
/dev/sda1 2048 33556479 33554432 16G 82 Linux swap / Solaris
/dev/sda2 * 33556480 209715199 176158720 84G 83 Linux
Disk /dev/sdb: 500 GiB, 536870912000 bytes, 1048576000 sectors
Disk model: VMware Virtual S
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
2、创建一个逻辑卷
在Linux中,创建一个逻辑卷(Logical Volume, LV)通常涉及到几个步骤,这些步骤包括创建物理卷(Physical Volume, PV)、卷组(Volume Group, VG)以及最后的逻辑卷。以下是一个简单的指南,说明如何执行这些步骤:
2.1、创建物理卷
首先,你需要一个或多个分区或磁盘来作为物理卷。假设已经有了一个/dev/sdb磁盘,并且你想要将整个磁盘用作物理卷,你可以这样做:
[root@openEuler ~]# pvcreate /dev/sdb
Physical volume "/dev/sdb" successfully created.
2.2、创建卷组
接下来,需要创建一个卷组来管理物理卷。可以指定一个名字和物理卷列表来创建卷组
[root@openEuler ~]# vgcreate backupvg /dev/sdb
Volume group "backupvg" successfully created
在这个例子中,backupvg是卷组的名称,/dev/sdb是你之前创建的物理卷。
vgdisplay 命令用于显示有关LVM(Logical Volume Manager)卷组(Volume Group, VG)的信息
[root@openEuler ~]# vgdisplay backupvg
--- Volume group ---
VG Name backupvg
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 <500.00 GiB
PE Size 4.00 MiB
Total PE 127999
Alloc PE / Size 0 / 0
Free PE / Size 127999 / <500.00 GiB
VG UUID Y4PDcZ-Wfnu-pkor-sTug-Zg5g-Th17-QijJSg
如果删除卷组,请执行如下操作
[root@openEuler ~]# vgremove backupvg
Volume group "backupvg" successfully removed
2.3、创建逻辑卷
最后,可以在卷组上创建逻辑卷。需要指定逻辑卷的大小和名称
vcreate -L 200G -n backuplv backupvg
[root@openEuler ~]# lvcreate -L 200G -n backuplv backupvg
Logical volume "backuplv" created.l
在这个例子中,-L 200G指定了逻辑卷的大小为200GB,-n backuplv指定了逻辑卷的名称为backuplv,而backupvg是之前创建的卷组的名称。
2.4、格式化逻辑卷
在逻辑卷创建完成后,你需要将其格式化为一个文件系统。假设你想要使用ext4文件系统,可以这样做
mkfs.ext4 /dev/backupvg/backuplv
[root@openEuler ~]# mkfs.ext4 /dev/backupvg/backuplv
mke2fs 1.47.0 (5-Feb-2023)
Creating filesystem with 52428800 4k blocks and 13107200 inodes
Filesystem UUID: e4c1f2d9-19c6-4d12-9d80-d3004980c2de
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,
4096000, 7962624, 11239424, 20480000, 23887872
Allocating group tables: done
Writing inode tables: done
Creating journal (262144 blocks): done
Writing superblocks and filesystem accounting information: done
注意,/dev/backupvg/backuplv是逻辑卷的设备路径,它可能会根据你的系统配置有所不同。可以使用lvdisplay命令来查看逻辑卷的设备路径。
使用lvs 和 lvdisplay 显示逻辑卷信息
[root@openEuler ~]# lvs
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
backuplv backupvg -wi-a----- 200.00g
[root@openEuler ~]# lvdisplay
--- Logical volume ---
LV Path /dev/backupvg/backuplv
LV Name backuplv
VG Name backupvg
LV UUID Hh4Biz-PF4X-7RWx-RNT7-pn4a-Z7SE-06CKeT
LV Write Access read/write
LV Creation host, time openEuler, 2024-06-20 11:06:36 +0800
LV Status available
# open 0
LV Size 200.00 GiB
Current LE 51200
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 8192
Block device 253:0
2.5、 挂载逻辑卷
现在,可以将逻辑卷挂载到一个目录上,以便在文件系统中访问它
mkdir /backup
mount /dev/backupvg/backuplv /backup
在这个例子中,/backup是你想要挂载逻辑卷的目录。
2.6、 设置逻辑卷开机自动挂载
如果你想要在系统启动时自动挂载逻辑卷,可以编辑/etc/fstab文件并添加相应的行
echo '/dev/backupvg/backuplv/backup ext4 defaults 0 2' | tee -a /etc/fstab
这将会在系统启动时自动挂载逻辑卷到/backup目录。
请注意,在执行这些操作时,请确保你有足够的权限(通常普通用户需要使用sudo),并且谨慎操作以避免数据丢失。
3、扩展逻辑卷
在Linux中,当使用LVM(Logical Volume Manager)时,你可以很容易地扩展逻辑卷(Logical Volume, LV)以获取更多的存储空间
3.1、检查现有LVM结构
首先,你需要知道系统中的PV(Physical Volume, 物理卷)、VG(Volume Group, 卷组)和LV(Logical Volume, 逻辑卷)的状态和大小。
使用pvdisplay、vgdisplay和lvdisplay命令可以查看这些信息。
[root@openEuler ~]# pvdisplay
--- Physical volume ---
PV Name /dev/sdb
VG Name backupvg
PV Size 500.00 GiB / not usable 4.00 MiB
Allocatable yes
PE Size 4.00 MiB
Total PE 127999
Free PE 76799
Allocated PE 51200
PV UUID 7WmQyh-dDXL-JL5d-miB6-j5mS-Yv1G-Kd9TnL
[root@openEuler ~]# vgdisplay
--- Volume group ---
VG Name backupvg
System ID
Format lvm2
Metadata Areas 1
Metadata Sequence No 2
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 1
Open LV 1
Max PV 0
Cur PV 1
Act PV 1
VG Size <500.00 GiB
PE Size 4.00 MiB
Total PE 127999
Alloc PE / Size 51200 / 200.00 GiB
Free PE / Size 76799 / <300.00 GiB
VG UUID uRzOv7-A4B2-AAen-5uY9-16Fo-vEac-dk9vps
[root@openEuler ~]# lvdisplay
--- Logical volume ---
LV Path /dev/backupvg/backuplv
LV Name backuplv
VG Name backupvg
LV UUID Hh4Biz-PF4X-7RWx-RNT7-pn4a-Z7SE-06CKeT
LV Write Access read/write
LV Creation host, time openEuler, 2024-06-20 11:06:36 +0800
LV Status available
# open 1
LV Size 200.00 GiB
Current LE 51200
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 8192
Block device 253:0
3.2、添加物理存储空间
如果你需要更多的物理存储空间,你可以添加一个新的磁盘、分区或者一个现有的未使用的磁盘空间到一个VG中。这可以通过vgextend命令完成。
例如,如果你有一个新的物理卷/dev/sdb1并且你想要将它添加到名为backupvg的VG中,可以这样做
vgextend backupvg /dev/sdb1
3.3、扩展逻辑卷
一旦你有足够的空间在VG中,你就可以使用lvextend命令来扩展LV。
例如,如果你想要扩展名为backupvg 的LV到400GB,可以这样做
lvextend -L 400G /dev/backupvg/backuplv
或者,如果你想要将LV扩展到VG中的所有可用空间,可以使用-l +100%FREE选项:
lvextend -l +100%FREE /dev/backupvg/backuplv
3.4、调整文件系统大小(如果需要)
如果你的LV上有一个文件系统(如ext4、xfs等),并且你已经扩展了LV,你还需要调整文件系统的大小以使用新的空间。
- 对于ext4文件系统,使用resize2fs命令:
resize2fs /dev/backupvg/backuplv
[root@openEuler ~]# resize2fs /dev/backupvg/backuplv
resize2fs 1.47.0 (5-Feb-2023)
Filesystem at /dev/backupvg/backuplv is mounted on /backup; on-line resizing required
old_desc_blocks = 25, new_desc_blocks = 63
The filesystem on /dev/backupvg/backuplv is now 131070976 (4k) blocks long.
- 对于xfs文件系统,使用xfs_growfs命令:
xfs_growfs /dev/backupvg/backuplv
注意:不是所有的文件系统都支持在线调整大小。在某些情况下,你可能需要卸载文件系统,扩展LV,然后重新挂载并调整文件系统大小。
3.5、 验证更改
使用lvdisplay和df -h命令来验证你的LV和文件系统是否已经被正确地扩展。
[root@openEuler ~]# df -h
Filesystem Size Used Avail Use% Mounted on
devtmpfs 4.0M 0 4.0M 0% /dev
tmpfs 1.7G 0 1.7G 0% /dev/shm
tmpfs 673M 9.1M 664M 2% /run
tmpfs 4.0M 0 4.0M 0% /sys/fs/cgroup
/dev/sda2 83G 22G 56G 29% /
tmpfs 1.7G 8.0K 1.7G 1% /tmp
/dev/mapper/backupvg-backuplv 400G 28K 398G 1% /backup
4、缩容逻辑卷
在Linux中,逻辑卷(Logical Volume, LV)的缩容是一个需要谨慎操作的过程,因为一旦数据丢失,恢复可能会非常困难。以下是执行逻辑卷缩容的基本步骤:
4.1、备份数据:
在执行任何缩容操作之前,请确保备份了逻辑卷上的所有数据。
4.2、检查文件系统:
确保文件系统是健康的,并且没有错误。对于ext4文件系统,可以使用fsck命令进行检查。
4.3、卸载文件系统:
如果逻辑卷正在被用作文件系统,并且该文件系统当前正在被挂载,你需要先卸载它。
umount /backup
4.4、检查文件系统是否真正卸载:
使用df -h或mount命令确保文件系统不再挂载。
4.5、缩小文件系统:
根据你的文件系统类型,使用相应的工具来缩小文件系统。对于ext4,可以使用resize2fs命令。
resize2fs /dev/backupvg/backuplv <new_size_in_sectors_or_bytes>
注意:<new_size_in_sectors_or_bytes>应该小于或等于逻辑卷当前的大小,并且应该是一个合理的值,以确保文件系统完整无损。
或者,如果你想要将文件系统缩小到开始创建的大小(例如200G),可以这样做
[root@openEuler ~]# resize2fs /dev/backupvg/backuplv 200G
resize2fs 1.47.0 (5-Feb-2023)
Please run 'e2fsck -f /dev/backupvg/backuplv' first.
-- 提示首先执行e2fsck -f /dev/backupvg/backuplv
[root@openEuler ~]# e2fsck -f /dev/backupvg/backuplv
e2fsck 1.47.0 (5-Feb-2023)
Pass 1: Checking inodes, blocks, and sizes
Pass 2: Checking directory structure
Pass 3: Checking directory connectivity
Pass 4: Checking reference counts
Pass 5: Checking group summary information
/dev/backupvg/backuplv: 11/32768000 files (0.0% non-contiguous), 2337051/131070976 blocks
-- 再次执行
[root@openEuler ~]# resize2fs /dev/backupvg/backuplv 200G
resize2fs 1.47.0 (5-Feb-2023)
Resizing the filesystem on /dev/backupvg/backuplv to 52428800 (4k) blocks.
The filesystem on /dev/backupvg/backuplv is now 52428800 (4k) blocks long.
4.6、缩小逻辑卷:
使用lvreduce命令来缩小逻辑卷。
lvreduce -L <new_size_in_GB> /dev/backupvg/backuplv
[root@openEuler ~]# lvreduce -L 200G /dev/backupvg/backuplv
File system ext4 found on backupvg/backuplv.
File system size (200.00 GiB) is equal to the requested size (200.00 GiB).
File system reduce is not needed, skipping.
Size of logical volume backupvg/backuplv changed from <500.00 GiB (127999 extents) to 200.00 GiB (51200 extents).
Logical volume backupvg/backuplv successfully resized.
[root@openEuler ~]#
[root@openEuler ~]# lvs
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
backuplv backupvg -wi-a----- 200.00g
[root@openEuler ~]# lvdisplay
--- Logical volume ---
LV Path /dev/backupvg/backuplv
LV Name backuplv
VG Name backupvg
LV UUID Hh4Biz-PF4X-7RWx-RNT7-pn4a-Z7SE-06CKeT
LV Write Access read/write
LV Creation host, time openEuler, 2024-06-20 11:06:36 +0800
LV Status available
# open 0
LV Size 200.00 GiB
Current LE 51200
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 8192
Block device 253:0
或者,使用-r选项自动调整文件系统大小(但这可能不是所有文件系统都支持)
lvreduce -r -L <new_size_in_GB> /dev/mapper/vgname-lvname
注意:<new_size_in_GB>是你想要将逻辑卷缩小到的新大小。
4.7、重新挂载文件系统:
如果之前卸载了文件系统,现在你可以重新挂载它。
[root@openEuler ~]# mount /dev/backupvg/backuplv /backup
mount: (hint) your fstab has been modified, but systemd still uses
the old version; use 'systemctl daemon-reload' to reload.
[root@openEuler ~]# systemctl daemon-reload
[root@openEuler ~]# df -h
Filesystem Size Used Avail Use% Mounted on
devtmpfs 4.0M 0 4.0M 0% /dev
tmpfs 1.7G 0 1.7G 0% /dev/shm
tmpfs 673M 9.1M 664M 2% /run
tmpfs 4.0M 0 4.0M 0% /sys/fs/cgroup
/dev/sda2 83G 22G 56G 29% /
tmpfs 1.7G 8.0K 1.7G 1% /tmp
/dev/mapper/backupvg-backuplv 196G 28K 187G 1% /backup
4.8、检查文件系统和逻辑卷的状态:
使用df -h、lvdisplay和vgdisplay等命令来检查文件系统和逻辑卷的状态,确保一切正常。
请注意,在执行这些操作时,请务必小心,因为错误的操作可能会导致数据丢失。如果你不确定如何执行这些步骤,或者担心数据丢失,请考虑寻求专业的帮助。