ZNS SSD+F2FS文件系统|如何降低GC开销?---1

news2025/1/15 20:31:46

ZNS出现的背景是什么?ZNS SSD的原理是把namespace空间划分多个zone空间,zone空间内部执行顺序读写。

图片

在ZNS的场景下,不同应用按照Zone配置信息,相应存放业务数据。由于是Host管理数据的摆放和存取位置,会最大程度减少GC垃圾回收。降低SSD内部的写放大,提升SSD的寿命。

图片

减少SSD的DRAM空间和去掉OP冗余空间,提升用户可用的容量。

图片

扩展阅读:

  • 为什么QLC NAND才是ZNS SSD最大的赢家?

  • 字节跳动ZNS SSD应用案例解析

  • NVMe SSD:ZNS与FDP对决,你选谁?

Flash-Friendly File System(F2FS)作为一种专为闪存优化的日志结构化文件系统,其核心特点之一是采用了日志结构化设计,即LFS(Log-Structured File System)模式,特别适合与ZNS SSD配合使用。因为ZNS SSD要求数据在每个区域内按顺序写入,而LFS模式本身就强调将写操作以连续的块序列形式记录在存储介质上,两者在设计理念上天然吻合。

图片

ZNS将存储区域划分为一系列独立的区域(zones),每个区域具有其自身的写入规则和容量属性。特别强调了两个与区域相关的参数:zone-size和zone-capacity。

  • Zone-size:指的是一个区域内包含的逻辑块总数。这是一个固定值,表示从区域起始到结束的整个物理范围,包括所有可写入和不可写入的逻辑块。

  • Zone-capacity:则是指区域内可用于有效数据存储的逻辑块数量,它代表了用户在该区域中可以实际写入数据的容量。值得注意的是,zone-capacity可以等于或小于zone-size。这意味着在区域内部可能存在一些不能被用户使用的逻辑块,它们可能是出于硬件维护、磨损均衡或其他内部管理目的而被SSD制造商预留给系统使用的。

图片

当F2FS被用于管理ZNS SSD时,它会充分利用ZNS提供的zone-capacity信息来优化存储管理。在F2FS初始化挂载时,系统会检查每个区域的zone-capacity是否小于zone-size。如果是这种情况,表明该区域存在一部分不可用的逻辑块。此时,F2FS会在空闲段位图(free segment bitmap)中标记那些起始于zone-capacity之后的所有段(segments)为非空闲状态。这样做有以下几个目的:

  1. 防止误分配:将这些段标记为已使用,可以防止文件系统在后续的写操作中错误地将新数据写入这些实际上不可用的区域,从而避免了可能的数据丢失或系统故障。

  2. 减少GC负担:由于这些段内包含的逻辑块无法用于数据存储,因此它们自然无需参与垃圾回收(garbage collection,简称GC)。GC是文件系统用来回收无效数据占用空间、保持存储空间高效利用的过程。若提前知道某些段不会发生有效数据写入,那么文件系统就可以避免在GC过程中对这些段进行扫描和整理,从而大大降低了GC的复杂度和开销。

图片

在处理zone-capacity与默认段大小(在F2FS中通常是2MB)不对齐的情况时,可能出现一个segment跨越zone-capacity边界的情况。这种跨越zone-capacity边界的spanning segments虽然开始位置位于zone-capacity之前,但其部分或全部延伸到了zone-capacity之后。对于这类segment,F2FS仍然视其为可用的:

  • 对于跨越区容量边界但起始位置在区容量之前的segment,其在区容量范围内的部分被视为可写入的,这部分逻辑块可以被正常分配给用户数据。

  • 而跨越区容量边界后超出区容量的部分则被认为是不可用的,这部分逻辑块不会被分配给用户数据,也不需要进行垃圾收集。

为了适应ZNS SSD的特性,F2FS采用多设备配置。具体而言,将元数据(如超级块、检查点、段信息表、节点地址表和段摘要区等)放置在具备随机写入能力的存储设备上,而将主要的数据块(节点和数据)放在ZNS SSD上。这样的布局确保了元数据不受ZNS的顺序写入约束影响,能够快速响应更新请求,同时充分发挥ZNS SSD在顺序写入上的优势。

图片

在LFS模式下,F2FS强制所有写操作按顺序写入,并确保在section内部按顺序使用segment。这种设计完全符合ZNS SSD要求在单个zone内顺序写入的特性。LFS模式确保了F2FS与ZNS SSD的深度整合,使得文件系统的写操作严格遵循ZNS设备的底层物理特性,从而避免了因违反写入顺序而导致的性能损失。

图片

尽管F2FS与ZNS SSD的结合在理论上有利于降低GC开销,但在实际应用中,特别是在写密集型工作负载下,仍可能出现性能下降。这是由于在高利用率场景(即OP配置空间较少)下,垃圾回收过程可能导致大量有效数据需要移动,涉及定位有效块并将其移至其他区域的操作,这一过程既消耗时间又影响整体系统性能。此外,F2FS在处理ZNS SSD时,可能会被迫将直接写direct I/O转换为buffer I/O,而突发的buffer IO读写操作可能导致内存使用激增、页面缓存被丢弃,进而影响数据移动过程,特别是涉及大序列写入和随机读取的操作。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1618015.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

制作识货的商品购买页面(注释加讲解)

在制作此页面时运用了浮动,绝对定位,固定定位,相对定位。这些可以让页面整洁美观。 商品购买页面里有很多的商品可大家观看最上面的搜索栏里可以打字下面的,首页,优惠,识物,登录注册都可以进行…

uniapp H5的弹窗滚动穿透解决

目录 方案一 事件修饰符 overscroll-behavior 修饰符 overscroll-behavior 属性 看个案例 兼容 方案二 overflow:hiden 有一层遮罩蒙层覆盖在body上时,当我们滚动遮罩层,它下面的内容也会跟着一起滚动,看起来好像是上面的…

PHP 爬虫如何配置代理 IP(CURL 函数)

在 PHP中 配置代理IP&#xff0c;可以通过设置 CURL 库的选项来实现&#xff0c;代码如下&#xff1a; 当然你要有代理ip来源&#xff0c;比如我用的这个 代理商 &#xff0c;如果想服务稳定不建议找开源代理池&#xff0c;避免被劫持。 <?php // 初始化cURL会话 $ch cu…

苍穹外卖day12 (Apache POI) 数据统计-Excel报表

文章目录 前言一、工作台1.1 今日数据1.1.1 接口设计1.1.2 代码实现 1.2 订单管理接口1.3菜品总览接口1.4 套餐总览接口1.5 订单搜索&#xff08;已完成&#xff09;1.6 各个状态的订单数量统计&#xff08;已完成&#xff09; 二、Apache POI2.1 概述2.2 效果展示 三、导出运营…

数字逻辑电路基础-有限状态机

文章目录 一、有限状态机基本结构二、verilog写一个基础有限状态机(moore型状态机)三、完整代码一、有限状态机基本结构 本文主要介绍使用verilog编写有限状态机FSM(finite state machine),它主要由三部分组成,下一状态逻辑电路,当前状态时序逻辑电路和输出逻辑电路。 有…

越秀北京 梧桐星宸 l理想人生要满配,这届海淀菁英买房主打“一步到位”

一个理想生活住区&#xff0c;装得下万般繁华与生活想象&#xff1b;一个懂包容的户型&#xff0c;能兼容全家所需并赋能成长。这届眼界超前的海淀菁英&#xff0c;买房需求已经从“阶段进阶”变成“一步到位”&#xff0c;对生活资源与生活空间的至高追求&#xff0c;让他们将…

[Flutter3] Json转dart模型举例

记录一下 Android studio plugin -> FlutterJsonBeanFactory 处理json转dart 模型 案例 json字符串, 一个 response的data返回数据 {"code":1,"msg":"\u64cd\u4f5c\u6210\u529f","data":{"list":{"id":"8…

做抖音小店正确起店的方式,新店铺想快速爆单,步骤就这几个

大家好&#xff0c;我是电商笨笨熊 开通了抖音小店&#xff0c;但是店铺一直没有流量&#xff1b; 很多新手玩家进入抖店后都会遇到这样那样的问题&#xff0c;烦恼的事情一大堆&#xff1b; 没关系&#xff0c;今天我们就来聊聊新店铺该怎么快速起店&#xff0c;新手如何做…

Springboot+Vue项目-基于Java+MySQL的学科竞赛管理系统(附源码+演示视频+LW)

大家好&#xff01;我是程序猿老A&#xff0c;感谢您阅读本文&#xff0c;欢迎一键三连哦。 &#x1f49e;当前专栏&#xff1a;Java毕业设计 精彩专栏推荐&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb; &#x1f380; Python毕业设计 &…

MLLM | Mini-Gemini: 挖掘多模态视觉语言大模型的潜力

香港中文、SmartMore 论文标题&#xff1a;Mini-Gemini: Mining the Potential of Multi-modality Vision Language Models Code and models are available at https://github.com/dvlab-research/MiniGemini 一、问题提出 通过更高分辨率的图像增加视觉标记的数量可以丰富…

ScanNet 数据集常见文件的作用极其读取方式

ScanNet 数据集是一个大规模的 RGB-D 视频数据集&#xff0c;它包含了丰富的三维场景理解任务所需的数据&#xff0c;如三维物体分类、语义体素标签和 CAD 模型检索等。数据集中的每个文件都有特定的作用&#xff0c;以下是一些常见文件及其作用的解释&#xff1a; _vh_clean.p…

【八股文】Spring 谈谈你对AOP的理解

AOP AOP(Aspect-Oriented Programming&#xff0c;面向切面编程)&#xff1a;是一种新的方法论&#xff0c;是对传统 OOP(Object-Oriented Programming&#xff0c;面向对象编程)的补充。 面向对象是纵向继承&#xff0c;面向切面是横向抽取。 OOP思想是一种垂直纵向的继承体…

C# DataSet结合FlyTreeView显示树状模型数据

目录 关于 FlyTreeView DataSet 数据准备 涉及表结构创建脚本 范例运行环境 方法设计 代码实现 方法代码 调用示例 小结 关于 FlyTreeView NineRays.WebControls.FlyTreeView 是 9rays.net 推出的一款功能强大的树状模型数据显示控件&#xff0c;本文将介绍使用其 As…

运营高手都在用的9款办公软件!一定要收藏

最近&#xff0c;运营群里的00后天天都在搞新花样&#xff0c;每天都有新的idea&#xff0c;各种跟热点、做品牌联名、拍好玩的视频、做创意海报……。但奇怪的是&#xff0c;工作量增加了、业绩增长了&#xff0c;却不见有人加班。一问&#xff0c;原来因为用上了办公神器啊&a…

通过使用XShell工具、Nginx环境实现服务器项目构建与发布

前言&#xff1a; 在信息化和数字化的今天&#xff0c;网站和应用的构建与发布已成为企业发展的重要一环。为了确保项目的顺利上线和稳定运行&#xff0c;选择合适的工具和环境至关重要。本文将详细介绍如何通过XShell工具以及Nginx环境来实现服务器项目的构建与发布&#xff0…

数据洞察创新挑战赛之智能运维赛参赛攻略--皮卡丘的皮卡

关联比赛: 数据洞察创新挑战赛之智能运维赛 背景和参赛动机 1.个人背景和专业领域 四川大学本科&#xff0c;中南大学研究生&#xff0c;专业是医学图像处理。目前就职于深信服&#xff0c;主要做云安全相关的业务开发工作。 2.何时开始关注和参与数据科学竞赛&#xff1f…

IDEA插件-通义灵码 VS ChatGPT-EasyCode

智能编码助手新时代&#xff1a;通义灵码 vs ChatGPT-EasyCode 随着人工智能技术的飞速发展&#xff0c;智能编码助手逐渐成为程序员的必备工具。它们可以帮助程序员提高编码效率&#xff0c;降低代码缺陷率&#xff0c;并解放创造力。 目前市场上涌现出了众多智能编码助手&a…

如何在Windows 10中打开和自定义搜索?这里提供详细步骤

使用Windows 10中的搜索功能&#xff0c;你可以快速查找计算机上的文件、应用程序或设置。在本文&#xff0c;你可以学习如何在Windows 10中打开和控制搜索。 打开Windows 10搜索面板 打开Windows 10搜索面板很容易。通常&#xff0c;你可以在任务栏上找到搜索图标。只需单击…

Redis篇:缓存击穿及解决方案

1.何为缓存击穿 缓存击穿问题也叫热点Key问题&#xff0c;就是一个被高并发访问并且缓存重建业务较复杂的key突然失效了&#xff08;有可能是正好过期了&#xff09;&#xff0c;无数的请求访问会在瞬间给数据库带来巨大的冲击。 常见的解决方案有两种&#xff1a; 互斥锁 逻…

仓库管理存在的问题及改进对策?

大部分人都指导仓库问题会影响一个仓库操作或与之相关的整个流程链的速度、效率和生产力。但在大多数情况下&#xff0c;只有在流程开始甚至完成后才能识别这些错误。 到那时通常已经来不及阻止错误了&#xff0c;甚至可能来不及减少造成的损害。 所以这也是我写这篇内容的目…