从磁盘看 IO

计算机上的易失和非易失存储器

常见磁盘可以分为两类:机械磁盘和固态磁盘。

第一类,机械磁盘,也称为硬盘驱动器(Hard Disk Driver),通常缩写为 HDD。机械磁

盘主要由盘片和读写磁头组成,数据就存储在盘片的环状磁道中。在读写数据前,需要移

动读写磁头,定位到数据所在的磁道,然后才能访问数据。

显然,如果 I/O 请求刚好连续,那就不需要磁道寻址,自然可以获得最佳性能。这其实就

是我们熟悉的,连续 I/O 的工作原理。与之相对应的,当然就是随机 I/O,它需要不停地

移动磁头,来定位数据位置,所以读写速度就会比较慢。

第二类,固态磁盘(Solid State Disk),通常缩写为 SSD,由固态电子元器件组成。固

态磁盘不需要磁道寻址,所以,不管是连续 I/O,还是随机 I/O 的性能,都比机械磁盘要

好得多。

最小读写单位

机械磁盘的最小读写单位是扇区,一般大小为 512 字节。

而固态磁盘的最小读写单位是页,通常大小是 4KB、8KB 等。

文件系统会把连续的扇区或页,组成逻辑块,然后以逻辑块作为最小单元来管理数

据。常见的逻辑块的大小是 4KB,也就是说,连续 8 个扇区,或者单独的一个页,都可以

组成一个逻辑块

磁盘I/O原理

磁盘每个盘片为双面,每个面上分布一圈一圈的同心圆磁道,磁道由扇区组成。外围的扇区更宽,扇区的存储空间是一样的,一般每个扇区600字节,数据存储区512字节,其余存放控制信息。磁臂头移动遍历磁道,盘片旋转遍历扇区。
寻道时间:将磁臂头移动到指定磁道上所经历的时间
旋转延迟时间:盘片转动时扇区移动到磁头下所经历的时间
传输时间:将数据从磁盘读出或写入数据所经历的时间(与每次读/写的字节数和磁盘转速有关)

随机I/O:有一串随机数据文件(在磁盘上的位置分布随机的数据文件),需要从磁盘上一一读取。这样寻道时间很长,会导致I/O读取时间过长。
比如,在磁道2扇区3读取了第一个数据文件,接下来,磁头臂向外移动去磁道14扇区5读取第二个数据文件,接下来磁头臂又要向里移动到磁道8扇区4读取第三个数据文件,之前读取第二个数据文件时从磁道2移到14,现在又从磁道14移到8,可见这样重复走了8-14的磁道。可以知道,如果后面还有数据存在于走过的磁道上,会有很多的重复寻道,极大增加了寻道时间。

顺序I/O:就像是随机I/O的优化版,我们可以将我们要读取的数据文件按照其磁盘存放顺序排序,从第一个文件的位置开始向一个方向读取,我们依次读完每个磁道直到所有文件读取完,不必再有随机I/O带来的重复寻道时间。

在许多的开源框架如 Kafka、HBase 中,都通过追加写的方式来尽可能的将随机 I/O 转换为顺序 I/O,以此来降低寻址时间和旋转延时

什么是磁盘IO

IO就是    先从磁盘找到数据的位置,再将数据转换成数据流读到内存

               先从磁盘找到数据的位置,将内存中的数据转换成数据流写到磁盘

 IO消耗的时间(如下图)=磁盘访问时间=寻道时间+旋转延迟+传输时间

 


 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Linux磁盘IO是Linux内核的一部分,用于处理与磁盘的输入输出相关的操作。磁盘IO操作包括读取和写入数据到磁盘。在Linux中,磁盘IO操作主要涉及到两个重要的组件:页高速缓存(PageCache)和目录项缓存(dentry)。 页高速缓存是Linux内核引入的一种机制,用于优化磁盘IO的性能。它将磁盘抽象成一个个固定大小的连续页面,通常为4K。通过使用页高速缓存,Linux内核可以将磁盘上的数据加载到内存中,并在需要时直接从内存中读取和写入数据,而无需频繁地进行磁盘操作。这种机制大大提高了磁盘IO的效率和性能。 目录项缓存是用于加速文件路径查找的一种缓存机制。在Linux中,每个文件都存在于某个目录中,当我们根据路径查找文件时,内核需要遍历目录来找到相应的目录项。为了提高性能,Linux使用了目录项缓存,将目录项存储在缓存中,以减少对磁盘的读取次数。当需要查找文件时,Linux首先在目录项缓存中查找对应的目录项,如果找到则直接返回,否则才需要从磁盘中读取目录数据并查找目标文件。这种机制可以有效地加速文件路径查找的过程。 综上所述,Linux磁盘IO涉及到页高速缓存和目录项缓存两个重要的机制,它们都是为了优化磁盘IO操作的性能和效率。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [Linux内核io体系之磁盘io](https://blog.csdn.net/qq_23929673/article/details/103845249)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值