- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我一直在研究文件、 block 和对象存储之间的区别。我试图将 native Linux 文件系统与其中一种存储数据类型联系起来,但是,我脑海中浮现的一些疑问让我证明我在这里有某种误解:
直观地说,ext4 看起来像文件存储类型,因为它被定义为“文件系统”。此外,根 ("/") 架构以文件夹和文件的形式组织,与文件存储定义相同。
另一方面,ext4 使用 inode 将文件分成 block 以获得更好的存储性能。这是 block 存储功能。此外,根据这段 IBM 视频, block 存储是唯一能够引导操作系统的存储类型:https://www.youtube.com/watch?v=PmxWTTpXNLI (分钟 7:52)。
这是否意味着 Linux 内核需要 Block Storage 才能启动,但随后它会将自身挂载为文件存储?
最佳答案
ext4 和任何文件系统,按照定义是“文件存储”。这就是文件系统。
术语“文件存储”、“ block 存储”和“对象存储”是指存储导出给其消费者的 API,与传输方式(网络、本地等)无关。
ext4 导出文件 API(创建目录、在目录中打开文件等),因此是文件存储。
如果 ext4 允许您发出基于 inode 的系统调用,它也可以算作对象存储,因为 inode 不知道层次结构 - 目录层次结构层是在 inode 之上实现的。
另一方面,硬盘仅提供“在此偏移处读取”和“在此偏移处写入”类型的 API,因此是 block 存储。
这个 API 非常简单,可以被固件中的最低级引导代码使用。如果固件可以使用文件 API 或对象 API,您可以从那里启动...这是一回事。
Netboot通过 PXE使用文件传输协议(protocol)来下载引导加载程序(与 block 存储协议(protocol)相反),因此如果文件存储或对象存储支持该协议(protocol),您可以说它们能够启动操作系统。
问题、评论和答案中的许多混淆来自这些通常堆叠的存储类型。
在 Linux 上,md和 LVM使用其他 block 存储实现 block 存储。他们通过接受“写入此 block ”请求并将其转换为另一个“写入此 block ”请求到正确的磁盘来做到这一点。
您还可以将 LVM 堆叠在物理磁盘之上的 md 之上。
事实上, block 存储 API 是唯一在经济上简单到可以在硬件中支持的东西,因此实际上所有存储都构建在 block 存储之上。
ext4 是在 block 存储(您的硬盘驱动器或 LVM)之上实现的文件存储。它根据文件的格式(即,其骨架数据结构如何写入 block 存储)来决定文件在 block 设备上的外观,然后当它收到文件写入请求时,将其转换为适当的“write this block"请求到 block 存储。
WrapFS是使用另一个文件存储而不是使用 block 存储的文件存储。也就是说,当它收到一个文件写入请求时,它会将其转换为另一个文件写入请求到它正在包装的文件系统。
NFS 是在本地 block 存储之上实现的本地文件存储之上实现的网络文件存储。也就是说,它将“写这个文件”请求翻译成不同的“写这个文件”RPC,而服务器把这个RPC翻译成另一个不同的“写这个文件”请求到它的本地文件系统。
甚至还有loop devices ,在文件存储之上实现 block 存储。
许多对象存储实际上是建立在文件存储之上的,而文件存储是建立在 block 存储之上的。 Minio,例如,将获取一个常规文件系统,对其进行格式化(即创建它需要的目录结构),然后将诸如“写入此对象”之类的请求翻译为“写入文件系统中的此文件”。
同样,Panasas' HPC cluster在网络文件存储 (OSDFS) 之上实现对象存储。
Panasas 还在其对象存储之上实现了文件存储(将文件写入请求转换为对象写入请求),这意味着它会写入一些骨架数据,例如将根 inode 放到对象存储上(即格式化对象存储)。
我见过一个专有的网络文件存储,它是在专有的本地对象存储之上实现的,它是在网络文件存储之上实现的,而网络文件存储是在本地 block 存储之上实现的。
关于linux - ext4被认为是文件存储还是 block 存储?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71307757/
图书馆 EXT-JS 、 EXT-CORE 、 EXT-GWT 之间有什么区别,因为我在 ext-js 上工作所以请用外行语言解释我:) 最佳答案 最初它只是 Ext JS。作为 3.x 的一部分,E
我在 Ext 窗口中有 Ext GridPanel。为了使 Ext Window Resizeable,我将它的属性设置为 true 并且它工作正常。 但是,还想让网格可以调整大小。因此,为此我也尝试
我想构建一个网络应用程序。每当我在 Linux 终端发出命令时 $ sencha app build 在构建应用程序时,我遇到了一些与依赖相关的问题。错误类似于 Failed to resolv
我正在开发一个由 domain.ext 提供的网络应用程序。此 Web 应用程序使用基于 cookie 的 session ,并为用户提供在子域上托管包含自定义 JavaScript 的网页的能力,例
我正在尝试设置 LAMP使用 docker 的 web 服务器,很高兴发现 php 上的好人已经放在一起了a docker container for php . 通过阅读文档,我发现了三个表面上可以
美好的一天,伙计们, 我知道这听起来像是一个愚蠢的问题。但是,我想知道是否有人可以向我解释之间的区别。外网和 EXT.JS .. 我一直试图理解它们,但结果为零。据我所知,EXT.NET集成了EXT.
与常规 Ext.ajax 调用相比,Ext.direct 的主要优点是什么?我什么时候应该考虑使用一种而不是另一种? 最佳答案 实际上,这取决于您的后端、您想要做什么以及适合您的情况。你提出的问题相当
Ext.extend 和 Ext.override 有什么区别?在java中,你扩展一个类并覆盖它的方法。但是看看语法,似乎在 extjs 中,你既可以扩展一个类,也可以覆盖一个类 最佳答案 Ext.
我是 Ext Js 新手。我有以下文件结构。 我正在测试以下代码 - First Ext Js Page
我正在使用修改后的kanderson-well beats委托版本来修改AVKit需要的请求。所有代码将在帖子的底部。修改请求、创建字幕播放列表并将它们添加到主播放列表中是很好的,因为它们在请求AVM
我无法使用 Ext.namespace() 访问对象。 返回错误类型错误:Company.Test 不是函数 一直在查看文档但仍然无法使用对象。 这是命名空间脚本 Ext.namespace('Com
首先,我的问题是我想知道 Ext.Define() 和 Ext.Create() 之间有什么不同, 我想知道如何以正确的方式使用它们。 我查看了我的代码和许多 Extjs4 MVC 教程, 我在 Ex
我们正在使用 ext.net 版本 5.2.0,据我了解,它包括 Ext JS 7.2.0.67。我正在使用看起来像这样的 slider 控件 ext.net 5.2 Slider: https://
我刚刚使用 Ext JS 和 Ext Gantt 技术在我们的 .NET (WebForms) 项目中完成了甘特图页面的开发。正如我在之前的 post 中所述,效果很好。 我现在的问题是,与 hte
在我的 ExtJS 4.0.7 应用程序中,我需要动态加载一些第 3 方 javascript,以呈现某些面板内容(一些精美的图表/可视化小部件)。 我遇到了一个古老的问题,即在我尝试使用它之前脚本没
使用 ext-all.js 和 ext-all-debug.js 有什么区别? 从 debug.js 更改为 ext-all.js 会提高性能吗? 我可以假设从调试切换到普通文件不会对应用程序产生任何
我是在服用疯狂的药丸,还是这两件事几乎相同? 最佳答案 在这一点上花了大量时间使用这两个框架后,我会说它们并不“非常相同”。虽然它们可能都使用相同的图形 Assets ,但它们实现的方式却大不相同,并
我正在使用 Ext.form.Panel ,其配置如下: defaultType : 'textfield', layout : 'auto', height : '60%', w
我想重写 this从 Ext3 到 Ext4 的教程。但是从我能够观察到的情况来看,createDelegate 函数已被删除(可能与许多其他事情一样)并且它不起作用。我试过调用 call/apply
目标: 仅在需要时加载 Ext 框架(JS 文件)。 问题: 在稍后的状态下加载 Ext.JS 时,Ext.onReady 不会触发。我试着解决 Ext.onReady,但我也没有开始工作。我很高兴有
我是一名优秀的程序员,十分优秀!