「物理的」サイズと「論理的」サイズの違いは何ですか?


7

私はちょうどについて知った mdls コマンドオン OS X 与えられたファイルに関連するメタデータをプリントアウトします。このコマンドは、 '物理サイズ'( "kMDItemPhysicalSize")と '論理サイズ'( "kMDItemLogicalSize")の両方を教えてくれます。たとえば、現在見ているテキストファイルは次のとおりです。

  • 実寸:1152
  • 論理サイズ:4096

私がするなら ls -lサイズは1152です。 「情報を見る」パネルを開くと、「1,152バイト(ディスク上に4 KB)」と表示されます。したがって、「論理サイズ」がどうであれ、明らかに「ディスク上」のサイズと同じです。

回答:


9

ディスクはセクタに分割されています。通常のハードドライブまたはSSDでは512バイト*です。

ファイルシステムは、名前(あなたが理解しているもの)に基づいてファイルの要求を受け取り、ブロック読み取り/書き込み要求(ディスクが理解できるもの)に変換します。これが機能するためには、どのセクタがどのファイルに属しているかのマップが必要です。これを行うには多くの方法があり、したがって、存在する多くのファイルシステムがあります。たとえば、WindowsはNTFSとFAT32を使用し、Linuxはext2、ext3などを含む多数のものを持っています。Macファイルシステムについてはよくわかりませんが、それは同じ原則です。

いくつかのファイルシステムはこれと呼ばれるセクターより上のレベルを持つでしょう クラスター これはセクタの集合です - 大きなディスク上のすべての単一セクタのマップは大きすぎるスペースを占めるかもしれないからです。たとえば、NTFSでは、クラスタサイズを指定でき(「アロケーションユニット」は別の名前です)、4096バイト(8セクタ)もそのうちの1つです。

したがって、すべてのことを考えると、実際にディスクに読み書きできる "最小"値は、セクタサイズまたはクラスタサイズになります。したがって、4097バイトをディスクに書き込むことができますが、ファイルシステムはそのファイルに2つのクラスタを指定する必要があるため、空き領域から8192バイトの空きがあります。したがって、論理サイズ(ディスクで消費されるサイズ)と物理サイズ(ファイルの実際のサイズ)があります。


*いくつかの新しい "Advanced Format"ディスクでは内部的に4Kバイトですが、互換性のためにOSから見ても512バイトセクタのように見えます。 SSDは内部では大きく異なりますが、やはりOSからは512バイトセクタのように見えます。


魅力的です!ありがとう。それで(例えば、このスタイルの)ハードドライブは、8192bのファイルと同じくらい(およそ)4097bのファイルしか保持できないでしょうか?
DilithiumMatrix

はい。 btrfsのような次世代ファイルシステム(おそらくext4でも、まだカーネルに入っているかどうかはわかりません)は、ファイルメタデータと一緒に小さなファイルをインライン化することをサポートしています。 。これはアクセス時間の改善と潜在的にスペースの削減を意味します。
user55325

1
@ user55325 NTFSもそれを実現しているので(ドキュメントでは常駐レコード/ファイルとして知られています)、それはほとんど新しいことではありません。しかしHFS +に関する多くの情報を見つけることができません。
Bob
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.