fdisk 输出中的“块”列

fdisk 输出中的“块”列

在我的机器上,fdisk -lu /dev/sda显示以下输出:

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *        2048    73947135    36972544   83  Linux
/dev/sda2        73949182    78139391     2095105    5  Extended
/dev/sda5        73949184    78139391     2095104   82  Linux swap / Solaris

这个“块”单位是什么?一个“fdisk 块”是 1KiB 吗?这个单位从哪里来?

答案1

在 Unix 的第一个版本中,从硬件到文件系统,再到 C 代码,再到用户工具,一个块的大小为 512 字节。

如今有许多不同类型的硬件和许多不同的文件系统(其中一些没有任何块大小的概念),因此“块大小”是每个工具选择的任意定义。大多数传统 Unix 系统默认保留 512 字节块大小以实现向后兼容性,这就是 POSIX 对多个命令的要求(dd, du, df, ls, find -size, ...)。一些 GNU/Linux 实用程序默认显示 1kB 单位(dudfls、 …),除非在POSIXLY_CORRECT模式下调用。我认为转向 1kB 的唯一动机是因为它对人类更加友好。

Linuxfdisk实用程序使用 1kB 块进行两个十进制 — 标头可能已读取kB.在 Linux 环境中fdisk,“块”始终表示 1kB。默认单位改变了2.25版本,现在单位是512字节的扇区。在专家模式下,单位始终是 512 字节的扇区。对于传统 PC 磁盘来说,512 字节是更自然的低级单位,因为它们写入 512 字节扇区,并且分区边界与 512 字节对齐,因此使用 1kB 作为单位会导致 1/2 分数。现代大型磁盘具有更大的扇区(但“扇区”广泛用于表示 512 字节,无论磁盘的任何物理或逻辑特性如何),并且 GPT 分区通常按 1MB 对齐。

答案2

您应该了解一些概念,例如sector,,,track才能cylinder理解block。这是一个简单的定义:

Blocks and clusters

The Unix communities employ the term block to refer to a sector or group of
sectors. For example, the Linux fdisk utility normally displays partition
table information using 1024-byte blocks, but also uses the word sector to
help describe a disk's size in the phrase, 63 sectors per track.

您可以在此处阅读更多内容关联

答案3

在我的 Ubuntu 14.04 版本中,fdisk 以块为单位列出分区,但它没有告诉我每个块中有多少个扇区。但是,它确实给出了每个分区的起始和结束扇区号,当我从终点减去起始点时,我得到的扇区数恰好是分区中块数的两倍。即,Ubuntu 12.04 中每个块有两个扇区。

答案4

我不相信fdisk能做到 1k堵塞报告 - 或者它的报告根本不。man页面:

-u,--units[=unit]

  • 列出分区表时,显示大小部门或在气缸默认显示尺寸为部门。为了向后兼容,可以使用该选项而不使用单元参数 - 那么使用默认值。请注意,可选的单位参数不能与-u选项由空格组成,正确的形式例如-u=cylinders

好的,所以fdisk没有将输出列为, 然后。它用气缸或者部门默认情况下。嗯,这就是什么维基百科不得不说关于部门:

在计算机磁盘存储中,部门是一个细分追踪在磁盘或光盘上。每个部门存储固定数量的用户可访问数据,传统上 512 字节用于硬盘驱动器(硬盘)CD-ROM 和 DVD-ROM 为 2048 字节。较新的 HDD 使用 4096 字节 (4 KiB) 扇区,称为高级格式 (AF)。

现在这对我来说更有意义了。我从来没有听说过1K之前的部门,所以偶然发现这个让我很困惑。不过,一些谷歌搜索确实显示,有一小批希捷品牌的硬盘在 2005 年的一部分时间里发货,做过报告扇区大小为 1K。

不管怎样,它就在标题输出中:

Disk /dev/sda: 111.8 GiB, 120034123776 bytes, 234441648 sector
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: gpt
Disk identifier: E12A6152-B1E6-4D4A-9799-491B339BA633

Device        Start       End   Sectors  Size Type
/dev/sda1      4096   6197247   6193152    3G EFI System
/dev/sda2   6293504  31459327  25165824   12G Linux filesystem
/dev/sda3  31459328 234441614 202982287 96.8G Linux filesystem

看?单位:扇区 1 * 512 = 512 字节...

相关内容