大家好,JuiceFSv0.17已经在国庆假期如期发布啦!这是我们2021年秋季发布的第二个版本,所以让我们开门见山,看看有什么新内容。本次更新共有80+次提交,共有9位来自JuiceFS社区的小伙伴在GitHub上贡献了代码。在此,我们向每一位贡献者表示最诚挚的感谢,欢迎您在屏幕前加入JuiceFS开源社区,贡献代码、文档或讨论想法。通过LTP1270测试,Linux系统下兼容性更完美最新版JuiceFS针对Linux系统环境进行了进一步优化,完善了对rename和setxattr读取其他参数的支持,顺利通过了LTP1270测试。LTP(LinuxTestProject)是由IBM、Cisco等公司共同开发和维护的项目,旨在为开源社区提供一个测试集,以验证Linux的可靠性和稳定性。LTP包括各种工具来验证Linux内核和相关功能。测试结果:TestcaseResultExitValue----------------------fcntl17FAIL7fcntl17_64FAIL7getxattr05CONF32ioctl_loop05FAIL4ioctl_ns07FAIL1lseek11CONF32open14CONF32openat03CONF32setxattr03FAIL6-----------------------------------------------总测试:1270Total跳过测试:4个失败总数:5个内核版本:5.4.0-1029-aws机器架构:x86_64其中,跳过和失败的项目主要是由于几个不支持的功能,详见此文档。优化存储临时数据的性能为了满足Spark的shuffle文件的临时数据存储需求,社区贡献者WilliamZhu(@allwefantasy)为JuiceFS贡献了数据延迟上传功能,允许JuiceFS先将数据写入本地缓存磁盘,如果数据在短时间内删除,无需写入对象存储,可提供接近本地磁盘的读写性能。当写入大量数据时,会自动写入对象存储,释放本地磁盘空间,无需担心磁盘被shuffle数据填满。这个新特性让JuiceFS可以作为一个弹性本地磁盘,提供无限的存储空间和对临时数据的低延迟访问。为了进一步提高性能,添加了在客户端内存中运行的元数据引擎(MemKV)。与其他元数据引擎一样,MemKV也用于保存与数据相关的元数据,但它不是持久化的。客户端卸载后,释放MemKV元数据。MemKV完全在内存中运行,具有绝对的性能优势,非常适合临时文件存储场景。TiKV元数据引擎在Hadoop场景下性能提升5倍JuiceFSJava客户端需要频繁的路径解析,Redis引擎通过Lua实现服务器端多级路径解析,而SQL和TiKV引擎仍然需要多次元数据请求来解析一个路径,尤其是当路径比较深,影响比较大。为了解决这个问题,本次更新在JuiceFSHadoopSDK客户端引入了类似Linux内核的元数据缓存机制,可以通过参数控制目录、文件、属性的过期时间。可以通过以下方式启用:
