数据存储张
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
网络大提速,RDMA,IB,iWrap
本文介绍了高性能网络传输技术RDMA及其实现方式。传统以太网数据传输需要多次内存拷贝,导致高延迟。RDMA技术通过直接内存访问实现零拷贝、内核旁路和CPU卸载,显著提升传输性能。RDMA主要有三种实现:专有的IB协议、基于以太网的RoCE(分v1/v2版本)和基于TCP的iWARP。三者虽然协议栈不同,但都通过Verbs软件包提供统一API。文章还比较了各协议的架构特点,并介绍了通过Soft-RoCE进行软件模拟的方法。这些技术通过减少数据拷贝和协议处理开销,有效解决了分布式系统中的网络传输瓶颈问题。原创 2025-07-19 13:57:18 · 15 阅读 · 0 评论 -
从宿主机到虚拟机,云环境下主机端IO路径的变化
KVM的全称是Kernel-based Virtual Machine,也就是基于内核的虚拟机,它本身只是一个内核模块,实现CPU和内存的虚拟化。Qemu: 最早的Qemu通过软件的方式实现了计算机硬件的虚拟化,由于采用纯软件的虚拟化,其效率要低很多。目前的Qemu实现了对KVM的支持,并通过一个工具集提供了丰富的功能,如qemu-system-x86_64和qemu-img等。由于Qemu/KVM是开源免费的,我们可以基于Ubuntu系统快速的部署一个支持KVM虚拟化的环境,并创建一个虚拟机。原创 2024-11-16 16:24:54 · 161 阅读 · 0 评论 -
学习存储协议的利器,聊聊tcpdump和Wireshark
其中选项-i表示要监测的网络接口,-w是将抓取的数据写入的文件,后面则表示监测的协议和端口号。这里的支持是指它能将我们抓取的二进制数据与具体的协议字段对应起来,直接给我们展示解析后的结果,非常直观。执行上述命令后,tcpdump就处于监听数据的状态,此时我们可以通过redis的命令行写入一些数据来验证tcpdump抓包的过程。具体可以执行如下命令。实际上WireShark本身就是一个抓包工具,如果安装的是桌面版的操作系统,我们可将其安装到待抓包的虚拟机中,直接抓包,就不需要借助tcpdump了。原创 2024-05-26 14:23:56 · 272 阅读 · 0 评论 -
全面了解SSD,SSD关键术语全面解析
SMART(Self-Monitoring, Analysis and Reporting Technology,自我监控、分析和报告技术):前面多次提到过这个术语,这是一个硬盘健康状态监控机制,可以提供 SSD 的各种健康状态信息,包括上述的 TBW 和 PE Cycles,以及其他如温度、错误率等信息。Wear Leveling(磨损均衡):由于SSD的存储单元有擦写次数的限制,SSD控制器的算法会尽量保证闪存芯片的存储单元之间均匀分配写入操作,以最大限度地延长SSD的寿命。原创 2024-01-18 20:05:54 · 247 阅读 · 0 评论 -
为什么都说NFS读写性能差,如何进行优化?
如下图是通过Wireshark抓取的网络通信的数据包,可以看出,NFS在访问文件的时候客户端与服务端有的交互除了WRITE之外,还有很多其它的交互,包括ACCESS、LOOKUP和SETATTR等。核心原则是减少客户端与服务端的交互次数,因此我们在访问文件的时候应该尽量保持文件的打开状态,避免重复打开关闭文件,这样NFS全路径的逐级检查。但是,如果是自己开发的应用程序, 在保存数据的时候尽量以大文件的形式,而非小文件的形式,这对性能是有益的。所以,对于一个长路径进行逐级的确认也是必须的。原创 2023-10-02 13:06:53 · 1178 阅读 · 0 评论 -
企业级磁盘阵列存储系统由硬到软全析
所以,存储系统在设计的时候采用双机互备的方式,当其中一个系统出现问题的时候,另外一个系统可以接管服务,从而保证存储服务的连续性。如下图是V7000的管理界面,在该界面中最左侧的是物理硬盘,包括控制器内置硬盘和扩展柜的硬盘。存储软件栈的最上层是协议层。企业级磁盘阵列是由一组设备构成的存储系统,主要包括两种类型的设备,分别是控制器和扩展柜,其中控制器只有一台,扩展柜可以没有,也可以有多台。所以,除了CPU和内存,其它部件都不需要控制器关机就可以更换,从而更进一步的提高系统的可用性,降低业务中断的时间。原创 2023-09-27 22:02:40 · 469 阅读 · 0 评论 -
对象存储,从单机到分布式的演进
纠删码技术不是简单的将数据存储在多个节点上,而是将原始数据切割为若干数据块,并计算出多个校验数据块,然后将原始数据块和校验数据块存储在不同的节点上。其中副本的存放位置是通过设备ID来表示的。虽然在底层数据是分散在多个节点上的,但给用户呈现的单一的命名空间,也就是用户并不会感知到底层是由多个节点构成的。在实际生产中并不会使用单机部署的对象存储,原因是如果服务器宕机,那么我们就无法访问其中的数据了,也就是所谓的单点故障问题。所以,对于企业级的对象存储,通常采用的是分布式的架构,也就是数据会被存储在多个节点上。原创 2023-09-27 21:31:28 · 1278 阅读 · 0 评论 -
什么是云存储,从对象存储说起?
云存储与传统存储的区别在于,云存储中的资源通常通过互联网可以直接访问,而传统存储通常不对外提供直接访问的接口。在《存储系统形态之争,从块存储到统一存储》一文中我们提到了对象存储的概念,知道目前很多企业级存储都是支持对象存储的,比如EMC、NetApp和华为等。在启动服务时包含两个参数,分别时console的地址端口信息和数据的存储路径(需要注意的是,在生产环境数据通常是要存储在独立的硬盘上的)。在本文中,我们介绍了对象存储的基本概念,并对块存储、文件系统和对象存储提供的功能进行了概要的对比。原创 2023-09-14 21:03:55 · 305 阅读 · 0 评论 -
SPDK的块设备抽象层,从一个简单的示例程序讲起
其他如数据读写的API,其第一个参数都是打开设备API返回的指针,第二个参数是一个IO通路(channel),IO通路与硬件的队列相对应,第三到第五个参数则是数据缓冲区、访问的位置和数据的长度,这几个参数跟Linux的read和write函数很像。为了能够实现丰富的功能,SPDK实现了一个块设备抽象层,其功能与Linux内核的块设备层类似,这个块设备抽象层称为BDEV。BDEV的下层实现对不同种类型设备的支持,在BDEV子系统初始化的时候会对调用模块初始化的函数指针进行模块的初始化,如图是基本函数调用。原创 2023-08-02 18:54:15 · 378 阅读 · 0 评论 -
深入理解SPDK读写数据的过程,从应用到NVMe驱动
除了上述基本的API外,SPDK还有一些扩展功能的API,以写数据的API为例,比如支持SGL的spdk_nvme_ns_cmd_writev,以及spdk_nvme_ns_cmd_writev_with_md和spdk_nvme_ns_cmd_writev_ext等函数。回到读数据的API,可以看到其实现与写数据的API基本一样,唯一区别的地方操作码不同,写数据是SPDK_NVME_OPC_WRITE,这里是SPDK_NVME_OPC_READ。写数据的API与读数据的API参数一致,并没有明显的差异。原创 2023-07-20 21:21:16 · 400 阅读 · 0 评论 -
深入聊一下机械硬盘的相关内容
本文是《数据存储通识课》合集的一部分,本合集希望通过一系列文章科普数据存储相关技术内容。同时,本系列文章不仅仅是科普,还会进行有深度解析,理论结合实现,从代码实现层面进行剖析原创 2023-06-09 21:39:12 · 1116 阅读 · 1 评论 -
初识SPDK,从SPDK的软件架构到使用实操
本文是《数据存储通识课》合集的一部分,本合集希望通过一系列文章科普数据存储相关技术内容。同时,本系列文章不仅仅是科普,还会进行有深度解析,理论结合实现,从代码实现层面进行剖析。欢迎关注“数据存储张”,老张是深耕存储十几载,就业于存储No1公司的资深工程师。原创 2023-05-27 17:35:48 · 1583 阅读 · 0 评论 -
计算节点与存储设备是如何连接的?
一路发展,从SCSI-1、SCSI-2一直到目前最新的SCSI-5,SCSI协议定义的物理接口在变化(如下图是不同版本SCSI的物理接口与平面图),协议本身变的越来越成熟,性能也是一路飙升。对于SCSI建立连接的过程的理解可以与TCP协议建立连接的过程类似,只不过SCSI是物理连接,而TCP是虚拟连接。不光通信的介质不同,FC本身也是一整套的协议栈,与TCP/IP协议类似,但比后者高效。如下是SCSI协议的整体架构图,可以看到SCSI协议本身是一个协议族,包含的协议非常之多,大多数人不知从何入手。原创 2023-05-27 17:30:59 · 1592 阅读 · 0 评论 -
聊聊企业级存储的基石——RAID技术
本文简要介绍RAID的历史及基本概念。原创 2023-03-04 18:10:07 · 306 阅读 · 0 评论 -
数据是如何在计算机中存储的
虽然在用户层面呈现的仍然是类似文件系统那样的层级结构,但是在服务端通常并非基于文件系统构建,而是基于一种称为对象存储的分布式存储系统。直观的认识是,文件等数据是存储在硬盘当中的,就像所示的这样。关于“分区”其实是存储领域的一个专业术语,我们可以暂时不深究,可以简单的理解为硬盘的一个区域即可。这就是文件系统管理数据的特点,它可以实现对数据的分类管理,而且分类可以嵌套,形成一个目录树。前面介绍了个人常见的数据存储的形式,那么对于企业来说,比如银行、电商、券商或者视频App的后端又是如何来存储数据的呢?原创 2023-03-04 17:32:19 · 944 阅读 · 0 评论 -
存储技术从入门到精通必读书籍推荐
存储入门这里首推《数据存储技术》这本书。有人可能会好奇,觉得《大话存储》不应该更适合入门吗?我这里想说的是,一个800多页,一个只有200多页,介绍的内容基本没有差别,深度差别也不大,你会选择哪一个?所以,这里我首先推荐大家阅读这本书来入门,如果大家有精力,可以继续阅读一下《大话存储》。这本书的内容主要集中企业级存储,企业级存储是一种集中式的存储系统。大家阅读完本书后对于企业级存储应该具备了比较全面的认识了。存储技术的另外一个方向是分布式存储,其中比较常见的如Ceph、GlusterFS和HDF原创 2022-05-04 20:04:10 · 870 阅读 · 0 评论 -
存储技术从入门到精通必读书籍推荐
随着人工智能、自动驾驶和大数据技术的发展和工程应用的普及,存储技术变得越来越普遍和重要。因此很多同学进入存储相关的领域,需要快速了解存储相关的技术。为了让大家能够快速了解相关技术,今天我们就推荐基本相关的图书。相信通过阅读下面基本书,大家不仅能入门存储,更能成为这方面的专家。存储入门这里首推《数据存储技术》这本书。有人可能会好奇,觉得《大话存储》不应该更适合入门吗?我这里想说的是,一个800多页,一个只有200多页,介绍的内容基本没有差别,深度差别也不大,你会选择哪一个?所以,这里我首先推荐大家阅读这本原创 2022-04-01 20:54:42 · 1207 阅读 · 0 评论 -
磁盘结构大解剖,带你认识磁盘
磁盘的使用由于磁盘固件屏蔽了磁盘的复杂的内部结构,当前对磁盘的访问变得极其简单。我们可以将磁盘理解成为一个线性的地址空间,从0开始,最大为可寻址空间为磁盘的实际容量,单位是一个扇区(512B)。因此我们对磁盘的访问其实就变成了对磁盘的某个偏移的一段长度的访问,比如要读取偏移为15,长度为2扇区的数据,示例如下图:图1 磁盘线性地址读取示例Linux有一些工具可以直接访问磁盘,...原创 2019-04-23 08:40:45 · 2364 阅读 · 0 评论 -
硬盘发展简史,看看硬盘的祖先长什么样
我们知道现在用于存储数据的介质有硬盘,SSD,优盘和光盘等。其中硬磁盘是应用最为广泛的。但是你知道他们的发展史是怎么样的吗?今天我们就介绍一下。最早的磁介质的相关文章发表在1888年9月8日的英国《电气世界》杂志上,在"一些可能形式的留声机"一文中,作者奥伯林·史密斯发表了最早的关于磁记录的作品之一,并建议(可能是第一次)使用永久磁印象来记录声音。这个只是使用磁介质来记录信息,并非用于计算机,但也是硬盘的祖先了。基于磁性的留声机(磁线)1878年,史密斯发明了电子留声机,该留声机采用磁性介质来对原创 2021-06-04 21:10:31 · 1364 阅读 · 0 评论 -
磁盘的IO重排序与调度策略
本文期望通过一个故事让大家了解磁盘驱动如何对IO进行重排序和调度。万芝堂是百年老字号了,主营中草药,并兼老中医出诊。虽然万芝堂有近百年的历史,但活动范围仅限北京城,即使在北京城也仅有2个分号。最近万芝堂换了新掌柜的。新掌柜新官上任三把火,不仅在北京增加了分号数量,在保定府也开了好几家分号。图1 总号与分号保定府本身也比较大,分号开了5家,具体的在各大街区基本都有,繁华街区开了3...原创 2019-07-08 08:45:16 · 658 阅读 · 0 评论 -
一篇文章理解Linux操作系统中的块设备
块设备也就是存储以“块”为单位存储数据的设备,比较典型的如磁盘设备、光盘或者优盘。本文首先集中在磁盘设备的相关内容的分析,其他设备类型很类似,暂时不做介绍。在Windows操作系统下磁盘设备似乎是一个实实在在的设备,我们可以通过图形界面对磁盘设备进行管理。如图1是Windows下的磁盘管理界面,可以通过这个界面清晰的看到磁盘设备,并且可以对其进行格式化等操作。图1 Windows磁盘设...原创 2019-06-14 10:22:44 · 4589 阅读 · 2 评论 -
进一步理解Linux操作系统的块设备
在前文《理解Linux操作系统的块设备》中我们从比较高层面(Hight Level)介绍了块设备的原理和块设备的特性。但是关于Linux操作系统块设备的实现原理可能还一知半解。本文将进一步深入的分析Linux的块设备,期望能让大家更加深入的理解块设备的实现细节。其实在Linux操作系统中可以非常方便的实现一个块设备,或者说是块设备驱动。在Linux中我们熟知的RAID、多路径和Ceph的RBD...原创 2019-06-21 11:06:08 · 2356 阅读 · 0 评论 -
iSCSI存储协议发展简史
iSCSI的全称是Internet Small Computer System Interface,可以看出iSCSI是基于以太网的SCSI。SCSI的全称是SmallComputerSystemInterface,也就是小型计算机系统接口。很多设备是基于SCSI来与计算机交互数据的,常见的如硬盘、软驱、光驱、打印机、扫描仪等。SCSI协议SCSI最早发明于1982年,一路走来有多个不同的标准,比如SCSI-1,SCSI-2和SCSI-3等等。不同标准的速度不同,硬件的接口也不尽相同。如图是不...原创 2021-07-05 20:09:51 · 409 阅读 · 0 评论 -
高端存储系统的发展方向展望
从1990年Symmetrix之父Moshe Yanai推出Symmetrix 4400存储系统至今二十多年,高端存储系统无论从硬件架构还是软件功能上都发生非常明显的变化。本文将通过高端存储发展历史粗略的分析一下高端存储的发展方向。分布式灵活可扩展早期的高端存储系统的各个功能模块往往集成在一个大的机柜当中,通常包括控制器模块、缓存模块和后端接口模块等,它们通过背板进行连接。最为典型的是HD原创 2014-11-01 09:53:58 · 2142 阅读 · 0 评论 -
生产环境NFS服务配置应该考虑的因素
别光收藏,如果觉得不错请帮忙点个za ,在下这厢有礼了!前面我们搭建一个NFS服务,但是只有一个服务节点,而且在配置的时候关闭了防火墙等安全组件。这样配置在生产环境是非常不安全的,只能用于学习。一方面是由于只有一个服务节点,该服务节点就成为单点了,服务器或者内部服务的任何问题都会导致NFS服务的不可用。另外一个如果没有防火墙,那么就存在被攻击的风险。那么有没有一种方式可以提供一个高可用的,安全的NFS服务呢?其实方法是有的,一种方法就是使用商用的存储设备,比如EMC的Unity。另外一种方法.原创 2021-06-08 20:48:06 · 397 阅读 · 0 评论 -
NFS在Linux下的安装、部署与应用
NFS文件系统是Sun公司开发的网络文件系统,也称为分布式文件系统,其基本原理是将某个设备本地文件系统通过以太网的方式共享给其它计算节点使用。也就是说,计算机节点通过NFS存储的数据是通过网络存储在另外一个设备,而不是存储在本地磁盘。图1 NFS网络文件系统最大的特点是可以实现多个计算节点对同一个存储设备的访问,从而提升存储的利用率,并简化存储管理难度。NFS分布式文件系统本身是客户端服务器架构模式。本文将介绍如何基于Linux操作系统部署一个NFS文件系统服务,并且介绍如何在客户端进行使用原创 2021-06-08 20:45:13 · 277 阅读 · 0 评论 -
Linux内核中的设备模型及SCSI示例解析
关于硬件架构想要了解Linux操作系统的内核设备和驱动模型,最好先了解一下现在计算机硬件的架构。对计算机硬件有一定了解之后,对理解Linux内核中的设备和驱动模型非常有帮助。如图1是常规计算机的硬件架构简图。这里面需要重点理解的概念包括:总线、PCI桥和设备三个概念。我们下面大概介绍一下这几个概念的含义:总线: 我们知道计算机通常包括几大件,CPU、内存、输入设备和输出设备等。这些设备之间...原创 2019-04-05 19:52:10 · 1445 阅读 · 0 评论 -
NVMe的Linux内核驱动分析
关于本文的几点说明:1. 本文基于Linux 4.1.12 版本的内核进行介绍,其它版本的内核代码可能略有不同,但不影响理解。2. 在阅读本文之前,如果能够阅读一下本号之前关于块设备和SCSI的文章,对理解本文将很有帮助。3. 建议阅读本号之前的两篇文章(一篇文章讲清什么是NVMe和理解NVMe的内部实现原理,这一篇就够了)后阅读本文,这样理解的更透彻。前面两篇文章我们对NVM...原创 2019-07-08 08:46:48 · 2926 阅读 · 0 评论 -
SAN存储与协议,了解SCSI、FC和ISCSI
在前面我们介绍SAN存储及iSCSI协议的时候了解到SAN存储其实是一个CS架构的系统。存储系统本身就是整个系统的服务端。以IP-SAN(也就是基于iSCSI的SAN存储)为例,其整体架构如图1所示。图1 CS架构对于存储系统来说,通常是由专业的存储厂商提供,比较知名的如EMC、NetAPP、IBM和日立等等。国内存储厂商也迅速崛起,比较知名的如华为、宏杉、浪潮和同友等等。另外,还有一些小的存储厂商,他们往往集中在某个领域,比如专注文件系统或者块存储等等。除了专业的存储设备外,其实Linux原创 2021-05-27 22:05:58 · 2482 阅读 · 0 评论 -
深入理解NVMe协议的原理
前面我们介绍了一下NVMe的基本概念,让大家在直观上认识了一下什么是NVMe。今天我们将更加深入的介绍NVMe。故事要从卡利姆多和东部王国的贸易兴起说起。卡利姆多盛产粮食,而东部王国盛产丝绸和瓷器。在卡利姆多和东部王国之间有一条非常狭小的交易通道。虽然通道狭小,但两国之间贸易较少,因此基本上也是满足要求的。但突然有一天事态发生了变化。卡利姆多人发现东方王国的丝绸非常精美,而且他们现在粮食过剩...原创 2019-06-27 17:50:17 · 11571 阅读 · 1 评论 -
性能问题的银弹---缓存技术大观
仔细观察一下我们现有的系统,小到一颗CPU,大到一个在线交易系统。任何性能问题都可以通过一种方式有效的解决,这种方式就是缓存。不错,缓存几乎可以成为解决性能问题的银弹,百发百中。缓存的主要目的是降低数据访问延时,实现手段多种多样,下面对不同种类的缓存进行介绍。CPU的缓存能想到的最小粒度的缓存恐怕就是CPU的缓存了。CPU不但有缓存,而且将缓存分成了多种级别,如图1所示,分别是L1、L2和...原创 2019-06-19 20:02:06 · 655 阅读 · 0 评论 -
一篇文章理解Ext4文件系统的目录
使用过Linux的同学应该对Ext4文件系统都有了解。在Linux文件系统中一切皆文件,同样目录也是文件的一种类型。熟悉Linux服务器的同学经常会看到如下内容,这个是某个目录的列表内容。每一行的前面形如drwxr-xr-x的内容为文件的属性,而第一个字符d则表示这个文件是一个特殊的文件,也就是目录(directory)。第一个字符是用于标示文件类型的,对于块设备则是b,字符设备是c等等,每种特殊...原创 2019-06-14 10:25:13 · 7024 阅读 · 1 评论 -
分布式存储与传统存储架构
随着主机、磁盘、网络等技术的发展,对于承载大量数据存储的服务器来说,服务器内置存储空间,或者说内置磁盘往往不足以满足存储需要或者虽然能满足要求,但各个服务器之间独立,严重降低了磁盘的利用率。因此,在内置存储之外,服务器需要采用外置存储的方式扩展存储空间,今天IT君给大家分享一下当前主流的存储架构。直连式存储(简称DAS)DAS存储是最为常见的存储形式之一,特别是其是在规模比较小的企业中...原创 2019-04-10 20:34:58 · 53737 阅读 · 0 评论 -
iSCSI的基本架构及操作简介
iSCSI是由IBM发明的基于以太网的存储协议,该协议与SUN的NFS协议都是为了解决存储资源共享问题的解决方案。两者意图一致,只不过两者是不同的实现方式,前者在客户机上呈现的是一个块设备,而后者则是一个目录树。关于两者的区别,可以参考本号之前的文章(分布式存储与传统SAN、NAS相比,有什么优势与劣势?),本位不再赘述。本文今天主要介绍一下iSCSI的整体架构,以及在Linux平台上启动器端(...原创 2019-04-02 20:45:44 · 2801 阅读 · 0 评论 -
Ceph介绍之RBD实现原理
RBD是Ceph提供的块设备,本文将简要介绍一下其实现原理。Ceph官方文档告诉我们Ceph本质上也是对象存储。而且了解到,Ceph的块存储其实在客户端也会被分为若干个对象进行处理。也即,对于Ceph集群,存储数据的格式就行对象。如下图所示,从镜像(块存储的呈现形式)的信息可以看出,块存储的组成及属性。图 1 RBD镜像属性创建存储池的镜像之后,在存储池中会有相关的对象数据原创 2015-11-28 10:03:32 · 16537 阅读 · 2 评论 -
Ceph代码分析---线程池
对于计算密集型的业务通常使用线程池进行多线程并发处理,线程池在一定程度上可以有效的提高CPU的利用率,降低无用消耗。Ceph中实现了两种类型的线程池类(本质相同),并实现消息队列处理类。其中线程池类负责具体线程创建,维护和销毁。消息队列处理类则负责队列的管理,包括入队,出队等,消息队列类为一个模板类,保证其处理数据类型的通用性。原创 2015-11-28 10:17:08 · 2764 阅读 · 2 评论 -
Ceph分布式存储系统介绍
1. Ceph存储系统概述Ceph 独一无二地用统一的系统提供了对象、块、和文件存储功能,它可靠性高、管理简便、并且是自由软件。 Ceph 的强大足以改变贵公司的 IT 基础架构、和管理海量数据。 Ceph 可提供极大的伸缩性——供成千用户访问 PB 乃至 EB 级的数据。 Ceph 节点以普通硬件和智能守护进程作为支撑点, Ceph 存储集群组织起了大量节点,它们之间靠相互通讯来复制数据原创 2015-11-28 09:48:18 · 14707 阅读 · 0 评论