基于 NVMe SSD 的分布式文件存储 UFS 性能提升技术解析

UFS (UCloud File System) 是一款 UCloud 自主研发的分布式文件存储产品,此前已推出容量型 UFS 版本。UFS 以其弹性在线扩容、稳定可靠的特点,为众多公有云、物理云、托管云用户提供共享存储方案,单文件系统存储容量可达百 PB 级。

为了应对 IO 性能要求很高的数据分析、AI 训练、高性能站点等场景,UFS 团队又推出了一款基于 NVMe SSD 介质的性能型 UFS,以满足高 IO 场景下业务对共享存储的需求。性能型 UFS 的 4K 随机写的延迟能保持在 10ms 以下,4K 随机读延迟在 5ms 以下。

性能的提升不仅仅是因为存储介质的升级,更有架构层面的改进,本文将从协议、索引、存储设计等几方面来详细介绍性能型 UFS 升级改造的技术细节。

协议改进

此前容量型 UFS 设计时支持的协议为 NFSv3,其设计理念是接口无状态,故障恢复的逻辑简单。此外 NFSv3 在 Linux 和 Windows 上被广泛支持,更易于跨平台使用。但是 NFSv3 的设计缺点导致的高延迟在高 IO 场景下是不可接受的,所以在性能型 UFS 中,我们选择仅支持性能更好、设计更先进的 NFSv4 协议。

NFSv4 与 NFSv3 相比,更先进的特性包括:支持有状态的 lock 语义、多协议间的 compound 机制等。特别是 compound 机制,可以让多次 NFS 协议交互在一个 RTT 中完成,很好地解决了 NFSv3 性能低效的问题。一次典型的 open for write 操作,在 NFSv3 和 NFSv4 上分别是这样的:

基于NVMe SSD的分布式文件存储UFS性能提升技术解析

基于NVMe SSD的分布式文件存储UFS性能提升技术解析

可以看到,在关键的 IO 部分,NFSv4 比 NFSv3 节省一半的交互次数,可以显著降低 IO 延迟。除了协议以外,性能型 UFS 的核心由业务索引和底层存储两部分组成,由于底层 IO 性能的提升,这两部分都需要进行深度改造以适应这种结构性的改变。下面我们将分别介绍这两部分的改造细节。

业务索引

索引服务是分布式文件系统的核心功能之一。相比对象存储等其它存储服务,文件存储的索引需要提供更为复杂的语义,所以会对性能产生更大影响。

索引服务的功能模块设计是基于单机文件系统设计思路的一种『仿生』,分为两大部分:

• 目录索引:实现树状层级目录,记录各个目录下的文件和子目录项

• 文件索引:记录文件元数据,包含数据块存储信息和访问权限等

索引服务各模块的功能是明确的,主要解决两个问题:

• 业务特性:除了实现符合文件系统语义的各类操作外,还要保证索引数据的外部一致性,在各类并发场景下不对索引数据产生静态修改从而产生数据丢失或损坏

• 分布式系统特性:包括系统拓展性、可靠性等问题,使系统能够应对各类节点和数据故障,保证系统对外的高可用性和系统弹性等

虽然功能有区别,目录索引和文件索引在架构上是类似的,所以我们下面只介绍文件索引 (FileIdx) 架构。在以上的目标指导下,最终 FileIdx 采用无状态设计,依靠各索引节点和 master 之间的租约(Lease)机制来做节点管理,实现其容灾和弹性架构。

基于NVMe SSD的分布式文件存储UFS性能提升技术解析

租约机制和悲观锁

master 模块负责维护一张路由表,路由表可以理解成一个由虚节点组成的一致性哈希环,每个 FileIdx 实例负责其中的部分虚节点,master 通过心跳和各个实例节点进行存活性探测,并用租约机制告知 FileIdx 实例和各个 NFSServer 具体的虚节点由谁负责处理。如果某个 FileIdx 实例发生故障,master 只需要在当前租约失效后将该节点负责的虚节

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值