我们很高兴地宣布 JuiceFS v1.1-Beta 版本正式发布啦!这是一个功能丰富的版本,带来了许多实用的新功能和改进。在这个版本中我们新增了以下功能:

  • 目录配额:为目录设置配额限制,控制其大小和文件数
  • 目录克隆:快速地复制目录及其内容,节省时间和空间
  • 一键恢复回收站文件:一次性地恢复某段时间内所有被删除的文件,无需逐个操作
  • 一键收集诊断信息:一键生成诊断报告,方便排查问题和反馈意见
  • 快速查看用量信息:快速查看存储空间和文件数的统计信息

此外,我们还新增了一个元数据引擎 FoundationDB,一个支持分布式事务的 Key-Value 存储。

本次版本,共有 57 位社区贡献者参与贡献了 726 次提交,感谢每一位的付出。

下面,我们将详细介绍这个版本的新功能和变化。

目录配额

配额可以用来限制文件系统中存储空间的最大可用量,防止因个别用户占用过多而影响整个系统的稳定性。在之前版本中,JuiceFS 只支持文件系统级别的配额。这样一来,当这个文件系统被多用户共享使用时,管理员就无法有效地控制每个用户的使用量。因此,在 v1.1 版本中,我们为 JuiceFS 增加了目录配额的功能。具体来说,管理员可以根据需要为任意目录设置一个配额阈值(硬限制),之后如果此目录的使用量达到或超过该阈值,任何试图新建或扩展文件的请求都将失败,直到用户删除部分已有文件或管理员提高配额阈值。另外,为目录设置配额还有一个好处,就是可以让 JuiceFS 跟踪并记录它的使用情况,并在需要时快速获取此目录及其子目录下所有文件的用量统计信息。

目录配额的管理需要借助于新的 juicefs quota 命令,其设置参数与现有的文件系统配额一致,通过 --capacity <val> 来限制容量和通过 --inodes 来限制文件数。例如:

$ juicefs quota set $METAURL --path /test --capacity 1
+-------+---------+---------+------+-----------+-------+-------+
| Path | Size | Used | Use% | Inodes | IUsed | IUse% |
+-------+---------+---------+------+-----------+-------+-------+
| /test | 1.0 GiB | 1.6 MiB | 0% | unlimited | 314 | |
+-------+---------+---------+------+-----------+-------+-------+

以上命令为 /test 目录设置了 1 GiB 的容量配额,且同时可以看到该目录下已使用量为 1.6 MiB。由于为目录新建配额时,需要递归统计该目录下当前的使用量,因此为已有的大目录设置配额可能需要等待较长时间。如果想查询某个目录的配额及其当前用量,可以使用 quota get 子命令,如:

$ juicefs quota get $METAURL --path /test
+-------+---------+---------+------+-----------+-------+-------+
| Path | Size | Used | Use% | Inodes | IUsed | IUse% |
+-------+---------+---------+------+-----------+-------+-------+
| /test | 1.0 GiB | 1.6 MiB | 0% | unlimited | 314 | |
+-------+---------+---------+------+-----------+-------+-------+

此外,也可以使用 quota ls 子命令来查看所有已经设置的配额。

值得注意的是,目录配额的统计并不是实时更新的,而是有一定的延迟。这样做是为了尽量减少对业务性能的影响。因此,可能出现这样的情况:目录用量已经达到配额阈值,但部分客户端在短时间(10 秒级别)内仍然可以写入。同时,如果客户端进程异常退出,其临时记录的用量信息可能还没有同步给元数据引擎,导致信息不准确。为了解决这个问题,JuiceFS 提供了 quota check 子命令,可以在必要时检查并修复配额中的统计值,如:

$ juicefs quota check $METAURL --path /test --repair
+-------+---------+---------+------+-----------+-------+-------+
| Path | Size | Used | Use% | Inodes | IUsed | IUse% |
+-------+---------+---------+------+-----------+-------+-------+
| /test | 1.0 GiB | 3.2 MiB | 0% | unlimited | 317 | |
+-------+---------+---------+------+-----------+-------+-------+

文件数的限制与其类似,在此不再赘述,具体使用可参考:https://juicefs.com/docs/zh/community/guide/quota/#目录配额。

目录克隆

有时候,用户可能需要将一些文件复制出来用于其他目的。如果文件量不大,可以直接用 cp 命令来完成。但是,如果文件量很大,这样做就会耗费很长时间,并且涉及到大量的对象存储数据复制。为了解决这个问题,JuiceFS 新增了目录克隆的功能,可以快速复制指定目录下的所有文件。新复制出来的文件有自己的元数据,但是和原文件共享数据块,只是将其引用计数加一。克隆完成后,两边的文件都是独立的,可以各自修改而不会相互影响。由于克隆过程只涉及到元数据操作,而不需要复制数据,因此速度会比普通的 cp 命令快很多。执行克隆的命令示例如下:

$ juicefs clone /mnt/jfs/dir1 /mnt/jfs/dir2

一键恢复回收站文件

JuiceFS 的回收站中,文件按照被删除的时间归类,并且附加了原来父目录的索引号,用于在需要时找回其原来的位置。但是,在实际使用中,我们发现利用这些信息重新构建目录结构比较麻烦,只适合手动恢复少量的文件。为了解决这个问题,JuiceFS 在这个版本中新增了 juicefs restore 命令来帮助整理这些文件,例如:

$ juicefs restore redis://localhost/1 2023-05-10-01 --put-back

以上命令可以将 .trash/2023-05-10-01 中的所有文件按其被删除时的目录结构放回原位置。如果原父目录不存在或者遇到有冲突的文件名,则会打印告警日志并跳过,用户后续可以再手动将其恢复到想要的位置。

一键收集诊断信息

当 JuiceFS 在运行中出现故障时,新接触的用户往往不知道该如何分析问题原因。因此,在这个版本中 JuiceFS 增加了 juicefs debug 命令来帮助一键收集关键的现场信息,包括主机环境、软件版本和进程运行时状态等,如:

$ juicefs debug /mnt/jfs --out-dir /tmp/jfs-debug

待命令完成退出后,用户可以在 /tmp/jfs-debug 中找到一个以挂载点名称和时间戳命名的 .zip 文件,里面即包含此次收集的诊断信息。

快速查看用量统计

在生产环境中,管理员经常需要定期查看文件系统的使用量情况,或者找出当前系统中最占用空间的目录等。在 JuiceFS 之前版本中,这需要管理员手动统计多个目录的用量(比如执行 du 命令),然后进行排序筛选,这样做既麻烦又可能耗时很长。为了解决这个问题,在这个版本中,JuiceFS 新增了 juicefs summary 命令来快速查看指定目录下的用量统计。例如:

$ juicefs summary /mnt/jfs --depth 1 --entries 5
+------+---------+------+-------+
| PATH | SIZE | DIRS | FILES |
+------+---------+------+-------+
| / | 176 MiB | 9 | 20 |
| d2/ | 43 MiB | 1 | 5 |
| d4/ | 40 MiB | 3 | 4 |
| d5/ | 40 MiB | 1 | 4 |
| d3/ | 23 MiB | 1 | 4 |
| d1/ | 20 MiB | 1 | 2 |
| ... | 10 MiB | 1 | 1 |
+------+---------+------+-------+

上述命令会统计 /mnt/jfs 下所有一级目录的使用量,并根据 SIZE 从大到小排序后显示最高的 5 项。

其他新功能

在这个版本中,JuiceFS 还增加了一些其他功能来提高系统的安全性与易用性,包括:

  1. 在 mount 时通过 --root-squash 选项来将 root 用户映射为一个非特权用户,以此来减少权限安全隐患和防止误操作
  2. 在 mount 时通过 --enable-ioctl 选项来使能对 ioctl 的部分支持,目前能用来设置一些特殊标记位来控制文件的行为,如 append only (a)immutable (i)
  3. 在使用 juicefs sync 工具时,新支持了 jfs:// 前缀,可以在不挂载的情况下就直接将对象存储与 JuiceFS 内文件同步

新的元数据引擎

在此版本中,JuiceFS 还引入了一种新的元数据引擎 FoundationDB。这是一款由 Apple 公司开源的分布式数据库,能够在多个集群服务器上高效地存储和管理大规模的结构化数据。它具有高性能、高可扩展性和高容错性的特点。要使用 FoundationDB 作为 JuiceFS 的元数据引擎,只需将 Meta-URL 设置为:fdb://<cluster_file_path>?prefix=<prefix>。其中 cluster_file_path 是 FoundationDB 的配置文件路径,用于连接其服务端。而 prefix 是一个用户自定义的字符串(与使用 TiKV 类似),可以在多个文件系统或者应用共用一个 FoundationDB 集群时,区分不同的元数据空间。示例如下:

$ juicefs format \
--storage s3 \
... \
"fdb:///etc/foundationdb/fdb.cluster?prefix=jfs" \
pics

具体使用细节可以参考文档

v1.1-Beta 下载地址:https://github.com/juicedata/juicefs/releases/tag/v1.1.0-beta1

希望这些变化能够让你在使用 JuiceFS 时感到更加轻松、便捷和高效。我们也期待你提供宝贵的反馈和意见。如果你还没有开始使用 JuiceFS,可以关注我们的公众号,或者访问官网 ,我们为开发者准备了详细的文档和博客。

JuiceFS 社区版 v1.1- Beta 发布,新增五个实用功能的更多相关文章

  1. PyRedisAdmin v1.0 Beta 发布,Redis 在线管理工具 - 开源中国社区

    PyRedisAdmin v1.0 Beta 发布,Redis 在线管理工具 - 开源中国社区 PyRedisAdmin v1.0 Beta 发布,Redis 在线管理工具

  2. WP8版微信5.4发布 新增夜间模式 暂没小视频

    经过近一个月的内测,WP8版的微信终于更新了v 5.4版本.新增聊天中的照片墙.识别图片二维码.夜间模式等功能,还对资源占用情况进行了优化,让程序可以更流畅的在低配置设备上运行. 不过,WP8版微信5 ...

  3. ActiveReports 9实战教程(1): 手把手搭建环境Visual Studio 2013 社区版

    原文:ActiveReports 9实战教程(1): 手把手搭建环境Visual Studio 2013 社区版 ActiveReports 9刚刚发布3天,微软就发布了 Visual Studio ...

  4. 搭建环境Visual Studio 2013 社区版

    搭建环境Visual Studio 2013 社区版 ActiveReports 9刚刚发布3天,微软就发布了 Visual Studio Community 2013 开发环境. Visual St ...

  5. MAC下BurpSuit社区版升级pro版

    环境OSX 步骤1. 官网下载社区版v1.7.32https://portswigger.net/burp/communitydownload 安装 2. 下载keygenhttps://down.5 ...

  6. Beta发布--PSP DAILY软件功能说明书2.0

    一.开发背景 你在完成了一周的软件工程作业后,需要提交一个PSP图表,里面有4项,如下所示: 1.本周PSP表格,包含每项任务的开始.中断.结束.最终时间,格式如下: 2.本周进度条,包含从开始到现在 ...

  7. JuiceFS v1.0 beta3 发布,支持 etcd、Amazon MemoryDB、Redis Cluster

    JuiceFS v1.0 beta3 在元数据引擎方面继续增强,新增 etcd 支持小于 200 万文件的使用场景,相比 Redis 可以提供更好的可用性和安全性.同时支持了 Amazon Memor ...

  8. J20航模遥控器开源项目系列教程(一)制作教程 | 基础版V1.0发布,从0到1

    我们的开源宗旨:自由 协调 开放 合作 共享 拥抱开源,丰富国内开源生态,开展多人运动,欢迎加入我们哈~ 和一群志同道合的人,做自己所热爱的事! 项目开源地址:https://github.com/C ...

  9. JuiceFS V1.0 RC1 发布,大幅优化 dump/load 命令性能, 深度用户不容错过

    各位社区的伙伴, JuiceFS v1.0 RC1 今天正式发布了!这个版本中,最值得关注的是对元数据迁移备份工具 dump/load 的优化. 这个优化需求来自于某个社区重度用户,这个用户在将亿级数 ...

  10. Jeasyframe 开源框架 稳定版 V1.5 发布

    这是Jeasyframe开源框架的第一个稳定版本,感谢一起帮忙测试并给予反馈的网友们. 框架官网:http://www.jeasyframe.org/ 产品介绍: Jeasyframe开源框架是基于S ...

随机推荐

  1. Linux报错:audit: backlog limit exceeded(审计:超出积压限制)

    Linux报错:audit: backlog limit exceeded(审计:超出积压限制) 系统版本:CentOS Linux release 7.6.1810 (Core) 问题现象:一次巡检 ...

  2. VUE基本写法

    VUE基本结构 <!DOCTYPE html> <html lang="en"> <head> <meta charset="U ...

  3. 【命令设计模式详解】C/Java/JS/Go/Python/TS不同语言实现

    简介 命令模式(Command Pattern)是一种数据驱动的设计模式,也是一种行为型设计模式.这种模式的请求以命令的形式包裹在对象中,并传给调用对象.调用对象再寻找合适的对象,并把该命令传给相应的 ...

  4. ubuntu安装ch34x驱动,并安装串口调试助手

    1.查看系统自带的ch34x驱动 kangxubo@kangxubo-HKNS:/lib/modules/5.19.0-38-generic/kernel/drivers/usb/serial$ ls ...

  5. selenium验证码处理-打码平台操作

    1.进入打码平台(超人,斐斐) 斐斐-------官网: 超人-------官网: 2.选择对应的开发文档,下载对应的demo示例,并把demo的python脚本放到项目包管理地址去 参考: 超人的开 ...

  6. LeeCode 317周赛复盘

    T1: 可被3整数的偶数的平均值 思路:数组遍历 被3整数的偶数 \(\Leftrightarrow\) 被6整数的数 public int averageValue(int[] nums) { in ...

  7. Terraform 系列-什么是 IaC?

    系列文章 Terraform 系列文章 前言 聊到 Terraform, 必然绕不开 IaC 这个概念?那么,什么是 IaC? 基本概念 基础架构即代码 (Infrastructure as Code ...

  8. sqlplus文件查看oracle自带命令的执行过程

    问题描述:看到一篇文章 在$ORACLE_HOME/bin/sqlplus中可以查看到数据库命令的查询语句.可以直接编辑sqlplus文件,查到到我们平时标准系统命令的原脚本,但是自己进行编辑查看却是 ...

  9. 去掉Bom头的方法和为什么要清除Bom头

    什么是bom头? 在utf-8编码文件中BOM在文件头部,占用三个字节,用来标示该文件属于utf-8编码,现在已经有很多软件识别bom头,但是还有些不能识别bom头,比如PHP就不能识别bom头,这也 ...

  10. [python] Python枚举模块enum总结

    枚举是一种数据类型,在编程中用于表示一组相关的常量.枚举中的每个常量都有一个名称和一个对应的值,可以用于增强代码的可读性和可维护性.在Python中,枚举是由enum模块提供的,而不是Python提供 ...