Hierarchical File Systems are Dead——论文泛读

HotOS 2009 Paper 分布式元数据论文阅读笔记整理

问题

文件系统一直采用分层名称空间,随着用户与越来越多的数据交互,并且对搜索能力的要求越来越高,这样一个简单的分层模型已经过时了。例如,查找照片时,用户描述他们想要的内容(照片的各种特征)而不是照片所在的位置(照片在文件系统中的完整路径名)来查找数据。

因此应该重新设计文件系统,将其组织映射到我们现在访问和操作数据的方式。

本文工作

本文提出了一种新的文件系统体系结构 hFAD,用标记的、基于搜索的名称空间取代了分层名称空间。

在最低级别上,使用基于对象的存储设备(OSD)[14],存储对象有唯一的ID,系统的高层通过ID访问这些对象。对象是可字节访问的:可以从对象中读取字节,可以将字节插入对象的中间,可以从中间删除字节等。内部hFAD使用基于搜索的API,索引结构包含可扩展的索引集合,便于多种命名模式和搜索类型。

API

命名接口:对象由一个或多个标记/值对进行命名。标记告诉hFAD如何解释该值,以及在多个索引中的哪个索引中搜索该值。例如,我们支持将POSIX命名为本机API之上的薄层。POSIX路径P上的命名操作转换为对标记/值对的查找:POSIX/P。对搜索项S1、S2、…Sn的全文搜索转换为对形式为FULLTEXT/S1、FULLTEXT/S2等的标记/值对的矢量的命名操作。这种操作的结果是矢量中每个元素的索引查找结果的总和。命名操作可以返回多个项目(这些项目将以未指定的顺序返回)。此外,任何查询都不需要唯一地定义数据项。只有OSD层中数据的标识符必须是唯一的。

访问接口:与标准文件系统一样支持读取和写入,还可以支持插入和删除操作,能够插入到对象中间,并从文件中的任何位置截断。添加了insert和truncate调用。读写调用与POSIX兼容,便于支持遗留应用程序。插入调用采用与写入调用相同的参数,但它不会覆盖文件中间的字节,而是将这些字节插入到适当的位置,使文件增加插入的字节数。截断也有类似的扩展。POSIX截断从文件末尾截取一个带有要截断的字节数的off_t,而hFAD则截取两个off_t(偏移量和长度),准确地指示要从文件中删除哪些字节。

索引存储

使用可扩展的索引存储,以便于对丰富的数据类型进行高效搜索。给定一个或多个类型/值规范,索引存储的集合必须返回与搜索项匹配的对象ID列表。我们认为高效访问需要多种索引方法。例如,键/值存储足以用于简单属性,但不足以用于全文,并且全文索引和键/值存储器都不太可能适用于图像索引。因此我们确定了几种类型的标签,表1显示了不同的用例如何在请求中使用不同类型的标签。索引存储层被设计为支持多个索引。虽然关键字和路径名可能很容易存储在同一索引中,但我们希望保留用任意索引类型扩展hFAD的可能性,例如图像、声音等的索引。一个特殊的标签ID表示该值实际上是一个唯一的对象ID,支持应用程序内的对象引用缓存。

总结

本文提出一种新的文件系统体系结构 hFAD,便于普通用户使用的文件系统,用标记的、基于搜索的名称空间取代了分层名称空间。(1)对象命名时使用多个标记+值命名,便于用户通过不同标记进行搜索。(2)对象访问时额外支持插入和部分删除,允许用户直接对字节操作,在对象中间插入或删除数据。(3)存储部分使用索引存储,根据标签构建多个索引。

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

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

相关文章

500元以内的蓝牙耳机品牌怎么选?五大优质品牌汇总

无论是通勤途中、学习间隙还是运动时,一款性能出众、价格亲民的蓝牙耳机都能为我们带来极致的听觉享受,然而面对市场上琳琅满目的品牌和型号,如何选择一款500元以内的优质蓝牙耳机,相信大家都会有这个难题,今天为了帮助…

欢乐钓鱼大师辅助,2024年攻略大全!

在探索欢乐钓鱼大师的世界时,成功的关键在于全面考虑各种影响钓鱼效果的因素。以下是五大关键要素,掌握它们,你也能成为一名钓鱼高手! 一、黄金钓点:位置决定一切 选择正确的钓点至关重要。考虑湖泊、河流和小溪的水深…

HCIP综合实验

1.拓扑 2.需求分析 1、R4为ISP,其上只能配置IP地址;R4与其他所有直连设备间均使用公有IP。 2、R3、R5、R6、R7为MGRE环境,R3为中心站点。 3、整个OSPF环境IP地址基于172.16.0.0/16划分。 4、减少LSA的更新量,加快收敛&#xf…

Shuffle Cards (STL rope平衡树库)

本题链接:登录—专业IT笔试面试备考平台_牛客网 题目: 样例1: 输入 5 1 2 3 输出 2 3 4 1 5 样例2: 输入 5 2 2 3 2 3 输出 3 4 1 2 5 样例3: 输入 5 3 2 3 1 4 2 4输出 3 4 1 5 2 思路: 这道题&…

什么是翘尾因素

在有关CPI 的分析文章和新闻稿件中,经常会出现“翘尾因素”或“翘尾影响” 等词汇,这是分析同比价格指数变动幅度时所特有的概念。那么什么是“翘尾因素” 或“翘尾影响”呢? 一、什么是翘尾因素 “翘尾因素”是指上年价格上涨(…

线程池原理简谈

1,概述 线程池是一种池化技术,本质是减少线程对象创建销毁的开销,同对象池、连接池一样,达到对象复用的效果。那么线程池怎么复用呢?即一个或多个Thread对象怎么执行更多的Task?这里面的关键就涉及到了阻塞…

关于各类软件下载及使用

文章目录 一、VS Code1、下载2、安装3、使用 二、Dev-C1、下载2、安装3、使用 三、VS20191、下载2、安装3、使用 四、IDEA1、下载2、安装3、使用 五、Fiddler1、下载1.1 官网下载1.2 文件下载 2、安装3、使用 一、VS Code 1、下载 2、安装 3、使用 二、Dev-C 1、下载 2、…

万能自定义表单系统源码开源版 支持普通表单、付费报名、预约服务等三合一功能

源码简介 高效、灵活地收集和管理数据对于各项运营和决策至关重要,方便了各行业对数据收集的多样化需求。分享一个万能自定义表单系统源码开源,该系统拥有强大的自定义功能和广泛的适用性,支持普通表单、付费报名、预约服务等三合一功能。 …

vuex核心概念-getters

除了state之外,有时我们还需要从state中派生出一些状态,这些状态是依赖state的,此时会用到getters。

pod介绍

一、前言 Pod 是 Kubernetes 中最小的部署单元,它可以包含一个或多个容器,以及共享的存储卷和网络命名空间,Pod 提供了一种抽象,用于组织和管理容器化的应用程序,并提供了一种灵活、轻量级的方式来部署和管理应用程序 …

【电容】芯片旁边为什么要接0.1uf(100nF)电容,退耦电容是什么意思,为什么要大电容并小电容

系列文章目录 1.元件基础 2.电路设计 3.PCB设计 4.元件焊接 5.板子调试 6.程序设计 7.算法学习 8.编写exe 9.检测标准 10.项目举例 11.职业规划 ** 一般芯片旁边为什么都会放一个小电容,而且大部分情况下都是100nF ** 1、为什么要放这个电容 首先我们知道这个…

笨方法自学python(五)-字符串和文本

字符串和文本 在这章习题中我们将使用复杂的字符串来建立一系列的变量,从中你将学到它们的用途。首先我们解释一下字符串是什么 东西。 字符串通常是指你想要展示给别人的、或者是你想要从程序里“导出”的一小段字符。Python 可以通过文本里的双引号 " 或者单…

【微服务】配置管理

Nacos配置管理 配置管理配置共享配置热更新 配置管理 将微服务集群中常用,经常变化的配置都写到一个独立的配置文件微服务中进行统一管理 配置共享 在Nacos的界面当中进行配置管理,在配置列表中添加配置 比如各个服务中的jdbc的连接配置: …

Flutter3.x get-cli中运行get init初始化项目报错如何处理

Flutter get-cli中运行get init初始化项目会提示如下错误: get init s E:\flutter\flutter study\tempstudy\misapp01> get init 1)Getx Pattern (by Kau) 2)CLEAN (by Arktekko) which architecture do you want to use? [1] unhandled exception: Synchromu…

Java Stream

1. Stream API概述 Java 8 Stream是Java 8中引入的一个新的API,用于处理集合和数组等数据结构的元素。它允许您在数据集上进行功能性操作,例如过滤、映射、排序等,而不需要编写循环或迭代器等底层代码。 Java 8 Stream与集合不同,…

网站实现微信扫码登录(利用微信开放平台实现)

第一步:微信开放平台账户申请 网址:微信开放平台 1.首先我们要做的就是进入到微信开放平台申请一个开放平台账户,获得资质! :注册需要准备营业执照、1-2个工作日审批、300元认证费 :注册之后&#xff0…

MP4提取gif怎么操作?分享一招快制作

随着各种社交媒体的发展,越来越多的人在聊天中使用gif表情包来调节自己的聊天氛围。搞笑的gif表情包能够为我们平淡的生活添砖加瓦,带给我们一些轻松和欢乐。如果想要自己制作gif动画的时候就可以用视频转gif的工具,能够在不下载软件的情况下…

1055: 邻接矩阵到邻接表

解法&#xff1a; #include<iostream> using namespace std; int arr[100][100]; int main() {int n;cin >> n;for (int i 0; i < n; i) {for (int j 0; j < n; j) {cin >> arr[i][j];}}for (int i 0; i < n; i) {for (int j 0; j < n; j) …

27、Qt自定义标题栏

一、说明 QtWidget及其子类有默认的标题栏&#xff0c;但是这个标题栏不能美化&#xff0c;有时候满足不了我们的使用需求&#xff0c;所以进行自定义标题栏 二、下载图标 在下面的链接中下载两种颜色的最大化、向下还原、最大化和关闭八个图片&#xff0c;并找一张当做图标…

【LeetCode刷题记录】简单篇-108-将有序数组转换为二叉搜索树

【题目描述】 给你一个整数数组 nums &#xff0c;其中元素已经按 升序 排列&#xff0c;请你将其转换为一棵 平衡 二叉搜索树。 【测试用例】 示例1&#xff1a; 输入&#xff1a;nums [-10,-3,0,5,9] 输出&#xff1a;[0,-3,9,-10,null,5] 解释&#xff1a;[0,-10,5,null,…