openEuler系统中LVM逻辑卷的创建及扩容与缩容

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等命令来检查文件系统和逻辑卷的状态,确保一切正常。

请注意,在执行这些操作时,请务必小心,因为错误的操作可能会导致数据丢失。如果你不确定如何执行这些步骤,或者担心数据丢失,请考虑寻求专业的帮助。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值