web-dev-qa-db-ja.com

Appleには「スパースバンドル」がありますが、スパースファイルはありませんか?

バックストーリー:

私はMac(10.6.4)を使用していますが、今日までVuzeを使用してトレントをダウンロードすると、どのような構成を試しても、Vuzeはファイルのダウンロードを開始する前にファイル全体にスペースを割り当てます。長い間、グーグルで簡単にVuzeのバグだと思っていましたが、何年も経っても何も変わっていないので、HFS +がスパースファイルをサポートしていないためだとわかります。

質問:

スパースファイル wiki は、AppleのHFS +がスパースファイルをサポートしておらず、AppleのTimeMachineとFileVaultが「スパースイメージ」と「スパースバンドル」を使用していることを示しています。

スパースバンドル(8Megチャンクに分割された画像)とは何かを理解していますが、それ以外に、これらの「スパース画像」と通常のスパースファイルとの間に違いはありますか? HFS +がスパースファイルをサポートせず、スパースイメージとスパースバンドルをサポートするにはどうすればよいですか?

4
user52250

これは、スパース性がスパースイメージとスパースファイルの異なる抽象化レベルで処理されるためです。ファイルをディスクに「直接」保存している場合、ファイルシステム(HFS +など)は、ファイルを構成するバイトシーケンスをディスク上のバイトシーケンスにマッピングする処理を行います。スパースファイルは、バイトシーケンスにギャップがあるファイルであり、これをサポートするファイルシステムは、ファイルをディスクにマップするときに、欠落しているバイトをスキップします。

ディスクイメージを使用している場合、マッピングはかなり複雑になります。ファイル内のバイトが(内部ファイルシステムによって)(仮想)ディスク内のバイトにマッピングされます。次に、これらは(イメージマウンターによって)ディスクイメージ(ファイル)のバイトにマップされ、次に(外部ファイルシステムによって)実際のディスクのバイトにマップされます。イメージマウンターはスパースマッピング(およびAIUIはファイル間/ファイル間のみ、ファイル内ではない)を処理しますが、他のレイヤー(ファイルシステム)が処理できることを意味するものではありません。外部ファイルシステムに関する限り、イメージファイルは単なる(非スパース)バイトシーケンスです。

ところで、イメージマウンターは、ファイルシステムだけでは処理できない他の機能を追加することもできます。たとえば、Macディスクイメージはほぼ永久に圧縮をサポートしてきましたが、圧縮のネイティブサポートはOS Xv10.6までHFS +に追加されませんでした。

6
Gordon Davisson

Gordon Davissonの説明は啓発的でした:これは私がトレントダウンロードディレクトリとしてスパースバンドルイメージを使用している方法です。

まず、画像を作成します(50GBに設定しましたが、どのサイズでも機能します)

hdiutil create -size 50g -type SPARSEBUNDLE -nospotlight -volname "Torrents repository" -fs "Case-sensitive Journaled HFS+" Torrents.sparsebundle

次に、作成したばかりのTorrents.sparsebundleイメージをダブルクリックしてマウントします。

「Torrentsrepository」と呼ばれるマウントされたボリュームを一時リポジトリとして使用するようにお気に入りのトレントクライアントをセットアップします。完成したファイルがイメージから(たとえばダウンロードフォルダに)移動されるようにセットアップすることをお勧めします。

これは、特に大きなトレントで少数のファイルのみを選択する場合に非常にうまく機能します。

また、システムに起動スクリプトを追加しました。

hdiutil compact Torrents.sparsebundle 
hdiutil attach Torrents.sparsebundle

最初のコマンドは未使用のディスクスペースを再利用し、2番目のコマンドは自動的にイメージをマウントします。残念ながら、イメージをマウントしている間はコンパクトな操作ができないので、マウントする前にシステムを起動するのが一番のチャンスだと思いました。

2