随笔分类 -  存储系统

摘要:stackbd 是一个虚拟的块设备,它作为另一个块设备的前端,如 USB 闪存盘或循环设备。它将I/O请求传递给底层设备,同时它打印请求信息用于调试。它还有可能修改请求。 堆叠块设备(stackbd)是基于 Linux 设备映射器的代码,它是 Linux 内核中的一个块设备,RedHat 支持,用于 阅读全文
posted @ 2021-01-10 22:17 abin在路上 阅读(578) 评论(0) 推荐(0)
摘要:如果你想知道SSD为什么使用多队列,可以看看这篇文章:https://kernel.dk/blk-mq.pdf 1. 多块层 以下关于多队列层的总结来自 The Multi-Queue Interface Article,Linux kernel git 展示了如何转换为blk-mq。 blk_mq 阅读全文
posted @ 2021-01-10 17:44 abin在路上 阅读(1815) 评论(0) 推荐(0)
摘要:infiniswap来自 NSDI'17,其代码主要用到以下技术: configfs(主要) configfs-用户空间控制的内核对象配置 https://www.kernel.org/doc/Documentation/filesystems/configfs/configfs.txt confi 阅读全文
posted @ 2020-12-08 11:13 abin在路上 阅读(566) 评论(0) 推荐(0)
摘要:在内核编程的过程中,需要获取主机的内存使用率,多方搜索无果,以此为记! 代码如下: void update_memory_rate() { struct sysinfo mem_info; unsigned long total; unsigned long free; unsigned long 阅读全文
posted @ 2020-12-03 20:36 abin在路上 阅读(1078) 评论(0) 推荐(0)
摘要:1. 为什么要使用多队列 在主机中,多cpu运行多个线程,每个线程都能和文件系统交互,文件系统层也是用多线程和bio层交互,但是,块设备层只有一个队列: 在块设备层,来自多个cpu的bio请求被放在同一个队列中,造成阻塞: 因此,提出了多队列的方法,在块设备层也做成多线程: 但是,在块设备层实现多个 阅读全文
posted @ 2020-11-22 22:40 abin在路上 阅读(1527) 评论(0) 推荐(1)
摘要:别人写过的内容,我就不写了。贴一下大佬的博客,写的非常好: 块设备驱动实战基础篇一 (170行代码构建一个逻辑块设备驱动) 块设备驱动实战基础篇二 (继续完善170行过滤驱动代码至200行) 块设备驱动实战基础篇三 (BIO请求回调机制) 块设备驱动实战基础篇四 (逐渐成型,加入ioctl通信机制) 阅读全文
posted @ 2020-11-22 22:37 abin在路上 阅读(1140) 评论(0) 推荐(0)
摘要:1. 编译运行 代码从如下链接获得: https://github.com/torvalds/linux/blob/master/samples/configfs/configfs_sample.c 编写 Makefile 文件: obj-m += configfs_sample.o all: ma 阅读全文
posted @ 2020-11-03 22:28 abin在路上 阅读(767) 评论(0) 推荐(0)
摘要:1. 什么是configfs? configfs 是一个基于内存的文件系统,它提供了与sysfs相反的功能。sysfs 是一个基于文件系统的内核对象视图,而configfs 是一个基于文件系统的内核对象管理器(或称为config_items)。 在 sysfs 中,一个对象在内核中被创建(例如,当内 阅读全文
posted @ 2020-10-30 10:59 abin在路上 阅读(4394) 评论(0) 推荐(0)
摘要:环境:ubuntu14.04,内核4.04 uname -a Linux ubuntu 4.4.0-142-generic #168~14.04.1-Ubuntu SMP Sat Jan 19 11:26:28 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux 克隆项目 阅读全文
posted @ 2020-10-30 10:48 abin在路上 阅读(505) 评论(0) 推荐(1)
摘要:kvm和docker的区别:kvm是全虚拟化,需要模拟各种硬件,docker是容器,共享宿主机的CPU,内存,swap等。本文安装的qemu-kvm属于kvm虚拟化,其中:kvm负责cpu虚拟化和内存虚拟化,QEMU模拟IO设备(网卡、磁盘等)。 参考资料: qemu和docker区别:https: 阅读全文
posted @ 2020-10-20 18:41 abin在路上 阅读(3817) 评论(0) 推荐(0)
摘要:Linux系统为应用程序提供了功能强大且容易扩展的API,但在某些情况下,这还远远不够。与硬件交互或进行需要访问系统中特权信息的操作时,就需要一个内核模块。 Linux内核模块是一段编译后的二进制代码,直接插入Linux内核中,在 Ring 0(x86–64处理器中执行最低和受保护程度最低的执行环) 阅读全文
posted @ 2020-10-14 17:27 abin在路上 阅读(6962) 评论(0) 推荐(2)
摘要:最近多次安装、使用infiniband网卡,每次都要到处寻找相关资料,所以决定做此总结,方便查找。 1. 基础知识 首先,得了解什么是RDMA,贴几个资料: 深入浅出全面解析RDMA RDMA技术详解(一):RDMA概述 RDMA技术详解(二):RDMA Send Receive操作 然后得了解如何 阅读全文
posted @ 2020-06-22 22:35 abin在路上 阅读(17830) 评论(0) 推荐(1)