也许标题混乱,但让我解释一下…
我们的mysql服务器(在xen虚拟机上)有时会在磁盘上生成巨大的tmp文件。 所以我们需要一个大的tmpdir来存储它们。 我们决定将tmpdir安装到SSD以获得更好的性能。 但是,正如你所知,SSD在某种程度上是昂贵的,而且mysql并不总是生成那么大的tmp文件。 所以如果我们把每一个虚拟机的mysql都设置成一个大的SSD,那就太浪费了。 因此,我们只想给每个tmpdir(例如10G)提供小型SSD(实际上是在xen SSD上备份的虚拟磁盘)。
但正如前面所说,有时候mysql会生成超过10G的巨大tmp文件。 如果发生这种情况,那么mysql查询将失败。 所以我们要这样的剂量:
将一个ssd和hdd合并成一个驱动器(这样它可以挂载到mysql的tmpdir)。 当ssd用完所有空间,然后使用硬盘。
然后我认为dmseupt或LVM也许可以做到这一点。 所以我做了一个简单的testing:
1 SSD 0.5G | 1 HDD 10G | 一个逻辑卷在两个驱动器之上 | 上面逻辑卷上的ext4文件系统
并使用dd工具生成一些大小为0.3G的文件。然后我可以看到SSD使用增长了0.3G,硬盘没有改变。 一切都很好,直到现在! 但是,当我删除该文件,然后创build,然后删除,…这样做。
原来硬盘空间的使用量不断增加!
所以我客人ext4剂量不倾向于覆盖删除的文件? 我们可以禁用此function还是有另一个文件系统首选写低LBA?
谢谢阅读!
您想要将旋转磁盘的低成本与SSD的高性能相结合? 是的,可以这样做:混合存储池是一个好主意。 但是,我不认为你的计划重新混合存储是一个好主意。
混合存储在名为ZFS的文件系统中实现得非常漂亮。 今天可以免费使用ZFS: