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

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://xiahunao.cn/news/2979928.html

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

相关文章

【操作系统复习之路】存储器管理(第四章 超详细讲解)

目录 一、存储器的层次结构 二、程序的装入和链接 2.1 逻辑地址和物理地址 2.2 绝对装入方式 2.3 可重定位装入方式 2.4 动态运行时装入方式 2.5 静态链接 2.6 装入时动态链接 2.7 运行时动态链接 三、连续分配存储器管理方式 3.1 单一连续分配 3.2 固定分区分配 …

田忌赛马【洛谷P1650】

P1650 田忌赛马 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) #include<iostream> #include <algorithm> #include<cstdio> #include <map> using namespace std; const int N1e5100; int n; map<int,int>a,b;//映射&#xff0c;速度->数量…

程序员缓解工作压力小技巧

文章目录 1. 规划时间和任务2. 学会放松和调节情绪3. 培养兴趣爱好4. 保持健康的生活方式总结 当面对程序员这样需要高度精神集中和持续创新的工作时&#xff0c;缓解工作压力是至关重要的。下面分享一些我个人的经验和方法&#xff0c;希望能对大家有所帮助&#xff1a; 1. 规…

陆金所控股一季报到底是利好还是利空?

3月底&#xff0c;陆金所控股&#xff08;LU.N;06623.HK&#xff09;因其特别分红方案受到市场高度关注。但在4月23日发布的2024年一季度财报中&#xff0c;陆金所控股营收同比下降30.9%&#xff0c;净亏损8.3亿元。 两者对比&#xff0c;外界不由得对公司的经营状况产生疑惑。…

【python】Python学生信息管理系统(源码+报告+本地存储)【独一无二】

&#x1f449;博__主&#x1f448;&#xff1a;米码收割机 &#x1f449;技__能&#x1f448;&#xff1a;C/Python语言 &#x1f449;公众号&#x1f448;&#xff1a;测试开发自动化【获取源码商业合作】 &#x1f449;荣__誉&#x1f448;&#xff1a;阿里云博客专家博主、5…

自己手动在Linux上实现一个简易的端口扫描器

背景 常常听到网络攻击有一个东西叫做端口扫描器&#xff0c;可以扫描指定服务器开放的端口&#xff0c;然后尝试连接&#xff0c;并寻找漏洞&#xff0c;最终攻破服务器。而那些使用的端口扫描器都是一个个现成的程序&#xff0c;看上去很厉害的样子。而实际上这些东西对于懂…

【进收藏夹吃灰系列】数据库学习指南

文章目录 [toc]MySQLRedisMongoDB 个人主页&#xff1a;丷从心 系列专栏&#xff1a;进收藏夹吃灰系列 MySQL 博客标题博客url【Python基础】MySQLhttps://blog.csdn.net/from__2024_04_11/article/details/137888646?spm1001.2014.3001.5502 Redis 博客标题博客url【Pytho…

基于 SpringCloud 的在线交易平台商城的设计与实现

摘 要 随着互联网的快速发展&#xff0c;人们对商品经济的消费和思考不再停留在传统 的经济模式上&#xff0c;网上购物商城是企业与企业进行、企业与消费者进行电子商 务交易的一个很好平台。网上购物商城极大地降低了企业商家的交易成本&#xff0c; 缩短企业供应链周期&…

混合现实(MR)技术的应用场景

混合现实&#xff08;MR&#xff09;技术将虚拟世界和现实世界融合在一起&#xff0c;用户可以在现实世界中看到和与虚拟物体进行交互&#xff0c;同时还可以感知周围的真实环境。MR技术具有广阔的应用前景&#xff0c;可以应用于各行各业。以下是一些MR的应用场景。北京木奇移…

【科学研究】饭圈女孩的流量战争

::: block-1 “时问桫椤”是一个致力于为本科生到研究生教育阶段提供帮助的不太正式的公众号。我们旨在在大家感到困惑、痛苦或面临困难时伸出援手。通过总结广大研究生的经验&#xff0c;帮助大家尽早适应研究生生活&#xff0c;尽快了解科研的本质。祝一切顺利&#xff01;—…

【C/C++笔试练习】线程作用、磁盘的固定块、多进程、进行调度、cache、内存抖动、非抢占CPU调度、inode描述、文件操作、进制、最难的问题、因子个数

文章目录 C/C笔试练习选择部分&#xff08;1&#xff09;线程作用&#xff08;2&#xff09;磁盘的固定块&#xff08;3&#xff09;多进程&#xff08;4&#xff09;进行调度&#xff08;5&#xff09;cache&#xff08;6&#xff09;内存抖动&#xff08;7&#xff09;非抢占…

【Linux高性能服务器编程】两种高性能并发模式剖析——半同步/半异步模式

hello &#xff01;大家好呀&#xff01; 欢迎大家来到我的Linux高性能服务器编程系列之两种高性能并发模式介绍&#xff0c;在这篇文章中&#xff0c;你将会学习到高效的创建自己的高性能服务器&#xff0c;并且我会给出源码进行剖析&#xff0c;以及手绘UML图来帮助大家来理解…

232 基于matlab的MIMO雷达模型下一种子空间谱估计方法

基于matlab的MIMO雷达模型下一种子空间谱估计方法&#xff0c;采用过估计的方法&#xff0c;避免了信源数估计的问题&#xff0c;对数据协方差矩阵进行变换&#xff0c;构造信号子空间投影矩阵和噪声子空间投影矩阵&#xff0c;不需要像经典的MUSIC一样对其进行特征分解&#x…

每日一题 —— 最大子数组之和(动态规划)

1.链接 53. 最大子数组和 - 力扣&#xff08;LeetCode&#xff09; 2.描述 3.思路 4.参考代码 class Solution { public:int maxSubArray(vector<int>& nums) {int n nums.size();vector<int> dp(n1,0);int ret INT_MIN;for(int i 1;i<n;i){dp[i] ma…

WEB前端-笔记(三)

目录 一、事件 1.1类型 1.2对象 1.3页面加载事件 1.4滚动事件 1.5尺寸事件 1.6捕获&冒泡事件 1.7阻止表单提交 1.8全选案例 1.9事件委托 ​编辑 1.10client&offset 1.11换取元素的位置 1.12创建节点 1.13克隆节点 1.14删除节点 1.15setTimeout 1.16s…

springcloud alibaba 整合seata的TCC

一、seata服务端搭建同上篇。 Seata的AT模式客户端两阶段提交流程源码分析 二、seata客户端的结构 1.示例DEMO工程 下单&#xff0c;扣余额&#xff0c; 减库存。 2. MAVEN配置。 父工程&#xff1a;由于spring-cloud-starter-alibaba-seata依赖的seata-spring-boot-starter…

OpenHarmony实战开发-

简介 SmartPerf-Host是一款深入挖掘数据、细粒度展示数据的性能功耗调优工具&#xff0c;可采集CPU调度、频点、进程线程时间片、堆内存、帧率等数据&#xff0c;采集的数据通过泳道图清晰地呈现给开发者&#xff0c;同时通过GUI以可视化的方式进行分析。该工具当前为开发者提…

C++ 性能分析的实战指南(gperftools工具)[建议收藏]

文章目录 使用gperftools进行 C 性能分析的实战指南一、编译安装 gperftools1. 下载源代码&#xff1a;2. 编译和安装&#xff1a; 二、编写测试程序三、使用 gperftools 代码示例四、查看分析结果五、一份实际代码实例及实操1.代码实例2.操作命令3.结果分析根据上述数据&#…

【Cookie和Session的区别(面试重点)】

Cookie和Session的区别 1. Cookie1.1 认识Cookie1.2 Cookie的引出1.3 Cookie工作原理1.4 Cookie重要结论 2. Session2.1 认识Session2.2 Session的引出2.3 Session的工作原理 3. Cookie和Session的区别 1. Cookie 1.1 认识Cookie Cookie&#xff1a;是小型文本文件&#xff0…

实验七 智能手机互联网程序设计(微信程序方向)实验报告

请编写一个用户登录界面&#xff0c;提示输入账号和密码进行登录&#xff0c;要求在输入后登陆框显示为绿色&#xff1b; 二、实验步骤与结果&#xff08;给出对应的代码或运行结果截图&#xff09; index.wxml <view class"content"> <view class"a…