计算机存储术语:扇区 ,磁盘块,页

扇区,sector

硬盘的读写以扇区为基本单位。磁盘上的每个磁道被等分为若干个弧段,这些弧段称之为扇区。硬盘的物理读写以扇区为基本单位。通常情况下每个扇区的大小是 512 字节。linux 下可以使用 fdisk -l 了解扇区大小:

$ sudo /sbin/fdisk -l
Disk /dev/sda: 20 GiB, 21474836480 bytes, 41943040 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O si***imum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x7d9f5643

其中 Sector size,就是扇区大小,本例中为 512 bytes。

注意,扇区是磁盘物理层面的概念,操作系统是不直接与扇区交互的,而是与多个连续扇区组成的磁盘块交互。由于扇区是物理层面的概念,所以无法在系统中进行大小的更改。

磁盘块,IO Block

文件系统读写数据的最小单位,也叫磁盘簇。扇区是磁盘最小的物理存储单元,操作系统将相邻的扇区组合在一起,形成一个块,对块进行管理。每个磁盘块可以包括 2、4、8、16、32 或 64 个扇区。磁盘块是操作系统所使用的逻辑概念,而非磁盘的物理概念。磁盘块的大小可以通过命令 stat /boot 来查看:

$ sudo stat /boot
  File: /boot
  Size: 4096        Blocks: 8          IO Block: 4096   directory
Device: 801h/2049d  Inode: 655361      Links: 3
Access: (0755/drwxr-xr-x)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2019-07-06 20:19:45.487160301 +0800
Modify: 2019-07-06 20:19:44.835160301 +0800
Change: 2019-07-06 20:19:44.835160301 +0800
 Birth: -

其中 IO Block 就是磁盘块大小,本例中是 4096 Bytes,一般也是 4K。

为了更好地管理磁盘空间和更高效地从硬盘读取数据,操作系统规定一个磁盘块中只能放置一个文件,因此文件所占用的空间,只能是磁盘块的整数倍,那就意味着会出现文件的实际大小,会小于其所占用的磁盘空间的情况。

imgtest2.txt是一个只包含一个字母的文本文档。它的理论大小是一个字节,但是由于系统的磁盘块大小是4KB(文件的最小存储大小单位),所以test2.txt占据的磁盘实际空间是4KB

操作系统不能对磁盘扇区直接寻址操写,主要原因是扇区数量庞大,因此才将多个连续扇区组合一起操作。磁盘块的大小是可以通过blockdev命令更改的。

页,page

内存的最小存储单位。页的大小通常为磁盘块大小的 2^n 倍,可以通过命令 getconf PAGE_SIZE 来获取页的大小:

$sudo getconf PAGE_SIZE
4096

本例中为 4096 Bytes,与磁盘块大小一致。

总结两个逻辑单位:

  • 页,内存操作的基本单位
  • 磁盘块,磁盘操作的基本单位

命令索引

  • 扇区大小,fdisk -l
  • 磁盘块大小,stat /boot
  • 内存页大小,getconf PAGE_SIZE

    硬盘是如何存储数据的:硬盘的物理结构

提示:硬盘分为机械硬盘和固态硬盘这2种。这里只讲解机械硬盘,固态硬盘的存储另当别论。

要想知道硬盘是如何存储数据的,就先明白硬盘的物理结构。

1、名称
机械硬盘,由于信息载体为磁性物质,故又称磁盘。
图片说明
2、硬盘主要结构
在硬盘盒里面其实是由许许多多的圆形盘片、机械手臂、磁头与主轴马达所组成的。
图片说明
3、工作情形
实际的数据都是写在具有磁性物质的盘片上,而读写主要是通过在机械手臂上的磁头(head)来达成。
实际运行时, 主轴马达让盘片转动,然后机械手臂可伸展让磁头在盘片上头进行读写的动作。

4、各主要部件说明
(1)盘片和主马达
主马达就是一个小电机,作用是让盘片转动起来。通常数据写入当然就是以圆圈转圈的方式读写啰!

对于机械硬盘,最重要的结构是这些两面涂有磁性材料的盘片,在工作时会以每分钟7200转的速度旋转。
盘片的作用是记录数据,在盘片上有序的排列了很多的小颗粒材料,它们都是磁性物质,可以被永久磁化和改变磁极,这两个磁极就分别表示了计算机二进制中的0和1。
由于盘片是转动后读写数据的,所以,当初设计就是在类似盘片同心圆上面切出一个一个的小区块,这些小区块整合成一个圆形,让机器手臂上的磁头去存取。这个小区块就是磁盘的最小物理储存单位,称之为扇区 (sector),那同一个同心圆的扇区组合成的圆就是所谓的磁道(track)。
扇区容量:原本硬盘的扇区都是设计成 512Byte(即0.5KB) 的容量,但因为近期以来硬盘的容量越来越大,为了减少数据量的拆解,所以新的大容量硬盘已经有 4KByte(即4KB)的扇区设计!
图片说明
由于单一盘片的容量有限,因此有的硬盘内部会有两个以上的盘片喔!
由于磁盘里面可能会有多个盘片,因此在所有盘片上面的同一个磁道可以组合成所谓的柱面 (cylinder)。
图片说明
数据存储在盘片上的一个个扇区中。

1)1个扇区(磁道)可存储512Bytes的数据量;

2)一个平面中同一半径下的多个扇区共同组成了1个磁道;

3)一个盘片有2个盘面,每个盘面都对应一个磁头,负责读写数据;

4)一个硬盘可以有多个盘片;

5)同一半径下的多个磁道共同组成了1个柱面。

(2)磁头和机械手臂
机械手臂的作用是控制来回磁头移动。
磁头的作用是在盘片上读写数据。磁头通过改变盘片上小颗粒磁性物质的磁极方向来完成写入数据的功能,通过感知盘片上磁性物质的磁极方向来完成读取数据的功能。

5、扇区中是如何表示01数据的?

硬盘是在硬质盘片(一般是铝合金,以前 IBM 也尝试过使用玻璃)上涂敷薄薄的一层铁磁性材料。这些磁粉被划分成称为磁道的若干个同心圆,在每个同心圆的磁道上就好像有无数的任 意排列的小磁铁,它们分别代表着0和1的状态。当这些小磁铁受到来自磁头的磁力影响时,其排列的方向会随之改变。利用磁头的磁力控制指定的一些小磁铁方 向,使每个小磁铁都可以用来储存信息。
写入时,磁头线圈上加电,在周围产生磁场,磁化其下的磁性材料;电流的方向不同,所以磁场的方向也不同,可以表示 0 和 1 的区别。
读取时,磁头线圈切割磁场线产生感应电流,磁性材料的磁场方向不同,所以产生的感应电流方向也不同。

图片说明

================================优美的分割线===================================

延伸:固态硬盘的存储原理(微观)

接下来来讲固态硬盘,相比较于机械硬盘里面的各种机械结构,固态硬盘就没有太多的机械机构;它主要是靠FLASH芯片来作为储存数据的介质;由主控芯片来承担数据的中转,还有调配数据储存在闪存芯片上面

FLASH芯片储存数据的方式也不是太难理解,就是FLASH芯片里面分出了很多储存单元,这些储存单元里面有电子的位置;当一颗电子的位置里面没有存放电子,它就是0;如果存放了电子,它就是1
图片说明
参考:

https://zhuanlan.zhihu.com/p/117375905
https://www.cnblogs.com/andy9468/p/11091115.html