LVM(redhat 8.0)

本文详细介绍了Red Hat 8.0中的逻辑卷管理(LVM),包括LVM的应用场景和弊端,物理卷、卷组、逻辑卷的概念,以及如何创建、扩充、缩减和管理卷组和逻辑卷。此外,还涵盖了数据迁移和对ext4文件系统的逻辑卷进行容量裁剪的操作步骤和注意事项。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

LVM

1.1 lvm的应用场景及其弊端

  • 应用场景:
    随着公司的发展,数据增长较快,最初规划的磁盘容量不够用了
  • 弊端:数据不是直接存放在硬盘上,而是在硬盘的上面又虚拟出来一层逻辑卷存放数据,故而增加了磁盘数据恢复的难度

物理卷、卷组、逻辑卷

在这里插入图片描述物理卷(多块硬盘初始化) > 卷组(虚拟)> 逻辑卷 (进行格式化挂载)

  • 物理卷(PV)︰把常规的块设备(硬盘,分区等可以读写数据的设备)通过pvcreate命令对其进行初始化,就成了物理卷
  • 卷组(VG):把多个物理卷的容量组成一个逻辑整体,可以从里面灵活分配容量
  • 逻辑卷(LV):从卷组中划分部分空间成为一个可以读写数据的逻辑单元。需要对其格式化然后挂载使用

LVM

  • 部署lvm
  1. 添加物理磁盘
  2. 创建卷组,将物理磁盘加入卷组
  3. 再卷组中划分逻辑卷
  4. 格式化逻辑卷
  5. 挂载使用
  • 添加物理磁盘
    pvcreate 硬盘的位置
[root@system_rookie ~]# pvcreate /dev/nvme0n2
WARNING: dos signature detected on /dev/nvme0n2 at offset 510. Wipe it? [y/n]: y
  Wiping dos signature on /dev/nvme0n2.
  Physical volume "/dev/nvme0n2" successfully created.
[root@system_rookie ~]# pvs
  PV             VG   Fmt  Attr PSize   PFree 
  /dev/nvme0n1p2 rhel lvm2 a--  <19.00g     0 
  /dev/nvme0n2        lvm2 ---   20.00g 20.00g
  • 创建卷组,将物理磁盘加入卷组
    vgcreate 卷组名字 物理卷的位置
[root@system_rookie ~]# vgcreate vg0 /dev/nvme0n2 
  Volume group "vg0" successfully created
[root@system_rookie ~]# vgs
  VG   #PV #LV #SN Attr   VSize   VFree  
  rhel   1   2   0 wz--n- <19.00g      0 
  vg0    1   0   0 wz--n- <20.00g <20.00g

  • 创建逻辑卷
    lvcreate -n逻辑卷名字-L逻辑卷大小(+10G)卷组的名字
[root@system_rookie ~]# lvcreate -n lv0 -L +10G vg0
WARNING: xfs signature detected on /dev/vg0/lv0 at offset 0. Wipe it? [y/n]: y
  Wiping xfs signature on /dev/vg0/lv0.
  Logical volume "lv0" created.
[root@system_rookie ~]# lvs
  LV   VG   Attr       LSize   Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  root rhel -wi-ao---- <17.00g                                                    
  swap rhel -wi-ao----   2.00g                                                    
  lv0  vg0  -wi-a-----  10.00g 
pvs 查看物理卷的信息
[root@system_rookie ~]# pvs
  PV             VG   Fmt  Attr PSize   PFree  
  /dev/nvme0n1p2 rhel lvm2 a--  <19.00g      0 
  /dev/nvme0n2   vg0  lvm2 a--  <20.00g <10.00g
  • 格式化逻辑卷
[root@system_rookie ~]# mkfs.xfs /dev/vg0/lv0 
meta-data=/dev/vg0/lv0           isize=512    agcount=4, agsize=655360 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=1        finobt=1, sparse=1, rmapbt=0
         =                       reflink=1
data     =                       bsize=4096   blocks=2621440, 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, rtexten
  • 查看逻辑卷UUID,开启开机自动挂载
[root@system_rookie ~]# blkid /dev/vg0/lv0
/dev/vg0/lv0: UUID="7c4cdb2a-08ce-42b6-a7ea-ef588af937a3" TYPE="xfs"
[root@system_rookie ~]# cat /etc/fstab |tail -1
UUID=7c4cdb2a-08ce-42b6-a7ea-ef588af937a3	/dev/lvm      xfs	defaults	0 0

/dev/mapper/vg0-lv0   xfs        10G  104M  9.9G    2% /dev/lvm

卷组管理

创建物理卷

[root@system_rookie ~]# pvcreate /dev/nvme0n3 
WARNING: dos signature detected on /dev/nvme0n3 at offset 510. Wipe it? [y/n]: y
  Wiping dos signature on /dev/nvme0n3.
  Physical volume "/dev/nvme0n3" successfully created.

查看已经创建的物理卷

[root@system_rookie ~]# pvs

查看物理卷详细信息

[root@system_rookie ~]# pvdisplay /dev/nvme0n3 

扩充卷组

[root@system_rookie ~]# vgextend vg0 /dev/nvme0n3 
  Volume group "vg0" successfully extended
[root@system_rookie ~]# vgs
  VG   #PV #LV #SN Attr   VSize   VFree 
  rhel   1   2   0 wz--n- <19.00g     0 
  vg0    2   1   0 wz--n-  39.99g 29.99g

缩减卷组

  • vgreduce 卷组名字 物理卷的位置
[root@system_rookie ~]# vgreduce vg0 /dev/nvme0n3
  Removed "/dev/nvme0n3" from volume group "vg0"

删除卷组

vgremove 卷组名(卸载状态下才能删除,否则无法删除)

[root@system_rookie ~]# vgremove vg0
Do you really want to remove volume group "vg0" containing 1 logical volumes? [y/n]: y
Do you really want to remove active logical volume vg0/lv0? [y/n]: y
  Logical volume "lv0" successfully removed
  Volume group "vg0" successfully removed

查看已经创建的卷组

[root@system_rookie ~]# vgs

查看已经创建卷组的详细信息

[root@system_rookie ~]# vgdisplay vg0

逻辑卷管理

  • 逻辑卷的扩展取决于逻辑卷组的容量,逻辑卷扩展的容量不能超过逻辑卷组的容量
    注意:扩充后挂载的容量并没有变大,需要启用后才能使用;

扩充逻辑卷组容量

[root@system_rookie ~]# lvextend -L +10G /dev/vg0/lv0 
  Size of logical volume vg0/lv0 changed from 10.00 GiB (2560 extents) to 20.00 GiB (5120 extents).
  Logical volume vg0/lv0 successfully resized.
[root@system_rookie ~]# lvs
  LV   VG   Attr       LSize   Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  root rhel -wi-ao---- <17.00g                                                    
  swap rhel -wi-ao----   2.00g                                                    
  lv0  vg0  -wi-ao----  20.00g
- 查看文件系统类型

```bash
[root@system_rookie ~]# blkid /dev/vg0/lv0
/dev/vg0/lv0: UUID="7c4cdb2a-08ce-42b6-a7ea-ef588af937a3" TYPE="xfs"

缩减逻辑卷

[root@system_rookie ~]# lvreduce -L 5G /dev/vg0/lv0
  WARNING: Reducing active logical volume to 5.00 GiB.
  THIS MAY DESTROY YOUR DATA (filesystem etc.)
Do you really want to reduce vg0/lv0? [y/n]: y
  Size of logical volume vg0/lv0 changed from 10.00 GiB (2560 extents) to 5.00 GiB (1280 extents).
  Logical volume vg0/lv0 successfully resized.
[root@system_rookie ~]# lvs
  LV   VG   Attr       LSize   Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  root rhel -wi-ao---- <17.00g                                                    
  swap rhel -wi-ao----   2.00g                                                    
  lv0  vg0  -wi-a-----   5.00g         

删除删除逻辑卷

[root@system_rookie ~]# lvremove /dev/vg0/lv0
Do you really want to remove active logical volume vg0/lv0? [y/n]: y
  Logical volume "lv0" successfully removed
[root@system_rookie ~]# lvs
  LV   VG   Attr       LSize   Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  root rhel -wi-ao---- <17.00g                                                    
  swap rhel -wi-ao----   2.00g  

注意:以上的删除操作和缩减下面的缩减容量扩充操作都只能在卸载情况下使用

启用逻辑卷容量扩充(xfs文件系统类型

从上一步可以看到文件系统类型为:xfs,所以应该用xfs_growsfs命令
可能会遇到这样的报错情况

[root@system_rookie ~]# xfs_growsfs /dev/vg0/lv0
xfs_growfs: /dev/vg0/lv0 is not a mounted XFS filesystem

这是由于xfs_growsfs版本不同导致的
解决办法:将目标文件系统改为挂载点

[root@system_rookie ~]# xfs_growsfs /dev/lvm
[root@system_rookie ~]# df -hT|tail -1
/dev/mapper/vg0-lv0   xfs        25G  211M   25G    1% /dev/lvm

xfs文件系统不支持缩减启用空间

  • 如果是ext4的文件系统类型,应该用resize2fs重新获取大小
  1. 将逻辑卷扩充到15G
[root@system_rookie ~]# lvextend -L 15G /dev/vg0/lv0 
  Size of logical volume vg0/lv0 changed from 10.00 GiB (2560 extents) to 15.00 GiB (3840 extents).
  Logical volume vg0/lv0 successfully resized.
[root@system_rookie ~]# lvs
  LV   VG   Attr       LSize   Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  root rhel -wi-ao---- <17.00g                                                    
  swap rhel -wi-ao----   2.00g                                                    
  lv0  vg0  -wi-ao----  15.00g                                                    
[root@system_rookie ~]# df -hT
文件系统              类型      容量  已用  可用 已用% 挂载点
devtmpfs              devtmpfs  887M     0  887M    0% /dev
tmpfs                 tmpfs     904M  8.8M  895M    1% /run
tmpfs                 tmpfs     904M     0  904M    0% /sys/fs/cgroup
/dev/mapper/rhel-root xfs        17G  4.1G   13G   25% /
tmpfs                 tmpfs     181M     0  181M    0% /run/user/0
/dev/nvme0n1p1        xfs      1014M  176M  839M   18% /boot
/dev/mapper/vg0-lv0   ext4      9.8G   36M  9.6G    1% /dev/lvm
  1. 使用resize2fs启动扩容空间
[root@system_rookie ~]# resize2fs /dev/vg0/lv0 
resize2fs 1.44.6 (5-Mar-2019)
/dev/vg0/lv0 上的文件系统已被挂载于 /dev/lvm;需要进行在线调整大小

old_desc_blocks = 2, new_desc_blocks = 2
/dev/vg0/lv0 上的文件系统现在为 3932160 个块(每块 4k)。
[root@system_rookie ~]# df -hT
文件系统              类型      容量  已用  可用 已用% 挂载点
devtmpfs              devtmpfs  887M     0  887M    0% /dev
tmpfs                 tmpfs     904M  8.8M  895M    1% /run
tmpfs                 tmpfs     904M     0  904M    0% /sys/fs/cgroup
/dev/mapper/rhel-root xfs        17G  4.1G   13G   25% /
tmpfs                 tmpfs     181M     0  181M    0% /run/user/0
/dev/nvme0n1p1        xfs      1014M  176M  839M   18% /boot
/dev/mapper/vg0-lv0   ext4       15G   40M   15G    1% /dev/lvm

数据迁移

pvmove 需要迁移数据的磁盘路径

[root@system_rookie ~]# pvmove /dev/nvme0n2
  /dev/nvme0n2: Moved: 1.52%
  /dev/nvme0n2: Moved: 100.00%

注意:数据会随机迁移到其他磁盘中,不需要指定磁盘

  • 迁移前
[root@system_rookie ~]# pvs
  PV             VG   Fmt  Attr PSize   PFree  
  /dev/nvme0n1p2 rhel lvm2 a--  <19.00g      0 
  /dev/nvme0n2   vg0  lvm2 a--  <20.00g <10.00g
  /dev/nvme0n3   vg0  lvm2 a--  <20.00g <20.00g
  • 迁移后
[root@system_rookie ~]# pvs
  PV             VG   Fmt  Attr PSize   PFree  
  /dev/nvme0n1p2 rhel lvm2 a--  <19.00g      0 
  /dev/nvme0n2   vg0  lvm2 a--  <20.00g <20.00g
  /dev/nvme0n3   vg0  lvm2 a--  <20.00g <10.00g

对ext4文件系统的逻辑卷裁剪容量

  • 缩减启用空间(只能在卸载情况下进行
##[root@system_rookie ~]# df -hT
文件系统              类型      容量  已用  可用 已用% 挂载点
devtmpfs              devtmpfs  887M     0  887M    0% /dev
tmpfs                 tmpfs     904M  8.8M  895M    1% /run
tmpfs                 tmpfs     904M     0  904M    0% /sys/fs/cgroup
/dev/mapper/rhel-root xfs        17G  4.1G   13G   25% /
tmpfs                 tmpfs     181M     0  181M    0% /run/user/0
/dev/nvme0n1p1        xfs      1014M  176M  839M   18% /boot
/dev/mapper/vg0-lv0   ext4      9.8G   36M  9.3G    1% /dev/lvm
  1. 卸载文件系统
[root@system_rookie ~]# umount /dev/vg0/lv0
  1. 检测文件系统一致性
[root@system_rookie ~]# e2fsck -f /dev/vg0/lv0
e2fsck 1.44.6 (5-Mar-2019)
第 1 步:检查inode、块和大小
第 2 步:检查目录结构
第 3 步:检查目录连接性
第 4 步:检查引用计数
第 5 步:检查组概要信息
/dev/vg0/lv0:11/655360 文件(0.0% 为非连续的), 66744/2621440 块
  1. 预判扩容空间(预测能够保存原有文件的容量
[root@system_rookie ~]# resize2fs /dev/vg0/lv0 5G
resize2fs 1.44.6 (5-Mar-2019)
将 /dev/vg0/lv0 上的文件系统调整为 1310720 个块(每块 4k)。
/dev/vg0/lv0 上的文件系统现在为 1310720 个块(每块 4k)。

  1. 裁剪逻辑卷
[root@system_rookie ~]# lvreduce -L 5G /dev/vg0/lv0
  WARNING: Reducing active logical volume to 5.00 GiB.
  THIS MAY DESTROY YOUR DATA (filesystem etc.)
Do you really want to reduce vg0/lv0? [y/n]: y
  Size of logical volume vg0/lv0 changed from 10.00 GiB (2560 extents) to 5.00 GiB (1280 extents).
  Logical volume vg0/lv0 successfully resized.
  1. 检查文件系统
[root@system_rookie ~]# e2fsck -f /dev/vg0/lv0
e2fsck 1.44.6 (5-Mar-2019)
第 1 步:检查inode、块和大小
第 2 步:检查目录结构
第 3 步:检查目录连接性
第 4 步:检查引用计数
第 5 步:检查组概要信息
/dev/vg0/lv0:11/327680 文件(0.0% 为非连续的), 45158/1310720 块
  1. 挂载文件系统
[root@system_rookie ~]# mount /dev/vg0/lv0 /dev/lvm/
[root@system_rookie ~]# df -hT
文件系统              类型      容量  已用  可用 已用% 挂载点
devtmpfs              devtmpfs  887M     0  887M    0% /dev
tmpfs                 tmpfs     904M  8.8M  895M    1% /run
tmpfs                 tmpfs     904M     0  904M    0% /sys/fs/cgroup
/dev/mapper/rhel-root xfs        17G  4.1G   13G   25% /
tmpfs                 tmpfs     181M     0  181M    0% /run/user/0
/dev/nvme0n1p1        xfs      1014M  176M  839M   18% /boot
/dev/mapper/vg0-lv0   ext4      4.9G   33M  4.6G    1% /dev/lvm

缩减逻辑卷注意事项:
8. 不能在线缩减,得先卸载;
9. 确保缩减后的空间大小依然能存储原有的所有数据;
10. 在缩减之前应该先强行检查文件,以确保文件系统处于一致性状态。使用命令e2fsck -f /PATH/TO/LV

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值