精简配置 Linux 服务器的最佳实践(在 VMware 上)

精简配置 Linux 服务器的最佳实践(在 VMware 上)

我设置了大约 20 台 Linux 机器,每台机器大约有 30-150 GB 的客户数据。某些机器上的数据大小增长速度可能比其他机器快得多。这些是 VMware vSphere 集群上的虚拟机。磁盘映像存储在 SAN 系统上。

我正在尝试寻找一种可以节省磁盘空间的解决方案,同时仍允许单个机器轻松扩展。

理论上,我只需为每台机器创建大磁盘并使用精简配置即可。每个磁盘都会根据需要增长。但是,似乎只有 50 GB 数据且写入次数很少的 500 GB ext3 文件系统仍会随着时间的推移轻松将磁盘映像增长到例如 250 GB。或者我在这里做错了什么?(我很惊讶我在 Google 上找到的关于这个主题的信息如此之少。顺便说一句,serverfault.com 上甚至没有精简配置标签。)

目前我计划创建大型、精简配置的磁盘 - 但上面有一个小型 LVM 卷。例如:500 GB 磁盘上的 100 GB 卷。这样,我可以更轻松地根据需要增加 LVM 卷和文件系统大小,甚至可以在线增加。

现在来谈谈实际问题:

有没有更好的方法来做到这一点?(也就是说,无需停机即可根据需要增加数据大小。)

可能的解决方案包括:

  • 使用精简配置友好的文件系统,尝试一遍又一遍地占据相同的位置,从而不会增加图像大小。

  • 找到一种简单的方法来回收分区上的可用空间(重新细化?)

  • 还有别的吗?

附加问题:如果我按照当前计划行事,您是否建议在磁盘上创建分区(pvcreate /dev/sdX1vs pvcreate /dev/sdX)?我认为使用没有分区的原始磁盘违反惯例,但如果需要,这将使磁盘扩展变得更容易一些。这只是个人喜好问题,对吧?

答案1

如果我正确理解了精简配置,那么如果您没有密切监控 VMFS 文件系统的增长并允许 VMDK 填满 VMFS 卷,那么它确实会造成问题。您在测试中已经看到,精简配置的磁盘往往会迅速增长以填满其可用空间,并且它们无法回收操作系统内部可能空闲的空间。

另一种选择是创建足够大的 VMDK 文件来处理您当前的使用情况和预期的增长高峰,并在应用程序数据使用量增长时添加更多 VMDK 文件。新的 VMDK 文件可以实时添加到 VM,您只需重新扫描(echo "- - -" > /sys/class/scsi_host/host?/scan)。您可以对新磁盘进行分区,将其添加到 LVM 并实时扩展文件系统。这样,您始终知道分配给每个 VM 的空间量,并且您不会在客户机内部意外地耗尽 VMFS 空间。

至于如果磁盘仅供 LVM 使用是否进行分区,我总是进行分区。对磁盘进行分区可以防止在机器启动时出现任何有关虚假分区表的警告,并明确表示磁盘已分配。这有点像巫术,但我还确保从 64 开始分区,以帮助确保分区和文件系统与底层存储块对齐。很难检测和分类,因为您通常没有可以轻松比较的东西,但如果操作系统文件系统与底层存储没有正确对齐,那么您最终可能需要额外的 IOPS 来处理跨越底层存储块边界的请求。

答案2

我能想到的最好的建议是创建一个包含物理卷、卷组和逻辑卷的 LVM 设置,然后通过以下方式将这些逻辑卷挂载为虚拟机的文件系统:互联网SCSI

这将使您能够调整逻辑卷的大小,然后您需要做的就是重新启动 iscsi 守护程序和虚拟机软件并检查它是否具有新的大小参数,然后调整客户机的文件系统的大小以匹配。

分区将像标准硬盘一样工作,因为这就是 LV 在虚拟机客户机中显示的方式。

编辑:不要介意这个,我误以为你是在 Linux 下运行 Vmware,而不是在 Vmware 下运行 Linux。

答案3

我不知道它在 VMware 中是如何工作的,但 Redhat RHEV-M/RHEV-H 可以,并且它支持 RHEL 4.8 到 5.X,同时支持 win 2k3 R2 和 win 2k8。更多信息http://studyhat.blogspot.com/2010/05/rhev-for-servers-22-installation-and.html

答案4

您是否能够在不关闭使用该卷的虚拟机的情况下扩展卷?我经常这样做,但我不知道您的存储设置是什么样的,也不知道 VMware 可能会如何使事情复杂化。如果可以的话,我会这样做

1) 不要精简配置。将每个卷设置为您认为需要的大小。2) 不要使用分区。将每个文件系统设置为自己的卷。3) 监控文件系统的增长,以便您可以主动调整卷大小。

当需要增加音量时

1) 在您的 SAN 或 VMware 中,执行任何您需要的操作来扩展卷。2) 在 Linux 中,运行echo 1 > /sys/block/EXAMPLE/device/rescan,其中 EXAMPLE 是 /sys/block/ 下的设备名称。3) 在 Linux 中,运行resize2fs /dev/EXAMPLE,其中 EXAMPLE 是 /dev 下的设备名称。

这种方法对我来说效果很好。我确实考虑过你使用精简配置和 LVM 的方法,我认为它也能起到同样的作用。

如果您决定采用 LVM 方式,我建议您不要对磁盘进行分区。正如您所说,没有分区表会使虚拟磁盘更容易增大。如果没有分区表,您只需运行 pvresize,Linux 就会识别出物理卷已增大。如果有分区表,您必须卸载所有文件系统,删除分区表,重新创建分区表,然后运行 ​​pvresize。这需要做很多工作,而且需要停机。

相关内容