ディレクトリはどのくらいのスペースを消費しますか?


13

空のディレクトリに必要なスペースはどれくらいですか?

WindowsおよびNTFSファイルシステムでは、「0バイト」と表示されますが、これは不可能です。

ディレクトリは実際にどのくらい占めていますか?ファイルシステムまたはオペレーティングシステムに依存しますか?


1
技術的には、プロパティウィンドウに表示されるのはフォルダーの内容であり、空の場合はディスク上の0バイトを占有します。あなたの質問は、フォルダー構造がファイルシステム上でどのスペースを占有するかを扱っています。明らかにファイルシステムに依存しています。FAT32では、保存する必要があるのは、いくつかのフラグ(非表示、アーカイブ済み)、および名前とパスのみです。NTFSでは、アクセス許可などを保存する必要もあります。全体として、そのスペースはほとんど無視できます。
ドクトロライチャード

それでは、NTFSでは、空のディレクトリはどのくらいのスペースを必要としますか?たとえば、10億のディレクトリを作成する場合、これはどのくらいのスペースですか?
ShadowHero

私が言ったように、名前とフォルダーのパスに依存します。26文字すべてを使用し、10億の一意の名前を使用すると、約7文字の長さのフォルダー名を持つことができます。したがって、7バイト* 1.000.000.000はおよそ7GBのスペースに相当します。これは最低限のことだと思います。すべてのドライブに約100万個のフォルダーがあるので、実際にはその価値に達することすらありません。これは非常に大まかな見積もりであることを忘れないでください。
ドクトロライチャード

かっこいいね...パーミッションの保存方法は?
ShadowHero

1
@AthomSfere Hmm ...これは、複数のMFTレコードを割り当てることができない限り、フォルダーに無限のユーザーアクセス許可を格納できないことを意味します。調べてみます。
ドクトロライチャード

回答:


16

技術的には、プロパティウィンドウに表示されるのはフォルダーの内容であり、空の場合はディスク上の0バイトを占有します。

あなたの質問は、フォルダ構造がファイルシステム上でどのスペースを占有するかを扱っています。これは明らかにそれに依存しています。FAT32では、保存する必要があるのは、いくつかのフラグ(非表示、アーカイブ済み)、および名前とパスのみです。NTFSでは、アクセス許可などを保存する必要もあります。全体として、そのスペースはほとんど無視できます。

空のディレクトリ構造が占めるスペースは、名前とフォルダパスによって異なります。例として、すべてのフォルダーをルートドライブ(C:など)に配置し、26文字すべてのアルファベットを使用すると仮定します。10億の一意の名前を使用すると、log_26(1.000.000.000)=約7(6.3065)文字長のフォルダー名を使用できます。したがって、7バイト* 1.000.000.000はおよそ7GBのスペースに相当します。

これは、構造に必要なスペース名の量のみに基づく最小値です。それが示されるように、ファイルシステムは、そのファイル構造上のファイル名以外の多くの情報を保存します。

私はすべてのドライブに約100万のフォルダーとファイルがあるため、実際にはその価値にさえ達していません。これは非常に大まかな見積もりであることを忘れないでください。


現時点で最も使用されているファイルシステムは、(ほぼ間違いなく)FAT(ファイルアロケーションテーブル)およびNTFS(新技術ファイルシステム)と見なすことができます。FATは、Windows 95がFAT32と共にリリースされた1996年以来使用されています。NFTS(Windows)、HFS +(OSX)またはext3(Linux)などの他のより回復力のあるファイルシステムに置き換えられていますが、ほとんどのOSで十分にサポートされているため、ハンドヘルドデバイスまたはメモリカードまたはフラッシュドライブで依然として広く使用されていますそして何よりも簡単です。

大切なことは今。FATパーティション内のファイルとディレクトリは、それらに何も含まれていなくても、名前、場所、特定の属性などを持ち、それらはディレクトリテーブルと呼ばれるゾーンに格納されます

ディレクトリ・テーブルは特殊なファイルである(すなわち、唯一のOSや特定のアプリケーションがそれを直接にアクセスすることができるように、定期的な使用から隠されています)。これはディレクトリ(別名フォルダ)を表し、その中に保存されているファイルまたはフォルダには、テーブルに32バイトのエントリがあります。ディレクトリテーブルはファイルであり、それは、次いで、(単一のファイル(または1)フィットの一部ディスク内の予め設定されたサイズで、すなわちボックス)1つまたは複数のクラスタを占めます。

そのため、最新のドライブ(> 512 MB)上のフォルダーまたはディレクトリには、テーブル(ソース)を格納するために、少なくとも 4 KBのオーバーヘッドがあります。ただし、これは、128の異なるファイル(4 * 1024 B / 32 B = 128)を同じフォルダーに保存できることを意味し、レコードを保存する際のオーバーヘッドは以前と同じ4 KBのままです。

最初の例に便乗すると、これは10億個のフォルダーのオーバーヘッドが32 GBになることを意味します。おおよそ7 GBの計算値ではありません。これらの32 GBには、短い名前(8文字のASCII文字)だけでなく、属性、フラグ、アクセス、作成および変更の日付、およびその他のレガシー属性も保存されます。

あなたはこのすべてを読むと仮定すると、あなたが持つかもしれない質問があるかもしれません:「まあ、これはすべてが順調と良いのですが、どのような長い名前、あるWabbajackかのようなさえhashy名e4d909c290d0fb1ca068ffaddf22cbd0?保存され、」

Windows 95のMicrosoftは、ユーザーエクスペリエンスを向上させるためにこの機能を追加することを決定しました。「ほぼ標準の」システムの破壊を避けるために、彼らはVFAT(仮想FAT)と呼ばれるきちんとした回避策を使用しました。基本的に、長いファイル名をファイルに収めるために、実際のファイルレコードの前に追加のレコードが書き込まれました(以前のシステムには表示されない特別な属性があります)。長いファイル名システムでは、最大255文字のUTF-16(Unicode)文字(ソース) (ソース)を使用できます。

すべてのフォルダーが9文字になるように最初の例を変更すると、長い名前を格納するためにもう1つのレコードを書き込む必要があるため、オーバーヘッドが32 GBから64 GBに倍増します。


NTFSに関するWikipediaの記事によると、すべての権限はマスターファイルテーブルに保存されます。ここに示されているように、ディスクデフラグツールを使用すると、スペースが明らかに表示されます

MFTレコードがフォルダーまたはファイルの両方から占有するサイズについては、以下で説明します

ファイルとフォルダーのレコードはそれぞれ1 KBで、MFTに格納されます。MFTの属性は、MFTの割り当てられたスペースに書き込まれます。ファイル属性に加えて、各ファイルレコードには、MFT内のファイルレコードの位置に関する情報が含まれています。

ファイルの属性がそのファイルのMFTファイルレコード内に収まる場合、それらは常駐属性と呼ばれます。ファイル名やタイムスタンプなどの属性は常に常駐しています。ファイルの情報量がそのMFTファイルレコードに収まらない場合、一部のファイル属性が非常駐になります。非常駐属性には、1つ以上のディスク領域のクラスターが割り当てられます。非居住属性の一部はMFTに残り、外部クラスターを指します。NTFSは、すべての属性レコードの場所を記述する属性リスト属性を作成します。NTFSファイル属性タイプの表には、NTFSによって現在定義されているファイル属性がリストされています。

したがって、NTFSでは、非常に長い引数リストとアクセス許可リストがない限り、フォルダーは少なくとも1 KBのスペースを占有します。その時点で、MFTレコードはパーティション内の追加クラスターを占有し、そのサイズはフォーマット方法に依存しますが、その投稿でMicrosoftが2GBを超える場合は4KBクラスターを推奨しています。


1
先ほど述べた1024バイトの長さc-ad.bnl.gov/kinyip/windows/MFT.htmlについての情報をいくつか見つけました。これは非常に読みやすく、拡張したい場合は回答に役立つかもしれません。
オースティンTフランス語

明日のためにこれを残さなければなりませんが、私は拡大します(これをより完全な答えにするために、これはあまりにも技術的ではありません...)。とにかくそのソースをありがとう。
ドクトロライチャード

技術的な修正:255パス制限はありません。そうではなく、標準のパスの260文字のMAX_PATH制限があり、その後、32,767文字の拡張長さ経路は(はい、オーバー32がある文字) `\\?`インジケータを使用して、真のユニコードパスの(、のいずれかとしプレーンな拡張長パス、またはUNCパスとして)。詳細については、docs.microsoft.com / en-us / windows / win32 / fileio /…を参照してください。
マイク「ポマックス」カマーマンズ

3

実世界の例では、空き領域を記録した後、大きなディレクトリ構造を作成し、新しい空き領域を差し引いて、使用されている領域を見つけました。曜日ごとにディレクトリ0〜6を作成し、その後、時間帯に0〜23のディレクトリを作成し、時間帯に0〜59のディレクトリを作成しました。合計で10,080個のディレクトリ。ディスク使用量が6,926,336バイト変化しました。これは、ディレクトリごとに687バイトになります。気になる場合は、1TBドライブの0.0006%になります(1TBを1024 ^ 4と計算した場合)。


3
ファイルシステムを回答に追加できますか?ディレクトリ名はすべて短いですか?
fixer1234

0

Windows 10では、1,000,000個の空のフォルダーを作成し、pythonのgetsize機能によると、200540160バイトのスペースを占有しました。これは、フォルダーあたり平均200.54016バイトです。

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