10分钟学会LVM逻辑卷

前言

  • 在对磁盘进行分区大小规划时,有时往往不能确定这个分区要使用的总空间大小。而用fdisk对磁盘进行分区后,每个分区大小就已经固定了,如果分区设置的过大,会白白浪费磁盘空间;分区设置的过小,就会导致空间不够用的情况。这个时候,就可以用到LVMLogical Volume Manager逻辑卷管理)。

认识LVM

  • LVMLogical Volume Manager(逻辑卷管理)的简写LVM若干个磁盘或者磁盘分区连接为一个整块卷组,形成一个存储池。管理员可以在卷组上任意创建逻辑卷,并进一步在逻辑卷上创建文件系统。管理员通过LVM可以方便的在线调整存储卷组大小,并且可以对磁盘存储按照方式进行命名、管理和分配
  • 假设有三块磁盘/dev/sdb/dev/sdc/dev/sdd用来划分逻辑卷LVM模型如图所示:

在这里插入图片描述

  • PE :物理区域
    在这里插入图片描述

LVM基本概念

  • 物理存储设备:指系统的存储设备,如:/dev/hda1、/dev/sda等等。
  • 物理卷:简称pv,物理卷可以是整个硬盘硬盘分区从逻辑上与磁盘分区具有同样功能的设备,是LVM的基本存储逻辑块,但和基本的物理存储介质(如分区、磁盘等)比较,却包含有与LVM相关的管理参数
  • 卷组:简称vg,可以看成单独的逻辑磁盘,建立在pv之上,一个卷组中至少要包括一个pv,在卷组建立之后可以动态的添加pv卷组中。卷组的名称可以自定义
  • PE 物理区域物理区域是物理卷中可用于分配的最小存储单元物理区域的大小默认为4MB物理区域大小一旦确定将不能更改同一卷组中的所有物理卷的物理区域大小需要一致。
  • 逻辑卷:简称lv逻辑卷建立在卷组之上,卷组中的未分配空间可以用于建立新的逻辑卷逻辑卷建立后可以动态扩展或缩小空间。系统中的多个逻辑卷,可以属于同一个卷组,也可以属于不同的多个卷组
  • le 逻辑区域逻辑区域逻辑卷中可用于分配的最小存储单元逻辑区域大小取决于逻辑卷所在卷组中的物理区域大小。le的大小和pe的大小一样。

LVM整体流程

物理磁盘分区不分区都行),变成PV物理卷,加入VG卷组,卷组中抽调空间,制作LV逻辑卷,格式化挂载

LVM管理命令

功能pv管理vg管理lv管理
扫描pvscan简写pvs(简单看)vgscan简写vgs(简单看)lvscan简写lvs(简单看)
创建pvcreatevgcreatelvcreate
查看pvdisplay(详细看)vgdisplay(详细看)lvdisplay(详细看)
删除pvremovevgremovelvremove
扩展vgextendlvextend
缩小vgreducelvreduce

pvs,vgs,lvs命令

pvs

pvs(Physical Volume Status)命令是LVM(Logical Volume Manager,逻辑卷管理)工具集中的一部分,用于显示系统中物理卷的详细信息。

使用pvs命令时,它会列出系统中所有已配置的物理卷,包括它们的大小、使用情况、卷组(Volume Group, VG)归属、物理卷的状态等信息。这对于了解系统的磁盘配置、空间分配和LVM的整体布局非常有用。

基本用法
pvs

这条命令会列出系统中所有的物理卷及其详细信息。

选项
  • -a, --all:显示所有物理卷,包括未分配给任何卷组的物理卷。
  • -s, --sizes:以更易读的格式显示大小(如 GB 而不是扇区数)。
  • --unit:指定显示大小的单位,如 pvs --unit m 表示以MB为单位显示大小。
示例
  1. 列出所有物理卷

    pvs
    

    输出示例(格式和内容可能有所不同):

    PV         VG       Fmt  Attr PSize   PFree
    /dev/sda2  vg_data  lvm2 a--  19.52g  1.52g
    

    这里显示了名为/dev/sda2的物理卷,它属于名为vg_data的卷组,总大小为19.52GB,剩余空间为1.52GB。

  2. 以MB为单位显示物理卷的大小

    pvs --unit m
    

vgs

vgs(Volume Group Status)命令是LVM(Logical Volume Manager,逻辑卷管理)工具集中的一个工具,用于显示系统中卷组(Volume Groups, VGs)的详细信息。LVM允许系统管理员将多个物理硬盘或分区组合成一个卷组,然后在这个卷组上创建逻辑卷(Logical Volumes, LVs),进而在这些逻辑卷上创建文件系统。vgs命令提供了一种快速查看系统中所有卷组状态的方式。

基本用法
vgs

这条命令会列出系统中所有的卷组及其详细信息,包括卷组名、卷组的大小、卷组中的空闲空间、卷组中的物理卷数量、卷组中的逻辑卷数量等。

选项
  • -a, --all:显示所有卷组,包括空的卷组
  • -o, --output:自定义输出格式。允许你指定要显示的列,如 vgs -o vg_name,vg_size,vg_free
  • -s, --sizes:以更易读的格式显示大小(如 GB 而不是扇区数)。
  • --unit:指定显示大小的单位,如 vgs --unit g 表示以GB为单位显示大小。
示例
  1. 列出所有卷组

    vgs
    

    输出示例(格式和内容可能有所不同):

    VG       #PV #LV #SN Attr   VSize   VFree
    vg_data    1   2   0 wz--n- 19.52g  1.52g
    

    这里显示了名为vg_data卷组,它包含1个物理卷、2个逻辑卷、没有快照(#SN为0),总大小为19.52GB,剩余空间为1.52GB。

  2. 以GB为单位显示卷组的大小

    vgs --unit g
    
  3. 显示卷组的名称和大小

    vgs -o vg_name,vg_size
    

lvs

Linux中的lvscan命令是用于扫描当前系统中存在的所有LVM(Logical Volume Manager,逻辑卷管理)逻辑卷(Logical Volumes, LVs)的工具。

基本用法

lvscan

这条命令会列出系统中所有的逻辑卷及其简要信息,如逻辑卷的名称所属的卷组是否激活等。

pvcreate,vgcreate,lvcreate命令

pvcreate

pvcreate命令是LinuxLVM(Logical Volume Manager,逻辑卷管理)工具集的一个组成部分,用于将物理硬盘分区 初始化物理卷(Physical Volume, PV)。物理卷是LVM架构中的最底层,它们可以是整个硬盘、硬盘分区或者其他类型的存储设备。一旦物理卷被创建,它们就可以被添加到卷组(Volume Group, VG)中,进而在卷组上创建逻辑卷(Logical Volume, LV)。

示例
  1. 初始化整个磁盘为物理卷

    假设你想要将整个/dev/sdb磁盘初始化为物理卷,你可以运行:

    pvcreate /dev/sdb
    

    请注意,这会删除/dev/sdb上的所有数据,因此请确保在执行此操作之前已经备份了重要数据。

  2. 初始化分区为物理卷

    如果你只想将/dev/sda的第一个分区初始化为物理卷,你可以运行:

    pvcreate /dev/sda1
    

vgcreate

vgcreate 命令是 LinuxLVM(Logical Volume Manager,逻辑卷管理)工具集的一部分,用于创建一个新的卷组(Volume Group, VG)。卷组LVM 架构中的一个重要概念,它可以将一个或多个物理卷(Physical Volume, PV组合在一起,以便在逻辑层面上进行统一的磁盘空间管理

基本用法
vgcreate [选项] 卷组名 物理卷路径...
  • 卷组名:你希望创建的卷组名称,该名称在系统中必须是唯一的。
  • 物理卷路径:一个或多个物理卷的设备文件路径,这些物理卷将被加入到新创建的卷组中。
示例

假设你有两个物理卷 /dev/sdb/dev/sdc,并且你想将它们组合成一个名为 my_vg 的卷组,你可以使用以下命令:

vgcreate my_vg /dev/sdb /dev/sdc

这个命令会创建一个新的卷组 my_vg,并将 /dev/sdb/dev/sdc 加入到这个卷组中。

选项
  • -s:设置卷组中物理区域(PE)的大小。物理区域LVM 管理磁盘空间的基本单位。如果不指定,LVM 会选择一个默认大小(通常是 4MB)。
  • -l:设置卷组中可以创建的最大逻辑卷lv数量
  • -p:设置卷组中可以包含的最大物理卷pv数量
  • -L:为新卷组分配的总空间大小。注意,这个选项通常不用于 vgcreate,因为它会尝试根据物理卷的大小来自动确定卷组的大小。

lvcreate

lvcreate 命令是 LinuxLVM(Logical Volume Manager,逻辑卷管理)工具集的一部分,用于在卷组(Volume Group, VG)中创建新的逻辑卷(Logical Volume, LV)。逻辑卷LVM 提供给用户的最终磁盘分区,它们可以在不影响数据的情况下进行动态扩展缩减

基本用法
lvcreate [选项] -L <大小> -n <逻辑卷名> <卷组名>

或者

lvcreate [选项] -l <物理扩展区数量> -n <逻辑卷名> <卷组名>
  • -L <大小>:指定逻辑卷大小,单位可以是 K(KB)、M(MB)、G(GB)等。
  • -l <物理扩展区数量>:指定逻辑卷应该包含的物理区域(Physical Extent, PE数量物理区域LVM 管理磁盘空间基本单位
  • -n <逻辑卷名>:指定新创建的逻辑卷名称
  • <卷组名>:指定要在其中创建逻辑卷卷组名称。
示例
  1. 按大小创建逻辑卷

    假设你有一个名为 my_vg 的卷组,并且你想在其中创建一个大小为 10GB 的逻辑卷,名为 my_lv,你可以使用以下命令:

    lvcreate -L 10G -n my_lv my_vg
    
  2. 按物理扩展区数量创建逻辑卷(假设每个 PE 的大小为 4MB):

    如果你想创建一个包含 2560PE(即 10GB,因为 2560 * 4MB = 10GB)的逻辑卷,你可以使用以下命令:

    lvcreate -l 2560 -n my_lv my_vg
    

pvremove,vgremove,lvremove

pvremove

pvremove 命令是 LinuxLVM(Logical Volume Manager,逻辑卷管理)工具集的一部分,用于从 LVM 配置中移除(或称为“删除”)一个物理卷(Physical Volume, PV)。

注意事项
  1. 确保数据已备份:在删除物理卷之前,请确保已经备份了其上存储的所有重要数据。因为 pvremove 命令会移除物理卷的所有 LVM 元数据,这可能会导致数据丢失。

  2. 物理卷必须未被使用:物理卷不能是任何活动卷组的一部分,也不能包含任何逻辑卷(LV)或快照。如果物理卷仍在使用中,你需要先从卷组中移除它(使用 vgreduce 命令),或者删除包含它的所有逻辑卷和快照。

  3. 确认设备文件:在执行 pvremove 命令之前,请确保你指定了正确的设备文件。错误的设备文件可能会导致数据丢失或系统不稳定。

  4. 权限要求:通常,你需要 root 权限来执行 pvremove 命令。

基本用法
pvremove /dev/设备名
  • /dev/设备名:要移除的物理卷的设备文件路径。
示例

假设你想从 LVM 配置中移除 /dev/sdb 这个物理卷,你可以使用以下命令:

pvremove /dev/sdb

如果 /dev/sdb 不是一个物理卷,或者它仍在使用中(例如,它是某个卷组的一部分),pvremove 命令将显示错误消息。

验证物理卷是否已被移除

你可以使用 pvspvdisplay 命令来验证物理卷是否已从 LVM 配置中成功移除。如果物理卷已被移除,这些命令将不会列出它。

vgremove

vgremove 命令是 LinuxLVM(Logical Volume Manager,逻辑卷管理)工具集的一部分,用于删除(或称为“移除”)一个卷组(Volume Group, VG)。当你不再需要某个卷组中的所有逻辑卷(Logical Volume, LV),并且希望释放这些物理卷(Physical Volume, PV)以便重新用于其他目的时,可以使用 vgremove 命令。

基本用法
vgremove 卷组名
  • 卷组名:要删除的卷组的名称。
注意事项
  1. 确保数据已备份:在删除卷组之前,请确保已经备份了所有重要数据。因为 vgremove 命令会删除卷组及其包含的所有逻辑卷,这可能会导致数据丢失。

  2. 卷组必须为空:在删除卷组之前,你需要先删除或迁移卷组中的所有逻辑卷。如果卷组包含任何逻辑卷,vgremove 命令将拒绝执行。你可以使用 lvremove 命令删除逻辑卷。

  3. 确认卷组名:在执行 vgremove 命令之前,请确保你指定了正确的卷组名。错误的卷组名可能会导致意外的数据丢失或系统不稳定。

  4. 权限要求:通常,你需要 root 权限来执行 vgremove 命令。

示例

假设你想删除名为 my_vg 的卷组,你可以使用以下命令:

vgremove my_vg

如果 my_vg 卷组包含任何逻辑卷,vgremove 命令将显示错误消息,提示你无法删除非空卷组。在这种情况下,你需要先删除或迁移所有逻辑卷,然后再尝试删除卷组。

验证卷组是否已被移除

你可以使用 vgsvgdisplay 命令来验证卷组是否已从 LVM 配置中成功移除。如果卷组已被移除,这些命令将不会列出它。

lvremove

lvremove 命令是 LinuxLVM(Logical Volume Manager,逻辑卷管理)工具集的一部分,用于删除(或称为“移除”)一个逻辑卷(Logical Volume, LV)。当你不再需要某个逻辑卷,并且想要释放其占用的磁盘空间以便重新分配给其他逻辑卷或用于其他目的时,可以使用 lvremove 命令。

基本用法
lvremove /dev/卷组名/逻辑卷名

或者,更常见的是使用卷组名和逻辑卷名简写形式

lvremove 卷组名/逻辑卷名
  • 卷组名:包含要删除的逻辑卷的卷组的名称。
  • 逻辑卷名:要删除的逻辑卷的名称
注意事项
  1. 确保数据已备份:在删除逻辑卷之前,请确保已经备份了所有重要数据。因为 lvremove 命令会删除逻辑卷及其上的所有数据。

  2. 确认逻辑卷名:在执行 lvremove 命令之前,请确保你指定了正确的逻辑卷名。错误的逻辑卷名可能会导致意外的数据丢失。

  3. 权限要求:通常,你需要 root 权限来执行 lvremove 命令。

  4. 检查挂载点:确保逻辑卷没有被挂载在任何文件系统挂载点上。如果逻辑卷已被挂载,你需要先卸载它(使用 umount 命令)。

示例

假设你想删除名为 my_lv 的逻辑卷,它位于名为 my_vg 的卷组中,你可以使用以下命令:

lvremove /dev/my_vg/my_lv

或者,使用简写形式:

lvremove my_vg/my_lv
验证逻辑卷是否已被移除

你可以使用 lvslvdisplay 命令来验证逻辑卷是否已从 LVM 配置中成功移除。如果逻辑卷已被移除,这些命令将不会列出它。

vgextend,lvextend

vgextend

Linux中的vgextend命令是一个用于动态扩展LVM(Logical Volume Manager,逻辑卷管理)卷组的工具。通过vgextend命令,管理员可以向现有的卷组中添加一个或多个物理卷(Physical Volume, PV),从而增加卷组的总容量

基本用法

vgextend命令的基本语法如下:

vgextend 卷组名 物理卷路径 [物理卷路径...]
  • 卷组名:要扩展的卷组的名称。
  • 物理卷路径一个或多个要添加到卷组中的物理卷设备路径。可以指定多个物理卷,用空格分隔。
使用示例

假设你有一个名为vg2000的卷组,并希望将/dev/sdb2这个物理卷添加到该卷组中,以增加其容量。你可以使用以下命令:

vgextend vg2000 /dev/sdb2

执行成功后,系统会显示类似“Volume group "vg2000" successfully extended”的消息,表示卷组已成功扩展

注意事项
  1. 权限要求:通常,你需要root权限来执行vgextend命令。
  2. 物理卷状态:在将物理卷添加到卷组之前,请确保该物理卷未被其他卷组使用,并且已经通过pvcreate命令初始化为物理卷
  3. 磁盘空间:确保你有足够的空闲磁盘空间来扩展卷组。
  4. 数据备份:虽然vgextend命令本身不会破坏数据,但在进行任何磁盘操作之前,都应该做好数据备份。
验证扩展

扩展卷组后,你可以使用vgdisplay命令来查看卷组的详细信息,包括其容量是否已增加。

lvextend

Linux中的lvextend命令是LVM(Logical Volume Manager,逻辑卷管理)工具集的一部分,用于扩展(或称为“增加”)一个逻辑卷(Logical Volume, LV)的大小。当你需要为现有的逻辑卷增加更多的存储空间时,可以使用lvextend命令来实现。

基本用法

lvextend -L [+]新大小 /dev/卷组名/逻辑卷名

或者

lvextend -l +le个数 /dev/卷组名/逻辑卷名
  • -L:指定逻辑卷的新大小(以K、M、G、T为单位,例如+10G表示增加10GB)。注意,如果大小前加+,则表示在原有大小基础上增加;如果不加+,则表示设置为指定大小
  • -l:指定逻辑卷要增加的逻辑区域(Logical Extent, le)数量。le是LVM中用于分配存储空间的基本单位,其大小在创建卷组时确定。等同于pe
  • /dev/卷组名/逻辑卷名要扩展的逻辑卷的设备文件路径
  • -r自动调整逻辑卷上的文件系统大小,以使其与逻辑卷的新大小匹配。这个参数非常有用,因为它可以自动完成文件系统扩展的过程,而无需用户手动执行额外的文件系统调整命令(如resize2fsxfs_growfs)。但是,需要注意的是,并非所有的文件系统都支持在线扩展,因此在使用-r参数之前,请确保你的文件系统支持此功能。

注意事项

  1. 确保有足够的空间:在扩展逻辑卷之前,请确保卷组中有足够的未分配空间或额外的物理卷(Physical Volume, PV)可以添加到卷组中。
  2. 文件系统支持:扩展逻辑卷后,不是所有的文件系统都支持在线扩展。例如,ext4xfs支持在线扩展,而FATNTFS不支持
  3. 权限要求:通常,你需要root权限来执行lvextend命令。
使用示例

假设你有一个名为my_lv的逻辑卷,它位于名为my_vg的卷组中,并且你想要为其增加10GB的存储空间。你可以使用以下命令:

lvextend -L +10G /dev/my_vg/my_lv

执行成功后,逻辑卷my_lv的大小将增加10GB。但是,请注意,这并不会自动扩展逻辑卷上的文件系统大小。如果逻辑卷上运行的是ext4或xfs等支持在线扩展的文件系统,你可以使用resize2fs(对于ext4)或xfs_growfs(对于xfs)命令来扩展文件系统大小。

验证扩展

扩展逻辑卷后,你可以使用lvslvdisplay命令来查看逻辑卷的详细信息,包括其新的大小。如果你已经扩展了文件系统,还可以使用df -h命令来查看文件系统的使用情况。

vgreduce,lvreduce

vgreduce

Linux中的vgreduce命令是用于从现有的卷组(Volume Group, VG)中移除物理卷(Physical Volume, PV)的工具。使用vgreduce命令可以缩小卷组的容量,但前提是这些物理卷当前并未卷组中的任何逻辑卷所使用

基本用法
vgreduce [选项] 卷组名 物理卷名...
  • 卷组名:指定要从中移除物理卷的卷组名称。
  • 物理卷名:指定要移除的一个或多个物理卷的名称。可以使用空格分隔多个物理卷名。
常用选项(一般不用选项
  • -a:移除卷组中所有未使用的物理卷。如果没有在命令行中指定物理卷名,则此选项会移除所有空的物理卷。
  • -f:强制执行,覆盖各种检查、确认和保护措施。使用时需要极度谨慎。
使用示例
  1. 移除单个物理卷

    vgreduce myvg /dev/sdb1
    

    这条命令会从名为myvg的卷组中移除/dev/sdb1这个物理卷

  2. 移除所有未使用的物理卷

    vgreduce -a myvg
    

    这条命令会移除myvg卷组中所有未使用物理卷

注意事项
  • 在执行vgreduce命令之前,请确保被移除的物理卷上没有任何正在使用的数据,否则可能会导致数据丢失。
  • 如果物理卷仍在使用中,你需要先使用pvmove命令将数据迁移到卷组中的其他物理卷上,然后再执行vgreduce命令。
  • 在移除物理卷后,如果需要彻底清理LVM配置信息,可以使用pvremove命令来删除物理卷上的LVM标签和元数据。

lvreduce

Linux中的lvreduce命令是用于减小逻辑卷(Logical Volume)大小的工具。当你需要释放一些磁盘空间或重新规划磁盘空间分配时,lvreduce命令就显得非常有用。以下是对lvreduce命令的详细解释:

基本用法
lvreduce -L [新大小] /dev/卷组名/逻辑卷名

或者

lvreduce -l [新LE数] /dev/卷组名/逻辑卷名
  • -L:指定逻辑卷的新大小,可以使用单位(如MB、GB)来明确指定大小。如果大小前加+-,则表示在原有大小基础上增加或减少。
  • -l:指定逻辑卷的新大小,但使用PE(Physical Extents)单位来指定。PE是LVM中用于分配存储空间的基本单位,其大小在创建卷组时确定。
注意事项
  1. 数据备份:在执行lvreduce命令之前,务必备份好逻辑卷中的重要数据。因为减小逻辑卷大小可能会导致数据丢失或文件系统损坏。
  2. 卸载文件系统:在减小逻辑卷大小之前,通常需要卸载逻辑卷上的文件系统,确保没有进程正在使用该逻辑卷。但是,对于支持在线缩小的文件系统(如ext4、xfs),可以在文件系统挂载状态下执行lvreduce命令,并通过resize2fs(对于ext4)或xfs_growfs注意xfs只支持扩展不支持缩减,这里仅作为对比提及)等命令调整文件系统大小。然而,对于不支持在线缩小的文件系统,必须先卸载文件系统。
  3. 确认操作:执行lvreduce命令时,系统会提示确认是否减小逻辑卷的大小。在确认之前,请再次检查命令参数和逻辑卷名称,确保操作无误。
  4. 文件系统支持:并非所有的文件系统都支持在线缩小。在减小逻辑卷大小后,如果文件系统不支持在线缩小,你可能需要使用其他工具(如partclone)来备份和恢复数据,或者重新创建文件系统。
使用步骤
  1. 检查逻辑卷大小:使用lvslvdisplay命令查看当前逻辑卷的大小和状态。
  2. 备份数据:根据需要备份逻辑卷中的重要数据。
  3. 卸载文件系统(如果需要):如果文件系统不支持在线缩小,使用umount命令卸载逻辑卷上的文件系统。
  4. 执行lvreduce命令:按照基本用法中的命令格式执行lvreduce命令,减小逻辑卷的大小。
  5. 调整文件系统大小(如果需要):如果文件系统支持在线缩小,并且你已经减小了逻辑卷的大小,使用相应的文件系统调整命令(如resize2fs)来调整文件系统的大小。但是,请注意xfs文件系统不支持直接缩减。
  6. 验证操作:使用lvslvdisplay命令验证逻辑卷的大小是否已更改。
示例

假设你想要将名为mylv的逻辑卷大小减小到10GB,并且该逻辑卷位于名为myvg的卷组中,你可以使用以下命令:

lvreduce -L 10G /dev/myvg/mylv

执行该命令后,系统会提示你确认操作。输入y并回车后,逻辑卷mylv的大小将被减小到10GB。如果逻辑卷上的文件系统支持在线缩小,你可能还需要使用相应的命令来调整文件系统的大小。

实验

创建lvm逻辑卷

扩容lvm逻辑卷

  • 10
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

^~^前行者~~~

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值