web-dev-qa-db-ja.com

マウントするとき、ループデバイスをいつ使用すればよいですか?

次の質問によると:
マウント時の「ループデバイス」とは
ループデバイスは、ブロックベースのデバイスとして機能するファイルです。これは概念的には理解できますが、他のファイルをマウントする場合とどう違うのですか?たとえば、ext2ファイルシステムのddイメージを取得してマウントした場合、ループオプションを使用する必要はありません-mount -t ext2 file.dd /mnt/mount-point成功します。

ループオプションを使用する必要があるのはいつですか。ループオプションを使用したマウントとそれを使用しないマウントの違いは何ですか。

19
Suchipi

通常のファイルをマウントするためにループオプションを使用する必要がない場合は、mountがこれを検出して自動的にアクティブにするためです。以前は手動で指定する必要がありました。

8
psusi

技術的には、ループデバイスは、ハードウェアの一部ではなく、ファイルに書き込むブロックデバイスです。したがって、ファイルをマウントするときは、常にループバックデバイスを使用する必要があります。

直接的な回答としてはこれで終わりです。多分これは説明として役立つ:

カーネルは複数の抽象化レイヤーを実装しているため、異なるハードウェアを同じように扱うことができます。存在するすべてのブランドのコントローラーに対してext2ドライバーを再構築する必要があると想像してください。誰もそれを望んでいないが、すべてのハードディスクを同じように扱いたい。これが、抽象化レイヤーを作成する理由です。

ブロックデバイスはそのような抽象化です。ブロックデバイスには特定の属性があり、他のソフトウェアで使用できる特定の機能を公開します。 ATA HDD、SCSI HDD、テープドライブのどれを使用していても、常に同じ構造体と機能を使用して操作します。その場合、ブロックデバイスにアクセスしたときに正しいことを行うのは、カーネルのタスクであり、その抽象化レイヤーのより明示的なものです。ブロックデバイスインターフェイスの場合の正しいことは、適切なデバイスドライバーとの間の呼び出しとデータを渡すことです。そのデバイスドライバーは、たとえば、SCSIサブシステムまたはループデバイスのドライバーです。

ループデバイスドライバーは、関連するブロックデバイスの操作をファイル(システム)操作に変換します。これにより、データ/パーティションがファイルに格納されます。

使用されている用語と、関連する抽象化レイヤーの名前と数がおそらく私にはひどく間違っています。基本的な概念をスケッチしたかったので、ループデバイスは何かを行うファイルではなく、ファイルを使用するものであることが明らかになりました。このファイルは、以前使用していたものと何も変わりません。

23
Bananguin