十一城

跬步千里,小流江海。

Home Linux ML Python Java Thoughts KmKg BookCan Links About

2018-01-20
磁盘与文件系统

• 分类: linux • 标签:

磁盘(Disk)

温习下英语

  • 磁头(head)
  • 磁道就是一个圈(track)
  • 柱面就是多个磁道号相同的圈组成的(cylinder)
  • 扇区(sector)
  • 圆盘(platter)

计算机的外部存储器中也采用了类似磁带的装置,比较常用的一种叫磁盘,将圆形的磁性盘片装在一个方的密封盒子里,这样做的目的是为了防止磁盘表面划伤,导致数据丢失。

扇区(Sector)

扇区为最小的物理存储单位,每个扇区为512bytes。

横向组合形成了柱面

纵向组合形成了扇面

柱面

将扇区组成组成一个圆,就是柱面。柱面是分区的最小单位。

简单说一下

磁盘由N个盘片构成,每个盘片一般有两面,一面一个磁头,两面都可以存储数据

磁道号相同的组成一个柱面,柱面是硬盘分区时候最小单位。

sector 扇区 磁道按512Byte分成若干扇区,计算机对硬盘读写,是按扇区为最小单位。
而一般文件系统中的BLOCK为KB,通常为4KB.(现在有的硬盘每个扇区有4K了)

可以这么说:即使读一个字节,也必须把这512字节全部读入内存

疑惑

今天我也在查这个问题,为避免后来人误解,特将hcling97的博客引用:

硬盘性能调优,说道:Outer tracks contain more linear storage area.

我的概念里面每个磁道的扇区数都是相等的啊,因为硬盘要控制角速度相等,单位时间里面磁臂掠过的扇区数应该是相等的。以前课本都是这么讲的啊,说是外圈的存储密度要低于内圈的,但是外圈磁道包含的磁介质要明显多于内圈的,难道废弃不用?书上是这么解释的,说是空闲的空间填充了控制信号,不用的空间填写了gap,算空白区域。这就更纳闷了,第一点调优的书上说外圈的存储密度要高于内圈的,另一点是:For a given rotational speed, read more data per second on outer tracks.转速相同,外圈怎么可能多读东西呢?扇区数一样,每扇区512字节,数据大小也是一样。支持这个的有效证明是fdisk -l,一看,明明有一个“每磁道扇区数”的数值在概要说明的部分摆着呢。

包括百度百科和网上搜到的信息来看,都跟老板教科书观点相同,每磁道扇区数相同。那调优的书上教导我们“外圈的读取速度快,要将频繁访问的分区部署在磁盘的外侧柱面上”,这不见鬼了么?再翻IBM的调优的书,明明白白写着“当今大多数硬盘驱动器的盘片在外侧磁道上封装的扇区数要多于内侧磁道”,又找了找,原来磁盘的寻址技术改变了,为了减少浪费,真的是外侧磁道的扇区数多而内测磁道的扇区数少,现在每磁道扇区数自是一个换算平均值。这也是为什么机械硬盘在测试处理大量数据的吞吐率不断下降的原因,因为处理到内圈的数据时要多次移动移动机械臂,产生更多的延时。

其实想想也是,磁盘的存储密度不断增加,外圈的长度要大大长于内圈的长度,如果每磁道扇区数相等,那么整个磁盘上有大量面积的存储单元会被浪费。就像一个扇子的表面,我们只用了以内周长为边的一个矩形面积,剩下的都浪费,这是不可能的,工业界也是绝对不会允许这种事情存在的。

那道理就明白了,我们看到的fdisk里面的柱面的显示结果也是经过换算的结果,不是真正写道分区表里面的结果!

磁盘的记录方式有两种

  • 旧式——非分区记录方式(不同磁道扇区数相同)
  • 新式——分区记录方式(不同磁道扇区数不同)

文件系统(File system)

计算机的文件系统是一种存储和组织计算机数据的方法,它使得对其存取和查找变得容易,文件系统使用文件树形目录的抽象逻辑概念代替了硬盘和光盘等物理设备使用数据块的概念,用户使用文件系统来保存数据不必关心数据实际保存在硬盘(或者光盘)的地址为多少的数据块上,只需要记住这个文件的所属目录和文件名。

文件系统是一套实现了数据的存储、分级组织、存取和获取等操作的抽象数据类型(Abstract data type)。

  • Linux
    • 最传统的文件系统是EXT2
    • centos从7开始使用XFS作为缺省操作系统,之前为EXT4
    • 部分Linux发行版默认不支持NTFS
  • MacOS
    • APFS
  • Windows
    • Windows98以前的操作系统主要利用的是FAT或FAT16
    • 2000以后版本使用NTFS
    • 目前win10支持FAT12/FAT16,FAT32/VFAT,NTFS

随着互联网产生的数据量越来越多,分布式文件系统在更多的场合开始派上用场。在这样的文件系统中,客户端并非直接存取底层的资料储存区块,而是通过网络,以特定的通讯协定和伺服器沟通。通过通讯协定的设计,可以让客户端和伺服器端都能根据存取控制清单或是授权,来限制对于档案系统的存取。

可能包含的功能有

通过著名的CAP定理来进行权衡

  • 一致性(Consistency)
  • 可用性(Availability)
  • 网路分隔的容忍程度(Partition tolerance)

inode

记录文件的属性,一个文件占用一个inode,同时记录此文件的数据所在的block号码

MasterBootRecord

在第一个扇区 512bytes = mbr446bytes + 分区表64bytes

参考

  1. https://segmentfault.com/a/1190000007392163
  2. https://www.zhihu.com/question/20537787

dzzxjl

Home Linux ML Python Java Thoughts KmKg BookCan Links About