在我的机器上,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 单位(du
、df
、ls
、 …),除非在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 字节...