我最近看到微软关于云环境中逻辑卷管理(LVM)配置的建议,我觉得有点令人费解。该建议指出,虽然可以在连接到虚拟机 (VM) 的任何磁盘上配置 LVM,但大多数云映像默认不会在操作系统磁盘上配置 LVM。提供的理由是为了防止在操作系统磁盘连接到相同分布和类型的另一个虚拟机时出现重复卷组的问题,特别是在恢复场景期间。因此,建议仅在数据磁盘上使用 LVM。
但是,我很难理解将操作系统磁盘连接到另一个虚拟机的实用性,特别是考虑到可以在单独的虚拟机实例上轻松执行故障排除和诊断任务。在数据恢复时,启动一个没有 LVM 分区的新虚拟机并安装 LVM 卷似乎是一个简单的解决方案。
此外,由于其刚性而使用标准分区而不是 LVM 的论点似乎并不令人信服。LVM 在管理磁盘空间方面提供了灵活性,与标准分区相比,允许更轻松地扩展卷,如果卷位于其他分区之间,这尤其有利。
我很好奇是否有人可以深入了解将操作系统磁盘附加到云环境中的另一个虚拟机的必要性或优势。根据我的经验,将系统磁盘和数据磁盘分开并将数据磁盘附加到新虚拟机是一种更实用的方法。
我很感激其他人对这个主题的任何见解或经验。
TL;DR: LVM 在虚拟机中是多余的。
这看起来确实像是一种货物崇拜的推理。我遇到过一些情况,当我们将虚拟磁盘从一个虚拟机移动到另一个虚拟机时,但那始终是数据磁盘;例如,这就是我们的升级路径:我们准备了带有虚拟数据磁盘的新版本虚拟机,准备好后,只需将旧虚拟机中的真实数据磁盘插入其中即可。
我几乎不记得有一个虚拟机被严重破坏过,以至于无法启动。无论如何,在这种情况下,从备份恢复或完全重新配置虚拟机肯定比将系统磁盘安装到另一个虚拟机来修复某些问题更合适。
当您在虚拟机中运行时,您已经在虚拟机外部进行了一些卷管理。提供给它的磁盘已经是虚拟的并且非常灵活;您无需浪费任何资源来支持额外的冗余设施。(运行时翻译层不仅是浪费,而且在虚拟机内监视和管理它也需要资源。)
将此视为您不在虚拟机内构建软件 RAID 和多路径,而是在主机上构建的想法的延续;现在,您甚至不在虚拟机内构建卷管理,而是在主机上构建。
因此,虚拟机的磁盘使用方式往往与裸机服务器不同。您无需添加一个或几个大磁盘并在虚拟机中对它们进行分区,而是将每个潜在卷添加为最多包含一个分区的单个磁盘。当需要扩展空间时,可以在虚拟化环境中增加虚拟磁盘,然后在虚拟机中增加分区和FS。现在这就是您的 LVM。
在大多数情况下,您将需要一个根 FS 和数据 FS,例如两个虚拟磁盘,并且很有可能 ~30 GB 的根 FS 磁盘永远不需要调整大小。数据库通常建议使用单独的存储来存储预写日志;无论如何,这都需要添加专用虚拟磁盘,因此将其放置在虚拟化环境中的单独存储上。
有几次我使用了四个以上的虚拟磁盘,但所有这些情况都是退化的,这是由于某人糟糕的计划造成的,最终这些系统被重构为使用更少的磁盘。
我不太熟悉 Azure 上的流程,但使用 qemu 和 AWS 时,调整卷大小的过程比设置 PV/LV 简单得多。
因为/boot 被搞乱了?或者单用户模式受密码保护,而您没有密码。
如果您从同一个基础映像创建两个 VM,并且该基础映像使用 LVM,然后将该基础映像覆盖的磁盘从一个附加到另一个:
常规系统也可能发生同样的问题,但除非您定期执行克隆系统之类的操作,否则不太常见。
它也可能是文件系统级别的问题(文件系统的重复 UUID 可能会造成令人讨厌的事情),但这通常只是启动时的问题,除非您使用 BTRFS,并且在大多数情况下很容易解决,因为您可以选择通过标签或设备来识别文件系统。
您实际上需要多久调整一次分区大小?虚拟机的标准不是一个巨型磁盘上有几十个分区,而是系统磁盘上有一到三个分区(固件引导卷,如果需要,可选
/boot
,以及根分区),并且任何数据卷都是单独的专用磁盘。因为除系统磁盘之外的所有内容的标准是每个磁盘一个分区,所以除了系统磁盘之外,LVM 在任何地方几乎没有任何价值(因为要调整这些分区的大小,您本质上需要调整磁盘本身的大小,这在 VM 设置中通常很容易) 。而对于系统盘来说,很少需要调整任何分区的大小(固件启动卷一般是固定大小的,
/boot
大多数情况下最多可能是1G,根分区将是磁盘上的其余部分),所以那里没有什么价值。简短的回答:在处理存储时,越简单越好。阅读 Microsoft 建议时应牢记这一点,特别是考虑到它们针对的是广泛的受众。
长答案:虽然使用普通分区更简单,但应该仔细考虑分区布局。根分区应该是最后一个,因为后面有其他分区意味着根文件系统不会立即使用添加的磁盘空间。例如,扩展末尾有交换分区的磁盘意味着任何添加的空间都将与交换分区相邻,而不是与根文件系统相邻。要扩展后者,您必须删除或重新定位交换分区。
出于这个原因,并且为了简单起见,当我可以为根磁盘使用单个分区/文件系统(专用引导分区可能例外)时,我通常不使用 LVM,但我将 LVM 用于更复杂的情况设置。
请注意,对于数据磁盘,LVM 具有一些关键优势,如自动精简配置、缓存、快照、重复数据删除等。虽然虚拟机管理程序/云平台也提供了一些优势,但 LVM 仍然是数据卷管理的非常有用的工具。
普通分区设置是默认的 Ubuntu(和其他基于 Debian 的发行版)设置,我认为这是上述声明背后的主要动机。Ubuntu 默认情况下也使用交换文件(而不是交换分区)。请注意,基于 RHEL 的发行版默认使用 LVM(和专用交换卷)。
虽然确实如此,但这并不是一个无法克服的问题:人们可以通过其 UUID 识别/激活任何 PV/VG 并根据需要对其进行重命名,或者简单地使用普通分区机器来安装和诊断有问题的根文件系统。尽管如此,这仍然意味着恢复过程中会出现额外的复杂性。