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、非磁性の記憶媒体には実際には意味がないのでしょうか。後者の場合、なぜ値を与えるのですか?

2番目の質問、ブロックの「サイズ」は何ですか?:

Blocks
 124911+

そして+、ブロック数の後の意味は何ですか?


1
いい質問、+ 1、これまで考えたことはありません。「FTL」とはどういう意味ですか?それは光よりも速いという意味で、私はあなたが別のことを言っていると思いますか?
terdon

1
@terdon-FTL(Flash変換レイヤー)ウェアの平準化などを行うもの
Mike

回答:


3

ブロックのサイズ

3次元トラック(すべてのディスクで同じトラック)はシリンダーと呼ばれます。各トラックは63セクターに分かれています。各セクターには、512バイトのデータが含まれています。したがって、パーティションテーブルのブロックサイズは64ヘッド* 63セクター* 512バイトer ...を1024で除算したものです::)

ソース:fdiskでのパーティション分割

Linuxがブロックサイズを参照するときはいつでも、それはほぼ常に1024バイトです -Linuxは、バッファキャッシュおよびすべてのプリミティブユニットとして1024バイトのブロックを使用します。粒度(たとえば、通常サイズのext3ファイルシステムでは、ファイルシステムのブロックサイズは通常4096バイトです)。ただし、ファイルシステムのブロックサイズを確認することはほとんどありません。実際にそれを見る唯一の方法は、カーネルハッカーであるか、dumpe2fsのようなプログラムを実行することです。

これに関する問題は、あなたが心に留めておかなければならない4つの異なるユニットがあるということです。さらに悪いことに、これらの2つのユニットには同じ名前が付いています。これらは異なるユニットです:

  1. ハードウェアブロックサイズ、「セクターサイズ」
  2. ファイルシステムのブロックサイズ、「ブロックサイズ」
  3. カーネルバッファキャッシュのブロックサイズ、「ブロックサイズ」
  4. パーティションテーブルのブロックサイズ、「シリンダーサイズ」

ファイルシステムのブロックサイズとバッファキャッシュのブロックサイズを区別するために、FATの用語に従い、ファイルシステムのブロックサイズには「クラスターサイズ」を使用します。

セクターサイズは、ハードウェアが処理する単位です。これはハードウェアの種類によって異なりますが、ほとんどのPCスタイルのハードウェア(フロッピー、IDEディスクなど)は512バイトのセクターを使用します。

クラスターサイズは、ファイルシステムが使用する割り当て単位であり、断片化の原因になります。中程度のサイズのext3ファイルシステムでは、これは通常4096バイトですが、で確認できますdumpe2fs。これらは通常「ブロック」とも呼ばれていることを覚えておいてください。ここではそれらをクラスターと呼んでいます。st_blksizeプログラムがファイルの実際のディスク使用量を計算できるようにするために、クラスターサイズはstatバッファーで返されるものです。

ブロックサイズは、カーネルがストレージデバイスから読み取られたセクターをキャッシュするときにカーネルが内部で使用するバッファーのサイズです(「ブロックデバイス」という名前です)。これはカーネル内の最も原始的なストレージ形式であるため、すべてのファイルシステムクラスターサイズはこの倍数でなければなりません。このブロックサイズは、ほとんど常にユーザースペースプログラムによって参照されるものでもあります。たとえばdu、-hまたは-Hオプションなしで実行 すると、ファイルが占めるこれらのブロックの数が返されます。dfこれらのブロックのサイズも報告され、fdisk -l出力の「ブロック」列はこのタイプになります。これは、最も一般的に「ブロック」と呼ばれるものです。2つのディスクセクターが各ブロックに収まります。

シリンダーサイズは、パーティションテーブルとBIOSでのみ使用されます(BIOSはLinuxでは使用されません)。

出典:Linuxのディスクブロックサイズ...

セクター0-31

フラッシュドライブはFATフォーマットのデバイスであるため、最初の32セクターに関する質問に答えると、FATファイルシステムの定義を見ると、FATファイルシステムは4つの異なるセクションで構成されていることがわかります。

a)予約セクター。
b)ファイルアロケーションテーブル(FAT)領域。
c)ルートディレクトリ領域、および
d)データ領域。

脂肪の概要

一番最初にある予約済みセクターは、(この場合)セクター0〜31です。

最初の予約済みセクター(論理セクター0)は、ブートセクター(別名 ボリュームブートレコード(VBR))です。これには、BIOSパラメータブロックと呼ばれる領域(いくつかの基本的なファイルシステム情報、特にそのタイプ、および他のセクションの場所へのポインタ)が含まれ、通常はオペレーティングシステムのブートローダーコードが含まれます。

ブートセクターからの重要な情報には、DOSおよびOS / 2 のドライブパラメーターブロック(DPB)と呼ばれるオペレーティングシステム構造を介してアクセスできます。

予約済みセクターの総数は、ブートセクター内のフィールドで示され、FAT32ファイルシステムでは通常32です

FAT32ファイルシステムの場合、予約済みセクターには、論理セクター1のファイルシステム情報セクターと論理セクター6のバックアップブートセクターが含まれます。

他の多くのベンダーは、ブートストラップローダーにシングルセクターセットアップ(論理セクター0のみ)を採用し続けていますが、Microsoftのブートセクターコードは、FAT32の導入以来、論理セクター0と2に成長し、論理セクター0は論理セクタ2のサブルーチン。バックアップブートセクタ領域は、3つの論理セクタ6、7、および8で構成されています。場合によっては、Microsoftは拡張ブートローダー用に予約済みセクター領域のセクター12も使用します。


OPの質問に関連しない、単なる追加情報

FATリージョンはセクター32になります。

通常、これには冗長性チェックのためにファイルアロケーションテーブルの2つのコピー(異なる場合があります)が含まれますが、ディスク修復ユーティリティによってもほとんど使用されません。

これらはデータ領域のマップであり、ファイルとディレクトリで使用されているクラスターを示します。FAT12およびFAT16では、予約済みセクターの直後に続きます。

通常、追加のコピーは書き込み時に厳密な同期で保持され、読み取り時には、最初のFATでエラーが発生したときにのみ使用されます。FAT32では、デフォルトの動作から切り替えて、使用可能なFATから単一のFATを選択して診断に使用することができます。

マップの最初の2つのクラスター(クラスター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はディスクジオメトリを自動的に取得します。これは必ずしも物理ディスクジオメトリではありません(実際、最近のディスクには実際には物理ジオメトリのようなものはなく、確かに単純なシリンダー/ヘッド/セクターフォームで記述できるものではありません)が、MS-DOSのディスクジオメトリです。パーティションテーブルに使用します。

通常、デフォルトですべてがうまくいき、Linuxがディスク上の唯一のシステムであれば問題はありません。ただし、ディスクを他のオペレーティングシステムと共有する必要がある場合は、別のオペレーティングシステムのfdiskで少なくとも1つのパーティションを作成することをお勧めします。Linuxが起動すると、パーティションテーブルを調べ、他のシステムとの良好な連携に必要な(偽の)ジオメトリを推測しようとします。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.