我有一台在虚拟机中运行的 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
在自己的卷和/tmp
tmpfs 上。这样日志文件等就不会填满 中的软件所需的空间/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 配置的规划过程的一部分。