たとえば、 /dev/sdb1
デバイスのマウントポイントは、たとえば/media/user/sth
。 dev
と/media/user/sth
の両方がシステム上の2つの異なるフォルダーであるため、実際のデバイス名とマウントポイントの関係が何であるかを知りたいと思い混乱しています。
では、デバイスの名前がフォルダーに関連付けられているのはなぜですか?
TL; DR:/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のことではありません。それは、コンピューターがどのように構築され、何年も前にシステムを設計していたときにエンジニアにとって意味のあったことです。しかし、ちょっと-それは動作しますか?