精简configurationLinux服务器的最佳实践(在VMware上)

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

我试图find一个可以节省磁盘空间的解决scheme,同时还可以轻松地增加单个机器。

理论上,我只是为每台机器创build大磁盘并使用精简configuration。 每个磁盘会根据需要增长。 然而,似乎只有50 GB的数据和相当低的写入数量的500 GB的ext3文件系统仍然容易增长磁盘映像,例如。 250 GB随着时间的推移。 或者我在这里做错了什么? (我很惊讶,在Google这个主题上我找不到多less东西,顺便说一下,在serverfault.com上甚至没有精简configuration标签。)

目前我正在计划创build大型精简configuration的磁盘 – 但是LVM卷很小。 例如:500 GB磁盘上的100 GB卷。 这样,我可以更轻松地根据需要增长LVM卷和文件系统大小,甚至可以在线。

现在的实际问题是:

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

可能的解决scheme包

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

  • find一个容易的方法回收分区上的空闲空间(重新稀疏?)

  • 别的东西?

一个额外的问题:如果我按照我目前的计划,你会推荐在磁盘上创build分区( pvcreate /dev/sdX1 vs pvcreate /dev/sdX )吗? 我认为使用没有分区的原始磁盘是违背惯例的,但是如果需要的话,它会使磁盘的增长变得容易一些。 这只是一个味道的问题,对吧?

如果我正确理解精简configuration,那么如果您没有密切监视VMFS文件系统的增长,并且允许您的VMDK填充VMFS卷,则真的会导致问题。 您已经在testing中看到,精简configuration磁盘容易增长以快速填充可用空间,并且无法回收可能在操作系统内部空闲的空间。

另一个select是创build足够大小的VMDK文件来处理当前的使用情况和预期的增长高峰,随着应用程序数据使用量的增长,只需​​添加更多的VMDK文件。 新的VMDK文件可以实时添加到虚拟机,只需重新扫描(echo“ – / – ”> / sys / class / scsi_host / host?/ scan)。 您可以对新磁盘进行分区,将其添加到您的LVM中,并实时扩展文件系统。 通过这种方式,您始终可以知道为每个虚拟机分配了多less空间,而且不会意外地从guest虚拟机内部空间中运行VMFS。

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

我能想到的最好的build议是创build一个具有物理卷,卷组和逻辑卷的LVM设置,然后通过iSCSI将这些逻辑卷挂载为虚拟机的文件系统。

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

分区将像标准硬盘一样工作,因为LV将如何显示给虚拟机guest。

编辑:没关系,我得到了你在linux下运行vmware的错误印象,而不是vmware下的linux。

我不知道它是如何工作在VMware,但红帽RHEV – M / RHEV – H其可能的,它支持RHEL 4.8至5.X同时赢得2K3 R2和赢得2K8。 欲了解更多信息http://studyhat.blogspot.com/2010/05/rhev-for-servers-22-installation-and.html

不同的build议:设置一个文件服务器,将保存所有的用户数据。

该文件服务器当然应该由LVM进行pipe理,以用于在线容量pipe理。

如果你愿意的话,你可以创build一个ha-setup(drbd + heartbeat),在SAN中有一个你的文件服务器的副本,另外一个拷贝在外面或者类似的地方。 (对于偏执狂)

由于你的客户端是基于Linux的,所以你可以使用比Samba更快的NFS。 一个FileServer将允许您一个集中的备份策略以及一个集中的存储使用情况监视。 就您的精简configuration问题而言:

按照您的意愿创build您的LVM设置(在您的示例中,在500gb PV上的100gb LV,只需更改与虚拟机所需存储量相匹配的数字即可)。 在需要的时候扩展这个LV,就像你计划在每个虚拟机中分开做一样。 但是只要在你的文件服务器上执行它。 每次虚拟机降低其存储空间的使用量时,所有虚拟机都可以使用该空间;-)

如果需要或希望使用文件服务器上的配额,以防止单个虚拟机填满文件服务器。

您是否可以在不closures使用虚拟机的情况下扩展卷? 我通常这样做,但我不知道你的存储设置是什么样的,或者VMware如何使事情复杂化。 如果可以的话,我会做的是这个

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

当需要增加音量的时候

1)在您的SAN或VMware中,根据需要进行扩展。 2)在linux中,运行echo 1 > /sys/block/EXAMPLE/device/rescan ,其中EXAMPLE是/ sys / block /下的设备名称。 3)在linux中,运行resize2fs /dev/EXAMPLE ,其中EXAMPLE是/ dev下的设备名称。

这种方法对我来说很好。 我确实考虑过使用自动精简configuration和LVM的方法,我认为它也可以。

如果你决定去LVM路线,我build议不要分区磁盘。 如你所说,没有分区表可以让虚拟磁盘更容易生长。 没有分区表,你可以运行pvresize,linux会识别出物理卷已经增长了。 使用分区表,您必须卸载任何文件系统,删除分区表,重新创build分区表,然后运行pvresize。 这是更多的工作,而且需要停机。