首页 >> 百科

电脑硬盘买什么样的好(怎么评判硬盘的好坏)

2022-11-03 百科 148 作者:admin

I/O 的概念,从字面上理解,就是输入和输出。从操作系统的上层到下层,所有层之间都有I/O。比如CPU有I/O,内存有I/O,VMM有I/O,底层磁盘也有I/O,就是广义的I/O。一般来说,一个上层I/O可能会对磁盘产生多个I/O,即上层I/O是稀疏的,下层I/O是密集的。

磁盘I/O,顾名思义,就是磁盘的输入输出。输入是指将数据写入磁盘,输出是指从磁盘读取数据。我们常见的磁盘类型有ATA、SATA、FC、SCSI、SAS,如图1所示。在这些类型的磁盘中,SAS和FC磁盘是服务器常用的,一些高端存储也使用SSD磁盘。每个磁盘的性能是不同的。

图 1. 物理磁盘架构和常见磁盘类型

SAN(Area,存储区域网络)和NAS (,网络附加存储)一般有两个评价指标:IOPS和带宽(),这两个指标相互独立,相互关联。反映存储系统性能最重要的指标是IOPS。接下来介绍这两个参数的含义。

IOPS(Input/Per)是每秒输入输出量(或读写次数),是衡量磁盘性能的主要指标之一。IOPS是指系统在单位时间内可以处理的I/O请求数。I/O 请求通常是读或写数据操作请求。对于随机读写频繁的应用,比如OLTP(·),IOPS是一个关键的衡量指标。另一个重要指标是数据吞吐量(),它是指单位时间内可以成功传输的数据量。对于顺序读写次数较多的应用,例如VOD(Video On),更关注吞吐量指标。

简而言之:

磁盘的IOPS,即一秒内磁盘执行了多少次I/O读写。

磁盘的吞吐量,即每秒磁盘 I/O 的流量,即磁盘写入的大小加上读取的数据的大小。

IOPS 与吞吐量

每秒 I/O 吞吐量 = IOPS * 平均 I/O 大小。从公式可以看出:I/O SIZE越大,IOPS越高,每秒I/O的吞吐量也越高。因此,我们认为 IOPS 和吞吐量越高越好。其实对于一个磁盘来说,这两个参数都有它们的最大值,这两个参数之间有一定的关系。

IOPS可以细分为以下指标:

IOPS,混合读写和顺序随机I/O负载下的磁盘IOPS,这个最符合实际I/O情况,大部分应用都关注这个指标。

读取 IOPS,100% 随机读取负载下的 IOPS。

写入 IOPS,100% 随机写入负载下的 IOPS。

读取 IOPS,100% 顺序读取负载下的 IOPS。

写入 IOPS,100% 顺序写入负载下的 IOPS。

下图显示了一个典型的 NFS 测试结果:

IOPS测试工具主要有、、、FIO等,可以综合测试不同情况下磁盘的IOPS。对于应用系统来说,首先要确定数据的负载特性,然后选择合理的IOPS指标进行衡量和对比分析,再选择合适的存储介质和软件系统。

IOPS计算公式

对于磁盘,一个完整的IO操作是这样进行的:当控制器向磁盘发出IO操作命令时,具有读写头(Head)的磁盘的驱动臂(Arm)离开着陆区(Zone ,位于内圈)。没有数据的区域),移动到要操作的初始数据块所在的磁道(Track)的顶部,这个过程称为seek(),所消耗的相应时间称为寻道时间(Seek Time);但如果找到对应的磁道,则无法立即读取数据。这时,磁头必须等到磁盘盘片()旋转到初始数据块所在的扇区()后,才能开始读取数据。磁盘旋转到可操作扇区的过程所消耗的时间称为旋转延迟(Delay);然后随着圆盘的旋转,磁头不断地读/写相应的数据块,直到完成所需的IO。操作的所有数据,这个过程称为数据传输(Data),对应的时间称为传输时间(Time)。完成这三个步骤后,一个IO操作就完成了。

我们在翻看硬盘厂商的宣传单时,经常会看到三个参数,分别是平均寻址时间、磁盘转速和最大传输速度。这三个参数可以提供给我们计算上述三个步骤。时间。

第一次寻址时间,考虑到要读写的数据可能在磁盘的任意一个磁道,要么在磁盘的最内圈(寻址时间最短),要么在磁盘的最外圈(寻址时间)最长),所以在计算中,我们只考虑平均寻址时间,也就是磁盘参数中标明的平均寻址时间。这里使用当前硬盘的5ms。

第二轮旋转延迟与寻址相同。当磁头位于磁道上时,它可能正好在要读写的扇区上方。这时候数据可以立即读写,没有额外的延迟,但最坏的情况是磁盘的情况,磁盘转一圈后磁头确实可以读取数据,所以这里我们也考虑平均旋转延迟。对于磁盘,它是 (60s/10k)*(1/2) = 2ms。

第三次传输时间,磁盘参数提供了我们最大的传输速度。当然,要达到这个速度是非常困难的,但是这个速度是磁盘的纯读写磁盘的速度,所以只要给定单个IO的Size,我们就知道磁盘需要花多少时间在数据上,这次是IO Chunk Size / Max Rate。

现在我们可以想出计算单次IO时间的公式了。

IO 时间 = 寻道时间 + 60 秒/速度/2 + IO 块大小/速率

所以我们可以这样计算 IOPS。

IOPS = 1/IO 时间 = 1/(寻道时间 + 60 秒/速度/2 + IO 块大小/速率)

对于给定的不同 IO 大小,我们可以得到以下一系列数据

4K(1/7.1 毫秒 = 140 IOPS)

5ms + (60sec//2) + 4K/40MB = 5 + 2 + 0.1 = 7.1

8k(1/7.2 毫秒 = 139 IOPS)

5ms + (60sec//2) + 8K/40MB = 5 + 2 + 0.2 = 7.2

16K(1/7.4 毫秒 = 135 IOPS)

5ms + (60sec//2) + 16K/40MB = 5 + 2 + 0.4 = 7.4

32K(1/7.8 毫秒 = 128 IOPS)

5ms + (60sec//2) + 32K/40MB = 5 + 2 + 0.8 = 7.8

64K(1/8.6 毫秒 = 116 IOPS)

5ms + (60sec//2) + 64K/40MB = 5 + 2 + 1.6 = 8.6

从以上数据可以看出,单次IO越小,单次IO耗时越少,对应的IOPS就越大。

以上数据是在理想假设下获得的。这里的理想情况是磁盘取寻址时间的平均大小和平均旋转延迟。这个假设其实更符合我们的实际情况。随机读写,在随机读写中,每个IO操作的寻址时间和旋转延迟都不容忽视,这两个时间的存在限制了IOPS的大小。现在我们考虑一个比较极端的顺序读写操作,比如读取一个存储连续分布在磁盘上的大文件时,因为文件的存储分布是连续的,head完成一次读IO操作后,就不需要了重新寻址,并且不需要旋转延迟,这种情况下我们可以得到一个很大的IOPS值,如下。

4K(1/0.1 毫秒 = 10000 IOPS)

0ms + 0ms + 4K/40MB = 0.1

8k(1/0.2 毫秒 = 5000 IOPS)

0ms + 0ms + 8K/40MB = 0.2

16K(1/0.4 毫秒 = 2500 IOPS)

0ms + 0ms + 16K/40MB = 0.4

32K(1/0.8 毫秒 = 1250 IOPS)

0ms + 0ms + 32K/40MB = 0.8

64K(1/1.6 毫秒 = 625 IOPS)

0ms + 0ms + 64K/40MB = 1.6

与第一组数据相比,差距非常大。因此,当我们用IOPS来衡量一个IO系统的性能时,一定要明确说明在什么情况下IOPS,也就是解释读写。单个IO的方法和大小,当然在实践中,尤其是OLTP系统中,随机小IO的读写是最有说服力的。

另外,对于同一个磁盘(或LUN),IOPS的值并不是固定的,因为每个I/O读写的数据大小不同。比如每次I/O写入或读取都是一个连续的大数据块,此时IOPS会相对较低;在不频繁换道的情况下,每次写入或读取的数据块较小,相对而言IOPS会更高。也就是说,IOPS也取决于I/O块的大小,不同的I/O块大小测得的IOPS值是不同的。对于特定的 IOPS,您可以知道当时它正在测试的 I/O 块的大小。并且IOPS有一个限制值,表1列出了各种磁盘的IOPS限制值。

表 1. 常见磁盘类型及其 IOPS

一般来说,I/O的类型可以分为:读/写I/O、大/小块I/O、顺序/随机I/O、顺序/并发I/O。在这些类型中,我们主要讨论:大/小块I/O、顺序/随机I/O、顺序/并发I/O。

大/小块 I/O

该值是指控制器命令中给出的连续读取扇区数。如果数量很大,比如64、128等,我们可以认为是大块I/O;反之,如果比较小,比如4、8,我们就认为是小块I/O。小块 I/O 之间没有明确的界限。

连续/随机 I/O

连续 I/O 是指本次 I/O 给出的起始扇区地址与前一次 I/O 的结束扇区地址完全连续或相距不远。反之,如果相差较大,则算作随机I/O

连续I/O比随机I/O效率高的原因是:做连续I/O时,磁头几乎不需要换道,或者换道时间很短;对于随机I/O,如果这个I/O太多,会导致磁头不断变换车道,导致效率大大降低。

顺序/并发 I/O

从概念上讲,并发 I/O 是指向一个磁盘发出 I/O 命令,而不等待它响应,然后再向另一个磁盘发出 I/O 命令。对于条带化 RAID (LUN),其上执行的 I/O 操作是并发的,例如:raid 0+1(1+0)、raid5 等。相反的是顺序 I/O。

确认磁盘 I/O 性能问题

对于随机加载,我们通常会在遇到其余情况时考虑 I/O 性能问题:

1.平均读取时间大于15ms

2、写缓存条件下,平均写时间大于2.5ms

对于顺序加载,我们通常会在遇到其余情况时考虑 I/O 性能问题:

1.一个磁盘上有两个连续的I/O流

2.吞吐量不足(即远小于磁盘I/O带宽)

对于一个磁盘来说,随着IOPS数量的增加,I/O也会增加,并且会有一个饱和点,即IOPS达到一定点后,IOPS的增加会导致I/O的显着增加时间。

图 3. 磁盘 IOPS 与 IO 时间的关系

从经验来看,在我们的测试工作中,我们主要关注IOPS和吞吐量这三个值以及磁盘的busy%。如果 IOPS 和吞吐量低,而磁盘的busy% 也低,我们会认为磁盘压力太小,导致吞吐量和 IOPS 低;只有当 IOPS 和吞吐量较低,磁盘的busy% 较高(接近 100%)时,我们才会从磁盘 I/O 方面分析 I/O 性能。

关于我们

最火推荐

小编推荐

联系我们


Copyright 8S新商盟 Rights Reserved.
联系YY号:2949821684
邮箱:chenjing919994@sohu.com
备案号:浙ICP备2023016511号-1