文档

云存储网关软件版公测

更新时间:

云存储网关软件版是一款可以安装在阿里云用户ECS上或者用户本地数据中心客户端的产品,提供类似ossfs的功能,使用云存储网关软件版可以将OSS桶挂载到客户端本地以POSIX文件接口进行访问,从而您可以像操作本地文件一样操作OSS里面的文件。

云存储网关软件版具体操作,请参见通过命令行工具快速使用云存储网关软件版

云存储网关托管版和软件版对比

和云存储网关托管版相比,云存储网关软件版更加的轻量,在某些场景更加适合。比如云存储网关托管版有不同的规格,每个规格对应具体的网络带宽,多客户端会共享固定带宽。如果客户端数目比较多,存储网关的网络带宽就可能会成为瓶颈,无法匹配所有客户端带宽的总能力。但是使用云存储网关软件版则可以突破这个限制,它安装于客户端内部,可以发挥出每个客户端带宽的完整能力。

下面分别列出了云存储网关托管版和云存储网关软件版的适用场景。

云存储网关托管版

  • 云存储网关托管版支持NFS、SMB和iSCSI标准协议,对这些协议的某些特性有强需求,比如需要访问SMB共享并使用AD服务来鉴权、通过NFS服务指定某些客户端只读功能等。

  • 多个客户端想看到统一的目录结构视图并保证操作互斥性,需要使用托管版本来保持唯一的视图,否则各个客户端看到的视图可能会有所不同,操作也可能会有冲突,比如多个客户端同时修改同一个文件时需要保证顺序性。

  • 如果需要在Windows下访问OSS Bucket,建议使用SMB共享以及托管版本的云存储网关,不推荐在Windows访问NFS共享。

  • 云存储网关托管版作为一个整体,阿里云可以提供更为完备的监控和运维能力,比如和云监控的集成。

云存储网关软件版

  • 可以接受使用POSIX的文件接口来对OSS Bucket进行访问,主要诉求是读写文件,对于权限之类功能要求不高。

  • 允许不同客户端同一时间看到的视图偏差(客户端是异步将操作回放到OSS,所以不同客户端会有偏差),多客户端基本可以认为互不干扰的独立存在。

  • 客户端数目比较多,远大于单网关的处理能力,或者总体的带宽需求比较高,在满足前一条件的情况下,可以使用云存储网关软件版,并且可以使用批量挂载功能迅速部署。

  • 客户端数目比较少,比如只有一两个客户端需要挂载使用OSS的情况,并且客户端之间的操作没有冲突,推荐使用云存储网关软件版这种轻量的方案。

云存储网关软件版和ossfs对比

和ossfs相比,云存储网关软件版稳定性更好并且功能也更丰富,在元数据管理和数据同步机制等多方面均有所优化。

  • 以KV数据库缓存目录结构等元数据信息,使您执行ls命令等元数据操作更为高效。

  • 以切片的方式高效组织并缓存文件数据,按需自动下载和淘汰。

  • 以持久化日志的方式记录用户的每次写入、删除等操作,并以异步的方式有序回放这些日志,用户操作延迟更低,体验更好。

  • 写入数据以Sync IO的方式落盘,如果客户端意外重启,数据也不会丢失。

  • 用户重命名操作保证原子性,在异步回放时,实际是调用copy + delete object的API组合。

下面将从功能特性、使用性能等不同的方面对云存储网关软件版和ossfs进行对比。

元数据

  • 元数据存储管理

    下表详细列举了ossfs与云存储网关软件版元数据相关的原理对比:

    对比项

    云存储网关软件版

    ossfs

    元数据缓存

    云存储网关软件版采用KV数据库存储数据,它会将元数据全量缓存到缓存盘里,能够处理大规模的文件数目。

    ossfs会将元数据存储在内存中,可以缓存少量的文件元数据信息。

    元数据淘汰

    云存储网关软件版暂时不支持元数据淘汰,但支持元数据扩容。

    文件元数据超过缓存数目上限时,ossfs会淘汰最早缓存的一个文件的元数据。

    元数据一致性保证

    本地元数据信息和云上元数据信息不一致时,云存储网关软件版会将云上文件元数据信息同步到本地缓存。在一定时间间隔(支持动态配置,最低15s)内只会同步一次,同步的频率更低,因此性能更好,但是实时性相比于ossfs较低。

    Open、缓存的ETag和云上元数据信息不一致时,ossfs会向OSS发送更新元数据信息的请求,从而保证本地元数据信息和云上元数据信息的强一致性,因此ossfs需要频繁更新元数据信息,极大地影响性能,但是实时性相比于云存储网关软件版较高。

    • 对于ossfs而言,元数据请求过于频繁,对于文件数量多的情形,会影响性能。此外,ossfs元数据缓存数量有上限,对于文件数量多的情形需要遍历淘汰,影响性能。

    • 对于云存储网关软件版而言,元数据全量缓存,无需遍历淘汰。此外,元数据操作均基于本地缓存,无需频繁请求,降低一定的实时一致性,大幅度提升了元数据性能。

  • 元数据相关测试

    • 一般测试

      下表列举了一些情形下的文件系统操作,对云存储网关软件版与ossfs的元数据性能进行直观测试。

      测试项目

      云存储网关软件版

      ossfs

      创建1000个4 KB小文件

      创建文件所花费时间:3.13s

      从开始创建文件到文件全部上云所花费时间:20.07s

      从开始创建文件到文件全部上云所花费时间:81s

      对上述1000个小文件进行chmod操作

      chmod所花费时间:1.49s

      从开始进行chmod操作到文件全部上云所花费时间:21s

      从开始创建文件到文件全部上云所花费时间:81s

      在客户端无元数据缓存的前提下,执行ls <1000个文件所属文件夹>

      花费时间:0.24s

      花费时间:3.36s

      创建10万个4 KB小文件

      创建文件所花费时间:384s

      从开始创建文件到文件全部上云所花费时间:402s

      从开始创建文件到文件全部上云所花费时间:8286s

      对上述10万个小文件进行chmod操作

      chmod所花费时间:207s

      从开始进行chmod操作到文件全部上云所花费时间:240s

      从开始进行chmod操作到文件全部上云所花费时间:8218s

      在客户端无元数据缓存的前提下,执行ls <10万个文件所属文件夹>

      花费时间:49s

      花费时间:526s

    • 标准元数据mdtest测试

      mdtest是文件系统元数据的一项基准测试,下表列举了标准mdtest中,ossfs和云存储网关软件版的各项文件系统操作的性能。

      mdtest

      云存储网关软件版

      ossfs

      dir stat

      4928

      544

      dir create

      2597

      315

      dir remove

      3127

      322

      file stat

      4593

      458

      file create

      2347

      191

      file read

      2018

      122

      file remove

      2284

      140

      tree create

      9

      2

      tree remove

      13

      0

    从上面的结果可以看出,元数据操作的时间对读写性能的影响极大。

    • ossfs的元数据缓存在内存中,但有上限。由于ossfs频繁地向Bucket发送获取元数据信息的请求,因此需要频繁地遍历本地缓存的元数据信息,并且将缓存时间最早的本地元数据信息淘汰,极大地降低了元数据操作的性能。

    • 相较于ossfs,云存储网关软件版以全量缓存元数据的方式,使得元数据信息的获取只需要访问本地磁盘,极大地提升了元数据操作的性能。

数据缓存

  • 数据缓存管理

    下表详细列举了ossfs和云存储网关软件版的数据缓存原理对比:

    对比项

    云存储网关软件版

    ossfs

    存储形式

    数据缓存在本地磁盘中,占用的空间预先分配并统一管理。

    数据以临时文件的方式存在系统盘/tmp目录下,临时文件对用户不可见,但使用总量是不可控的。

    若本地缓存命中,从磁盘读;否则从云上下载缺失的数据并写入本地磁盘供后续读取,对读更友好。

    缓存文件自动回收,本地一般无缓存,因此需要从云上下载至本地,再从本地缓存读数据。

    • 数据首先由内存缓存,达到缓存上限或文件close时,写入磁盘后立即返回。

    • 后台线程从磁盘中读取数据,异步回放上云,体验更好。

    • 文件关闭之后,无法及时感知文件是否上云。

    • 数据首先写入磁盘,再从磁盘读取文件,同步上云,上云之后才会返回。

    • 文件关闭时,即可在云上看到文件数据。

    • 如果文件比较大,在关闭的时候会卡顿很长一段时间。

    • ossfs的数据缓存在临时文件中,并且会被自动清理,因此无法缓存热点数据。此外,请求在数据上云之后才会返回,极大的影响了性能。

    • 云存储网关软件版的数据会异步上云,极大的提升了IO性能。另外数据落盘为Sync IO,请求在数据落盘之后才会返回,保证了数据安全性。

  • 数据相关测试

    下面根据读写的不同情形,分别对ossfs和云存储网关软件版进行测试,具体结果如下:

    • 写测试

      测试项目

      云存储网关软件版

      ossfs

      拷贝500个4 KB文件至挂载点

      1.88 MB/s

      0.042 MB/s

      64个线程同时拷贝文件至挂载点(每个线程160个4 KB文件)

      3.46 MB/s

      0.051 MB/s

      拷贝1个5 GB文件至挂载点

      232.7 MB/s

      64.7 MB/s

      32个线程同时拷贝文件至挂载点(每个线程1个1 GB文件)

      340.3 MB/s

      95.8 MB/s

    • 读测试

      测试项目

      云存储网关软件版(本地无缓存)

      云存储网关软件版(本地有缓存)

      ossfs

      从挂载点拷贝500个4 KB文件至本地

      0.25 MB/s

      3.30 MB/s

      0.16 MB/s

      64个线程同时从挂载点拷贝文件至本地(每个线程160个4 KB文件)

      9.67 MB/s

      20.86 MB/s

      0.29 MB/s

      从挂载点拷贝1个5 GB文件至本地

      53.3 MB/s

      222.5 MB/s

      35.0 MB/s

      32个线程同时从挂载点拷贝文件至本地(每个线程1个5 GB文件)

      346.9 MB/s

      349.8 MB/s

      248.2 MB/s

    从上面的结果可以得出结论:

    • 数据写入的场景下,云存储网关软件版由于是异步上传,数据落盘之后即返回。而ossfs是同步上传,数据上传到OSS Bucket之后才能返回。因此在写大文件时或者网络较差时,云存储网关软件版优势更大。

    • 读写文件数目较多时,元数据的性能也在其中扮演了很重要的作用,因而云存储网关软件版表现更好。

    • 云存储网关软件版支持缓存数据到本地磁盘。数据重复读取的场景下,云存储网关软件版无需重复从云上下载数据,而是直接从本地缓存读取,所以云存储网关软件版在这一方面体验更优。

    • 读文件本地无缓存时,云存储网关软件版通过后台线程池,异步进行预取,而ossfs则是等待预取完成之后返回,因此云存储网关软件版在这方面更具优势。

POSIX语义兼容性对比

采用标准的POSIX语义测试集pjdfstest,分别对云存储网关软件版和ossfs进行POSIX语义兼容性测试,该测试集包含8832个测试用例,测试结果如下:

pjdfstest

云存储网关软件版

ossfs

通过率

96.21%

88.77%

从上表中可以看到,云存储网关软件版相比于ossfs,对标准POSIX语义的兼容性更高。其中云存储网关软件版失败的测试用例主要包含如下两个方面:

  • 文件名称长度超过限制(OSS Bucket文件名称长度必须在1~1023个字节之间)。

  • 云存储网关软件版不支持硬链接。

资源占用对比测试

采用IO测试工具FIO进行测试,通过top命令或者ps命令对进程的资源占用进行统计,并且记录最大值。

资源占用

云存储网关软件版

ossfs

内存最高占用

635.7 MB

43.1 MB

CPU最高占用

365.0%

680.7%

从上面的结果可以得出结论:

  • 内存使用方面,ossfs相对轻量。相比之下,云存储网关软件版在内存维护了一部分写的缓存用于IO加速,并且维护了结构更加复杂、占用了更多内存的变量,因此对内存要求更高。

  • CPU占用方面,云存储网关软件版的CPU使用更加轻量稳定。ossfs的CPU使用率会在文件集中上传时爆发增长。而云存储网关软件版因为有大量的异步线程,因而占用比较平稳。

监控运维能力对比

云存储网关软件版被激活之后,在主机侧和控制台侧均可监控、运维,而ossfs的运维途径更少,且成本更高。下表从主机侧(客户端侧)和控制台侧,分别对ossfs和云存储网关软件版的监控运维能力进行了对比。

监控运维能力对比

云存储网关软件版

ossfs

主机侧

云存储网关软件版支持客户通过cli命令实时获取挂载点的状态。可查询信息包括:剩余元数据空间、数据缓存使用量、当前上传队列大小等等。上述监控信息,同样可以用于集成客户自身的监控运维系统。

ossfs不支持实时获取挂载点信息,运维能力有限。

云存储网关软件版支持客户通过cli实时修改挂载点的部分配置,如客户的endpoint变更时,可以实时通过cli命令进行更新,提升客户运维效率。

ossfs不支持实时更新挂载点配置。更新配置需要重新挂载,运维成本较高。

云存储网关软件版创建了守护进程,会定期检查挂载点状态,并尝试一些基本的错误恢复,如进程被意外中断后的恢复等等,降低客户运维成本。

ossfs挂载点进程被意外中断后,无法自动恢复,需要人工介入,增加运维压力。

控制台侧

网络联通时,云存储网关软件版会定期上报各挂载点的信息至控制台,控制台统一监控运维。上报的信息包括:挂载点上传队列大小、剩余元数据空间、数据缓存使用量、读、写性能数据、数据上传、下载量等等。

ossfs并未集成相应的控制台,运维途径较少。

控制台监控信息后续可以接入云监控,用户可以自主制定一些告警策略,提升运维能力。

其它功能对比

这里介绍云存储网关软件版相比于ossfs,具备的一些特有的高级特性与稳定性能力。

  • windows平台支持

    云存储网关软件版同时支持Windows平台,可以将OSS Bucket挂载至一个本地路径(如D:\mp),或是挂载为一个新的磁盘符(如Z:\)。

  • 高级特性

    • 限流支持:支持对用户写入的带宽以及和OSS之间的同步带宽进行限流,方便协调多个客户端之间的网络带宽使用。

    • 忽略删除:云存储网关软件版支持忽略删除,可以选择不同步删除操作到OSS Bucket,避免用户的数据被误删除。

    • 其他高级特性:云存储网关软件版支持通过命令行工具,实时获取、设置直读OSS、只读模式等其它多个高级选项。

  • 稳定性相关特性

    • 意外处理:云存储网关软件版有守护进程,机器重启或挂载点进程被意外终止时会自动拉起所有的挂载点。db中存储操作日志,如果文件上传中断,会重新继续上传。无需用户自己维护启动脚本。

    • 失败重传:云存储网关软件版是异步上传,网络失败的情况下会自动重试失败的部分,而不是像ossfs直接返回失败。

    • 超大文件写入支持:ossfs数据缓存落在系统盘/tmp目录下,同时读写的文件大小超过系统盘大小时,会将系统盘占满(默认预留50 M空间)。缓存盘占满时,强制提前上传,此时IO会暂时中断。云存储网关软件版有完备的缓存空间管理,已使用缓存空间到达一定水位时,会自动触发回收。

  • 本页导读 (1)
文档反馈