我有一个在 VM 中运行的 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,而“家”还有空间,那么一切都很好。
这是 LVM 设置的简化 ascii 艺术:
+--------------------+
| |
| Filesystem |
| |
|---------------------
| |
| Logical Volume |
| |
|---------------------
| |
| Volume Group |
| |
----------------------
| |
| Physical Volume |
| |
|---------------------
| |
| Block device |
| |
+--------------------+
背景:这不是一个高可用的系统。晚上重新启动总是可能的。
通常使用 LVM 可以启用多个功能。只是一对:
lvextend --resize
.(一些细节是特定于 Linux LVM 的,但 LVM 通常在许多操作系统上实现。在 UNIX 上,AIX 和 HP-UX 早于 Linux 并且具有类似的 LVM。)
该特定分配类似于Red Hat 等发行版的默认值,反映了他们长期以来给出的一些建议。
分页空间可以放在更方便的文件中,是的。我认为这需要某些文件系统。无论文件系统如何,直接在块级设备上都可以工作,很明显,常规文件没有可用空间。此外,您可以将此分页空间卷移动到快速不太耐用的存储中,例如单个本地 SSD。
一些管理员走得更远,将 say 隔离
/var
在自己的卷和/tmp
tmpfs 上。这样日志文件等就不会填满/usr
.就个人而言,如果没有大小要求,我会从
/home
较小的 20 GB 开始。这在 VG 中留下了 70 GB 的可用空间,用于下一个需要lvextend
。这也是长期以来的建议。我怀疑这不是自动分区默认设置,因为用户数据往往会无限增长,并且他们希望使用该空间以防容量规划不再被重新访问。在许多情况下,单个分区或没有分区并没有什么害处,尤其是在虚拟化环境中,如果空间不足,您可以轻松增加主磁盘和根文件系统。
直到你不能...
然后你会发现硬分区是你在服务器生命周期中一直坚持的设计选择。
(不完全,但大多数解决方案都需要停机和/或服务中断。)
如果您只有牛:那不是问题,无论如何您的服务器都是短暂的。如果你的宠物比你愿意承认的要多...
您为使用 LVM 所付出的性能开销/损失可以忽略不计,即使您现在看不到即时需求,LVM 将来也可能会节省您的培根,因为 LVM 将允许您在存储中执行在线更改,否则这将是彻底的不可能或至少需要(大量)停机时间。
答案是,如果您无法确定使用 LVM 的任何操作原因,那么就没有理由使用它,在您的虚拟机管理程序和存储区域网络的场景中,这很容易被忽略。但 LVM 不是 smb 或 iscsi 之类的协议,也不是 ext4 或 ntfs 之类的文件系统,也不是 JBOD 阵列或任何类型的 RAID,它不是 SSD 或 SAS 之类的磁盘类型,它不是 VMware 之类的存储提供商数据存储或 Ceph - 那么,为什么要使用 LVM?- 独立于所有这些向操作系统呈现逻辑卷。
一些发行版默认使用 LVM/设备映射器设置分区。如前所述,使用 LVM 的开销很小(尽管并非完全为零),而且它增加了灵活性,因此这不是一个糟糕的选择。
关于单独的文件系统:单独
/home
的 to/
通常被合理化为一种执行穷人报价的方法。通过将它们分开,填充/home
不会使只需要在/tmp
(likesort
) 中创建文件的工具无法完成其工作。再一次,一些分区工具(Ubuntu?)引导您进行这种设置。也许以前的管理员只是遵循默认设置?如果您有不同的需求并且已经处于重新开始的位置,那么您当然可以做出不同的选择。但是,如果系统正常并且没有空间不足(20GByte 的 root 可能意味着您还有超过 50% 的空间,或者根据具体情况可能还不够),我怀疑是否值得努力将其全部拆除并重新开始只是为了切换。
在传统的分区模型中,在正在运行的系统上调整或移动分区的大小是极其困难的。通常,它需要中断,否则有数据丢失的风险。LVM 解决了这些问题。
在极端情况下,LVM 可用于替换正在运行的系统上的故障磁盘。
LVM 还简化了 RAID 的实现,这可以很容易地在每个逻辑卷的基础上完成。
如果您需要一个非常大的存储空间,您可以使用 LVM 将一个逻辑卷扩展到多个磁盘。
有支持和反对为不同的子目录设置不同分区的论点。我都做过。出现的问题之一是文件系统的增长超出了其分区的容量。虽然在某些情况下有一些安全的选项,但 LVM 提供了在正在运行的系统上扩展分区(逻辑卷)的安全路径。
有很多交换选项,但通常您希望能够快速交换。幸运的是,现代内存管理较少依赖交换进程,而更多地依赖分页。访问交换文件通常比访问交换分区或逻辑卷具有更高的开销。对于具有足够内存以避免主动使用交换空间的系统,这不是一个考虑因素。
虽然在某些情况下 LVM 可能会增加在磁盘上查找块位置的开销,但单个磁盘上的连续逻辑卷应该具有与分区相同的开销。在 LVM 确实增加开销的情况下,其他权衡可能会提供更好的文件系统性能。了解权衡应该是使用更复杂的 LVM 配置的规划过程的一部分。