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

扇区(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 size (minimum/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。

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

test2.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 天前
刚毕业,去做边缘业务,还有救吗?
计算机·程序员·互联网·求职·简历
栀夏6135 天前
Ceph 学习指南 集群部署【 cephadm 】
中间件·存储
程序员鱼皮7 天前
不敢相信,Nginx 还能这么玩?
前端·后端·计算机·程序员·编程经验
程序员鱼皮8 天前
6 年 30k star,这个明星项目停止更新!
计算机·程序员·互联网·github·编程
u01093626510 天前
Linux系统块存储子系统分析记录
linux·存储·1024程序员节·块i/o
程序员鱼皮16 天前
1024 程序员节,我做了个闯关小游戏!
前端·后端·计算机·程序员·互联网·编程·网站·代码
程序员鱼皮16 天前
鱼厂首档自制综艺《码王争霸赛》,8 年程序员竟被半年小白血虐?
计算机·程序员·互联网·编程
AEIC学术交流中心—李老师17 天前
【SPIE独立出版 | 往届会后3个半月检索】第四届电子信息工程与数据处理国际学术会议(EIEDP 2025)
人工智能·算法·计算机·ei检索·研究生·ei会议·国际学术会议
云中小筑18 天前
SD2.0 Specification之命令(Commands)
sd·存储·sd协议·嵌入式存储·sd命令·sd介绍
向宇it25 天前
【unity框架开发12】从零手搓unity存档存储数据持久化系统,实现对存档的创建,获取,保存,加载,删除,缓存,加密,支持多存档
开发语言·unity·缓存·游戏引擎·持久化·存储·存档