fdisk的输出是什么意思?


10

我有一个闪存驱动器,我想了解从中输出的闪存的属性fdisk。我将其插入并检查,dmesg然后可以看到它已安装,/dev/sdb1因此我跑去fdisk查看报告了什么/dev/sdb

mike@mike-Qosmio-X770:~$ sudo fdisk -l
[sudo] password for mike: 

Disk /dev/sdb: 127 MB, 127926272 bytes
16 heads, 32 sectors/track, 488 cylinders, total 249856 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
Disk identifier: 0x6b3ee723

   Device Boot      Start         End      Blocks   Id  System
 /dev/sdb1   *          32      249854      124911+   b  W95 FAT32

据我所知,该驱动器是128MB FAT32格式的闪存驱动器,它只有1个分区。它从“ 32”开始(对于某些FTL,大概使用0-31)。

报告的“扇区”大小为512字节,共有249,856个扇区(总计122MB)。

现在,我对气缸,缸盖和扇区/轨道数感到困惑。我知道圆柱体/磁头与磁盘存储类型有关。对于闪存设备,这有什么意义吗?还是这仅仅是“遗留”的信息,fdisk对于非磁性存储介质而言实际上没有任何意义?如果是后来者,为什么还要给出价值呢?

第二个问题,块的“大小”是多少?:

Blocks
 124911+

+块计数之后的含义是什么?


1
不错的问题+1,以前从未考虑过。但是,“ FTL”是什么意思?对我来说,这意味着比光速还快,我想您是在指别的东西?
13年

1
@terdon-FTL(Flash翻译层),用于进行均衡和白平衡
Mike

Answers:


3

块大小

3维磁道(所有磁盘上的磁道相同)称为圆柱。每个轨道分为63个扇区。每个扇区包含512字节的数据。因此,分区表中的块大小为64头* 63扇区* 512字节er ...除以1024 ... :-)

来源:使用fdisk进行分区

每当Linux指代块大小时,它几乎总是1024字节 -Linux使用1024字节块作为其缓冲区缓存和所有内容的基本单位。粒度(例如,在标准大小的ext3文件系统上,文件系统块大小通常为4096字节)。但是,您几乎永远看不到文件系统块的大小。几乎真正看到它的唯一方法是成为内核黑客或运行类似dumpe2fs的程序。

问题在于,您必须牢记四个不同的单元。更糟的是,其中两个单位的名称相同。这些是不同的单位:

  1. 硬件块大小,“扇区大小”
  2. 文件系统块大小,“块大小”
  3. 内核缓冲区高速缓存块大小,“块大小”
  4. 分区表块大小,“圆柱大小”

为了区分文件系统块大小和缓冲区高速缓存块大小,我将遵循FAT术语,并在文件系统块大小中使用“群集大小”。

扇区大小是硬件处理的单位。该范围在不同的硬件类型之间,但是大多数PC样式的硬件(软盘,IDE磁盘等)使用512字节的扇区。

群集大小是文件系统使用的分配单位,并且是导致碎片的原因-我敢肯定您知道这一点。在中等大小的ext3文件系统上,通常为4096字节,但您可以使用进行检查dumpe2fs。请记住,这些通常也称为“ ”,只是在这里我将它们称为集群。群集大小是st_blksize在状态缓冲区中返回的大小,以便程序能够计算文件的实际磁盘使用情况。

块大小是内核在缓存从存储设备读取的扇区(因此称为“块设备”)时内部使用的缓冲区的大小。由于这是内核中最原始的存储形式,因此所有文件系统群集大小都必须是此大小的倍数。用户空间程序几乎总是使用此块大小。例如,当您du不带-h或-H选项运行时 ,它将返回文件占用了多少个这些块。df还将报告这些块中的大小,fdisk -l输出中的“块”列就是这种类型,依此类推。这是最通常称为“块”的内容。每个块中装有两个磁盘扇区。

柱面大小仅在分区表和BIOS中使用(Linux不使用BIOS)。

来源:Linux磁盘块大小...请帮助

0-31区

要回答有关前32个扇区的问题,由于闪存驱动器是FAT格式化的设备,然后查看FAT文件系统定义,可以看到FAT文件系统由四个不同的部分组成:

a)保留部门;
b)文件分配表(FAT)区域;
c)根目录区域,以及;
d)数据区域。

脂肪概述

在此情况下,位于最开始的保留扇区是扇区0-31:

第一个保留扇区(逻辑扇区0)是引导扇区(又称为 卷引导记录(VBR))。它包括一个称为BIOS参数块的区域(带有一些基本的文件系统信息,尤其是其类型,以及指向其他部分位置的指针),通常包含操作系统的引导加载程序代码。

可通过DOS和OS / 2中称为驱动器参数块(DPB)的操作系统结构来访问引导扇区中的重要信息。

引导扇区内部的字段指示了保留扇区的总数,在FAT32文件系统上通常为32

对于FAT32文件系统,保留的扇区包括逻辑扇区1处的文件系统信息扇区和逻辑扇区6处的备份启动扇区

尽管许多其他供应商继续为引导程序加载器使用单扇区设置(仅逻辑扇区0),但是自FAT32引入以来,Microsoft的启动扇区代码已增长为覆盖逻辑扇区0和2,逻辑扇区0取决于逻辑扇区2中的子例程。“备份启动扇区”区域也包括三个逻辑扇区6、7和8。在某些情况下,Microsoft还将保留扇区区域的扇区12用于扩展的引导加载程序。


仅是其他信息,与OP问题无关

FAT区域将位于扇区32:

为了进行冗余检查,它通常包含文件分配表的两个副本(可能有所不同),尽管很少使用(即使是磁盘修复实用程序也是如此),以进行冗余检查。

这些是数据区域的映射,指示文件和目录使用哪些群集。在FAT12和FAT16中,它们立即跟随保留的扇区。

通常,多余的副本在写入时保持紧密同步,在读取时仅在第一个FAT中发生错误时使用它们。在FAT32中,可以从默认行为切换并从可用的FAT中选择一个FAT用于诊断。

映射中的前两个群集(群集0和1)包含特殊值。

根目录区域

这是一个目录表,用于存储有关位于根目录中的文件和目录的信息。它仅与FAT12和FAT16一起使用,并且在根目录上强加了一个固定的最大大小,该大小在创建此卷时已预先分配。FAT32将根目录以及文件和其他目录存储在数据区域中,从而使其不受此限制地增长。因此,对于FAT32,数据区域从此处开始。

数据区域

这是实际文件和目录数据的存储位置,并占据了大部分分区。传统上,在IBM兼容机器上进行格式化时,根据INT 1Eh的磁盘参数表(DPT),数据区域的未使用部分使用填充值0xF6进行初始化,但也用于Atari产品组合。8英寸CP / M软盘通常预先格式化为0xE5;通过Digital Research,此值还用于Atari ST格式化的软盘。Amstrad改用0xF4。某些现代格式化程序会擦除值为0x00的硬盘,而将值0xFF(未编程闪存块的默认值)用于闪存磁盘上以减少磨损。后一个值通常也用于ROM磁盘。(某些高级格式化工具允许配置格式填充字节。)

只需在FAT中向文件链添加更多链接,即可任意增加文件和子目录的大小(只要有可用的群集)。但是请注意,文件是以群集为单位分配的,因此,如果1 KiB文件驻留在32 KiB群集中,则会浪费31 KiB。

FAT32通常从根目录表2的簇开始:数据区域的第一个簇。

资料来源:维基百科-文件分配表


1

我猜测扇区1-31保留用于引导信息和分区表信息。分区/ dev / sdb1从块/扇区32开始,转到249854。它是物理磁盘上的逻辑分区。

124911+为您提供了32到249854之间的块数。

关于磁盘几何,这是man fdsik关于它的说明:

如果可能,fdisk将自动获取磁盘几何。这不一定是物理磁盘的几何形状(实际上,现代磁盘实际上并没有物理几何形状那样的东西,当然也不能以简单的Cylinders / Heads / Sectors形式描述),而是MS-DOS的磁盘几何形状用于分区表。

通常情况下,默认情况下一切正常,并且如果Linux是磁盘上的唯一系统,则没有问题。但是,如果必须与其他操作系统共享磁盘,则通常最好让来自另一个操作系统的fdisk至少构成一个分区。当Linux启动时,它会查看分区表,并尝试推断出与其他系统良好协作所需的(伪)几何形状。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.