文件系统技术架构分析

49ac00a2a48d13ac36f60325863e2e3e.jpeg

 一文读懂:什么是文件系统 ,有哪几类?

   

▉ 什么是文件系统?

技术大拿眉头皱了皱,忍住快要爆发的情绪。解释到:

数据以二进制形式存储于介质,但高低电平含义难解。文件系统揭秘这些二进制背后的意义,使我们能够直观理解数据所传达的信息。

看着依然紧皱眉头的蛋蛋并不像捣乱的样子,技术大拿打开了自己的电脑。


这些文件皆由文件系统构建,它解析二进制数据为可理解格式。借助此系统,我们可轻松管理、删除和复制文件,掌控存储中的数据。文件系统,数据管理的关键。

那么文件系统是什么价值?蛋蛋继续追问到。

▉ 文件系统的价值是什么?

文件系统是管理磁盘的软件,简化磁盘空间使用,降低操作难度,以直观方式呈现数据,方便用户高效利用磁盘资源。

仓库犹如存储磁盘,巨大而空旷,如同未格式化的磁盘,拥有无尽空间,静待数据之充实,实现信息的有效存储与管理。


尽管数据可直存磁盘,但缺乏规划将导致数据无序存放。此举不仅容量受限,更在检索时面临极大挑战,甚至可能无法找到所需数据,严重影响效率。


仓库货架式数据管理,实现货物统一规划与高效管理。通过编号快速定位数据,存储量大且检索便捷,为您带来前所未有的数据管理体验。


▉ 本地文件系统和网络文件系统

文件系统曾是本地操作系统管理存储设备的关键途径,早期主要满足本地文件管理需求,如Ext4、XFS、FAT32、Btrfs等,它们为本地磁盘提供格式化及使用功能,助力数据高效存储与管理。

随着传输技术演进,需求升级,不仅限于本地文件I/O,远程数据传输渐成主流。人们热衷于TCP/IP数据获取,如同掌握远程I/O技术,满足文件共享等多样化需求,实现数据的无界传输。


目前,NFS协议引领Linux接入,而CIFS/SMB协议则代表Windows阵营。但技术革新已使两大阵营的接入协议趋于通用,为用户带来更高效便捷的体验。

远程访问文件系统虽解决资源共享,但单机处理能力有限。在电商网站、大数据处理等大规模数据访问领域,NFS等传统方式难以满足需求,需寻求更高效的文件系统解决方案。

分布式文件系统应运而生,实现多机多用户网络共享文件与空间。服务端采用集群架构,客户端可并发访问数万节点,极大提升系统承载能力,满足高效共享需求。


仓库初期管理聚焦本地需求,文件系统如Ext4、XFS、FAT32和Btrfs等应运而生,专为本地访问设计,确保高效且针对性的数据存储与管理。


随着传输技术革新,人们追求网络访问存储仓库。NFS、CIFS/SMB应运而生,但受限于远程访问数量。为满足需求,分布式文件存储技术崭露头角,提供高效、灵活的存储解决方案。


本地、网络和分布式文件系统虽无本质差异,但网络连接复杂性要求分布式文件系统在接入存储设备时,应用层需实施更精细策略,以确保与本地系统相媲美的性能与可靠性。


▉ 主流分布式文件系统

随着数字化进程加速,巨量数据对存储系统提出了更高要求。为满足这一需求,市场上涌现出HDFS、Ceph、GFS、GPFS、Swift等多种分布式文件系统。为更有效地应用这些系统,我们需深入了解各系统特性及其适用场景。接下来,我们将逐一探讨这些技术。

中间控制节点架构(HDFS)

HDFS,高度容错,适宜廉价机器部署。它提供高吞吐量数据访问,完美支持大规模数据集应用。通过放宽POSIX约束,HDFS实现流式读取文件系统数据,轻松应对大数据挑战。

HDFS,Hadoop的核心存储组件,专为大数据服务设计,广泛应用于海量数据的存储与处理,是大数据架构中的关键支撑。

1、对大文件存储的性能比较高,例如几百兆,几个G的大文件;

2、适合低写入,多次读取的业务;

HDFS通过多副本数据保护,确保数据可靠性,即使使用普通X86服务器也足够安全,但需注意,虚拟化环境并非其理想选择。


图 HDFS简化架构图示意图

完全无中心架构---计算模式(Ceph)

Ceph,作为领先的开源分布式存储系统,广受厂商青睐,众多超融合系统基于其深度定制。Ceph已成为Linux和OpenStack的标配,强力支撑存储需求,广泛应用于各类存储场景,展现其广泛的影响力和可靠性。


Ceph独具特色,能同时提供对象、块设备和文件系统三种存储服务,这一全面支持不同类型存储的特性,在分布式存储系统中实属罕见。

Ceph摒弃HDFS元数据寻址,运用CRUSH算法确保数据均衡分布与高度并行。其块存储特性确保数据强一致性,为用户带来传统集中式存储的卓越体验。

尽管Ceph在文件存储方面性能稍逊于其他分布式系统且部署较复杂,但其在块和对象存储领域仍得到广泛应用。

完全无中心架构---一致性哈希(Swift)

Swift,源自Rackspace,是2010年贡献给OpenStack的高可用分布式对象存储服务,作为其核心子项目之一,为Nova提供虚机镜像存储,彰显开源协作的卓越成果。

Swift基于经济型标准硬件存储,无需RAID,通过软件层面的一致性散列与数据冗余技术,以适度牺牲数据一致性换取高可用性与伸缩性。支持多租户、容器及对象读写,完美应对互联网非结构化数据存储挑战,为应用提供高效、经济的解决方案。

Swift与Ceph的对象存储服务相似,但Swift专注于非结构化数据存储,与Ceph在对象存储服务上各有特色。

客户端访问对象存储系统时,Swift需通过网关获取数据,流程固定。而Ceph则通过各存储节点的OSD直接获取数据,无需统一入口,展现出更高的灵活性和便利性。

Swift以其最终一致性特性,在海量数据处理中展现出高效率,特别适合对数据一致性需求较低、但追求高处理效率的对象存储业务。而Ceph则以其跨集群的强一致性著称。在OpenStack中,对象存储服务更倾向于选择Swift而非Ceph,以满足其特定的应用场景需求。

除了HDFS、CEPH、Swift等,还有GlusterFS、CephFS等众多分布式文件系统,各具特色,应用场景各异。选型时需权衡这些差异,确保与业务需求相匹配。每种系统细节设计均针对特定问题,深入了解其背后逻辑,是选型成功的关键。

 

-对此,您有什么看法见解?-

-欢迎在评论区留言探讨和分享。-

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【踩坑】修复pyinstaller报错 No module named pkg_resources.extern

转载请注明出处:小锋学长生活大爆炸[xfxuezhagn.cn] 如果本文帮助到了你,欢迎[点赞、收藏、关注]哦~ 报错如下: 修复方法: pip install --upgrade setuptools pippyinstaller -F -w main.py --hidden-importpkg_resources.py2_wa…

前端位置布局汇总

HTML中脱离文档流的元素有: position: absolute - 元素相对于最近的已定位(非 static)祖先元素定位。 position: fixed - 元素相对于浏览器窗口定位。 float: left 或 float: right - 元素向左或向右浮动,周围的内容会环绕它。 …

认识流式处理框架Apache Flink

目录 一、Apache Flink 的基础概念 1.1 Apache Flink是什么? 1.2 Flink的定义 二、Apache Flink 的发展史 2.1 Flink前身Stratosphere 2.2 Flink发展时间线及重大变更 三、Flink核心特性 3.1 批流一体化 3.2 同时支持高吞吐、低延迟、高性能 3.3 支持事件时…

探索Linux:开源世界的无限可能

Linux是一款开源操作系统,它的起源可以追溯到上世纪90年代初。这个故事始于一个名叫Linus Torvalds的芬兰大学生,他在1983年开始编写一个用于个人电脑的操作系统内核。在他的努力下,Linux逐渐发展成为一个稳定而强大的操作系统。 然而&#…

分数的表示和运算方法fractions.Fraction()

【小白从小学Python、C、Java】 【考研初试复试毕业设计】 【Python基础AI数据分析】 分数的表示和运算方法 fractions.Fraction() 选择题 以下代码三次输出的结果分别是? from fractions import Fraction a Fraction(1, 4) print(【显示】a ,a) b Fraction(1, 2…

网络基础:BGP协议

BGP(边界网关协议,Border Gateway Protocol)是一种用于在不同自治系统(Autonomous Systems,AS)之间交换路由信息的路径向量协议。BGP是互联网的核心路由协议之一,负责管理和维护互联网范围内的路…

为企业知识库选模型?全球AI大模型知识库RAG场景基准测试排名

大语言模型常见基准测试 大家对于AI模型理解和推理能力的的基准测试一定非常熟悉了,比如MMLU(大规模多任务语言理解)、GPQA(研究生级别知识问答)、GSMSK(研究生数学知识考察)、MATH&#xff08…

WordPress作品设计素材图片站资讯文章教程uigreat主题

主题介绍 uigreat主题是一款wordpress作品主题,发布设计作品素材文章,适合作品展示、设计等站点使用等,这款主题都非常合适。 1、自适应设计,PC、平板、手机等均可正常浏览; 2、图片缩略图可自定义高度,主…

摸鱼大数据——Spark SQL——DataFrame详解一

1.DataFrame基本介绍 DataFrame表示的是一个二维的表。二维表,必然存在行、列等表结构描述信息​表结构描述信息(元数据Schema): StructType对象字段: StructField对象,可以描述字段名称、字段数据类型、是否可以为空行: Row对象列: Column对象&#xff…

服务器BMC基础知识总结

前言 因为对硬件方面不太理解,所以打算先从服务器开始学习,也想和大家一起分享一下,有什么不对的地方可以纠正一下哦!谢谢啦!互相学习共同成长~ 1.BMC是什么? 官方解释:BMC全名Baseboard Mana…

【聚星文社 绘唐3】MJ版一键AI工具使用文档

MJ版一键AI工具使用文档 绘唐地址下载 欢迎使用MJ版一键AI工具!这个工具可以帮助您快速生成各种类型的文本,包括文章、对话、代码等等。 使用方法: 登录:首先,您需要登录到您的MJ版账户。如果您还没有账户&#xff0…

Spring AOP源码篇二之 代理工厂ProxyFactory学习

了解AspectJ表达式以及PointCut、Advice、Advisor后,继续学习Spring AOP代理工厂 AspectJ表达式参考:Spring AOP之AspectJ表达式-CSDN博客 PointCut、Advice、Advisor参考:Spring AOP源码篇一之 PointCut、Advice、Advisor学习-CSDN博客 简单…

从零开始实现大语言模型(四):简单自注意力机制

1. 前言 理解大语言模型结构的关键在于理解自注意力机制(self-attention)。自注意力机制可以判断输入文本序列中各个token与序列中所有token之间的相关性,并生成包含这种相关性信息的context向量。 本文介绍一种不包含训练参数的简化版自注意力机制——简单自注意…

STM32-PWR和WDG看门狗

本内容基于江协科技STM32视频学习之后整理而得。 文章目录 1. PWR1.1 PWR简介1.2 电源框图1.3 上电复位和掉电复位1.4 可编程电压监测器1.5 低功耗模式1.6 模式选择1.7 睡眠模式1.8 停止模式1.9 待机模式1.10 库函数 2. WDG看门狗2.1 WDG简介2.2 IWDG框图2.3 IWDG键寄存器2.4 …

ACM ICPS独立出版 | 2024年第三届计算与人工智能国际会议(ISCAI 2024)

会议简介 Brief Introduction 2024年第三届计算与人工智能国际会议(ISCAI 2024) 会议时间:2024年11月22 -24日 召开地点:中国大理 大会官网:www.iscai.org 2024年第三届计算与人工智能国际会议(ISCAI 2024)将围绕“计算与人工智能”的最新研究…

排序 -- 冒泡排序和快速排序

一、 交换排序 1、基本思想 所谓交换,就是根据序列中两个记录键值的比较结果来对换这两个记录在序列中的位置,交换排序的特点是:将键值较大的记录向序列的尾部移动,键值较小的记录向序列的前部移动。 2、常见的交换排序 1、冒泡…

Java Selenium入门程序

需求:使用chrome浏览器打开百度首页 1.配置浏览器驱动 (1)下载浏览器驱动,浏览器版本需与驱动版本一致; (2)编辑系统环境变量-->编辑Path-->填入浏览器驱动路径: 2.maven工…

【反悔贪心 反悔堆】1642. 可以到达的最远建筑

本文涉及知识点 反悔贪心 反悔堆 LeetCode1642. 可以到达的最远建筑 给你一个整数数组 heights ,表示建筑物的高度。另有一些砖块 bricks 和梯子 ladders 。 你从建筑物 0 开始旅程,不断向后面的建筑物移动,期间可能会用到砖块或梯子。 当…

刷题之删除有序数组中的重复项(leetcode)

删除有序数组中的重复项 这题简单题&#xff0c;双指针&#xff0c;一个指针记录未重复的数的个数&#xff0c;另一个记录遍历的位置。 以下是简单模拟&#xff0c;可以优化&#xff1a; class Solution { public:int removeDuplicates(vector<int>& nums) {int l0…

STL--求交集,并集,差集(set_intersection,set_union,set_difference)

set_intersection(重要) 求两个有序的序列的交集. 函数声明如下: template<class InputIterator1, class InputIterator2, class OutputIterator>OutputIterator set_intersection(InputIterator1 _First1, //容器1开头InputIterator1 _Last1, //容器2结尾(不包含)Inp…