如何使用 LVM 管理滴滴云 EBS

本文介绍了如何在 CentOS 7.x 系统中使用 LVM 进行存储管理,包括创建和扩展物理卷、卷组和逻辑卷,以及删除和缩小 LVM 组件。通过 LVM,用户可以灵活地管理和调整存储空间,适用于滴滴云 EBS 环境。
摘要由CSDN通过智能技术生成

LVM 介绍

LVM ( Logical Volume Management ) 是一种存储设备管理技术,使用户能够汇集和抽象存储设备组件的物理布局,从而实现对物理磁盘简单灵活的管理。利用 Linux Device Mapper 内核框架,LVM2 可用于将现有存储设备组合到一起,并根据需要从组合空间分配逻辑单元。

本文将介绍如何用 LVM 管理存储设备。接下来将展示如何显示逻辑卷的相关信息,如何创建和销毁各种类型的卷,以及如何通过调整大小或转换来修改现有卷。我们将使用 Centos 7.x 来演示这些操作。

环境准备

创建一个滴滴云 DC2,操作系统为 Centos 7.x,并挂载两块规格一样的数据盘,本列中采用两块大小为 200G 的 SSD 云盘,所使用的用户为具有 sudo 权限的 dc2-user。

安装 LVM:

# sudo yum install -y lvm2

创建或扩展 LVM 组件

本节将讨论如何创建和扩展物理卷、卷组和逻辑卷。

从原始存储设备创建物理卷

为了通过 LVM 管理存储设备,首先必须将存储设备标记为物理卷 ( PV, Physical Volume ) 。这样 LVM 才可以在卷组 ( VG, Volume Group ) 内使用该设备,卷组相当于是由物理卷构成的存储池。

首先,使用 lvmdiskscan 命令查找 LVM 可以看到并使用的所有块设备:

# sudo lvmdiskscan
  /dev/vda1 [     <80.00 GiB]
  /dev/vdb  [     200.00 GiB]
  /dev/vdc  [     200.00 GiB]
  2 disks
  1 partition
  0 LVM physical volume whole disks
  0 LVM physical volumes

这里我们可以看到适合于 LVM 的物理卷的设备。从中挑选出没有数据的设备,比如 /dev/vdb/dev/vdc 用来创建 LVM。

警告:请确保再次检查你打算与 LVM 一起使用的设备是否没有任何重要数据已经写入它们。在 LVM 中使用这些设备将覆盖当前内容。如果 DC2 服务器上已有重要数据,则在进行备份。

要将存储设备标记为 LVM 物理卷,可以使用命令 pvcreate。你可以同时通过多个设备:

# sudo pvcreate /dev/vdb /dev/vdc
  Physical volume "/dev/vdb" successfully created.
  Physical volume "/dev/vdc" successfully created.

该命令会在所有目标设备上写入 LVM 头,以标记它们为 LVM 物理卷。

查看物理卷:

# sudo pvs
  PV         VG Fmt  Attr PSize   PFree
  /dev/vdb      lvm2 ---  200.00g 200.00g
  /dev/vdc      lvm2 ---  200.00g 200.00g

pvdisplay 命令可以输出更详细的信息:

# sudo pvdisplay
  "/dev/vdb" is a new physical volume of "200.00 GiB"
  --- NEW Physical volume ---
  PV Name               /dev/vdb
  VG Name
  PV Size               200.00 GiB
  Allocatable           NO
  PE Size               0
  Total PE              0
  Free PE               0
  Allocated PE          0
  PV UUID               nLawjk-N7h0-O5Tm-mna6-yl2r-8SvO-h3AFYl

  "/dev/vdc" is a new physical volume of "200.00 GiB"
  --- NEW Physical volume ---
  PV Name               /dev/vdc
  VG Name
  PV Size               200.00 GiB
  Allocatable           NO
  PE Size               0
  Total PE              0
  Free PE               0
  Allocated PE          0
  PV UUID               VphTcQ-9nEG-OQcO-fK2c-wlq0-cbdW-Pk8I0J

从物理卷创建新卷组

若要从 LVM 物理卷创建新卷组,请使用 vgcreate 命令。必须提供一个卷组名称,然后至少有一个 LVM 物理卷:

# sudo vgcreate volume_group_name /dev/vdb
  Volume group "volume_group_name" successfully created

本例中,创建了具有单个初始物理卷的卷组。如果愿意,你可以在创建中传递多个物理卷:

# sudo vgcreate volume_group_name /dev/vdb /dev/sdc /dev/sdd

查看卷组信息:

# sudo vgdisplay
  --- Volume group ---
  VG Name               volume_group_name
  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               <200.00 GiB
  PE Size               4.00 MiB
  Total PE              51199
  Alloc PE / Size       0 / 0
  Free  PE / Size       51199 / <200.00 GiB
  VG UUID               HWqr4P-ESmE-NXLJ-8tnx-ZycC-TqKD-XtQwFN

通常,每个服务器只需要一个卷组。可以将所有 LVM 管理的存储添加到该池中,然后可以从该池中分配逻辑卷。

你可能希望拥有一个以上的卷组的原因之一是,如果你觉得需要对不同卷使用不同的区段大小。通常,你不必设置区段大小(默认大小 4M 对于大多数使用来说足够),但是如果需要,可以在创建卷组时通过 -s 选项进行设置:

# sudo vgcreate -s 8M volume_group_name /dev/vda

这将创建一个具有段大小为 8M 的新卷组。

向现有卷组添加物理卷

若要通过添加额外的物理卷扩展卷组,请使用 vgextend 命令。这个命令需要一个卷组名,后面跟着要添加的物理卷。如果愿意的话,你可以同时输入多个物理卷:

# sudo vgextend volume_group_name /dev/vdc
  Volume group "volume_group_name" successfully extended

物理卷将被添加到卷组中,从而扩展存储池的可用容量。

通过指定大小创建逻辑卷

若要从卷组存储池创建逻辑卷,请使用 lvcreate 命令。使用-L选项指定逻辑卷的大小,使用 -n 选项指定名称,并传入卷组名称以从中分配空间。

例如,从 volume_group_name 卷组创建一个名为 test 且大小为 10G 逻辑卷类型:

# sudo lvcreate -L 10G -n test volume_group_name
  Logical volume "test" created.

如果卷组有足够的空闲空间来容纳卷容量,则会成功创建出新的逻辑卷。

查看逻辑卷的信息,用命令 lvslvdisplay

# sudo lvdisplay
  --- Logical volume ---
  LV Path                /dev/volume_group_name/test
  LV Name                test
  VG Name                volume_group_name
  LV UUID                lqmzfA-HsdB-h2mJ-X585-gOku-4rdx-HajSQR
  LV Write Access        read/write
  LV Creation host, time 10-254-252-85, 2018-12-10 21:17:55 +0800
  LV Status              available
  # open                 0
  LV Size                10.00 GiB
  Current LE             2560
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     8192
  Block device           252:0

从所有剩余空闲空间创建逻辑卷

如果希望使用卷组中剩余的空闲空间创建卷,使用 vgcreate 命令,像之前一样通过 -n 选项指定名称,并传入卷组名称,不要传递大小,而是使用选项 '-l 100%FREE',该选项使用卷组中的剩余段 ( extents ) 来创建逻辑卷:

# sudo lvcreate -l 100%FREE -n test2 volume_group_name

这将会使用逻辑卷中所有剩余的空间。

用高级选项创建逻辑卷

逻辑卷也可以用一些高级选项创建。你可能希望考虑的一些选项是:

  • –Type:指定逻辑卷的类型,该类型确定如何分配逻辑卷。如果没有足够的底层物理卷来正确创建所选类型,那么一些类型将不可用。一些最常见的类型是:
    • Linear:默认类型。所使用的底层物理设备(如果不止一个)将简单地彼此附加,做线性扩张。
    • Striped:与 RAID0 类似,striped 结构将数据划分成块,并以循环方式遍布底层物理卷。这可以提高性能,但没有数据冗余。这需要下面描述的“-i ”选项和至少两个物理卷。
      • RARID1:创建镜像 RAID1 卷。默认情况下,镜像将具有两个副本,但是可以通过下面描述的 -m 选项指定更多副本。需要至少两个物理卷。
      • RAID5:创建 RAID5 卷。最少需要三个物理卷。RAID5:创建 RAID5 卷。最少需要三个物理卷。
      • RAID6:创建 RAID6 卷。最少需要四个物理卷。RAID6:创建 RAID6 卷。最少需要四个物理卷。
  • -m:指定要保存的数据的其他副本的数量。“1”指定了一个附加副本,用于总共两组数据。
  • -i:指定条带数量。这对于条带类型是必需的,并且可以修改其他一些 RAID 选项的默认行为。
  • -s:指定操作应该从现有逻辑卷而不是新的独立逻辑卷创建快照。

我们将提供这些选项的几个示例来演示它们通常如何使用。

要创建条带卷,必须指定至少两个条带。这种结构和条带计数需要至少两个具有可用容量的物理卷:

# sudo lvcreate --type striped -i 2 -L 10G -n striped_vol volume_group_name

若要创建镜像卷,请使用 RAID1 类型。如果你想要 2 个副本以上的数据,请使用 -m 选项。这个示例使用 -m 2 来创建总共三个副本的数据(LVM 将其计数为一个带有两个镜像的原始数据集)。需要至少三个物理卷才能成功:

# sudo lvcreate --type raid1 -m 2 -L 20G -n mirrored_vol volume_group_name

增加逻辑卷的大小

LVM 的主要优点之一是它在提供逻辑卷时的灵活性,在不停止系统的情况下,可以轻松地调整卷的数量或大小。

若要增加现有逻辑卷的大小,请使用 lvresize 命令。使用 -L 标志来指定新的大小。还可以通过添加“+”大小来使用相对大小。在这种情况下,LVM将按指定的数量增加逻辑卷的大小。要自动调整逻辑卷上使用的文件系统的大小,请传入 --resizefs 标志。

要正确地提供要展开的逻辑卷的名称,需要给出卷组,然后是斜杠,然后是逻辑卷:

# sudo lvresize -L +5G --resizefs volume_group_name/test

在这个示例中, volume_group_name 卷组上的 test 逻辑卷和 test 逻辑卷上的文件系统都将增加 5G。

如果希望手动处理文件系统扩展,可以去掉 --resizefs 选项,然后使用文件系统的本地扩展实用程序。例如,对于 Ext4 文件系统,可以键入:

# sudo lvresize -L +5G volume_group_name/test
# sudo resize2fs /dev/volume_group_name/test

这也能达到同样的目的.

删除或缩小 LVM 组件

由于减少容量可能导致数据丢失,因此通过减小组件大小或移除组件来缩小可用容量的过程通常要复杂一些。

减少逻辑卷的大小###

要缩小逻辑卷,首先应该备份数据。因为这减少了可用容量,如果出错可能导致数据丢失。

准备好后,检查当前使用的空间有多少:

# sudo df -h
Filesystem                          Size  Used Avail Use% Mounted on
...
/dev/mapper/volume_group_name-test   10G  3.9G  6.2G  39% /mnt

在这个例子中,它看起来像一个超过 3.9G 的空间目前正在使用中。使用此方法可以帮助你估计可以缩小卷的大小。

接下来,卸载文件系统。与扩展不同,文件系统收缩应在卸载时执行:

# cd ~
# sudo umount /dev/volume_group_name/test

卸载后,检查文件系统以确保一切正常工作。用 -t 选项传递文件系统类型。我们将使用 -f 来检查文件系统是否正常:

# sudo fsck -t ext4 -f /dev/volume_group_name/test

检查文件系统之后,可以使用文件系统的本地工具减小文件系统的大小。xfs文件系统不支持缩容,对于 Ext4 文件系统,可以用命令 resize2fs 缩容,传递文件系统的最终大小:

警告:这里最安全的选择是选择一个比当前使用量大得多的最终尺寸。给自己一些缓冲空间,避免数据丢失,确保备份到位。

# sudo resize2fs -p /dev/volume_group_name/test 8G

一旦操作完成,通过选项 -Llvresize 命令传递相同的大小来调整逻辑卷的大小:

# sudo lvresize -L 8G volume_group_name/test

你会被警告数据丢失的可能性。如果准备就绪,请键入 y 继续进行。

在逻辑卷已被还原之后,再次检查文件系统:

# sudo fsck -t ext4 -f /dev/volume_group_name/test

如果一切正常,可以使用通常的挂载命令重新挂载文件系统:

# sudo mount /dev/volume_group_name/test /mnt

现在你的逻辑卷应该缩小到合适的大小。

删除逻辑卷

如果不再需要逻辑卷,可以用 lvremove 命令删除它。

首先,如果当前 mount 了逻辑卷,则 umount 掉:

# cd ~
# sudo umount /dev/volume_group_name/test

之后,通过一下命令删除逻辑卷:

# sudo lvremove volume_group_name/test

你将被程序要求确认,如果确定要删除逻辑卷,请键入 y。

移除卷组

要删除整个卷组,包括其中的所有逻辑卷,请使用 vgremove 命令。

在删除卷组之前,通常应该使用上述过程删除逻辑卷。至少,必须确保卸载卷组包含的任何逻辑卷:

# sudo umount /dev/volume_group_name/test
# sudo umount /dev/volume_group_name/www
# sudo umount /dev/volume_group_name/projects
# sudo umount /dev/volume_group_name/db

然后,通过将卷组名称传递给 vgremove 命令,可以删除整个卷组:

sudo vgremove volume_group_name

将提示你确认是否希望删除卷组。如果你仍然存在任何逻辑卷,那么在删除之前,你将收到这些卷的单独确认提示。

移除物理卷

如果希望从 LVM 中删除物理卷,则所需的过程取决于 LVM 当前是否正在使用对应的设备。

如果正在使用物理卷,则必须将位于设备上的物理区段移动到不同的位置。这要求卷组具有足够的其他物理卷来处理物理区段。如果使用更复杂的逻辑卷类型,则可能需要额外的物理卷,即使你有足够的空闲空间来适应它的结构。

当卷组中有足够的物理卷来处理物理区段时,通过输入:

# sudo pvmove /dev/vdb

这个过程可能需要一段时间,这取决于卷的大小和要传输的数据量。

一旦扩物理段被拷贝到其他卷,就可以输入以下命令删除物理卷:

sudo vgreduce volume_group_name /dev/sdb

这将从卷组中移除空的物理卷。完成之后,你可以通过输入一下命令从存储设备中删除物理卷标记:

sudo pvremove /dev/sdb

你现在应该能够将删除的存储设备用于其他目的,或者将其完全从系统中删除。

结束

现在,你应该已经了解了如何使用 LVM 管理 Centos7.x 上的存储设备。你知道如何获得关于现有 LVM 组件的状态的信息、如何使用 LVM 组成存储系统,以及如何修改卷以满足你的需求。你可以在安全的环境中测试这些概念,以便更好地理解它们是如何组合在一起的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值