磁盘的块大小(Block Size)和扇区大小(Sector Size)

本文介绍了硬盘存储的基本单位——扇区,以及操作系统文件系统中的块概念。解释了扇区与块的区别,扇区针对硬盘而块针对文件系统,并通过实例展示了如何确定文件系统的块大小。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

扇区与块(sectors,block)

  1327人阅读  评论(0)  收藏  举报
  分类:

※扇区与块的区别,这里简单说一下。

●先来说说硬盘吧
最终文件总还是要储存在硬盘上的嘛。

# fdisk -l
Disk /dev/cciss/c0d0: 146.7 GB, 146778685440 bytes
255 heads, 63 sectors/track, 17844 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

可以看到几个名词:heads/sectors/cylinders,分别就是磁头/扇区/柱面,每个扇区512byte(现在新的硬盘每个扇区有4K)了
硬盘容量就是heads*sectors*cylinders*512=255*63*17844*512=146771896320b=146.7G
注意:硬盘的最小存储单位就是扇区了,而且硬盘本身并没有block的概念。

操作系统的文件系统

文件系统不是一个扇区一个扇区的来读数据,太慢了,所以有了block(块)的概念,它是一个块一个块的读取的,block才是文件存取的最小单位。
先来知道是哪种文件系统

# df -T
/dev/cciss/c0d0p5    ext3   112738028  81733116  25185772  77% /

OK,ext3文件系统 。

#  tune2fs -l /dev/cciss/c0d0p5 | grep "Block size"
Block size:               4096

一个block是4K,也就是说我所使用的文件系统中1个块是由连续的8个扇区组成。

简单的说扇区是对硬盘而言,块是对文件系统而言。

0
### 存储中扇区、块页的区别与联系 #### 1. 定义与基本概念 - **页 (Page)** 是 Flash 存储器中写入数据的基本单位。每次向 Flash 中写入数据时,是以页为单位进行的[^1]。页的大小因厂商存储类型的不同而有所差异,常见的有 1KB、2KB 4KB 等[^3]。 - **扇区 (Sector)** 是磁盘存储中的基本单位,在某些情况下也被视为文件系统的逻辑分区单元。它是磁盘上连续的一组物理位置,通常用于描述磁盘上的数据分布[^4]。 - **块 (Block)** 则是一个更通用的概念,可以指代不同的存储层次结构中的最小可寻址单位。在 Linux 文件系统中,块是文件系统管理的基本单位;而在硬盘操作中,它通常是操作系统与硬件交互的最小单位[^5]。 #### 2. 关系与层次结构 按照存储容量从小到大排列,三者之间的关系如下: - 页(Page)< 扇区Sector)< 块(Block)< 芯片(Chip)。这种层次结构反映了从低级硬件到高级软件抽象的过程。 具体而言: - 在 Flash 存储器内部,**页**是最小的数据写入单位,多个页组成一个更大的单位——**块**。当需要擦除数据时,通常以整个块为单位执行操作。 - 对于磁盘设备,**扇区**代表其最基本的地址空间划分方式之一。尽管现代技术可能引入更多复杂的机制,但在传统意义上,读取或写入磁盘仍然基于单个或者若干相邻的扇区完成。 - 当涉及到更高层面的操作系统功能实现时,则会进一步封装成所谓的“块”。这样做的目的是为了简化接口设计并提高效率。 #### 3. 应用场景举例 以下是几个典型应用场景的例子说明这三个术语如何被实际应用: - **嵌入式开发**: 在微控制器项目里处理外部 NAND/NOR flash芯片时经常会遇到page/block这样的参数设置需求,因为它们直接影响编程算法的选择以及性能优化方向. - **数据库管理系统(DBMS)**: 数据库引擎通过将记录映射至特定数量固定长度blocks上来组织表空间布局以便快速检索所需信息. - **固态驱动(SSD)控制固件编写过程中**,工程师们必须考虑TRIM命令作用范围覆盖哪些pages/sectors/blocks才能有效延长产品寿命同时保持良好随机访问速度表现. ```python # 示例代码展示如何计算给定尺寸下各部分所占比例 def calculate_storage_units(page_size_kb=2, sector_size_kb=8, block_size_kb=64): page_bytes = page_size_kb * 1024 sector_bytes = sector_size_kb * 1024 block_bytes = block_size_kb * 1024 print(f"Page Size: {page_bytes} bytes") print(f"Sector Size: {sector_bytes} bytes") print(f"Block Size: {block_bytes} bytes") calculate_storage_units() ```
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值