linux lvm管理基础教程

linux lvm管理基础教程

本人是在redhat7.x系统上亲测lvm管理功能,至于文中所受的CentOS 6 没有亲自试过。

本文来自:
https://geekpeek.net/lvm-physical-volume-management/ (pv)
https://geekpeek.net/lvm-volume-group-management/ (vg)
https://geekpeek.net/lvm-logical-volume-management/ ( lv)

因为是百度直译过来的,所以很多地方不理解,具体请查看原文。

LVM快速理解通道:
      在计算机存储中,逻辑卷管理或LVM提供了一种在大容量存储设备上分配空间的方法,该方法比传统的分区方案更灵活。尤其是,卷管理器可以连接,条纹一起或以其它方式结合分区成较大的虚拟的,管理员可以重新大小或移动,从而可能在不中断系统使用。
      如LVM设计方案中所见,物理卷(PV)是LVM的底层。第二层是卷组(VG),最后的第三层是逻辑卷(LV)。首先,我们需要将硬盘添加到物理卷,然后我们将其添加到卷组。从卷组我们创建逻辑卷,我们可以在其上创建文件系统。

  • 第1部分 - LVM - CentOS 6上的物理卷管理
  • 第2部分 - LVM - CentOS 6上的卷组管理
  • 第3部分 - LVM - CentOS 6上的逻辑卷管理

 

在这篇文章中

  • 我们将学习如何创建,删除和移动物理卷(PV)。我们将学习如何准备要添加到卷组的物理卷。
  • 我们将学习如何创建,删除,扩展,缩小,重命名,合并,拆分和更改卷组(VG)。我们将学习如何为逻辑卷准备卷组。
  • 我们将学习如何使用文件系统调整大小来显示,创建和扩展,减少文件系统大小调整,调整大小,重命名和删除逻辑卷(LV)。

下图是基本的设计方案:
image

 

logical_volume 逻辑卷 (爷爷)
volume-group 卷组  (父亲)
physical-volume 物理卷  (儿子)

一、linux 下物理卷操作

1.1 显示物理卷

[root@despotic /]# pvdisplay
  WARNING: Device for PV Gvq9YV-oG4U-sLja-GEeh-CyQm-jUfZ-TssPji not found or rejected by a filter.
  --- Physical volume ---
  PV Name               /dev/sda2
  VG Name               rhel
  PV Size               <29.00 GiB / not usable 3.00 MiB
  Allocatable           yes 
  PE Size               4.00 MiB
  Total PE              7423
  Free PE               1
  Allocated PE          7422
  PV UUID               AnzTXd-H3Zb-wEa-HVxU-S0HS-y8Z-BtLBSS
      我们还可以使用“ pvscan ”或“ pvs”命令显示物理卷,但是我们看到输出有点不同 - 使用您最喜欢的那个:

[root@despotic /]# pvscan
  WARNING: Device for PV Gvq9YV-oG4U-sLja-GEeh-CyQm-jUfZ-TssPji not found or rejected by a filter.
  PV /dev/sda2   VG rhel            lvm2 [<29.00 GiB / 4.00 MiB free]
  Total: 1 [<29.00 GiB] / in use: 1 [<29.00 GiB] / in no VG: 0 [0   ]
[root@despotic /]# pvs
  WARNING: Device for PV Gvq9YV-oG4U-sLja-GEeh-CyQm-jUfZ-TssPji not found or rejected by a filter.
  PV         VG   Fmt  Attr PSize   PFree
  /dev/sda2  rhel lvm2 a--  <29.00g 4.00m
[root@despotic /]#

      我们看到目前只存在一种现有的PV。此PV称为/dev/sda2,是PV,用于保存系统根和交换分区。使用“ pvdisplay ”命令,我们可以获得额外的信息 - Total PE,Free PE和Allocated PE。这是物理范围。许多物理范围构建物理卷。

1.2 将硬盘添加到物理卷

      我们使用“ pvcreate /dev/harddisk”命令将硬盘添加到物理卷。它非常简单,不需要额外的参数。让我们看一个向PV添加/dev/sdb硬盘的示例:

[root@despotic ~]# pvcreate /dev/sdb 
Physical volume "/dev/sdb" successfully created.

      我们可以看到物理卷已成功创建。让我们再次使用“pvdisplay”检查:

[root@despotic ~]# pvdisplay 
  WARNING: Device for PV Gvq9YV-oG4U-sLja-GEeh-CyQm-jUfZ-TssPji not found or rejected by a filter.
  --- Physical volume ---
  PV Name               /dev/sda2
  VG Name               rhel
  PV Size               <29.00 GiB / not usable 3.00 MiB
  Allocatable           yes 
  PE Size               4.00 MiB
  Total PE              7423
  Free PE               1
  Allocated PE          7422
  PV UUID               AnzTXd-H3Zb-wEa-HVxU-S0HS-y8Z-BtLBSS
  "/dev/sdb" is a new physical volume of "1.00 GiB"
  
  --- NEW Physical volume ---
  PV Name               /dev/sdb
  VG Name               
  PV Size               1.00 GiB
  Allocatable           NO
  PE Size               0   
  Total PE              0
  Free PE               0
  Allocated PE          0
  PV UUID               bkXJBo-bUt-b0L-qJ0E-tJIs-fHVB-mh1Ue3

      正如我们所说,我们还可以使用“ pvscan ”和“ pvs ”命令检查PV状态:

[root@despotic ~]# pvscan 
  PV /dev/sda2   VG rhel            lvm2 [<29.00 GiB / 4.00 MiB free]
  PV /dev/sdb                       lvm2 [1.00 GiB]
  Total: 2 [<30.00 GiB] / in use: 1 [<29.00 GiB] / in no VG: 1 [1.00 GiB]

[root@despotic ~]# pvs
  PV         VG   Fmt  Attr PSize   PFree
  /dev/sda2  rhel lvm2 a--  <29.00g 4.00m
  /dev/sdb        lvm2 ---    1.00g 1.00g

      我们看到,/dev/sdbPV已创建,但不可分配。运行“pvscan”命令为我们提供了1GB空间(无VG(卷组))的信息 - 这是不可分配的原因。

1.3 删除物理卷

      我们可以使用“ pvremove”命令删除物理卷。移除PV时应小心。在将PV从系统中移除之前,请确保没有为PV分配物理范围!您可以使用“ pvmove ”命令执行此操作。
      如果您删除带有文件系统的PV,您将丢失/破坏数据!我将在另一篇文章中介绍如何做到这一点。

[root@despotic ~]# pvremove /dev/sdb 
  Labels on physical volume "/dev/sdb" successfully wiped.
[root@despotic ~]# pvscan 
  PV /dev/sda2   VG rhel            lvm2 [<29.00 GiB / 4.00 MiB free]
  Total: 1 [<29.00 GiB] / in use: 1 [<29.00 GiB] / in no VG: 0 [0   ]

      正如我们所看到的,我们成功删除了我们添加的所有其他物理卷。

1.4 移动分配的物理范围(不会做)

      “pvmove ”命令允许您将SourcePhysicalVolume上分配的物理盘区(PE)移动到一个或多个其他物理卷(PV)。当您想要移除某些PV但是必须将所有数据移离它时,这很方便。       要将/dev/sdb上任何逻辑卷的所有逻辑扩展区移动到卷组中其他位置的可用物理扩展区,请提供详细的运行时信息,请使用命令:

[root@foo ~]# pvmove -v /dev/sdc
 Finding volume group "geekpeek"
 Archiving volume group "geekpeek" metadata (seqno 14).
 Creating logical volume pvmove0
 Moving 129 extents of logical volume geekpeek/LogVol01
 Found volume group "geekpeek"
 activation/volume_list configuration setting not defined: Checking only host tags for geekpeek/LogVol01
 Updating volume group metadata
 Found volume group "geekpeek"
 Found volume group "geekpeek"
 Creating geekpeek-pvmove0
 Loading geekpeek-pvmove0 table (253:3)
 Loading geekpeek-LogVol01 table (253:2)
 Suspending geekpeek-LogVol01 (253:2) with device flush
 Suspending geekpeek-pvmove0 (253:3) with device flush
 Found volume group "geekpeek"
 activation/volume_list configuration setting not defined: Checking only host tags for geekpeek/pvmove0
 Resuming geekpeek-pvmove0 (253:3)
 Found volume group "geekpeek"
 Loading geekpeek-pvmove0 table (253:3)
 Suppressed geekpeek-pvmove0 (253:3) identical table reload.
 Resuming geekpeek-LogVol01 (253:2)
 Creating volume group backup "/etc/lvm/backup/geekpeek" (seqno 15).
 Checking progress before waiting every 15 seconds
 /dev/sdc: Moved: 0.0%
 /dev/sdc: Moved: 78.3%
 /dev/sdc: Moved: 100.0%
 Found volume group "geekpeek"
 Found volume group "geekpeek"
 Loading geekpeek-LogVol01 table (253:2)
 Loading geekpeek-pvmove0 table (253:3)
 Suspending geekpeek-LogVol01 (253:2) with device flush
 Suspending geekpeek-pvmove0 (253:3) with device flush
 Found volume group "geekpeek"
 Resuming geekpeek-pvmove0 (253:3)
 Found volume group "geekpeek"
 Resuming geekpeek-LogVol01 (253:2)
 Found volume group "geekpeek"
 Removing geekpeek-pvmove0 (253:3)
 Removing temporary pvmove LV
 Writing out final volume group after pvmove
 Creating volume group backup "/etc/lvm/backup/geekpeek" (seqno 17).

      使用“pvmove -v /dev/sdc”,我们将所有已分配的PE从/dev/sdc移动到另一个(空闲)物理卷。
      只有现在我们才能安全地从我们的系统中删除名为/ dev / sdc的PV(preove)。

二、卷组操作

2.1 显示卷组

[root@despotic ~]# vgdisplay 
  --- Volume group ---
  VG Name               rhel
  System ID             
  Format                lvm2
  Metadata Areas        1
  Metadata Sequence No  8
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                7
  Open LV               7
  Max PV                0
  Cur PV                1
  Act PV                1
  VG Size               <29.00 GiB
  PE Size               4.00 MiB
  Total PE              7423
  Alloc PE / Size       7422 / 28.99 GiB
  Free  PE / Size       1 / 4.00 MiB
  VG UUID               bGwqky-EWNn-Mq8U-ZusG-hIPn-Zei6-BU9H2T

      我们还可以使用“vgscan”或“vgs”命令显示 卷组,但是我们看到输出有点不同-在下面的示例中,我将使用“vgdisplay”,因为 它为我提供了最多信息:

[root@despotic ~]# vgs
  VG   #PV #LV #SN Attr   VSize   VFree
  rhel   1   7   0 wz--n- <29.00g 4.00m
[root@despotic ~]# vgscan
  Reading volume groups from cache.
  Found volume group "rhel" using metadata type lvm2

      我们看到目前只有一个现有的卷组。此VG称为rhel,是VG,用于保存系统根和交 换分区。使用“ vgdisplay”命令,我们可以获得额外的信息VG大小,PE大小,总PE ,......这是物理范围。许多物理范围构建物理卷。

2.2 将物理卷添加到卷组

      首先创建一个物理卷

[root@despotic ~]# pvcreate /dev/sdb 
  Physical volume "/dev/sdb" successfully created.
[root@despotic ~]# pvs
  PV         VG   Fmt  Attr PSize   PFree
  /dev/sda2  rhel lvm2 a--  <29.00g 4.00m
  /dev/sdb        lvm2 ---    1.00g 1.00g

      将物理卷添加到卷组

[root@despotic ~]# vgcreate sunvg /dev/sdb 
  Volume group "sunvg" successfully created
[root@despotic ~]# vgdisplay 
  --- Volume group ---
  VG Name               sunvg
  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               1020.00 MiB
  PE Size               4.00 MiB
  Total PE              255
  Alloc PE / Size       0 / 0   
  Free  PE / Size       255 / 1020.00 MiB
  VG UUID               YI70Ki-htIg-JRk9-M9CJ-VHad-TgXn-8kECDU

      我们可以看到VG已成功创建。我们还可以看到“sunvg”VG的完整状态 VG Size,总PE,PE尺寸,......

2.3 扩展卷组

      我们可以使用“vgextend”命令扩展卷组。简单的语法是“ vgextend name /dev/harddisk”。
      通过扩展VG,您可以添加PV并扩展VG的大小。在我们的示例中,我们将通过添加/dev/sdc PV 将名为“ sun ”的VG 从1GB扩展到2GB

[root@despotic ~]# vgextend sunvg /dev/sdc
WARNING: ext4 signature detected on /dev/sdc at offset 1080. Wipe it? [y/n]: y
  Wiping ext4 signature on /dev/sdc.
  Physical volume "/dev/sdc" successfully created.
  Volume group "sunvg" successfully extended

[root@despotic ~]# vgdisplay 
  --- Volume group ---
  VG Name               sunvg
  System ID             
  Format                lvm2
  Metadata Areas        2
  Metadata Sequence No  2
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                0
  Open LV               0
  Max PV                0
  Cur PV                2
  Act PV                2
  VG Size               1.99 GiB
  PE Size               4.00 MiB
  Total PE              510
  Alloc PE / Size       0 / 0   
  Free  PE / Size       510 / 1.99 GiB
  VG UUID               HfRecO-9b2Y-4WqO-FJZv-2DoB-Odfq-DAbbhy

2.4 裁剪卷组

      我们可以使用“vgreduce”命令减少卷组。
      简单的语法是“vgreduce name /dev/harddisk”。通过降低VG,您可以从中移除PV并降低VG的尺寸。在我们的示例 中,我们将通过删除/ dev / sdd PV 将称为“ geekpeek ”的VG从2GB减少到1GB:

[root@despotic ~]# vgreduce sunvg /dev/sdc 
  Removed "/dev/sdc" from volume group "sunvg"
[root@despotic ~]# vgdisplay 
  --- Volume group ---
  VG Name               sunvg
  System ID             
  Format                lvm2
  Metadata Areas        1
  Metadata Sequence No  3
  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               1020.00 MiB
  PE Size               4.00 MiB
  Total PE              255
  Alloc PE / Size       0 / 0   
  Free  PE / Size       255 / 1020.00 MiB
  VG UUID               HfRecO-9b2Y-4WqO-FJZv-2DoB-Odfq-DAbbhy

2.5 拆分卷组

      我们可以使用“vgsplit”命令拆分Volume Group.
      简单的语法是“vgsplit name newname/dev/harddisk”. 通过拆分VG,您可以从中移除PV并降低VG的大小.。在我们的示例中,我们将拆分称为“sunvg”的VG并创建一个名为“runvg”的新VG

      首先扩展一下卷组,保证可以拆分出来

[root@despotic ~]# vgextend sunvg /dev/sdc 
  Volume group "sunvg" successfully extended
[root@despotic ~]# vgs
  VG    #PV #LV #SN Attr   VSize   VFree
  rhel    1   7   0 wz--n- <29.00g 4.00m
  sunvg   2   0   0 wz--n-   1.99g 1.99g

      然后进行拆分

[root@despotic ~]# vgsplit sunvg runvg /dev/sdc 
  New volume group "runvg" successfully split from "sunvg"
[root@despotic ~]# vgdisplay 
  --- Volume group ---
  VG Name               sunvg
  System ID             
  Format                lvm2
  Metadata Areas        1
  Metadata Sequence No  4
  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               1020.00 MiB
  PE Size               4.00 MiB
  Total PE              255
  Alloc PE / Size       0 / 0   
  Free  PE / Size       255 / 1020.00 MiB
  VG UUID               MPDOtM-IAYu-kQSA-AL7m-Jq4t-3dKY-AGbjdt

  --- Volume group ---
  VG Name               runvg
  System ID             
  Format                lvm2
  Metadata Areas        1
  Metadata Sequence No  2
  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               1020.00 MiB
  PE Size               4.00 MiB
  Total PE              255
  Alloc PE / Size       0 / 0   
  Free  PE / Size       255 / 1020.00 MiB
  VG UUID               3r2F6u-wud4-4NBA-k17f-BdYy-R7cl-u5nKzy

2.6 合并卷组

      在下一步中,我们将拆分的卷组(VG)合并在一起。我们可以将VG与vgmerge命令合并。简单的语法是"vgmerge name1 name2"
      首先查看一下当前的卷组runvg,sunvg

[root@despotic ~]# vgs
  VG    #PV #LV #SN Attr   VSize    VFree   
  rhel    1   7   0 wz--n-  <29.00g    4.00m
  runvg   1   0   0 wz--n- 1020.00m 1020.00m
  sunvg   1   0   0 wz--n- 1020.00m 1020.00m

      然后对runvg和sunvg进行合并,合并成功之后就剩下一个runvg,但是同时runvg的容量由1G改变为了2G

[root@despotic ~]# vgmerge runvg sunvg
  Volume group "sunvg" successfully merged into "runvg"
[root@despotic ~]# vgs
  VG    #PV #LV #SN Attr   VSize   VFree
  rhel    1   7   0 wz--n- <29.00g 4.00m
  runvg   2   0   0 wz--n-   1.99g 1.99g
[root@despotic ~]# vgdisplay 
  --- Volume group ---
  VG Name               runvg
  System ID             
  Format                lvm2
  Metadata Areas        2
  Metadata Sequence No  2
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                0
  Open LV               0
  Max PV                0
  Cur PV                2
  Act PV                2
  VG Size               1.99 GiB
  PE Size               4.00 MiB
  Total PE              510
  Alloc PE / Size       0 / 0   
  Free  PE / Size       510 / 1.99 GiB
  VG UUID               Bb77hr-MK5E-TXSX-anqL-aQkv-XMwn-lyUUxl

2.7 更改卷组

      我们可以使用“vgchange”命令更改卷组参数。简单的语法是“vgchange name-parameter value”。
      通过更改VG,您可以更改VG的参数有关详细信息,请查看“vgchange -help”。在我们的示例中,我们将更改名为“runvg”的VG的PE大小:

[root@despotic ~]# vgchange runvg -s 8144KB
  Physical Extent size must be a multiple of 128.00 KiB when not a power of 2.
  物理范围大小必须是128 Kib的倍数,而不是2的幂。
[root@despotic ~]# vgchange runvg -s 8192KB
  New size 2088960 for /dev/sdc not an exact number of new extents.  
  新的大小为2088960 /DEV/SDC的新的大小不是新数量的确切数量。
[root@despotic ~]# vgdisplay 
  --- Volume group ---
  VG Name               runvg
  System ID             
  Format                lvm2
  Metadata Areas        2
  Metadata Sequence No  2
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                0
  Open LV               0
  Max PV                0
  Cur PV                2
  Act PV                2
  VG Size               1.99 GiB
  PE Size               4.00 MiB
  Total PE              510
  Alloc PE / Size       0 / 0   
  Free  PE / Size       510 / 1.99 GiB
  VG UUID               Bb77hr-MK5E-TXSX-anqL-aQkv-XMwn-lyUUxl
      如上,此时依旧没有改变成功

[root@despotic ~]# vgchange runvg -s 2048KB
  Volume group "runvg" successfully changed
[root@despotic ~]# vgdisplay 
  --- Volume group ---
  VG Name               runvg
  System ID             
  Format                lvm2
  Metadata Areas        2
  Metadata Sequence No  3
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                0
  Open LV               0
  Max PV                0
  Cur PV                2
  Act PV                2
  VG Size               1.99 GiB
  PE Size               2.00 MiB
  Total PE              1020
  Alloc PE / Size       0 / 0   
  Free  PE / Size       1020 / 1.99 GiB
  VG UUID               Bb77hr-MK5E-TXSX-anqL-aQkv-XMwn-lyUUxl

      在这里,我们将他调小,可以看到PE Size 已然修改成功

2.8 重命名卷组

      我们可以使用“vgrename”命令重命名Volume Group。简单的语法是“vgrename name1 name2”
      在我们的实例中,我们将名为“runvg”的VG重命名为“sunvg”

[root@despotic ~]# vgs
  VG    #PV #LV #SN Attr   VSize   VFree
  rhel    1   7   0 wz--n- <29.00g 4.00m
  runvg   2   0   0 wz--n-   1.99g 1.99g
[root@despotic ~]# vgrename runvg sunvg
  Volume group "runvg" successfully renamed to "sunvg"
[root@despotic ~]# vgdisplay 
  --- Volume group ---
  VG Name               sunvg
  System ID             
  Format                lvm2
  Metadata Areas        2
  Metadata Sequence No  4
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                0
  Open LV               0
  Max PV                0
  Cur PV                2
  Act PV                2
  VG Size               1.99 GiB
  PE Size               2.00 MiB
  Total PE              1020
  Alloc PE / Size       0 / 0   
  Free  PE / Size       1020 / 1.99 GiB
  VG UUID               Bb77hr-MK5E-TXSX-anqL-aQkv-XMwn-lyUUxl

2.9 删除卷组

      我们可以使用“vgremove”命令删除卷组。简单的语法是“vgremove name”
      在我们的实例中,我们将删除名为“sunvg”的卷组

[root@despotic ~]# vgremove sunvg
  Volume group "sunvg" successfully removed
[root@despotic ~]# vgs
  VG   #PV #LV #SN Attr   VSize   VFree
  rhel   1   7   0 wz--n- <29.00g 4.00m
[root@despotic ~]# vgdisplay 
  --- Volume group ---
  VG Name               rhel
  System ID             
  Format                lvm2
  Metadata Areas        1
  Metadata Sequence No  8
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                7
  Open LV               7
  Max PV                0
  Cur PV                1
  Act PV                1
  VG Size               <29.00 GiB
  PE Size               4.00 MiB
  Total PE              7423
  Alloc PE / Size       7422 / 28.99 GiB
  Free  PE / Size       1 / 4.00 MiB
  VG UUID               bGwqky-EWNn-Mq8U-ZusG-hIPn-Zei6-BU9H2T

      已经看不到runvg

      在管理卷组之前,要对逻辑卷进行适当的重新配置!如果没有,你可以松开或整理你的数据!
      Before you manage your Volume Groups make appropriate reconfiguration of the Logical Volumes! If not, you can loose or corrput your data!

三、linux 下逻辑卷操作

3.1 显示逻辑卷

      我们可以使用“ lvdisplay ”命令在系统上显示所有逻辑卷(LV)

[root@despotic ~]# lvs
  LV    VG    Attr       LSize   Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  sunlv sunvg -wi-a----- 500.00m
[root@despotic ~]# lvscan 
  ACTIVE            '/dev/sunvg/sunlv' [500.00 MiB] inherit
[root@despotic ~]# lvdisplay 
  --- Logical volume ---
  LV Path                /dev/sunvg/sunlv
  LV Name                sunlv
  VG Name                sunvg
  LV UUID                9bMVAo-GIl8-EatT-OuGs-KPbK-nqhE-QLZ8O2
  LV Write Access        read/write
  LV Creation host, time despotic, 2018-12-05 11:37:58 +0800
  LV Status              available
  # open                 0
  LV Size                500.00 MiB
  Current LE             125
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     8192
  Block device           253:7 

3.2 创建逻辑卷

      要创建新的逻辑卷(LV),我们首先必须检查所需的卷组(VG)以获得自由支配的物理范围(PE)自由的PE。
      To create new Logical Volume (LV) we first have to check the desired Volume Group (VG) for free Physical Extent (PE) – Free PE’s.

检查卷组的可用空间

[root@despotic ~]# vgdisplay
--- Volume group ---
  VG Name               sunvg
  System ID             
  Format                lvm2
  Metadata Areas        2
  Metadata Sequence No  4
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                0
  Open LV               0
  Max PV                0
  Cur PV                2
  Act PV                2
  VG Size               1.99 GiB
  PE Size               4.00 MiB
  Total PE              510
  Alloc PE / Size       0 / 0   
  Free  PE / Size       510 / 1.99 GiB
  VG UUID               kl3yih-3Twc-YaqS-HDSF-0JCs-JDIQ-eCcRkh

      可以清晰的看见卷组sunvg有1.99G的可用空间使用,我们可以使用lvcreate创建逻辑卷
      简单的命令为“lvcreate -n lvname -L Size(500B/M/G/T) vgname”

[root@despotic ~]# lvcreate -n sunlv -L 500M sunvg
  Logical volume "sunlv" created.

      创建完成,可以看见新加了大小为500M的一个逻辑卷,所属卷组为sunvg

[root@despotic ~]# lvs
  LV    VG    Attr       LSize   Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  sunlv sunvg -wi-a----- 500.00m   
[root@despotic ~]# lvscan 
  ACTIVE            '/dev/sunvg/sunlv' [500.00 MiB] inherit 
[root@despotic ~]# lvdisplay
    --- Logical volume ---
  LV Path                /dev/sunvg/sunlv
  LV Name                sunlv
  VG Name                sunvg
  LV UUID                TV6RJ3-c7N2-yeFp-rbfs-73E6-Cu1f-t60PWk
  LV Write Access        read/write
  LV Creation host, time despotic, 2018-12-05 11:52:04 +0800
  LV Status              available
  # open                 0
  LV Size                500.00 MiB
  Current LE             125
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     8192
  Block device           253:7

      查看一下sunvg卷组所剩余的容量

[root@despotic ~]# vgs
  VG    #PV #LV #SN Attr   VSize   VFree
  sunvg   2   1   0 wz--n-   1.99g 1.50g

      而如果我们使用的参数为-l,而不是-L,那么此时可以可以这样理解 ,要查看更详细的内容,请使用lvcreate --help

其他部分创建方式
  1. 从sunvg中拿出20个单位来给runlv,一个单位大小为4G
lvcreate -n runlv -l 20 sunvg

 

  1. 从sunvg中拿出一半给rsunlv,大小为1024
lvcreate -l 50%VG -n rsunlv sunvg
  1. 在卷组sunvg中创建大小为20M的逻辑卷,并命名为srunlv
lvcreate -L 20 -n srunlv sunvg
  1. 将卷组sunvg中剩余的空间全部分配给olv
lvcreate --name olv -l 100%FREE sunvg

我们看一下刚才创建的卷组

[root@despotic ~]# lvs
  LV     VG    Attr       LSize    Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert                                               
  olv    sunvg -wi-a-----  420.00m
  rsunlv sunvg -wi-a----- 1020.00m
  runlv  sunvg -wi-a-----   80.00m
  srunlv sunvg -wi-a-----   20.00m
  sunlv  sunvg -wi-a-----  500.00m

3.3 扩展逻辑卷

      我们可以使用“lvextend”命令扩展逻辑卷。简单的语法是“lvextend -L +size /dev/vgname/lvname”
      您还可以调整文件系统的大小,但需要添加-r参数“lvextend -L + size /dev/vgname/lvname -r”。
      在我们的例子中,我们将把sunlv又500M扩容至1G(+500M)
      当然,您首先要检查VG中是否有足够的空间来完成操作!

[root@despotic ~]# lvextend -L +500M /dev/sunvg/sunlv 
  Size of logical volume sunvg/sunlv changed from 500.00 MiB (125 extents) to 1000.00 MiB (250 extents).
  Logical volume sunvg/sunlv successfully resized.
[root@despotic ~]# lvs
  LV    VG    Attr       LSize    Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  sunlv sunvg -wi-a----- 1000.00m

      要自动调整LV和文件系统的大小,请使用-r参数!我们可以在安装时动态调整文件系统的大小!

[root@despotic ~]# lvextend -L +200M  /dev/sunvg/sunlv -r
fsadm: Cannot get FSTYPE of "/dev/mapper/sunvg-sunlv".
  Filesystem check failed.

提示文件系统检查失败。先进行格式化一下

[root@despotic ~]# mkfs.ext4 /dev/sunvg/sunlv 
mke2fs 1.42.9 (28-Dec-2013)
文件系统标签=
OS type: Linux
块大小=4096 (log=2)
分块大小=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
64000 inodes, 256000 blocks
12800 blocks (5.00%) reserved for the super user
第一个数据块=0
Maximum filesystem blocks=262144000
8 block groups
32768 blocks per group, 32768 fragments per group
8000 inodes per group
Superblock backups stored on blocks: 
    32768, 98304, 163840, 229376

Allocating group tables: 完成                            
正在写入inode表: 完成                            
Creating journal (4096 blocks): 完成
Writing superblocks and filesystem accounting information: 完成

格式化完成,重新进行调整

[root@despotic ~]# lvextend -L +200M /dev/sunvg/sunlv -r
fsck,来自 util-linux 2.23.2
/dev/mapper/sunvg-sunlv: clean, 11/64000 files, 8748/256000 blocks
  Size of logical volume sunvg/sunlv changed from 1000.00 MiB (250 extents) to 1.17 GiB (300 extents).
  Logical volume sunvg/sunlv successfully resized.
resize2fs 1.42.9 (28-Dec-2013)
Resizing the filesystem on /dev/mapper/sunvg-sunlv to 307200 (4k) blocks.
The filesystem on /dev/mapper/sunvg-sunlv is now 307200 blocks long.

[root@despotic ~]# lvs
  LV    VG    Attr       LSize Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  sunlv sunvg -wi-a----- 1.17g          

3.4 裁剪逻辑卷

      我们可以使用“lvreduce”命令来对逻辑卷进行裁剪.
简单的命令是“lvreduce -L -size /dev/vgname/lvname”.
      您也可以调整文件系统的大小,但需要添 加-r参数.
简单的命令是“lvreduce -L -size /dev/vgname/lvname -r”
      在我们的实例中,我们将sunlv由1.2G裁剪到1G(-200M),我们应该首先使用“lvchange” 停用我们的LV ,然后重新激活它:

[root@despotic ~]# lvchange -an /dev/sunvg/sunlv 

这里我犯了一个错误,使用lvchange命令之后就不能进行补全了,得自己手动将路径敲出来

[root@despotic ~]# ls /dev/s
sda       sda2      sdc       sg1       sg3       snapshot  sr0       stdin     
sda1      sdb       sg0       sg2       shm/      snd/      stderr    stdout    
[root@despotic ~]# lvreduce -L -200M /dev/sunvg/sunlv
  Size of logical volume sunvg/sunlv changed from 1.17 GiB (300 extents) to 1000.00 MiB (250 extents).
  Logical volume sunvg/sunlv successfully resized.
[root@despotic ~]# lvs
  LV    VG    Attr       LSize    Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  sunlv sunvg -wi------- 1000.00m
[root@despotic ~]# lvchange -ay /dev/sunvg/sunlv  -----激活

要自动调整LV和文件系统的大小,请使用-r参数:

[root@despotic ~]# lvreduce -L -200M /dev/sunvg/sunlv -r
fsck,来自 util-linux 2.23.2
/dev/mapper/sunvg-sunlv: clean, 11/64000 files, 8748/256000 blocks
resize2fs 1.42.9 (28-Dec-2013)
Resizing the filesystem on /dev/mapper/sunvg-sunlv to 204800 (4k) blocks.
The filesystem on /dev/mapper/sunvg-sunlv is now 204800 blocks long.

  Size of logical volume sunvg/sunlv changed from 1000.00 MiB (250 extents) to 800.00 MiB (200 extents).
  Logical volume sunvg/sunlv successfully resized.
[root@despotic ~]# lvs
  LV    VG    Attr       LSize   Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert 
  sunlv sunvg -wi-a----- 800.00m

3.5 调整逻辑卷大小

      我们可以使用“lvresize”命令扩展和减少LV 。
      减少LV的简单语法是“lvresize -L -size /dev/vgname/lvname”
      再次调整文件系统的大小以在末尾添加-r。
      扩展LV的简单语法是“lvresize -L + size /dev/vgname/lvname”
      再次调整文件系统的大小以在末尾添加-r。
      我们将称为“sunlv”的LV 从800M降低到300M,然后从300M扩展到1000M。

减少到300M

[root@despotic ~]# lvresize -L -500M /dev/sunvg/sunlv -r
fsck,来自 util-linux 2.23.2
/dev/mapper/sunvg-sunlv: clean, 11/56000 files, 8120/204800 blocks
resize2fs 1.42.9 (28-Dec-2013)
Resizing the filesystem on /dev/mapper/sunvg-sunlv to 76800 (4k) blocks.
The filesystem on /dev/mapper/sunvg-sunlv is now 76800 blocks long.

  Size of logical volume sunvg/sunlv changed from 800.00 MiB (200 extents) to 300.00 MiB (75 extents).
  Logical volume sunvg/sunlv successfully resized.
[root@despotic ~]# lvs
  LV    VG    Attr       LSize   Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  sunlv sunvg -wi-a----- 300.00m

增加到1000M

[root@despotic ~]# lvresize -L +700M /dev/sunvg/sunlv -r
fsck,来自 util-linux 2.23.2
/dev/mapper/sunvg-sunlv: clean, 11/24000 files, 5860/76800 blocks
  Size of logical volume sunvg/sunlv changed from 300.00 MiB (75 extents) to 1000.00 MiB (250 extents).
  Logical volume sunvg/sunlv successfully resized.
resize2fs 1.42.9 (28-Dec-2013)
Resizing the filesystem on /dev/mapper/sunvg-sunlv to 256000 (4k) blocks.
The filesystem on /dev/mapper/sunvg-sunlv is now 256000 blocks long.

[root@despotic ~]# lvs
  LV    VG    Attr       LSize    Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  sunlv sunvg -wi-a----- 1000.00m

3.6 重命名逻辑卷

      我们可以使用“lvrename”命令重命名逻辑卷。
      简单的语法是

“lvrename vgname /dev/vgname/lvname_old /dev/vgname/lvname_new ”。


      在我们的例子中,我们将卷组“sunvg”中的“sunlv”重命名为“runlv”

[root@despotic ~]# lvs
  LV    VG    Attr       LSize    Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  sunlv sunvg -wi-a----- 1000.00m   
[root@despotic ~]# lvrename sunvg /dev/sunvg/sunlv /dev/sunvg/runlv
  Renamed "sunlv" to "runlv" in volume group "sunvg"
[root@despotic ~]# lvs
  LV    VG    Attr       LSize    Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  runlv sunvg -wi-a----- 1000.00m

3.7 删除逻辑卷

您将删除的LV的所有数据都将丢失!

      我们可以使用“lvremove”命令删除逻辑卷。
       简单的语法是“lvremove /dev/vgname/lvname ”。
      在我们的例子中,我们删除卷组sunvg中的runlv这个逻辑卷
      首先停用LV,然后将其删除:

[root@despotic ~]# lvchange -an /dev/sunvg/runlv 
[root@despotic ~]# lvremove /dev/sunvg/runlv
  Logical volume "runlv" successfully removed
[root@despotic ~]# lvs
  LV   VG   Attr       LSize Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  var  rhel -wi-ao---- 6.00g

总结一下

如果您想添加一个逻辑卷,按照如下步骤做,即可成功
1、创建物理卷 ----- pvcreate /dev/sdb
2、创建卷组 ----- vgcreate sunvg /dev/sdb
3、创建逻辑卷 ----- lvcreate -n sunlv -L 500M sunvg
4、格式逻辑卷 ----- mkfs.ext4 /dev/sunvg/sunlv
5、挂载 ----- mount /dev/sunvg/sunlv /disk

[root@despotic ~]# df -h
文件系统                 容量  已用  可用 已用% 挂载点
/dev/mapper/sunvg-sunlv  477M  2.3M  445M    1% /disk

posted on 2019-11-28 18:13  状元兜里有糖  阅读(908)  评论(0编辑  收藏  举报

导航