JuiceFS 社区版 v1.1- Beta 发布,新增五个实用功能
我们很高兴地宣布 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 还增加了一些其他功能来提高系统的安全性与易用性,包括:
- 在 mount 时通过
--root-squash
选项来将 root 用户映射为一个非特权用户,以此来减少权限安全隐患和防止误操作 - 在 mount 时通过
--enable-ioctl
选项来使能对ioctl
的部分支持,目前能用来设置一些特殊标记位来控制文件的行为,如append only (a)
和immutable (i)
- 在使用
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 发布,新增五个实用功能的更多相关文章
- PyRedisAdmin v1.0 Beta 发布,Redis 在线管理工具 - 开源中国社区
PyRedisAdmin v1.0 Beta 发布,Redis 在线管理工具 - 开源中国社区 PyRedisAdmin v1.0 Beta 发布,Redis 在线管理工具
- WP8版微信5.4发布 新增夜间模式 暂没小视频
经过近一个月的内测,WP8版的微信终于更新了v 5.4版本.新增聊天中的照片墙.识别图片二维码.夜间模式等功能,还对资源占用情况进行了优化,让程序可以更流畅的在低配置设备上运行. 不过,WP8版微信5 ...
- ActiveReports 9实战教程(1): 手把手搭建环境Visual Studio 2013 社区版
原文:ActiveReports 9实战教程(1): 手把手搭建环境Visual Studio 2013 社区版 ActiveReports 9刚刚发布3天,微软就发布了 Visual Studio ...
- 搭建环境Visual Studio 2013 社区版
搭建环境Visual Studio 2013 社区版 ActiveReports 9刚刚发布3天,微软就发布了 Visual Studio Community 2013 开发环境. Visual St ...
- MAC下BurpSuit社区版升级pro版
环境OSX 步骤1. 官网下载社区版v1.7.32https://portswigger.net/burp/communitydownload 安装 2. 下载keygenhttps://down.5 ...
- Beta发布--PSP DAILY软件功能说明书2.0
一.开发背景 你在完成了一周的软件工程作业后,需要提交一个PSP图表,里面有4项,如下所示: 1.本周PSP表格,包含每项任务的开始.中断.结束.最终时间,格式如下: 2.本周进度条,包含从开始到现在 ...
- JuiceFS v1.0 beta3 发布,支持 etcd、Amazon MemoryDB、Redis Cluster
JuiceFS v1.0 beta3 在元数据引擎方面继续增强,新增 etcd 支持小于 200 万文件的使用场景,相比 Redis 可以提供更好的可用性和安全性.同时支持了 Amazon Memor ...
- J20航模遥控器开源项目系列教程(一)制作教程 | 基础版V1.0发布,从0到1
我们的开源宗旨:自由 协调 开放 合作 共享 拥抱开源,丰富国内开源生态,开展多人运动,欢迎加入我们哈~ 和一群志同道合的人,做自己所热爱的事! 项目开源地址:https://github.com/C ...
- JuiceFS V1.0 RC1 发布,大幅优化 dump/load 命令性能, 深度用户不容错过
各位社区的伙伴, JuiceFS v1.0 RC1 今天正式发布了!这个版本中,最值得关注的是对元数据迁移备份工具 dump/load 的优化. 这个优化需求来自于某个社区重度用户,这个用户在将亿级数 ...
- Jeasyframe 开源框架 稳定版 V1.5 发布
这是Jeasyframe开源框架的第一个稳定版本,感谢一起帮忙测试并给予反馈的网友们. 框架官网:http://www.jeasyframe.org/ 产品介绍: Jeasyframe开源框架是基于S ...
随机推荐
- Linux报错:audit: backlog limit exceeded(审计:超出积压限制)
Linux报错:audit: backlog limit exceeded(审计:超出积压限制) 系统版本:CentOS Linux release 7.6.1810 (Core) 问题现象:一次巡检 ...
- VUE基本写法
VUE基本结构 <!DOCTYPE html> <html lang="en"> <head> <meta charset="U ...
- 【命令设计模式详解】C/Java/JS/Go/Python/TS不同语言实现
简介 命令模式(Command Pattern)是一种数据驱动的设计模式,也是一种行为型设计模式.这种模式的请求以命令的形式包裹在对象中,并传给调用对象.调用对象再寻找合适的对象,并把该命令传给相应的 ...
- ubuntu安装ch34x驱动,并安装串口调试助手
1.查看系统自带的ch34x驱动 kangxubo@kangxubo-HKNS:/lib/modules/5.19.0-38-generic/kernel/drivers/usb/serial$ ls ...
- selenium验证码处理-打码平台操作
1.进入打码平台(超人,斐斐) 斐斐-------官网: 超人-------官网: 2.选择对应的开发文档,下载对应的demo示例,并把demo的python脚本放到项目包管理地址去 参考: 超人的开 ...
- LeeCode 317周赛复盘
T1: 可被3整数的偶数的平均值 思路:数组遍历 被3整数的偶数 \(\Leftrightarrow\) 被6整数的数 public int averageValue(int[] nums) { in ...
- Terraform 系列-什么是 IaC?
系列文章 Terraform 系列文章 前言 聊到 Terraform, 必然绕不开 IaC 这个概念?那么,什么是 IaC? 基本概念 基础架构即代码 (Infrastructure as Code ...
- sqlplus文件查看oracle自带命令的执行过程
问题描述:看到一篇文章 在$ORACLE_HOME/bin/sqlplus中可以查看到数据库命令的查询语句.可以直接编辑sqlplus文件,查到到我们平时标准系统命令的原脚本,但是自己进行编辑查看却是 ...
- 去掉Bom头的方法和为什么要清除Bom头
什么是bom头? 在utf-8编码文件中BOM在文件头部,占用三个字节,用来标示该文件属于utf-8编码,现在已经有很多软件识别bom头,但是还有些不能识别bom头,比如PHP就不能识别bom头,这也 ...
- [python] Python枚举模块enum总结
枚举是一种数据类型,在编程中用于表示一组相关的常量.枚举中的每个常量都有一个名称和一个对应的值,可以用于增强代码的可读性和可维护性.在Python中,枚举是由enum模块提供的,而不是Python提供 ...