Linux逻辑卷管理器LVM如何实现高效灵活的磁盘空间分配与扩展?

2026-04-11 11:071阅读0评论SEO资源
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计2070个文字,预计阅读时间需要9分钟。

Linux逻辑卷管理器LVM如何实现高效灵活的磁盘空间分配与扩展?

LVM:逻辑卷管理器,实现动态的扩展和缩减。逻辑卷是逻辑上的磁盘管理方式,将一块或几块硬盘或分区组合成一个卷组,再将卷组分割成多个逻辑卷,实现卷组空间和逻辑卷空间的动态分配。

LVM:

LVM: Logical Volume Manager,可以实现动态的扩容和缩容。逻辑卷是一种逻辑上的管理方式,把一块或多块硬盘或分区逻辑的组合在一起,命令成一个卷组(VG),卷组的空间来自所有硬盘空间的总和。(组成逻辑卷的硬盘或分区大小可以不一样)

VG:

多个磁盘或者分区组合在一起的(逻辑上的大硬盘)

LV:

是从VG中取出一块空间而来的(相当于VG这个逻辑上大硬盘的一个分区)

PE:

PE:物理盘区,作用是负责分配空间的最小单位(逻辑卷中),扩容和缩容都是以PE为单位来操作的。PE大小默认为4M

LVM的实现过程:
  • 1.将设备设为物理卷 -- 贴个标签,表示这个硬盘要作为物理卷使用了

  • 2.指定卷组(一个或多个物理卷加入卷组形成一个大硬盘)

  • 3.创建逻辑卷(相当于分区)

  • 4.创建文件系统并挂载

逻辑卷的名字:

逻辑卷有三个名称你可以用,一个真名,两个软连接。

第一个逻辑卷对应设备名:/dev/dm-# (逻辑卷的真名)

dm: device mapper,将一个或多个底层块设备组织成一个逻辑设备的模块

Linux逻辑卷管理器LVM如何实现高效灵活的磁盘空间分配与扩展?

逻辑卷的软链接:
  • /dev/mapper/VG_NAME-LV_NAME

  • /dev/VG_NAME/LV_NAME

逻辑卷的实现范例:

#创建swap空间,分区的id要改为82,创建逻辑卷,物理设备分区的id要改成8e fdisk的t选项。 #如果是使用硬盘的话,就不存在改ID的问题了。 #这些命令依赖lvm2这个工具包 #创建物理卷 pvcreate /dev/sda3 #为卷组分配物理卷 vgcreate vg0(卷组名) /dev/sda3(把创建的pv加进来) #-s可以指定PE的大小 #从卷组创建逻辑卷 lvcreate -L 256M -n data vg0 # -n:指定设备名称 -l:PE的个数 -L:指定LV的大小 mkfs.xfs /dev/vg0/data #创建文件系统 #挂载 mount /dev/vg0/data /mnt/data 逻辑卷的扩展和缩减 扩展逻辑卷:

#两步实现 -- 空间扩展和文件系统扩展 (缺点在于文件系统扩容的时候不同系列的文件系统命令不一样) #第一步实现逻辑卷的空间扩展 lvextend -L [+]#[mMgGtT](大小) /dev/VG_NAME/LV_NAME #-l:扩容多少个pe -L:扩容的大小 不写+号表示扩容到xx,写了+号表示增加xxx #第二步实现文件系统的扩展 #使用df命令看到的是文件系统的情况,扩容了的部分但是上面没有文件系统,所以就看不见 #针对ext resize2fs /dev/VG_NAME/LV_NAME #resize2fs:对ext系列的文件系统进行扩容,把文件系统同步到空间里面去 #针对xfs xfs_growfs MOUNTPOINT #一步实现容间和文件系统的扩展(不用关注文件系统的类型,直接扩容) lvextend -r -l +100%FREE /dev/VG_NAME/LV_NAME #-l:pe的个数 -r:表示不管是什么文件系统都立即同步文件系统 +100%FREE:表示剩下的所有剩余空间 扩展卷组的空间:

##添加物理卷到卷组中(分区需要改id号) pvcreate 物理卷 ##将添加的设备添加到卷组中 vgextend 卷组名 物理卷 缩减逻辑卷(有丢失数据的风险)

#建议先备份再缩减,xfs文件系统不支持缩减 #五个步骤:1.卸载 -- 2.检查文件系统完整性(不管是否完整必须) -- 3.缩减文件系统 -- 4.缩减逻辑卷大小 -- 5.重新挂载 #1.卸载: umount /dev/VG_NAME/LV_NAME #首先卸载 #2.检查文件系统完整性 e2fsck -f /dev/VG_NAME/LV_NAME #3.缩减文件系统 resize2fs /dev/VG_NAME/LV_NAME #[mMgGtT](缩减后的大小,例如2G表示缩减到2G) #4.缩减逻辑卷大小 lvreduce -L [-]#[mMgGtT](这个大小要和上面的大小相匹配) /dev/VG_NAME/LV_NAME(对谁进行缩减) #5.重新挂载 mount /dev/VG_NAME/LV_NAME mountpoint 清除缓存的方法:

使用 free -h 可以看到缓存 查看缓存对应的目录: find /proc -name 'drop*' --- /proc/sys/vm/drop_caches 清理缓存:echo 3 > /proc/sys/vm/drop_caches --- 3就是清理缓存 #缓存的目的就是为了提高性能(一般做测试的时候才清理缓存) 拆除指定的PV存储设备

要想移除指定的pv存储设备,首先要将它上面的数据移到别的pv上面去。(要确保上面的数据在别的pv上面能存得下)

#实现方法: #移动指定pv设备上的所有被占用的pe移动到同一卷组的其他成员上面 pvmove 指定的pv设备 #把pv设备从vg里面移走 vgreduce 指定的设备 #不让这个设备作为pv了 pvremove 指定的设备 删除逻辑卷

应该倒过来删除,从逻辑卷、卷组再到物理卷

  • 1.取消挂载

  • 2.删除逻辑卷: lvremove 逻辑卷

  • 3.删除卷组: vgremove 卷组

  • 4.删除物理卷:pbremove 物理卷

逻辑卷快照

快照:把当前的状态快速做一个备份,快照类似备份的效果,但是特别快
逻辑卷快照:瞬间把逻辑卷做个备份

工作逻辑:
  • 首先有一个卷组,卷组里面存在一个逻辑卷,假设逻辑卷里面有一些文件。
  • 做快照就是在同属于同一卷组的空间中创建一个逻辑卷(快照逻辑卷--snapshot,具有特殊属性)。
  • 创建快照的时候并没有把原逻辑卷中的数据备份到快照中,只是在硬盘上分配了一个空间。
  • 起到备份效果是因为在更改原文件的时候,会自动把被修改文件的旧版本推送到快照里面去了(只存放最初的原始版本)没有修改的文件就不会被放到做快照的这个空间里面去。
总结:

快照备份逻辑:创建快照的时候会分配一块空间,只有原文件发生了修改,才会把这个原文件的最初版本放到快照里面去(快照里面只放发生了改变的数据)。

快照的实现:(快照也是一种逻辑卷,所以使用的命令和创建逻辑卷的命令一样)

#为现有逻辑卷创建快照,注意ext4必须使用-p r 实现只读 #创建快照: lvcreate -l 64 -s -n data-snapshot /dev/vg0/data #-l: 指定这个快照的大小(多少个pe) # -s:表示创建的是快照,不加s表示创建的是普通逻辑卷 # -n: 快照的名字 # /dev/vg0/data -- 表示指定的是谁的快照(原始逻辑卷的名称) 创建完成后可以使用 lvs或lvdisplay来进行查看(因为快照也是一个逻辑卷) #创建快照以后进行挂载 #挂载快照,xfs注意要使用-o ro实现只读,访止快照被修改 mkdir -p /mnt/snap mount -o ro,nouuid /dev/vg0/data-snapshot /mnt/snap #nouuid--不检查uuid xfs这类文件系统不允许相同的uuid设备挂载, ext系列文件系统不用加nouuid都行的 #挂载以后,进入这个目录进行查看能看的数据的原因是(这里面的数据是来源于原逻辑卷的,并非已经将这些数据备份了,因为之后原逻辑卷的数据修改以后,才会备份被修改数据的初始数据) #恢复快照(使用快照数据还原修改过的数据) umount /dev/vg0/data-snapshot #先取消挂载 umount /dev/vg0/data #先取消挂载 lvconvert --merge /dev/vg0/data-snapshot #利用快照还原原来的逻辑卷数据 #merge -- 合并,融入 #还原以后,快照会自动删除

本文共计2070个文字,预计阅读时间需要9分钟。

Linux逻辑卷管理器LVM如何实现高效灵活的磁盘空间分配与扩展?

LVM:逻辑卷管理器,实现动态的扩展和缩减。逻辑卷是逻辑上的磁盘管理方式,将一块或几块硬盘或分区组合成一个卷组,再将卷组分割成多个逻辑卷,实现卷组空间和逻辑卷空间的动态分配。

LVM:

LVM: Logical Volume Manager,可以实现动态的扩容和缩容。逻辑卷是一种逻辑上的管理方式,把一块或多块硬盘或分区逻辑的组合在一起,命令成一个卷组(VG),卷组的空间来自所有硬盘空间的总和。(组成逻辑卷的硬盘或分区大小可以不一样)

VG:

多个磁盘或者分区组合在一起的(逻辑上的大硬盘)

LV:

是从VG中取出一块空间而来的(相当于VG这个逻辑上大硬盘的一个分区)

PE:

PE:物理盘区,作用是负责分配空间的最小单位(逻辑卷中),扩容和缩容都是以PE为单位来操作的。PE大小默认为4M

LVM的实现过程:
  • 1.将设备设为物理卷 -- 贴个标签,表示这个硬盘要作为物理卷使用了

  • 2.指定卷组(一个或多个物理卷加入卷组形成一个大硬盘)

  • 3.创建逻辑卷(相当于分区)

  • 4.创建文件系统并挂载

逻辑卷的名字:

逻辑卷有三个名称你可以用,一个真名,两个软连接。

第一个逻辑卷对应设备名:/dev/dm-# (逻辑卷的真名)

dm: device mapper,将一个或多个底层块设备组织成一个逻辑设备的模块

Linux逻辑卷管理器LVM如何实现高效灵活的磁盘空间分配与扩展?

逻辑卷的软链接:
  • /dev/mapper/VG_NAME-LV_NAME

  • /dev/VG_NAME/LV_NAME

逻辑卷的实现范例:

#创建swap空间,分区的id要改为82,创建逻辑卷,物理设备分区的id要改成8e fdisk的t选项。 #如果是使用硬盘的话,就不存在改ID的问题了。 #这些命令依赖lvm2这个工具包 #创建物理卷 pvcreate /dev/sda3 #为卷组分配物理卷 vgcreate vg0(卷组名) /dev/sda3(把创建的pv加进来) #-s可以指定PE的大小 #从卷组创建逻辑卷 lvcreate -L 256M -n data vg0 # -n:指定设备名称 -l:PE的个数 -L:指定LV的大小 mkfs.xfs /dev/vg0/data #创建文件系统 #挂载 mount /dev/vg0/data /mnt/data 逻辑卷的扩展和缩减 扩展逻辑卷:

#两步实现 -- 空间扩展和文件系统扩展 (缺点在于文件系统扩容的时候不同系列的文件系统命令不一样) #第一步实现逻辑卷的空间扩展 lvextend -L [+]#[mMgGtT](大小) /dev/VG_NAME/LV_NAME #-l:扩容多少个pe -L:扩容的大小 不写+号表示扩容到xx,写了+号表示增加xxx #第二步实现文件系统的扩展 #使用df命令看到的是文件系统的情况,扩容了的部分但是上面没有文件系统,所以就看不见 #针对ext resize2fs /dev/VG_NAME/LV_NAME #resize2fs:对ext系列的文件系统进行扩容,把文件系统同步到空间里面去 #针对xfs xfs_growfs MOUNTPOINT #一步实现容间和文件系统的扩展(不用关注文件系统的类型,直接扩容) lvextend -r -l +100%FREE /dev/VG_NAME/LV_NAME #-l:pe的个数 -r:表示不管是什么文件系统都立即同步文件系统 +100%FREE:表示剩下的所有剩余空间 扩展卷组的空间:

##添加物理卷到卷组中(分区需要改id号) pvcreate 物理卷 ##将添加的设备添加到卷组中 vgextend 卷组名 物理卷 缩减逻辑卷(有丢失数据的风险)

#建议先备份再缩减,xfs文件系统不支持缩减 #五个步骤:1.卸载 -- 2.检查文件系统完整性(不管是否完整必须) -- 3.缩减文件系统 -- 4.缩减逻辑卷大小 -- 5.重新挂载 #1.卸载: umount /dev/VG_NAME/LV_NAME #首先卸载 #2.检查文件系统完整性 e2fsck -f /dev/VG_NAME/LV_NAME #3.缩减文件系统 resize2fs /dev/VG_NAME/LV_NAME #[mMgGtT](缩减后的大小,例如2G表示缩减到2G) #4.缩减逻辑卷大小 lvreduce -L [-]#[mMgGtT](这个大小要和上面的大小相匹配) /dev/VG_NAME/LV_NAME(对谁进行缩减) #5.重新挂载 mount /dev/VG_NAME/LV_NAME mountpoint 清除缓存的方法:

使用 free -h 可以看到缓存 查看缓存对应的目录: find /proc -name 'drop*' --- /proc/sys/vm/drop_caches 清理缓存:echo 3 > /proc/sys/vm/drop_caches --- 3就是清理缓存 #缓存的目的就是为了提高性能(一般做测试的时候才清理缓存) 拆除指定的PV存储设备

要想移除指定的pv存储设备,首先要将它上面的数据移到别的pv上面去。(要确保上面的数据在别的pv上面能存得下)

#实现方法: #移动指定pv设备上的所有被占用的pe移动到同一卷组的其他成员上面 pvmove 指定的pv设备 #把pv设备从vg里面移走 vgreduce 指定的设备 #不让这个设备作为pv了 pvremove 指定的设备 删除逻辑卷

应该倒过来删除,从逻辑卷、卷组再到物理卷

  • 1.取消挂载

  • 2.删除逻辑卷: lvremove 逻辑卷

  • 3.删除卷组: vgremove 卷组

  • 4.删除物理卷:pbremove 物理卷

逻辑卷快照

快照:把当前的状态快速做一个备份,快照类似备份的效果,但是特别快
逻辑卷快照:瞬间把逻辑卷做个备份

工作逻辑:
  • 首先有一个卷组,卷组里面存在一个逻辑卷,假设逻辑卷里面有一些文件。
  • 做快照就是在同属于同一卷组的空间中创建一个逻辑卷(快照逻辑卷--snapshot,具有特殊属性)。
  • 创建快照的时候并没有把原逻辑卷中的数据备份到快照中,只是在硬盘上分配了一个空间。
  • 起到备份效果是因为在更改原文件的时候,会自动把被修改文件的旧版本推送到快照里面去了(只存放最初的原始版本)没有修改的文件就不会被放到做快照的这个空间里面去。
总结:

快照备份逻辑:创建快照的时候会分配一块空间,只有原文件发生了修改,才会把这个原文件的最初版本放到快照里面去(快照里面只放发生了改变的数据)。

快照的实现:(快照也是一种逻辑卷,所以使用的命令和创建逻辑卷的命令一样)

#为现有逻辑卷创建快照,注意ext4必须使用-p r 实现只读 #创建快照: lvcreate -l 64 -s -n data-snapshot /dev/vg0/data #-l: 指定这个快照的大小(多少个pe) # -s:表示创建的是快照,不加s表示创建的是普通逻辑卷 # -n: 快照的名字 # /dev/vg0/data -- 表示指定的是谁的快照(原始逻辑卷的名称) 创建完成后可以使用 lvs或lvdisplay来进行查看(因为快照也是一个逻辑卷) #创建快照以后进行挂载 #挂载快照,xfs注意要使用-o ro实现只读,访止快照被修改 mkdir -p /mnt/snap mount -o ro,nouuid /dev/vg0/data-snapshot /mnt/snap #nouuid--不检查uuid xfs这类文件系统不允许相同的uuid设备挂载, ext系列文件系统不用加nouuid都行的 #挂载以后,进入这个目录进行查看能看的数据的原因是(这里面的数据是来源于原逻辑卷的,并非已经将这些数据备份了,因为之后原逻辑卷的数据修改以后,才会备份被修改数据的初始数据) #恢复快照(使用快照数据还原修改过的数据) umount /dev/vg0/data-snapshot #先取消挂载 umount /dev/vg0/data #先取消挂载 lvconvert --merge /dev/vg0/data-snapshot #利用快照还原原来的逻辑卷数据 #merge -- 合并,融入 #还原以后,快照会自动删除