![](https://img-blog.csdnimg.cn/20201014180756913.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Linxu存储知识
文章平均质量分 75
记录一些Linux存储方面的源码分析
追捕的风
这个作者很懒,什么都没留下…
展开
-
Linux存储系统架构分析
LINUX内核存储架构原创 2022-06-26 22:41:26 · 317 阅读 · 1 评论 -
NVME2.0协议——新特性
存储系统中的NVM Express2.0原创 2022-06-26 22:07:19 · 794 阅读 · 0 评论 -
存储之Block-MultiQueue机制详解(一)
一、bio请求在block层下发的函数调用关系如下所示:二、block层初始化的流程参考链接:Block multi-queue 架构解析(一)数据结构_xyin_kevin的博客-CSDN博客_block multiqueuebiorequestrequest_queueelevator_queueblk_mq_ctxblk_mq_hw_ctxhttps://blog.csdn.net/qq_32740107/article/details/106302376.原创 2021-12-05 17:08:29 · 477 阅读 · 0 评论 -
Linux相关知识
一、Linux块设备IO子系统——驱动模型Linux块设备IO子系统(一) _驱动模型 - Abnor - 博客园块设备是Linux三大设备之一,其驱动模型主要针对磁盘,Flash等存储类设备, 块设备(blockdevice) 是一种具有一定结构的随机存取设备,对这种设备的读写是按 块 (所以叫块设备)进行的,https://www.cnblogs.com/xiaojiang1025/p/6500557.htmlLinux块设备IO子系统(二) _页高速缓存 - Abnor - 博客园磁盘驱动就是..原创 2021-12-04 21:59:15 · 111 阅读 · 0 评论 -
Linux文件系统初析(二)
1、Linux文件系统中有两个非常重要的概念——page cache和IO,可以参看以下博客来熟悉以下(后面有空再整理源码架构)相关博客:Linux 文件系统解析(三)cache_xyin_kevin的博客-CSDN博客https://blog.csdn.net/qq_32740107/article/details/106867342?spm=1001.2014.3001.5501Linux 文件系统解析(四)IO模式_xyin_kevin的博客-CSDN博客文件系统是IO流程...原创 2021-12-04 17:53:32 · 345 阅读 · 0 评论 -
Linux文件系统初析(一)
1、对Linux操作系统而言,访问硬盘从软件到硬件,从上到下大致可以分为三层: (1)、虚拟文件系统:通用抽象接口、具体文件系统、系统文件缓存。(2)、设备驱动层:通用驱动接口、具体驱动接口(3)、设备层(具体的硬件设备,可以理解为磁盘)2、虚拟文件系统(VirtualFileSystem,VFS):隐藏了各种硬件的具体细节,把文件系统操作和不同文件系统的具体实现细节分离了开来,为所有的设备提供了统一的接口,VFS提供了多达数十种不同的文件系统。虚拟文件系...转载 2021-12-04 17:28:15 · 120 阅读 · 0 评论 -
NVME源码流程解析(二)
本文来接着上一章来讲nvme的注册流程,接下来从driver_attach(drv)函数来看起!1、driver_attach(drv) —— \drivers\base\dd.c/** * driver_attach - try to bind driver to devices. * @drv: driver. * * Walk the list of devices that the bus has on it and try to * match the d...原创 2021-12-04 16:41:53 · 870 阅读 · 0 评论 -
NVME源码流程解析(一)
1、源码目录源码在drivers/nvme下面,有两个文件夹,其中targets文件夹用于将nvme设备作为磁盘导出供外部使用,host文件夹实现将nvme设备供本系统使用。若配置NVMEtarget还需要工具nvmetcli工具。2、/drivers/nvme/host/Makefile模块编译的五个配置参数:NVME_CORE:nvme的核心基础BLK_DEV_NVME:用于将ssd链接到pcie上CONFIG_NVME_FABRICS:支持FC协...原创 2021-12-04 16:21:13 · 3216 阅读 · 2 评论 -
存储相关参考整理
第1页1、IO测试工具之fio详解https://www.cnblogs.com/raykuan/p/6914748.html关于PCle4.0优势,AMD盲方专门科普过,总结过PCI.E4.0三个技术优点,如下:1)、速度更快,X16双向带宽达到了32GB/s,是PCle3.0的两倍。2)、向下兼容,PCle4.0可以兼容PCle30设备。3)、更多连接,PCle4.0带宽高,1条顶2条,可以连...原创 2021-12-04 14:16:41 · 96 阅读 · 0 评论 -
FIO的基本概念
对于FIO,其是一个10测试工具,可以运行在多种操作系统上,用来测试本地磁盘、网络存储等的性能。FIO有以下基本概念,大家可以先了解一下:1、基本概念I/O类型-顺序读、顺序写、随机读、随机写块大小-读写时规定的blocksize,一般为512B、4K、16KI/Osize-一次读写多大的数据,即每次io请求要读写多少数据,一般是1K/4K...1M/4M等大小。I/O引擎(I/Oengin...原创 2021-11-30 21:51:26 · 5883 阅读 · 0 评论 -
FIO中的结构体和引擎的相关介绍
1、FIO中大概的10流程是这样的:(1).FIO根据在commandline中得到的options,经过parsecommandline,把相关参数填充到到structthread_options(2).在do_io中,调用get_io_u填充structio_u,并且发送到backend(libaio)去prepareaio的iounit单位(iocb)2、FIO中常用的结构体大概有以下多种:fio/fio.h:...原创 2021-11-30 21:36:13 · 2658 阅读 · 0 评论 -
FIO源码解读测试
在磁盘测试中,fio是最常用的测试的工具,其下载网址为https://github.com/axboe/fio;对于fio,其测试命令有许多,这个大家很容易就可以查到,此处不讲解具体的测试命令,而是讲一下大概的源码框架。Fio的入口函数在fio.c的main函数,其结构如下所示:fio.c文件:intmain(intargc,char*argvO,char*envp0){ if(initialize_fio(envp)) //libfio.c文...原创 2021-11-30 21:13:40 · 3772 阅读 · 1 评论 -
SSD 之 Firmware
SSD firmware开发分为前端,中端,后端。前端:主要负责和Host打交道,主要需要考虑和host的联系方式(PCIe协议,NVMe协议 etc).中端:属于SSD的核心部分,因为SSD的大部分卖点就得靠这里,比如说性能,中端的磨损均衡算法,垃圾回收等算法起到了决定性的作用。后端:主要和真正的存储介质打交道,比如说NAND。SSD 固件中涉及的一些算法:SSD的固件是确保SSD性能的最重要组件,用于驱动控制器。主控将使用SSD中固件算法中的控制程序,去执行自动信号处理,耗.转载 2021-11-26 22:28:50 · 2566 阅读 · 1 评论 -
NVMe之SSD 控制器
一.NVMe 协议NVMe协议是在PCIe SSD开始大量出现在市场上后,因为各个厂家的私有协议不具有兼容性,无法和现有操作系统无缝衔接,INTEL为了统一接口协议建立生态,而在2011年发布了NVMe协议。NVMe采用了多命令队列 (最大65536个命令队列),每个命令可变数据长度(512B到2MB),同时数据在host端内存支持Physical Region Page和Scatter Gather List。NVMe协议支持命令间的乱序执行,也支持命令内数据块的乱序传输,同时支持命令队列间的转载 2021-11-26 22:21:52 · 3225 阅读 · 0 评论 -
NVME-Namespace
Namespace1.概念NVME SSD主要由SSD控制器,闪存空间和PCIE接口组成,如果把闪存空间划分成若干个独立的逻辑空间,每个空间逻辑块的地址范围为0到N-1(N是逻辑空间大小),这样划分的每个逻辑空间叫做Namespace。2.注意对SATA SSD来说,一个闪存空间只对应一个逻辑空间,对NVME SSD来说,一个闪存空间可以对应若干个逻辑空间每个Namespace都有一个名称和ID,系统是通过NS的ID来区分不同的NS.3.案例,将闪存空间划分为两个NS转载 2021-11-26 21:52:27 · 2796 阅读 · 0 评论 -
Linux ftrace框架介绍及运用(二)
4. ftrace的配置和使用/sys/kernel/debug/tracing目录下提供了ftrace的设置和属性接口,对ftrace的配置可以通过echo。了解每个文件的作用和如何设置对于理解整个ftrace框架很有作用。下面是Ubuntu 16.04+Kernel 4.10.0-42-generic的/sys/kernel/debug/tracing目录: README------------------------一个简单的关于Tracepoing的HOWTO..转载 2021-11-24 21:20:27 · 3805 阅读 · 0 评论 -
利用 BLKTRACE 和 BTT 分析磁盘 IO 性能
本文永久链接:利用 BLKTRACE 和 BTT 分析磁盘 IO 性能 | IT老男孩平时我们在 Linux 上查看磁盘 I/O 性能,可能我们首先就会想到iostat命令(包含于 sysstat 软件包中)或者iotop命令。iostat或者iotop仅提供了汇总的简单视图,其中很重要的参数就是 await,await 表示单个 I/O 所需的平均时间,但它同时包含了 I/O Scheduler 所消耗的时间和硬件所消耗的时间,所以不能作为硬件性能的指标。如果需要知道更多的细节数据,i...转载 2021-11-17 23:24:52 · 1026 阅读 · 0 评论 -
存储之Block-MultiQueue机制详解(三)
(1)bool blk_mq_run_hw_queue(struct blk_mq_hw_ctx *hctx, bool async)——启动硬件队列派发IO请求//启动硬件队列派发IO请求,可以同步/异步执行;如果队列不在静默状态(quiesced)且有IO请求pending,则启动派发bool blk_mq_run_hw_queue(struct blk_mq_hw_ctx *hctx, bool async){ int srcu_idx; bool need_run; /* *原创 2021-11-10 22:26:08 · 889 阅读 · 0 评论 -
存储之Block-MultiQueue机制详解(二)
1、首先看一下blk-mq的处理流程图(不同内核版本之间会有一些差异,但整体结构基本一样) 从整个流程图可以看到,主要是分为三个部分:(1)初始化硬件设备的相关参数(2)初始化请求队列request_queue(3)bio请求的处理过程。前面两个过程主要是完成底层存储设备向文件系统的注册,同时完成软硬队列映射关系等初始化,后一个部分是bio在MQ机制最后生成对应子请求并挂载在硬件队列上的过程。2、接下来我们来分析具体的函数...原创 2021-11-03 22:56:25 · 1550 阅读 · 0 评论 -
Linux中mmap和Direct IO区别
在Linux开发中,有几个关系到性能的东西,技术人员非常关注:进程,CPU,MEM,网络IO,磁盘IO。本篇文件打算详细全面,深入浅出d的剖析文件IO的细节,从多个角度探索如何提高IO性能。 阐述之前,要先有个大视角,让我们站在万米高空,鸟瞰我们的文件IO,它们设计是分层的,分层有2个好处,一是架构清晰,二是解耦;让我们看一下下面这张图:1.穿越各层写文件方式 程序的最终目的是要把数据写到磁盘上,但是系统从通用性和性能角度,尽量提供一...转载 2021-11-03 22:26:40 · 232 阅读 · 0 评论