web-dev-qa-db-ja.com

デバイス名とマウントポイントの関係

たとえば、 /dev/sdb1デバイスのマウントポイントは、たとえば/media/user/sthdev/media/user/sthの両方がシステム上の2つの異なるフォルダーであるため、実際のデバイス名とマウントポイントの関係が何であるかを知りたいと思い混乱しています。

では、デバイスの名前がフォルダーに関連付けられているのはなぜですか?

5
mathmaniage

TL; DR/dev/ファイルシステムとデバイスのマウントポイントは非常に最小限の関係であり、目的が異なるためです。

/ devファイルシステムの目的は何ですか?

引用するには Gilles's answer

/ devの下のほとんどすべてのファイルはデバイスファイルです。通常のファイルの読み取りと書き込みはデータをディスクまたは他のファイルシステムに保存しますが、デバイスファイルへのアクセスはカーネル内のドライバーと通信し、カーネルは一般にハードウェア(ハードウェアデバイス、したがって名前)と通信します。

「* nix上のファイルはすべて」という言葉を聞いたことがありますか?まあ、それは/devファイルシステムの仕組みです-コンピューターに接続された特定のハードウェアを表す「ファイル」を持つことができます。マウスを接続している場合は、たとえば/dev/input/mouse0として表示されます。ハードドライブが接続されている場合、/dev/sd<LETTER><NUMBER>として表示される可能性があります(通常は、 いくつかのバイトのブロックでデータを読み取ることができるブロックデバイス)を表すために使用されます =通常、SCSIプロトコルを使用しますが、新しいNVMド​​ライブの場合は/dev/nvme0n1として表示されます。

そして、そのようなデバイスと対話することも可能です。人々はdd if=/dev/sda1 of=/dev/sdc1または何か長い行でバックアップを作成するのが一般的です。 ArduinoまたはRaspberry Piをシリアルポート経由で接続すると、それらはシリアルコンソール/dev/ttyUSB0または/dev/ttyACM0として表示され、デバイスに通信するためにバイトを書き込むことができますが、より実用的ですscreenまたはbyobuまたはPuTTYソフトウェアのようなものを使用します。しかし、それはそれについてです-あなたは本当に簡単な方法でデバイス上のファイルを表示することはできません。

ファイルシステムとは何ですか?

ファイルシステムとは、何らかの形式のストレージデバイス上でデータを整理する方法です。 多くのファイルシステム があります。Macのハードドライブがある場合、データはHPFSまたはAPFSタイプのファイルシステムでそのドライブ上に整理されました。 Windowsからの場合-NTFSファイルシステムを使用する場合があります。 Linuxから来る場合-通常はextファイルシステムの形式です。 BSDまたはSolarisはzfsなどを使用する場合があります。バックアップの isoファイルのマウント でフォルダにバインドすることもできます。これらにはすべて独自の利点がありますが、重要な考え方は、データが特定の論理的な方法で編成され、ユーザーがデータのバイトまたはブロックを処理するのではなく、個々のファイルを処理できることです。そして、一般的な特徴は、すべてのファイルシステムにマウントポイント、つまりフォルダーとファイルのファイルシステムツリーの論理ルートがあることです。

そして、そこが/devの出番です。/devは実際には/devフォルダーにマウントされた仮想ファイルシステムです。つまり、マシンの実行中にのみ存在するという意味です。シャットダウンすると、そのディレクトリ内のすべてが失われます。 /procおよび/sysディレクトリと同じ-プロセスと物理デバイスの表現は、システムの稼働時間についてのみ存在します。そのため、/devをUSBドライブまたはハードドライブのマウントポイントにすることはできません。すでに他の何かのマウントポイントであり、それを行うと、 nixファイルシステム階層 標準に違反します。

ただし、/dev/my_mountpointにディレクトリを作成し、そこにハードウェアを(ルート権限で)マウントすることは可能ですが、冗長であり、すでに述べたUnixファイルシステム階層標準に反します。

デバイスとマウントポイントはどのように関連していますか?

ウェブサイトとディスクを比較できます。 Webサイトでは、特定のページへのリンクのセットがあります。しかし、ウェブサイトは技術的にはサーバー上のどこかに保存されたデータの集まりです。ここで同じ考え-/dev/sda1にはデータとファイルが含まれる可能性がありますが、マウントポイントを使用すると、論理的な方法でそれらのものとやり取りできます。必要なページに移動します。

技術的な面では、マウントポイントとデバイスはカップルファイルによって管理されます。 /etc/fstabを使用すると、デバイスを(/dev参照またはUUID番号を使用して)指定し、ブート時にデバイスをマウントする場所を指定できます。 /etc/mtab/proc/mounts/proc/self/mountinfo、および/proc/self/mountstatsは、デバイスが現在マウントされている場所を示します。現在、UbuntuではGUIで自動マウントが可能です(以前はUnityでしたが、現在はGNOMEですが、どちらの場合でも 同じGSettingsスキーマ で管理する必要があります)。次にUDisks2システムとインターフェイスし、USBまたはハードドライブを/mediaフォルダーにマウントします。つまり、USBドライブをマウントポイントに自動的に関連付けるソフトウェアが用意されています。

また、dfなどの特定のプログラムは、マウントされたファイルシステムでのみ動作できることに注意してください。つまり、dfは、マウントされているドライブとパーティションのみの使用法を示します。対照的に、多くの場合、fsckファイルシステムチェックユーティリティまたはparted/Gpartedユーティリティのためにファイルシステムをアンマウントすることが望ましい(これらはパーティションのサイズ変更とサイズ変更に使用されるため)データが失われる可能性があります)。 findmntなどのユーティリティを使用すると、特定のデバイスがマウントされている場所を見つけることができます(シェルプロンプトで現在使用しているディスクドライブを知るために個人的に使用します)。

結論

おそらくこれはまだあまり意味がなく、理解できるでしょう。これは慣習だと言ってみましょう。 Windowsが 同様の方法で を行い、同様の用語を使用するため、必ずしもUnixのことではありません。それは、コンピューターがどのように構築され、何年も前にシステムを設計していたときにエンジニアにとって意味のあったことです。しかし、ちょっと-それは動作しますか?

5