存储系统的一些设想 MemoryFS
1. 经常使用内存作为存储介质
如上图是存储金字塔,展现了存储介质多少钱与速度的相关。
目前,企业之所以宽泛驳回磁带和磁盘作为存储介质,关键是由于它们的多少钱长处。市场多少钱受市场供需影响,即使是多少钱较高的存储介质,假设消费老本昂贵,具备足够大的市场,消费环节中的良品率高,那么其市场多少钱也会降上去。
市场的平衡点在于,存储介质能够满足消费者的需求,同时消费者情愿支付的多少钱能够笼罩消费老本。但是,这种平衡并非欲速不达,产能的投入须要较长周期,而多少钱竞争却是瞬息万变,这种长短周期的不婚配造成了市场多少钱的动摇。
咱们对存储介质的速度和容量的需求在始终增长,总是谋求更快、更经济、更大容量的存储处置打算。这种需求的增长将推进市场平衡点的移动,催生新的需求,同时也促成了存储技术的翻新与开展。
将内存作为存储介质存在两大应战:老本高昂和断电后数据失落。
多少钱的疑问,要交给需求,假设需求端大迸发,内存作为存储介质的多少钱就会降上去。掉电易失,可以从软配件层面处置。软件层面,可以经过冗余、纠删码重建等模式提高数据的牢靠性;配件层面有英特尔的傲腾作为先烈可以自创。当然,也可以不处置掉电易失的疑问,掉电易失只是在传统场景下是缺陷,假设在一个须要隐秘的场景下呢?掉电易失,或许成为一个很好的处置打算。寻觅新的场景、高附加值的需求,也是一个不错的思绪。
基于以上思考,我以为间接经常使用内存作为存储介质,在未来是一个可选的打算。但这不象征着,会成为干流打算,而只是在某些场景下,会带来很大的便利或收益。
2. 散布式的内存存储
假设仅仅只是在一台设施上创立一个存储区域,那么经常使用tmpfs就可以做到。
因此,散布式、允许横向裁减是 MemoryFS 的一个必要的个性。
如上图是 MemoryFS 的元数据与数据分别的存储架构。
间接经常使用 Redis 存储元数据,其实是一个十分不错的选用。在经常使用JuiceFS社区版时,我首选也是经常使用 Redis 作为元数据存储,Redis 只要要 1GB 的内存就能够允许约 2TB 的数据存储。
另外一种打算是,经常使用RocksDB和 Raft 成功一个散布式的元数据存储,这样会带来愈加方便的部署、愈加可定制的存储打算。
3. 允许 POSIX 协定
在 Linux 系统上,允许 POSIX 协定的存储能够挂载到文件系统中,提供远程访问才干,能够裁减运行场景。
而经常出现的允许 POSIX 协定的模式是经常使用 Fuse,JuiceFS、SeaweedFS 也都是基于 Fuse 提供的 POSIX 协定。
在中可以看到普通的文件系统 ext4、btrfs 等都是内核中成功的。而 Fuse 提供了一种不用修正内核,就能成功自定义文件系统的方法。
如上图,经常使用 Fuse 关键分为如下步骤:
如上图,须要创立 MemoryFS Workers 组成的Cluster提供存储服务,经常使用时,经过一个本地 Fuse 程序挂载到目录即可。
4. 总结
本篇关键是记载一些设想,将内存作为存储介质对外提供存储才干,关键内容如下: