如何在 Linux LVM 中添加新磁盘以增加其大小?


本文介绍如何将新磁盘添加到 LVM(逻辑卷管理器),LVM 相对于普通磁盘分区最大的优势在于它支持“动态分区”;您可以根据需要动态创建和调整(扩展或缩小)LVM 卷。在 LVM 逻辑卷中没有物理磁盘边界的限制,因此您可以创建跨越多个较小物理磁盘的大型 LVM 卷。这种灵活的分区允许您更有效地管理存储空间,因为磁盘使用情况会随着时间的推移而发生变化。

如果您想将新磁盘添加到现有的 LVM 卷以扩展其大小,您可以轻松地做到这一点,以下是操作步骤:

配置

我们需要以 root 用户身份登录,并运行 **fdisk** 以检查系统上是否检测到已连接的新磁盘。

# fdisk -l
Disk /dev/sda: 21.5 GB, 21474836480 bytes
255 heads, 63 sectors/track, 2610 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x000c664e
Device Boot    Start    End    Blocks    Id    System
/dev/sda1 *       1       64    512000    83    Linux
Partition 1 does not end on cylinder boundary.
/dev/sda2       64       2611    20458496 8e Linux LVM

Disk /dev/sdb: 21.5 GB, 21474836480 bytes
255 heads, 63 sectors/track, 2610 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000

Disk /dev/sdc: 21.5 GB, 21474836480 bytes
255 heads, 63 sectors/track, 2610 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000

Disk /dev/mapper/VolGroup-lv_root: 18.8 GB, 18798870528 bytes
255 heads, 63 sectors/track, 2285 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000

Disk /dev/mapper/VolGroup-lv_swap: 2147 MB, 2147483648 bytes
255 heads, 63 sectors/track, 261 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000

在上述命令中,我们发现了 3 个磁盘(/dev/sda、/dev/sdb、/dev/sdc)。第一个磁盘(/dev/sda)由 LVM 使用,显示分区,而其他两个(/dev/sdb 和 /dev/sdc)未添加到 LVM,并且磁盘上没有任何分区。

使用“lvs”命令检查 LVM 卷组和逻辑卷的可用性。

# lvs
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
lv_root VolGroup -wi-ao---- 17.51g
lv_swap VolGroup -wi-ao---- 2.00g

在示例中,存在一个卷组(“lv”),并且在这个卷组中创建了两个逻辑卷(“root”和“swap”)。

# df
Filesystem    1K-blocks    Used    Available    Use%    Mounted on
/dev/mapper/VolGroup-lv_root
            17938864    1997688    15023264    12% /
tmpfs          502384    0          502384    0%       /dev/shm
/dev/sda1       487652 41991          420061 10%       /boot

根据 df 输出,逻辑卷“root”由设备映射器映射到 /dev/mapper/VolGroup-lv-root。

使用此信息,我将在后续步骤中向您展示如何将两个磁盘 /dev/sdb 和 /dev/sdc 添加到“root”逻辑卷。

在新磁盘上创建分区

第一步是在将新磁盘添加到 LVM 之前,在每个新磁盘上创建一个分区。仅当您希望将磁盘的一部分分配给 LVM 时,才需要执行此步骤。如果您想将整个磁盘添加到 LVM,则无需创建分区,可以跳过此步骤。

在新磁盘上创建物理卷

接下来,在每个新磁盘分区(/dev/sdb1 和 /dev/sdc1)上创建一个物理卷。

# pvcreate /dev/sdb
Physical volume "/dev/sdb" successfully created

像这样将第三个磁盘添加到物理卷。

# pvcreate /dev/sdc
Physical volume "/dev/sdc" successfully created

使用 lvmdiskscan 验证物理卷是否已成功创建。

#lvmdiskscan -l
/dev/ram0             [ 16.00 MiB]
/dev/root             [ 17.51 GiB]
/dev/ram1             [ 16.00 MiB]
/dev/sda1             [ 500.00 MiB]
/dev/VolGroup/lv_swap [ 2.00 GiB]
/dev/ram2             [ 16.00 MiB]
/dev/sda2             [ 19.51 GiB] LVM physical volume
/dev/sdb              [ 20.00 GiB] LVM physical volume
/dev/sdc              [ 20.00 GiB] LVM physical volume
2 disks
2 LVM physical volume whole disks
1 LVM physical volume

扩展现有逻辑卷

接下来,找到包含要扩展的逻辑卷的卷组,并通过向其添加新创建的物理卷来扩展该组。

在我们的示例中,逻辑卷“root”属于“VolGroup-lv”卷组。让我们添加 /dev/sdb,请使用以下命令代替。

# vgextend yoda-vg /dev/sdb

卷组“VolGroup”已成功扩展。要验证卷是否已添加,请检查以下内容:

# vgs
VG       #PV #LV #SN Attr VSize    VFree
VolGroup 2    2    0 wz--n- 39.50g 20.00g

# vgextend VolGroup /dev/sdc
Volume group "VolGroup" successfully extended

# vgs
VG       #PV    #LV #SN Attr    VSize VFree
VolGroup   3      2 0    wz--n- 59.50g 39.99g

给定已调整大小的卷组,现在扩展“root”逻辑卷本身。

# lvextend -l+100%FREE /dev/VolGroup/lv_root
Size of logical volume VolGroup/lv_root changed from 17.51 GiB (4482 extents) to 57.50 GiB (14720 extents).
Logical volume lv_root successfully resized

上述命令指示“root”逻辑卷使用卷组中所有可用的额外空闲空间。请注意,/dev/VolGroup/lv_root 是“root”卷映射到的设备。

最后一步是扩大“root”卷内部创建的文件系统。否则,文件系统将无法识别卷中的额外空闲空间。

# resize2fs -p /dev/VolGroup/lv_root
resize2fs 1.41.12 (17-May-2010)
Filesystem at /dev/VolGroup/lv_root is mounted on /; on-line resizing required
old desc_blocks = 2, new_desc_blocks = 4
Performing an on-line resize of /dev/VolGroup/lv_root to 15073280 (4k) blocks.
The filesystem on /dev/VolGroup/lv_root is now 15073280 blocks long.

**resize2fs** 命令支持调整 ext2/ext3/ext4 文件系统的大小。它还支持在线调整大小,以防您扩展文件系统。无需卸载文件系统。

此时,文件系统应扩展到占用已调整大小的“root”逻辑卷的 100%。

如果我们完成了以上步骤,并添加了磁盘以增加卷以扩展现有的 LVM,我们可以增加空间而不会丢失数据,这将有助于管理员在没有任何停机时间的情况下管理他们的磁盘空间。

更新于:2020年1月27日

8K+ 阅读量

开启你的 职业生涯

通过完成课程获得认证

开始学习
广告