我有几个在 ProxmoxVE 上的 QEMU/KVM 中运行的虚拟化文件服务器。
物理主机有 4 个存储层,性能差异很大。它们既通过本地连接,也通过 NFS 连接。
这些将作为本地磁盘提供给文件服务器,抽象为池,并处理网络的多个数据流。我的目标是让这个抽象层智能地汇集各层。
此网站上有一篇类似的帖子: 使用 Linux 自制自动分层存储解决方案?(内存 -> SSD -> HDD -> 远程存储)其中接受的答案是建议放弃 NexentaStor 的 Linux 解决方案。
我喜欢运行 NexentaStor 的想法。它几乎符合要求。
NexentaStor 提供混合存储池,我喜欢校验和的想法。16TB 无需支付许可费也是一大优势。在硬件费用之后,免费几乎是我预算所能承受的全部。
我不知道 zfs 池是否是自适应的或根据负载动态分配的,但由于 NexentaStor 不支持 virtio 网络或块驱动程序,因此它变得无关紧要,而这在我的环境中是必须的。
然后我看到了一个叫做SmartMove的商业解决方案:http://www.enigmadata.com/smartmove.html
这看起来像是朝着正确方向迈出的一步,但我太穷了,甚至询问报价都会浪费他们的时间,所以我在寻找另一种选择。
我正在寻找支持 virtio 驱动程序的 Linux 实现,但我不知道哪种软件可以实现它。
答案1
在 Linux 服务器上获取此信息的一种方法是使用flashcache 内核模块。这实际上只为您提供了一个层级,比如 Drobo 和/或本地磁盘上的 SSD。过去几周,我一直在家使用 500GB SATA 驱动器和 X25-E SSD 进行实验,以提供 LVM,然后我将其切片并通过 iSCSI 提供服务。到目前为止,它运行良好。
FlashCache 有两种可用方法:直写和回写。回写缓存写入,但也存在尚未解决的设计缺陷,这会导致系统发生严重故障,无法正确保存某些数据。直写没有这样的问题,但写入始终会刷新到备份磁盘。
不过,我认为这不适合在 NFS 之上分层。
关于 Flashcache 的一些注意事项:目前您必须从头开始构建它,您必须运行 64 位内核(32 位无法正确加载模块),到目前为止,在我的测试中,它运行良好。再说一次,到目前为止只过了一两周。
答案2
你可以尝试在 github 上扩展这个实验项目: https://github.com/tomato42/lvmts
它包含一个守护进程,可以检测最常使用 lvm 范围并将这些范围移至分层存储链。