IPFS:后互联网时代的理想主义在现实逻辑下的发展

这一切都要从一只蝙蝠说起……疫情还很严重,关在家里胡乱写点东西。IPFS,直译星际文件系统(InterPlanetary File System),诞生于 2014 年前后,根据白皮书的描述,罗列了互联网传输协议 HTTP 的众多缺点后,提出以去中心化的组织形式来替代中心化的 HTTP 协议。总体来看,IPFS 结合了众多成熟的技术,基于 S/Kademlia 分布式哈希表算法(bitTorren

- 阅读全文 -

DHT(分布式哈希表):一种分布式存储方法的相关研究调研

本文是一篇类似于文献综述的东西,做点前期调研。随着区块链项目的火热,很多传统技术结合区块链技术都取得了一定程度上的成功。2014 年 Juan Benet 成立了 Protocol Labs 并在开源社区的帮助下发展出了 IPFS[1]:一个去中心化的分布式文件系统。IPFS 的下层构建于对等网络交换协议,其核心是用于索引数据的分布式哈希表(DHT)。分布式哈希表的研究伊始就是为了开发点对点网络系

- 阅读全文 -

IPFS:去中心化的分布式文件系统简介

IPFS(InterPlanetary File System,星际文件系统),是一个面向整个互联网、基于点对点传输的去中心化分布式文件系统。通过对网络通信、数据处理方法和传输协议等过程的封装,IPFS 能够将运行在多种异构网络上的节点存储资源组织起来,同时向每个节点提供整个 IPFS 网络的存取服务。白皮书中列出了如下几个特点:点对点传输去中心化文件共享内容去重基于内容寻址文件版本控制IPFS

- 阅读全文 -

FIOS 调度器实现

核心数据结构分析fios 队列结构:struct fios_queue { pid_t pid; // 进程的pid struct rb_node fiosq_node; // 将fios queue插入到fios rb-tree,主要用于在dispatch阶段,快速的取出下一个要被处理的fios queue struct rb_node

- 阅读全文 -

LightNVM 代码分析总结

内核版本:Linux-4.19Lightnvm 与 pblkLightnvm 与 pblk 的关系,类似于 linux 块层与 IO 调度器之间的关系。即在 lightnvm 中可以有多种 FTL 的实现,这里 pblk 就是一种 FTL 的实现。Lightnvm 子系统在支持PPA接口的块设备的基础上进行初始化。该模块使内核能够通过内部 nvm_dev 数据结构和 sysfs 等来暴露设备的几何

- 阅读全文 -

FIOS 调度器的实现思路整理

时间片管理CFQ的时间片管理CFQ 的时间片管理如下图。每个请求队列 cfq queue 的时间片用完后,都要通过【选择 cfq group -> 选择 service tree -> 选择 cfq queue】的流程,从其自身维护的数据结构中找出下一个要被调度的请求队列,整个选择相当于根据一个优先级顺序不断地遍历这个数据结构。当一个 cfq queue 的时间片用尽,就要等到下一轮遍

- 阅读全文 -

CFQ:完全公平排队 IO 调度器结构简析

block layer 的最核心功能可分为两部分——接受上层提交的请求;对请求进行调度。其中 block layer 的入口函数为:submit_bio。如下图所示:文件系统请求提交 - submit_bio接口函数 submit_bio 被调用后,将对 bio 进行合并,然后尝试合并 request,期间会调用调度器中定义的方法,完成合并后,请求将等待被调度。调度阶段,将决定哪个请求被下发执行,

- 阅读全文 -

FIOS:Linux IO 公平调度器论文解读

FIOS,即 Flash IO Scheduler,出自 FAST'2012的一篇论文 FIOS: a fair, efficient flash I/O scheduler,致力于解决在 NAND Flash 上存在的公平性问题。我们知道 Linux 已有一个着重公平性的 IO 调度器:CFQ,并且已经发展的非常成熟,那为何又出来一个 FIOS 呢,且听我一一道来。SSD 面临的调度问题要突出一

- 阅读全文 -

Femu 源码简析与测试环境配置

Femu 来自于 fast-18 上发布的一篇论文The CASE of FEMU: Cheap, Accurate, Scalable and Extensible Flash Emulator[1]。首先 Femu 基于 Qemu 虚拟机实现的,在 Qemu 虚拟机中,对模拟 nvme 的模块进行了部分扩展,以支持更加高级别的针对 Lightnvm 的仿真功能。与原生的 Qemu-nvme 相

- 阅读全文 -

Linux 实验内容设计:向内核中插入虚拟块设备

大三【Linux 操作系统】课的实验内容设计二:向内核中插入虚拟块设备。事情是这样的,课题教学组有位老师抱怨实验无趣,4 个实验课内容从古沿用至今,每学期的助教都是直接拿往届的实验内容去上,都尽量能少一事就少一事,然后再加上已经上了的实验一,是一如既往的“编译内核与添加系统调用”,被班里的大神们抱怨没啥意思。作为萌新的我只能龟缩在角落玩扫雷,并不断的观察着黑下脸的任课老师。大概这位老师觉得被学生看

- 阅读全文 -