Transcript
00:00:00这是 Juice.FS。它是一款高性能、开源的分布式文件系统,旨在为云对象存储提供无限的可扩展性,同时具备本地文件系统的全部功能和速度。
00:00:14在本视频中,我们将了解 Juice.FS,看看它是如何工作的,我还会向您展示如何使用 Juice.FS 搭建属于您自己的本地高性能网络附加存储解决方案。
00:00:24这会非常有趣,让我们深入了解一下吧。
00:00:30标准的各种对象存储(如 S3、Google Cloud Storage 或 Backblaze B2)虽然非常经济高效,但与之交互通常需要专门的 API 或工具,这会破坏传统的应用程序工作流程。
00:00:48Juice.FS 充当了一个透明的抽象层。
00:00:51它将数据与元数据分离,将原始数据块直接推送到云服务提供商,同时在 Redis、Postgres 或 TIKV 等快速数据库中管理文件系统布局、权限和目录结构。
00:01:07Juice.FS 与传统云网关或标准网络文件共享的根本区别在于这种严格的架构分离及其激进的多级缓存引擎。
00:01:19不再强迫您的应用程序在每次访问文件时都等待高延迟的云网络请求,
00:01:26Juice.FS 将文件分解为小型优化块,并利用本地 NVMe 或 SSD 分区作为热缓存空间。
00:01:35当应用程序第一次读取或写入数据时,它会通过网络进行通信,但第二次请求该数据时,它就能以硬件线速从本地存储即时提供服务。
00:01:47这使得遗留应用程序、数据库、机器学习训练管道和容器环境无需重写任何代码即可直接在对象存储之上运行。
00:01:59听起来很不错,让我们亲自测试一下,看看它是如何工作的。
00:02:04在此演示中,我将搭建一个本地网络附加存储(NAS),它会将所有数据托管在我的远程 S3 存储桶中,并使用 Redis 作为我们的元数据引擎。
00:02:16首先要做的是通过 Docker 启动一个 Redis 实例,您可以使用此命令轻松完成。
00:02:24然后我们需要通过运行 juice.FS format 命令来初始化文件系统。
00:02:29这一步明确告诉 juice.FS 如何将我们的数据库映射到我们的存储桶。
00:02:34我们需要传入 Redis 连接字符串、AWS S3 存储桶名称以及云访问凭证。
00:02:41但在执行所有这些操作之前,请确保您在运行此命令前已经创建了 S3 存储桶、访问密钥和私有密钥。
00:02:48我已经提前创建好了。
00:02:50现在当我运行它时,juice.FS 实际上还不会更改 S3 存储桶内的任何内容。
00:02:56它只是在 Redis 中配置存储模式,并为我们新的虚拟文件系统分配一个唯一的 UUID。
00:03:03格式化步骤完成后,我们使用 juice.FS mount 命令将设备挂载到本地机器。
00:03:10我们将 juice.FS 指向我们的 Redis 实例并提供一个本地目录路径。
00:03:15就我而言,是主目录中的一个文件夹。
00:03:18在运行此命令之前,有一个重要的注意事项。
00:03:21如果您使用的是 Mac,由于 macOS 开箱即不支持自定义文件系统,因此您需要先安装一个名为 Mac Fuse 的内核扩展工具。
00:03:30它提供了 juice.FS 与 Mac 操作系统通信所需的底层软件钩子。
00:03:37我还提供了这个关于空闲空间比率的标志,因为默认情况下它设置为硬盘的 20%,这相当高。
00:03:47基本上它告诉 juice.FS,如果托管缓存的本地驱动器的空间低于其总容量的某个百分比,
00:03:55它就需要停止写入新的缓存文件,并开始积极清除最旧、访问频率最低的块。
00:04:01这可以防止您的本地操作系统磁盘空间耗尽。
00:04:05好了。
00:04:06现在让我们运行此命令。
00:04:07执行的瞬间,操作系统就会注册一个符合 POSIX 标准的文件系统挂载。
00:04:15对于计算机而言,它看起来就像是我们刚刚插入了一个拥有 1TB 可用空间的巨大外部硬盘。
00:04:23现在我可以像使用外接硬盘一样轻松地将文件拖到这个目录中。
00:04:28如果我们现在查看 S3 存储桶控制面板,会发现 juice.FS 已经存储了我们的文件并将它们拆分成了数据块。
00:04:37这一切都是在后台发生的,我们不需要做任何繁重的工作。
00:04:42为了向您展示缓存是如何工作的,我们将使用经典的终端命令 DD 对文件系统进行基准测试。
00:04:49如果您以前没用过 DD,它是一个用于原始数据拷贝的内置工具。
00:04:55在这个特定的命令中,if 代表输入文件,它指向我们添加到 juice.FS 驱动器中的一个大视频文件。
00:05:03而 of 代表输出文件。
00:05:06我们将这些数据路由到 dev/null,这正是我们操作系统中的一个“黑洞”,会立即丢弃数据,因为我们并不是真的要复制文件。
00:05:17在这个例子中我们只是在进行基准测试。
00:05:19我们还将块大小设置为 4MB,以匹配 juice.FS 切分数据块的方式。
00:05:25最后,我们在整行命令前加上 time 工具,以便准确查看文件传输需要多长时间。
00:05:32当我们第一次按下回车键时,这被称为“冷读取”,因为文件刚刚上传。
00:05:38我们的本地机器还没有它的副本。
00:05:41因此 juiceFS 必须通过互联网连接到我们的 S3 存储桶,逐个获取所有 4MB 的数据块并下载它们。
00:05:50正如您所见,在我的连接条件下,第一次运行耗时相当长。
00:05:55但看看我们第二次运行完全相同的命令时会发生什么。
00:05:59看。
00:06:00就是这样。
00:06:01终端提示符几乎瞬间就返回了。
00:06:03第二次运行耗时不到一秒,因为它现在已经在我们的缓存中,我们正在有机地读取它。
00:06:10这就是多级缓存引擎的工作过程。
00:06:14当 juiceFS 在我们第一次运行时忙于下载这些数据块时,它已经悄悄地将它们复制到了我们的本地 NVMe 暂存磁盘中。
00:06:22但在第二次读取时,系统完全绕过了互联网,直接以本地硬件线速拉取数据。
00:06:29因此,您既获得了云端无限且廉价的存储容量,又拥有了本地驱动器的零延迟速度。
00:06:37在此演示中,我使用视频文件来展示其功能,但这适用于几乎任何现实的基础设施场景。
00:06:45如果您是管理容器环境的 DevOps 工程师,您可以使用 juiceFS 为 Kubernetes 集群提供共享的持久化存储。
00:06:54无需为每个节点支付昂贵的云块存储费用,所有的 Pod 都可以同时挂载同一个 juiceFS 卷。
00:07:03在全球范围内共享配置文件、应用程序资源或用户上传的内容,同时保持成本极低。
00:07:10这对机器学习和数据科学管道来说也是巨大的胜利。
00:07:14因为如果您有海量数据集,比如存储在 S3 存储桶中的数百 GB 训练图像或文本数据,训练 ML 模型通常需要先将整个数据集下载到本地,这浪费了时间和存储空间。
00:07:30但使用 juiceFS,您的训练脚本可以立即开始运行。
00:07:35管道通过挂载点顺序读取数据,juiceFS 在后台处理高吞吐量流式传输和本地缓存,使您的 GPU 保持完全饱和,而不会出现本地存储瓶颈。
00:07:49还有一件事我想展示给您看。
00:07:51您还可以轻松地将指标挂载到您的 Better Stack 文件系统中。
00:07:55每次挂载 juiceFS 卷时,它都会在后台悄悄启动一个兼容 Prometheus 的本地指标服务器。
00:08:03如果您打开浏览器并访问此 URL,就可以在这里看到纯文本格式的所有指标,它们实时跟踪每一次缓存命中、读取持续时间和 S3 请求错误。
00:08:13为了将这些遥测数据直接导入我们的仪表板,我们可以使用 Better Stack 原生的 Prometheus 抓取功能。
00:08:21首先,我们需要进入“源”并连接我们的 juiceFS 作为源。
00:08:25选择指标选项卡中的“Prometheus 抓取”并单击“连接源”。
00:08:31现在我们需要摄取日志。
00:08:33但在执行此操作之前,我们需要使用像 ngrok 这样的工具打开一个指向我们本地指标端口的安全公共隧道,然后粘贴我们的 ngrok URL。
00:08:43为了使其与 ngrok 一起工作,我们还需要进入高级选项,添加一个名为 ngrok-skip-browser-warning 的自定义 HTTP 头,并将其设置为 true。
00:08:53这告诉 ngrok 完全绕过警告页面,从而允许 Better Stack 每隔几秒安全地抓取原始指标。
00:09:01现在我们的指标应该会自动开始摄取。
00:09:05让我展示一下最酷的部分。
00:09:07如果我们现在进入 Better Stack 的 AI SRE,我们可以直接提示 AI SRE 为我们创建一个监控缓存性能、延迟和系统吞吐量的仪表板。
00:09:19几秒钟内,AI SRE 就会为我们制作一个精美的自定义仪表板,其中包含来自 juiceFS 的所有指标。
00:09:27我们还可以看到它正在实时更新。
00:09:32酷吧?
00:09:34希望这个小演示能向您展示当 juiceFS 与现代基础设施监控结合时有多么强大。
00:09:41我们在几分钟内就成功将一个廉价的标准云存储桶变成了一个以硬件线速运行的无限可扩展的本地驱动器,并将其连接到了一个全自动的观测仪表板上。
00:09:57那么,这就是全部内容了。
00:09:58这就是 JuiceFS 的简要介绍。
00:10:00您觉得 JuiceFS 怎么样?
00:10:02您试过吗?
00:10:03您会使用它吗?
00:10:04请在下方的评论区告诉我们。
00:10:06朋友们,如果您喜欢这类技术解析,请点击视频下方的点赞按钮,让我知道。
00:10:12也别忘了订阅我们的频道。
00:10:15我是来自 BetterStack 的 Andrus,我们下期视频再见。
Community Posts
No posts yet. Be the first to write about this video!
Write about this video