【存储专题】深入浅出谈存储

一、开篇        

        当今的数字世界中,数据已成为组织和企业最重要的资产之一。为了高效地管理和利用这些数据,存储技术扮演了至关重要的角色。存储技术涉及多种硬件和软件解决方案,可以用于存储、备份和恢复数据,以及提供高性能、可靠性和安全性。与传统的机械硬盘相比,闪存和云存储等新兴技术正在快速发展。同时,分布式存储和存储虚拟化技术也越来越受到关注,这些技术可以提高存储效率和降低成本。在这个领域,不断涌现出新的创新和发展,以满足不断增长的存储需求和挑战。在本文中,我们将深入浅出地探讨存储技术的发展和变化,及存储相关的技术和原理。

二、存储的发展(简介)        

         存储技术的发展历程可以追溯到计算机的早期。最初的计算机使用磁带作为主要的存储介质,然而磁带存储速度慢,使用不方便,需要手动定位和读取数据。随着计算机技术的不断发展,硬盘开始逐渐替代磁带成为主流的存储介质,硬盘的容量和速度都得到了大幅提升。在机械硬盘的基础上,随着闪存技术的成熟,固态硬盘开始逐渐替代机械硬盘。相比于机械硬盘,固态硬盘具有更高的读写速度和更低的能耗,同时更加可靠和稳定。

        在企业级应用中,SAN和NAS网络存储技术的发展和应用也成为了存储领域的重要趋势,这些技术可以为企业提供高速数据访问、可扩展性和数据保护等功能。近年来,随着云计算技术的普及和大数据时代的到来,云存储也成为了存储技术发展的重要方向之一。云存储可以提供低成本、高可用、易扩展和高安全性的存储解决方案,为企业提供了更加灵活和可靠的数据存储方式。除此之外,存储领域还涌现出了许多新技术和新趋势,例如分布式存储、存储虚拟化、对象存储、混合存储等等。这些技术不断拓展了存储应用的范围,为存储技术的未来发展提供了更多的可能性。

三、主存、缓存(cache)、外置存储、存储层次

1、主存(内存条)

        主存(Main Memory),也叫内存(Memory),是计算机中用来存储程序和数据的重要部件,是CPU可以直接访问的存储器。主存通常采用动态随机存储器(DRAM)作为芯片,用来存储正在运行的程序和数据。主存的访问速度比硬盘等外部存储器快得多,因此可以提高计算机的运行速度和效率。

        主存按照存储介质的不同分为静态随机存储器(SRAM)和动态随机存储器(DRAM)两种。SRAM的访问速度更快,但成本更高,通常用于高速缓存等应用场景。DRAM则是主存中使用较多的存储介质,其访问速度较慢,但成本相对较低,容量较大,适合于存储大量数据。

        主存的容量一般是有限的,因此需要进行管理。操作系统通过内存管理单元(MMU)来管理主存,包括分配和回收内存空间,维护内存的地址映射等。为了提高主存的利用率和运行效率,操作系统还会采用虚拟内存技术,将主存与磁盘等外部存储器结合起来,将不常用的数据和程序存储到磁盘中,从而节约主存的空间,提高计算机的整体性能。

2、缓存(cache)

        缓存(Cache)是计算机中常用的一种存储技术,用于提高数据的读取速度和计算机的整体性能。缓存通常是一种高速存储器,与CPU或其他处理器之间置于数据路径上,可以快速地提供数据和指令,缩短处理器访问主存的时间。

        缓存的工作原理是利用程序局部性原理,即程序的访问模式具有一定的局部性特征,例如时间局部性和空间局部性。时间局部性指的是程序中某些数据或指令在一段时间内会被多次访问;空间局部性指的是程序中相邻的数据或指令往往会被一起访问。缓存根据这些局部性原理,将最近经常访问的数据和指令存储到高速缓存中,下次访问时,CPU可以直接从缓存中获取,避免了从主存中读取数据的时间延迟,从而提高了计算机的处理速度和性能。

        根据缓存的存储位置不同,可以将其分为多级缓存和单级缓存。多级缓存通常包含多个缓存层次,从速度快且容量小的L1缓存到速度慢但容量大的L3或L4缓存。单级缓存则是指只有一个缓存层次的缓存系统,通常用于一些需要简单但高效的应用场景。

        缓存的大小和存储策略也是缓存系统设计中需要考虑的关键因素。缓存的大小越大,可以存储的数据量越多,但也会导致访问延迟增加;缓存的存储策略包括直接映射、组相联和全相联等,不同的存储策略会影响缓存的容量和命中率。因此,在设计缓存系统时需要根据具体应用场景和硬件特性进行综合考虑。

3、外置存储

(1).硬盘

        硬盘(Hard Disk Drive,HDD)是一种常见的计算机辅助存储器,主要用于存储操作系统、应用程序、文件和数据等信息。硬盘是一种旋转存储介质,数据通过读写磁头进行读写。常见的硬盘分为机械硬盘和固态硬盘两种类型。

        机械硬盘(Mechanical Hard Disk Drive)是最早的硬盘类型,由盘片、磁头、马达和控制电路等组成。盘片是硬盘中存储数据的主要介质,通常有一到多个盘片叠在一起,每个盘面都有磁头读写数据。硬盘的读写速度受到转速和接口速率的影响,常见的转速有5400转/分、7200转/分和10000转/分等,接口速率主要包括SATA、SAS和IDE等。机械硬盘通常价格较低,但相对固态硬盘读写速度慢,受机械结构和外部环境干扰较大。

         固态硬盘(Solid State Drive,SSD)是一种基于闪存的存储器,它通过集成电路芯片存储数据,没有机械部件。相比机械硬盘,固态硬盘读写速度更快、耗电更少、抗震性能更好、体积更小、寿命更长等优点。但固态硬盘的价格通常较高,存储容量也比机械硬盘有限。随着技术的不断发展,固态硬盘的价格不断下降,容量也逐步增大,越来越受到用户的青睐。

 (2).软盘

        软盘(Floppy Disk)是一种早期的计算机存储介质,常用于传输数据或备份数据。软盘外形类似于一个硬纸板盒子,内部包含一个可旋转的塑料盘片和一个读取磁道的磁头,塑料盘片表面上有多个磁性涂层的磁道,数据通过磁头在磁道上的读写进行存取。

        软盘的存储容量通常很小,最初的软盘容量为360KB,后来经过技术改进逐渐提高到1.44MB,但相比现在的存储介质已经非常有限。软盘虽然已经退出了历史舞台,但在计算机技术发展早期,它曾是一种非常重要的存储介质,对计算机的应用和普及做出了贡献。

 (3).光盘

        光盘(Optical Disc)是一种通过光学技术进行数据存储的介质。它是由聚碳酸酯或聚碳酰胺等材料制成的,表面覆盖着一层可反射的金属薄膜,数据则是通过在薄膜上刻上微小凹坑或凸起的方式存储在光盘上的。

        光盘可以根据不同的存储技术和封装形式分为多种类型,例如CD、DVD、Blu-ray等。其中CD(Compact Disc)是最早的一种光盘,存储容量一般为650MB或700MB;DVD(Digital Versatile Disc)则比CD容量大得多,常见的单层DVD容量为4.7GB,双层DVD容量为8.5GB;Blu-ray则是一种高清晰度光盘,单层容量可达25GB,双层则可达50GB。

        光盘以其高存储容量、便于携带、数据传输稳定等特点,在许多领域得到广泛应用,例如音乐、电影、数据备份等。但随着大容量USB存储器、云存储等技术的发展,光盘的使用逐渐减少,越来越被视为一种过时的存储介质。

 (4).U盘

        U盘(USB flash drive),又称作闪存盘、存储棒、数据棒等,是一种以USB接口为主要接口、使用固态闪存芯片存储数据的便携式存储设备。它的外形小巧便携,体积通常不超过几平方厘米,重量也很轻。

        U盘具有容量大、读写速度快、数据可靠、易于携带等优点,是一种常见的数据存储和传输工具。通常情况下,U盘的容量可从几百MB到几十GB不等,也有超过100GB的高容量U盘。

        U盘可以通过USB接口直接与计算机或其他支持USB接口的设备连接,实现数据的读写和传输。由于其便携性和通用性,U盘在数据备份、文件传输、系统安装、数据恢复等方面得到了广泛应用。

 (4).存储层次

        在计算机系统中,存储器层次结构从高到低依次为:一级缓存、二级缓存、三级缓存、主储存器、持久性储存器、固态硬盘、机械硬盘以及远程二级存储。这些层次依次提供了不同的容量、速度和成本的存储器,以满足不同的应用需求。。

        CPU是计算机系统的中央处理单元,它包括一些内置的缓存,如一级缓存和二级缓存,用于提高CPU对内存中数据的访问速度。

        一级缓存是CPU中的一个非常小但非常快的存储器,通常集成在CPU芯片中,用于存储CPU频繁使用的数据和指令。

        二级缓存和三级缓存通常也集成在CPU芯片中,它们比一级缓存容量更大,速度也稍慢一些,但仍然比主存储器要快得多。

        主储存器是计算机系统中的主要内存,用于存储操作系统、应用程序和数据。主储存器通常采用动态随机存取存储器(DRAM)技术,其容量比CPU中的缓存要大得多。

        持久性储存器是用于长期存储数据和程序的存储器,例如硬盘、固态硬盘和光盘等。

        固态硬盘(SSD)是使用闪存存储技术的存储设备,其读写速度比传统机械硬盘要快得多,耐用性也更高。

        机械硬盘是使用机械部件读写数据的存储设备,它的读写速度相对较慢,但容量较大且价格较低。

        远程二级存储是分布式存储系统中的一种存储方式,它允许多台计算机共享存储资源,提高存储容量和可靠性。

四、RAID技术和JBOD

         1、#什么是RAID,RAID技术原理有哪些?#

          RAID,全称为Redundant Array of Independent Disks,即独立磁盘冗余阵列,是一种将多个磁盘组合起来,通过数据分布、镜像、条带化等方式实现数据保护和提升磁盘读写性能的技术。RAID可以在硬件或软件层面实现,不同的RAID级别有不同的特点和适用场景。一些常见的RAID级别包括RAID 0、RAID 1、RAID 5、RAID 6、RAID 10等,此外还有其他的RAID,例如华为的RAID TP。RAID的应用领域非常广泛,特别是在服务器和数据中心等场景下,通过RAID技术可以提高数据安全性和系统性能。

        RAID 0是一种基本的RAID级别,它将数据分成多个块,分别写入多个磁盘上。这样可以提高读写性能,因为多个磁盘可以同时读写数据。RAID 0没有数据冗余,所以不提供数据保护功能。如果任何一个磁盘损坏,整个阵列的数据将无法恢复。

         RAID 1是一种将数据镜像到另一个磁盘上的RAID级别,提供数据冗余功能。RAID 1需要至少两个磁盘,并将所有数据写入两个磁盘中。如果任何一个磁盘损坏,数据仍然可以从另一个磁盘中恢复。RAID 1可以提高读取性能,因为数据可以同时从两个磁盘中读取,但写入性能可能会稍微降低,因为数据需要写入两个磁盘。

         RAID 5是一种将数据分成多个块并将奇偶校验信息分布到多个磁盘上的RAID级别,提供数据冗余和读取性能提升的功能。RAID 5需要至少三个磁盘,并将数据分成多个块,分别存储在不同的磁盘上。此外,RAID 5还会计算奇偶校验信息,并将其分布到不同的磁盘上。如果任何一个磁盘损坏,RAID 5可以使用奇偶校验信息来恢复丢失的数据。RAID 5的写入性能通常比RAID 1好,因为数据只需要写入到一个磁盘中,而不是两个磁盘中。

         RAID 6是一种在RAID 5的基础上增加了一个奇偶校验信息的RAID级别。RAID 6需要至少四个磁盘,并将数据分成多个块,分别存储在不同的磁盘上。此外,RAID 6还会计算两个奇偶校验信息,并将其分布到不同的磁盘上。如果任何两个磁盘损坏,RAID 6可以使用奇偶校验信息来恢复丢失的数据。RAID 6相对于RAID 5提供更高的数据冗余性和可靠性,但需要更多的磁盘容量。

         RAID 10:RAID 10(有时也称为 RAID 1+0)是 RAID 等级中最常见的一种,它结合了 RAID 1 和 RAID 0 的优点。 RAID 10 需要至少四个驱动器,其中两个驱动器被配置为 RAID 1 镜像,另外两个驱动器被配置为 RAID 0 条带。 RAID 10 具有非常高的性能和容错能力,但需要更多的驱动器。

         RAID各级别的实际磁盘容量取决于所选的RAID级别和磁盘数量。以下是每种RAID级别的实际磁盘容量:

  1. RAID 0:实际磁盘容量等于所有磁盘容量的总和。

  2. RAID 1:实际磁盘容量等于单个磁盘容量的一半,因为每个磁盘都需要一个镜像。

  3. RAID 5:实际磁盘容量等于所有磁盘容量之和减去一个磁盘容量的大小,因为一个磁盘用于校验位。

  4. RAID 6:实际磁盘容量等于所有磁盘容量之和减去两个磁盘容量的大小,因为两个磁盘用于校验位。

  5. RAID 10:实际磁盘容量等于一半的磁盘容量总和,因为磁盘是成对镜像的,每个镜像组合成一个RAID 0 阵列。

        注: 此处RAID原理图出自博客园“一袋米几多米!

2、JBOD 

        JBOD是“Just a Bunch Of Disks”的缩写,它指的是一种存储配置,将多个独立的硬盘驱动器组合成单个的逻辑卷。JBOD通常不具有RAID级别提供的数据冗余功能,因此对数据的保护不如RAID级别高。

        JBOD的原理是将多个独立的硬盘驱动器组合成一个大容量的存储卷,通过串联或并联这些硬盘驱动器来实现。在串联中,JBOD会将硬盘驱动器连接在一起,使它们成为一个长的、连续的存储卷。这种方式需要所有的硬盘驱动器都在线,否则就会影响到整个卷的可用性。在并联中,JBOD会将硬盘驱动器连接在一起,使它们成为一个大的、并行的存储卷,每个硬盘驱动器都独立工作,如果有一个硬盘驱动器故障,只会影响到该硬盘驱动器的数据,而不会影响到其他硬盘驱动器的数据。

        由于JBOD没有提供RAID级别的数据冗余功能,因此数据可用性较低。在使用JBOD时,必须确保在JBOD中使用的所有硬盘驱动器都具有相同的容量和规格,以便在创建JBOD卷时可以无缝地整合它们。

五、存储分类

1.按照存储架构分类(集中式存储和分布式存储

        集中式存储:指所有数据都存储在一个单独的中心存储设备上,由其他设备进行访问。这种架构适合于小型企业或部门,但在处理大量数据和复杂的工作负载时可能会出现瓶颈和性能问题。

        分布式存储:指数据被分布式存储在多个节点或服务器上。这种架构适合于处理大规模数据和高并发访问的应用。分布式存储可以提高数据可靠性、性能和可扩展性,但是管理和维护也相对复杂。如下图所以为分布式存储的组网架构:

 2、按照数据访问方式分类

        块存储(Block Storage):将数据划分为固定大小的块,每个块都有唯一的地址,允许直接访问和修改。块存储适合于高性能计算和数据库等应用,但需要专用的协议和文件系统。

        对象存储(Object Storage):以对象(Object)为单位存储数据,每个对象都有唯一的标识符,包括数据和元数据(Metadata)。对象存储适合于云存储、大规模数据和长期存档等应用。这里补充几个基本概念:

       桶:对象存储中存储对象的容器。对象存储提供了基于桶和对象的扁平化存储方式,桶中的所有对象都处于同一逻辑层级,去除了文件系统中的多层级树形目录结构;

       对象:对象存储中数据存储的基本单位,一个对象实际是一个文件的数据与其相关属性信息(元数据)的集合体。用户上传至对象存储系统的数据都以对象的形式保存在桶中;

        命名空间:大数据存储(HDFS)中,命名空间为存储文件的容器。

        账户:帐户是最终用户使用对象和大数据存储服务的凭证。帐户是资源的所有者,对桶和对象或命名空间和文件有完全控制权限,帐户也可以创建用户,通过权限控制授权用户使用资源。

        AK和SK:帐户包括了AK和SK,用于鉴别身份。AK与SK是用户访问对象和大数据存储时需要使用的密钥对,一个AK唯一对应一个用户,而一个用户可以拥有多个AK。

        文件存储(File Storage):以文件为单位存储数据,每个文件都有唯一的文件路径和名称。文件存储适合于文件共享和协作等应用,但可能会出现性能瓶颈和一致性问题。

3、存储按照其连接方式和应用场景分类(DAS、NAS、SAN)

 DAS存储:

        DAS(直接附加存储)是一种将存储设备直接连接到服务器或工作站的存储体系结构。它通过一些物理接口(如SATA、SAS或SCSI)直接将存储设备附加到主机或服务器上。DAS通常包括外部硬盘驱动器和外部磁盘阵列,它们通过SAS或SCSI接口与主机连接。

        DAS系统的优点包括简单易用、廉价和高性能,因为数据传输不需要通过网络。同时,DAS也具有缺点,例如数据共享受限、不具备容错能力、不方便管理等。

        DAS通常用于小型企业或个人用户的数据存储需求。如果需要提高数据的可用性和容错能力,则需要使用其他类型的存储体系结构,如NAS或SAN。

NAS存储:

        NAS(Network Attached Storage,网络附属存储)是一种通过网络连接的独立设备,它提供了一种简单而有效的方法来共享文件,数据和媒体内容。相比于DAS(直接附加存储),NAS允许多个用户从多个设备访问存储资源,而无需将存储设备直接连接到每个设备上。NAS通常包含一些磁盘驱动器组成的储存池,使用者可以根据需要增加或减少容量。

        NAS可以通过各种不同的网络连接方式实现连接,包括以太网,无线网络和蓝牙等。它还可以具有不同的软件和硬件功能,例如文件共享,打印机共享,远程访问和多媒体流媒体等功能。NAS是一种简单易用的存储解决方案,可用于个人,家庭和企业应用中,为用户提供快速且可靠的数据访问和共享服务。

        访问NAS的协议通常有以下几种:

  1. NFS (Network File System):适用于UNIX/Linux操作系统的网络文件系统协议,能够让服务器和客户端之间共享文件。

  2. SMB/CIFS (Server Message Block/Common Internet File System):适用于Windows操作系统的文件共享协议,也可以用于UNIX/Linux系统。

  3. AFP (Apple Filing Protocol):适用于苹果Mac OS X操作系统的文件共享协议,能够提供Mac OS X客户端的文件访问和共享服务。

  4. FTP (File Transfer Protocol):一种用于文件传输的协议,能够将文件从一个计算机传输到另一个计算机。

  5. HTTP (Hypertext Transfer Protocol):一种用于Web浏览器和Web服务器之间传输数据的协议,可以用于访问NAS上的文件和数据。

这些协议都可以用于访问NAS上的文件和数据,选择哪种协议取决于具体的使用场景和需求

 此处以华为的OceanStor9000V5文件存储为例,其工作原理及访问方式如下:

        从上图可以看出,NAS存储的主要使用方式是通过前端网络挂载文件系统,所以其数据类型为文件级,只要保证客户端到存储的通讯可达无防火墙或端口等限制即可使用文件存储(二层或三层网络可达即可)。

SAN存储:

        SAN存储是一种基于存储网络的存储解决方案,它将多个服务器连接到共享存储设备上,使得服务器可以像本地磁盘一样访问存储设备,提高了存储的可靠性、可扩展性和性能。

        IP SAN和FC SAN是两种不同的SAN存储实现方式,它们的主要区别在于传输协议不同。IP SAN使用以太网协议传输数据,而FC SAN使用光纤通道协议传输数据。相比而言,FC SAN具有更高的性能和可靠性,而IP SAN则更加灵活和易于管理。

        IP SAN通常使用iSCSI协议将SCSI数据块封装在TCP/IP数据包中传输,使得服务器可以像访问本地磁盘一样访问存储设备。而FC SAN则使用Fibre Channel协议传输数据,支持高速数据传输和多路径故障切换,适用于对性能和可靠性要求更高的应用场景。

接下来我们来对比下这三类存储

         在企业中,不同的应用场景可选用不同的存储,同时可要考虑成本和本地环境等因素进行综合考量, 存储是计算机系统中至关重要的一部分,用于保存和管理数据,随着技术的发展,存储容量、性能和可靠性不断提升,为企业提供更高效、更可靠和更安全的存储解决方案。

补充:IQN和WWN

        iQN号(iSCSI Qualified Name)和WWN号(World Wide Name)都是用于标识存储设备的唯一标识符,但它们的作用、用途和标识方式有所不同。

        iQN号是用于标识iSCSI存储设备的唯一标识符,它是一个由字母和数字组成的字符串,例如 iqn.2001-04.com.example:storage.disk1.sys1.xyz。iQN号由iSCSI设备制造商分配,并且必须在网络上具有唯一性。iQN号可以用于在iSCSI网络中标识和访问存储设备。

        WWN号是用于标识Fibre Channel(FC)存储设备的唯一标识符,它是一个8或16个字节的十六进制数字,例如0x50060B0000234567。WWN号由FC设备制造商分配,并且必须在FC SAN中具有唯一性。WWN号可以用于在FC SAN中标识和访问存储设备。

        因此,iQN号和WWN号都是用于标识存储设备的唯一标识符,但它们的作用和用途有所不同。iQN号是用于标识iSCSI存储设备,而WWN号是用于标识FC存储设备。 

六、磁盘性能测试 

dd命令和FIO工具

dd:

        dd命令是一个在Unix和类Unix系统中经常使用的命令,用于复制和转换文件,也可用于测试磁盘性能。dd命令可以从指定的输入文件或设备中读取数据,并将其写入指定的输出文件或设备中,同时支持修改块大小、跳过块数等功能。

        在测试磁盘性能时,dd命令可以帮助我们评估磁盘的读写速度和响应时间,以便确定系统的瓶颈并进行优化。使用dd命令时,可以指定块大小、块数、跳过块数等参数来优化测试结果。例如,通过测试不同块大小的读取速度,可以确定磁盘缓存大小对性能的影响。

        此外,dd命令还可以将数据流从一种格式转换为另一种格式,例如将ASCII格式转换为EBCDIC格式,或将小端序转换为大端序。

        dd命令支持许多不同的参数和选项,可以用来优化测试结果。以下是一些常见的dd命令参数及其用途:

  1. if=<输入文件或设备>:指定输入文件或设备的名称或路径。

  2. of=<输出文件或设备>:指定输出文件或设备的名称或路径。

  3. bs=<块大小>:指定块大小,以字节为单位。默认值为512字节。

  4. count=<块数>:指定要读取或写入的块的数量。

  5. skip=<块数>:在读取或写入之前,跳过指定数量的块。

  6. seek=<块数>:在写入之前,跳过指定数量的块。

  7. iflag=<输入标志>:指定一组用于输入的标志。

  8. oflag=<输出标志>:指定一组用于输出的标志。

  9. conv=<转换标志>:指定一组转换标志,用于对输入或输出进行特定的转换操作,例如忽略输入或输出中的空洞(空间)或同步输出。

  10. status=<输出信息级别>:指定要输出的状态信息级别。默认情况下,不输出任何状态信息。

  11. count_bytes=<字节数>:指定要读取或写入的字节数。

  12. iflag=direct:在输入和输出操作中使用直接I/O,而不使用标准缓存。

  13. oflag=direct:在输出操作中使用直接I/O,而不使用标准缓存。

  14. bs=1M:指定块大小为1兆字节。

  15. sync:在写入操作之后,等待所有数据被刷新到磁盘上。

  16. conv=fdatasync:在写入操作之后,使用fdatasync函数将数据刷新到磁盘上。

        这些参数和选项只是dd命令提供的众多功能之一,您可以根据需要选择不同的选项来测试磁盘的性能,并优化测试结果。

        测试用例:

        1.测试磁盘度速度

        dd if=/dev/sda of=/dev/null bs=1M count=1000 iflag=direct

        注:该命令从/dev/sda设备中读取1000个1兆字节块,并将其丢弃到/dev/null设备中。使用direct标志可以在读取操作中避免使用标准缓存,以便更准确地测试磁盘的读取性能。

        2.测试磁盘写速度

        dd if=/dev/zero of=/tmp/testfile bs=1M count=1000 oflag=direct

        注:该命令将1000个1兆字节块从/dev/zero设备中读取,并将其写入名为“/tmp/testfile”的文件中。使用direct标志可以在写入操作中避免使用标准缓存,以便更准确地测试磁盘的写入性能。

         在使用dd命令时,务必小心操作,避免意外删除或覆盖数据。建议在测试之前备份重要数据。

FIO:

       FIO(Flexible I/O Tester)是一个用于测试磁盘和文件系统性能的开源工具。FIO可以模拟各种负载类型,包括顺序读取、随机读取、顺序写入、随机写入等,并且可以指定测试块大小、I/O队列深度、并发线程数等参数。

     FIO的主要参数如下:

  1. --name:指定作业的名称。
  2. --size:指定数据集的大小。
  3. --bs:指定测试块大小。
  4. --rw:指定读写类型,例如randwrite表示随机写入,seqread表示顺序读取等。
  5. --numjobs:指定并发作业的数量。
  6. --iodepth:指定I/O队列深度。
  7. --runtime:指定测试运行时间。
  8. --time_based:指定是否以时间为基础进行测试。
  9. --filename:指定测试文件的名称。
  10. --directory:指定测试目录。
  11. --output-format:指定输出格式,例如json、csv等。
  12. --output:指定输出文件的名称。

         测试用例:

        1.测试磁盘随机读取性能

           fio --name=randread --size=1G --bs=4k --rw=randread --numjobs=8 --iodepth=32 --runtime=60s --time_based --filename=/dev/sda --output-format=json --output=randread.json

        注:该命令使用随机读取测试模式,测试/dev/sda设备的随机读取性能。数据集大小为1GB,块大小为4KB,使用8个并发作业,每个作业的I/O队列深度为32,测试运行时间为60秒。结果将以JSON格式输出到randread.json文件中。

        2.测试磁盘顺序写入性能

        fio --name=seqwrite --size=1G --bs=1M --rw=write --numjobs=4 --iodepth=16 --runtime=60s --time_based --filename=/dev/sdb --output-format=csv --output=seqwrite.csv

        注:该命令使用顺序写入测试模式,测试/dev/sdb设备的顺序写入性能。数据集大小为1GB,块大小为1MB,使用4个并发作业,每个作业的I/O队列深度为16,测试运行时间为60秒。结果将以CSV格式输出到seqwrite.csv文件中。

        本文属于综合性文章,非某一方向深入专题,目的是让大家快速了解存储相关的基础知识和整体轮廓,为你打开存储世界的大门。

猜你喜欢

转载自blog.csdn.net/qq_54952827/article/details/130499305
今日推荐