为什么要使用 LVM?它会产生更多边界(更少自由)

为什么要使用 LVM?它会产生更多边界(更少自由)

我有一台在虚拟机中运行的 Linux 服务器。虚拟机管理程序是 VMWare。

此设置由前任管理员完成:

server:~ # pvs
  PV         VG     Fmt  Attr PSize   PFree
  /dev/sda2  system lvm2 a--  119,84g    0

server:~ # vgs
  VG     #PV #LV #SN Attr   VSize   VFree
  system   1   3   0 wz--n- 119,84g    0

server:~ # lvs
  LV   VG     Attr      LSize  Pool Origin Data%  Move Log Copy%  Convert
  home system -wi-ao--- 97,84g                                          
  root system -wi-ao--- 20,00g                                          
  swap system -wi-ao---  2,00g                    

我问自己:为什么?

使用 LVM 可以做很多有趣的事情,这很棒。但是为什么呢?

为什么不创造块设备/分区/文件系统?

交换可以完成到文件中。

一个分区/文件系统会给我更少的块设备。这意味着文件系统中的目录有更多空间可以增长。

如果我在一个文件系统中使用一个块设备,则不太可能耗尽磁盘空间。

例如:如果“根系统”的文件需要超过 20GByte,并且“home”还有剩余空间,那么一切都很好。

以下是 LVM 设置的简化 ASCII 图:

+--------------------+
|                    |
|  Filesystem        |
|                    |
|---------------------
|                    |
|  Logical Volume    |
|                    |
|---------------------
|                    |
|  Volume Group      |
|                    |
----------------------
|                    |
|  Physical Volume   |
|                    |
|---------------------
|                    |
|  Block device      |
|                    |
+--------------------+

背景:这不是一个高可用性系统。晚上总是有可能重新启动。

答案1

通常使用 LVM 可以实现多种功能。仅列举几个:

  • 扩展卷只需一步,并且在线:lvextend --resize
  • 无需分区。如果没有 LVM,调整根文件系统大小的常见用例需要停机,并且可能需要从第二个系统编辑分区表。
  • 即使存储系统或虚拟机管理程序上没有这样的功能,快照也始终可用。
  • 极端用例可能需要由多个磁盘 (LUN) 支持的卷。如今这种情况很少见。但不妨在更灵活的 LVM 上进行标准化。

(某些细节特定于 Linux LVM,但 LVM 通常在许多操作系统上实现。在 UNIX 上,AIX 和 HP-UX 早于 Linux 并且具有类似的 LVM。)


这种特定的分配类似于像 Red Hat 这样的发行版反映了他们长期以来给出的一些建议

要将用户数据与系统数据分开存储,请在卷组中为 /home 目录创建专用分区。这样您就可以升级或重新安装 Red Hat Enterprise Linux,而无需删除用户数据文件。

是的,分页空间可以放在更方便的文件中。我认为这需要某些文件系统。无论文件系统是什么,直接在块级设备上都可以工作,而且很明显,该空间不可用于常规文件。此外,您可以将此分页空间卷移动到快速、不太耐用的存储中,例如单个本地 SSD。

有些管理员会更进一步,将文件隔离/var在自己的卷和/tmptmpfs 上。这样日志文件等就不会填满 中的软件所需的空间/usr

就我个人而言,如果没有大小要求,我会从/home较小的 20 GB 开始。这样 VG 中就有 70 GB 可用,可用于下一个需要的任何内容lvextend。这也是长期以来的建议。我怀疑它不是自动分区默认值,因为用户数据往往会无限增长,他们希望在不再重新审视容量规划的情况下使用这些空间。

保留剩余容量未分配,仅将存储容量分配给您立即需要的分区。您可以随时分配可用空间,以满足需要。

答案2

在许多情况下,单个分区或没有分区并不会造成损害,特别是在虚拟化环境中,如果空间不足,您可以轻松增加主磁盘和根文件系统。

直到你不能...

然后你会发现,硬分区是你在服务器的整个生命周期内都必须坚持的设计选择。
(虽然不是完全如此,但大多数解决方案都需要停机和/或服务中断。)

如果你只有牛:这不是问题,你的服务器无论如何都是短暂的。如果你的宠物比你愿意承认的多……

您为使用 LVM 而支付的性能开销/损失可以忽略不计,即使您现在看不到迫切的需求,LVM 将来也可能会为您节省开支,因为 LVM 将允许您在存储中执行在线更改,而如果没有 LVM,这些更改要么完全不可能,要么至少需要(大量)停机时间。

答案3

答案是,如果您无法确定使用 LVM 的任何操作原因,那么就没有理由使用它,在您的虚拟机管理程序和存储区域网络场景中,很容易被忽略。但 LVM 不是像 smb 或 iscsi 这样的协议,也不是像 ext4 或 ntfs 这样的文件系统,也不是 JBOD 阵列或任何类型的 RAID,不是像 SSD 或 SAS 这样的磁盘类型,也不是像 VMware datastore 或 Ceph 这样的存储提供程序 - 那么,为什么要使用 LVM? - 独立于所有这些向操作系统呈现逻辑卷。

答案4

在传统分区模型下,在运行的系统上调整分区大小或移动分区非常困难。通常需要停机,否则会有数据丢失的风险。LVM 解决了这些问题。

在极端情况下,LVM 可用于替换正在运行的系统上的故障磁盘。

LVM 还简化了 RAID 的实施,可以轻松地在每个逻辑卷的基础上完成。

如果需要极大的存储空间,可以使用 LVM 将逻辑卷扩展至多个磁盘。

有赞成和反对为不同的子目录设置不同的分区的争论。我都这样做过。出现的一个问题是文件系统的增长超出了其分区的容量。虽然在某些情况下有一些比较安全的选择,但 LVM 提供了一种在正在运行的系统上扩展分区(逻辑卷)的安全途径。

交换有很多选项,但通常您希望能够快速交换。幸运的是,现代内存管理较少依赖交换过程,而更多地依赖分页。访问交换文件通常比访问交换分区或逻辑卷具有更高的开销。对于具有足够内存以避免主动使用交换空间的系统,这不需要考虑太多。

虽然在某些情况下 LVM 可能会增加查找磁盘上块位置的开销,但单个磁盘上的连续逻辑卷的开销应该与分区相同。在 LVM 确实增加开销的情况下,其他权衡可能会提供更好的文件系统性能。了解权衡​​应该是使用更复杂的 LVM 配置的规划过程的一部分。

相关内容