在LVM中添加磁盘
1. 概述
当我们需要比最初计划更多的存储空间时,LVM 可以提供帮助。
**Linux 内核的逻辑卷管理器让我们可以抽象我们的磁盘分区。*我们没有将存储卷分配给写入物理磁盘分区表的分区,而是根据需要灵活分配空间。而且我们不会一次使用一个磁盘,而是使用存储池。这意味着如果空间不足,我们可以增加或缩小/usr或/var*卷。
在本教程中,我们将向我们的存储池(又名卷组)添加一个新的物理磁盘,并使用添加的存储来扩展我们现有的文件系统。
2. 情况
假设我们一直在使用 Ubuntu Server 20.04 LTS。默认情况下,我们服务器的存储已分区为传统的 1GB 分区用于*/boot*,其余大部分分配给 LVM 卷组。
我们可以用*lsblk *查看它:
# lsblk -o NAME,SIZE,TYPE,FSTYPE,MOUNTPOINT /dev/vda
NAME SIZE TYPE FSTYPE MOUNTPOINT
vda 25G disk
├─vda1 1M part
├─vda2 1G part ext4 /boot
└─vda3 24G part LVM2_member
└─ubuntu--vg-ubuntu--lv 20G lvm ext4 /
从这个输出中,我们看到*/dev/vd3*有 24G,但只有 20G 被分配给挂载在根目录的逻辑卷。这给了我们在“空间不足”紧急情况下的回旋余地。保留未分配空间的另一个原因:LVM 快照,便于从一致状态进行备份。
让我们看看使用df 这样的传统工具我们的文件系统是什么样子的:
# df -hT -text4
Filesystem Type Size Used Avail Use% Mounted on
/dev/mapper/ubuntu--vg-ubuntu--lv ext4 20G 6.2G 13G 34% /
/dev/vda2 ext4 976M 107M 803M 12% /boot
具有长名称的逻辑卷看起来就像 Linux 的块设备或分区。
现在,如果它开始填满怎么办?
3. 物理的、分组的和逻辑的
在过去简单分区的糟糕日子里,我们必须将所有内容复制到一个更大的分区中以添加更多存储空间。我们可能不得不一直让我们的服务器离线。
当我们使用 LVM 时,我们可以在任何物理驱动器之间切换我们的逻辑卷。我们可以安全地调整任何逻辑卷的大小,然后调整它们的文件系统。
Linux 的 LVM 系统包含三个层次:物理卷、卷组和逻辑卷。lvm 命令让我们可以将系统作为一个整体来工作。
但是这些级别中的每一个都可以使用一组命令来创建、检查、修改等:
- pv命令操作物理卷
- vg命令操作卷组
- lv命令操作逻辑卷
3.1.检查我们的逻辑卷
让我们看看使用 LVM 工具的存储。
使用pvdisplay ,我们看到旧式硬盘分区,它已被标记为 LVM 物理卷:
# pvdisplay
--- Physical volume ---
PV Name /dev/vda3
VG Name ubuntu-vg
PV Size <24.00 GiB / not usable 0
Allocatable yes
PE Size 4.00 MiB
Total PE 6143
Free PE 1023
Allocated PE 5120
PV UUID qYYC7J-VjMf-niyu-m9C3-KU1n-bys8-1cA0GO
我们还注意到它是 ubuntu-vg Volume Group 的成员。
PE代表物理范围。范围是文件系统测量块设备的一种方式:起始块和块长度。
使用vgdisplay ,我们会看到一些类似的信息。我们可以验证我们的卷组只包含我们的一个物理卷(驱动器分区/dev/vda3):
# vgdisplay | grep PV
Max PV 0
Cur PV 1
Act PV 1
我们想在我们的 VG 中添加另一个 PV。然后我们可以让我们的逻辑卷知道它。
现在,lvdisplay 告诉我们它的名称、它使用的 VG 以及预留了多少存储空间:
# lvdisplay ubuntu-lv
--- Logical volume ---
LV Path /dev/ubuntu-vg/ubuntu-lv
LV Name ubuntu-lv
VG Name ubuntu-vg
LV UUID QsSEyX-tpie-TBuw-sI6w-g6jN-Tp60-da7xjP
LV Write Access read/write
LV Creation host, time ubuntu-server, 2021-08-22 01:13:58 +0000
LV Status available
# open 1
LV Size 20.00 GiB
Current LE 5120
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 256
Block device 253:0
3.2. 添加存储
假设我们添加了另一个硬盘驱动器。我们可能希望使用 RAID 来获得更快和/或更可靠的存储 。但是现在,让我们添加更多。通过添加这样的另一个驱动器来增加我们的存储空间称为线性模式。
首先,我们将新硬盘标记为与 LVM 一起使用。由于这是物理层,我们将使用pv命令pvcreate:
# pvcreate /dev/vdd
Physical volume "/dev/vdd" successfully created.
# pvdisplay
--- Physical volume ---
PV Name /dev/vda3
VG Name ubuntu-vg
PV Size <24.00 GiB / not usable 0
Allocatable yes
PE Size 4.00 MiB
Total PE 6143
Free PE 1023
Allocated PE 5120
PV UUID qYYC7J-VjMf-niyu-m9C3-KU1n-bys8-1cA0GO
"/dev/vdd" is a new physical volume of "25.00 GiB"
--- NEW Physical volume ---
PV Name /dev/vdd
VG Name
PV Size 25.00 GiB
Allocatable NO
PE Size 0
Total PE 0
Free PE 0
Allocated PE 0
PV UUID LYx1BE-udTE-imd2-1Ujx-ibph-kZyE-x9nWln
我们注意到pvdisplay深思熟虑地告诉我们我们的 PV 是“新的”并且尚未附加到任何卷组。
接下来,我们将物理卷/dev/vdd添加到卷组ubuntu-vg*中。*
我们将使用 LVM 命令vgextend :
# vgextend ubuntu-vg /dev/vdd
Volume group "ubuntu-vg" successfully extended
# vgdisplay ubuntu-vg
--- Volume group ---
VG Name ubuntu-vg
System ID
Format lvm2
Metadata Areas 2
Metadata Sequence No 3
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 1
Open LV 1
Max PV 0
Cur PV 2
Act PV 2
VG Size 48.99 GiB
PE Size 4.00 MiB
Total PE 12542
Alloc PE / Size 5120 / 20.00 GiB
Free PE / Size 7422 / 28.99 GiB
VG UUID oLnK3Q-OHRI-sMbw-72IM-qj2J-rJCj-olnalT
**最后,我们可以调整逻辑卷ubuntu-lv 的大小。**现在,它有 20GiB。让我们添加 95% 的可用空间,节省其余空间。
我们将使用lvresize 做到这一点:
# lvresize --extents +95%FREE --resizefs ubuntu-vg/ubuntu-lv
Size of logical volume ubuntu-vg/ubuntu-lv changed from 20.00 GiB (5120 extents) to 47.54 GiB (12171 extents).
Logical volume ubuntu-vg/ubuntu-lv successfully resized.
resize2fs 1.45.5 (07-Jan-2020)
Filesystem at /dev/mapper/ubuntu--vg-ubuntu--lv is mounted on /; on-line resizing required
old_desc_blocks = 3, new_desc_blocks = 6
The filesystem on /dev/mapper/ubuntu--vg-ubuntu--lv is now 12463104 (4k) blocks long.
我们使用 extents 选项或*-l来声明一定百分比的空间。我们也可以使用–size或其别名-L*来指定一个硬数字,例如 20G 或要添加的数量,例如 +10G:
# lvresize --size +10G --resizefs ubuntu-vg/ubuntu-lv
–resizefs选项会自动扩展您的 ext 或 XFS 文件系统以适应其新空间。我们可以使用特定于文件系统的大小调整工具将其作为一个单独的步骤来完成,但一次完成这一切很方便。
让我们使用非 LVM 工具检查我们的磁盘空间:
# df -hT -text4
Filesystem Type Size Used Avail Use% Mounted on
/dev/mapper/ubuntu--vg-ubuntu--lv ext4 47G 6.2G 39G 14% /
/dev/vda2 ext4 976M 107M 803M 12% /boot
还有我们额外的可用空间。
3.3. 进一步的考虑
使用线性模式,像这样组合多个磁盘,会增加我们因硬件故障而丢失数据的风险。RAID 可以提供帮助。
有两种方法。两者都是可行的。我们可以选择一个看起来最直接的。
一种是使用*mdraid *创建 Linux RAID 设备。然后我们可以将其视为任何物理卷,将其添加到卷组,等等。
另一个是使用 lvm 的内置 RAID 命令。
这两种方法都使用相同的 RAID 软件。因此,这实际上是我们更喜欢如何组织存储的问题。
Archlinux 在他们的 wiki 上包含了非常好的细节。