• ベストアンサー

マウントとは?

恥をしのんで質問します。linuxのマウントって一体、具体的に何をやっているんですか?デバイスを読み書きするためデバイスを認識するのに使われているかなあと自分は思うのですが?今頃誰にもこんな質問できないので教えてくださいよろしく御願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • vaidurya
  • ベストアンサー率45% (2714/5983)
回答No.3

カーネルからの認識はマウントではなく、デバイスドライバーのロードで行なわれます。 ドライバーが組み込まれることで デバイスファイルという形で、デバイスが認識されるのです。 その段階で認識されているからこそ、デバイスファイルが作られるし (実際のデバイスファイル作成はドライバーロードを行なうスクリプト) マウントを含む、デバイスファイルの操作ができるわけです。 (言い換えればドライバーが無いデバイスは認識されず扱えない) マウントは、ディレクトリーツリーに(直接ないし間接的に)接続する作業です。 カーネルの持つ、ファイル保存やファイル読み出しのコマンドは デバイスファイルに対しては動作せず… (たとえばcp foo.txt /dev/sdb1はできない) 有効なファイルシステムとして認識させる方法が UNIX系OS特有の、唯一のディレクトリーツリーにマウントすることなのです。 (補足するとmountは据え付けることや固定することを意味します。) HDDやUSBメモリーなどがOS上の有効なファイルシステムとなることで ファイル保存や読み出しができるようになるわけで… そうでなければ、ddのような特殊なツールでしか HDDやUSBメモリーを読み書きすることはできません。 言い換えれば電気的に繋ぎっぱなしのHDDも、マウントさえしていなければ ミスやユーザーアプリケーションの誤動作程度で ファイルが損なわれることは無いと言えます。 (ドライバーやカーネルのバグについてはその限りでは無い) ディレクトリーツリーの基部が、ルートディレクトリーを含むルートファイルシステムで、それは… インストール時には"/"にマウントを指定し、またGrub等の設定では root=/dev/sda1といった形で指定します。 UNIX系OSでは、すべてのファイルシステムはルートファイルシステムに 階層的に接続され、その際、ファイルシステムの違いは、通常問題となりません。 そのため、ファイルシステム単位の容量不足や、RAIDやNFS,Samba等の ファイルシステムの運用形態の変更において… ディレクトリーツリー上の位置指定を、スクリプトや各種設定に対して一定に保てます。 Windows等では、通常はすべてのファイルシステムが独立したディレクトリーツリーを持ち ことHDDについては、認識可能のファイルシステムは 強制的に起動時にマウントされ(削除ミスのリスク) また、ドライブレターの変動(ドライブレター指定による自動処理の誤動作リスク) といった"特徴"があります。 (ドライブレター固定もマウントも現行のWindowsではサポートされる) ついでに言うと、Linux等ではデバイスドライバーも OS可動中に任意にロード/アンロードできます。 デバイスドライバーの異常に由来する不具合も Linux等ではOS自体は再起動せずに回復できたりします。 (一時期、よくivtvを再ロードしてたなぁ…) ただ、ファイルシステムとかUSBとか関連のドライバーは 手軽にアンロード/再ロードはできないんですけどね…

stoneblue
質問者

お礼

カーネルの認識とマウントは、お互い別の話だということがわかりました。ドライバーをロード(読み込み)することでデバイスとして認識されること。マウントは、ディレクトリーツリーにつなげることがわかりました。初心者にもわかりやすく教えていただき感謝です。ありがとうございました。

その他の回答 (7)

  • hino_hp
  • ベストアンサー率65% (34/52)
回答No.8

linuxの起動時に自動マウントしなかったファイルシステム を追加的にコマンド操作によってマウントするときに使います。 (もし、起動時のマウント処理をすべて排除してしまえば、 いかなるファイルシステムも利用できないことになります) (起動時にマウント指定されて読み込まれるのは、OSがインストールされた パーティーションが主なものでしょう。が、それも事実上マウント・ コマンドによる処理です) つまり、記録メディア(HDD,SDD,CD-rom,DVD,スマートメディアその他) には既にlinux,unix,Windows,Mac-OSその他のOSで利用できるファイル形式 でデータがストックされています。 それを、今使っているlinuxで有効なファイルシステムとして利用可能な ように、今使っているlinuxの(インストール時に)採用したファイル・ システムで認識可能な範囲で、ファイルシステムのツリー上の一点 (ポイント)に組み込みます。挿入します。 これが、マウント。 逆に、そのポイント(ファイル・ツリー上の)から外すのが、アンマウント。 すなわち、デバイス上のデータは、OS(オペレーティング・システム)で 扱っているファイルシステムが採用しているファイル形式として読み込ん ではじめて、通常のPCユーザーがストレス無くデバイス上のデータを利用 できる(テキスト、HTML、各種実行ファイルとして利用する)のです。 デバイスからマウントなしに直接データアクセスするとすれば、dd コマンドとかありますが、2進法(ないしは16進法)データでよろし ければ... (よろしくないですよね?) マウントなしにデータアクセスできますよ。 (というか、コピーです。危険なユーザーコマンドですので) いずれにしても、マウント対象にするデバイスは利用可能なデバイス として、OS(linux)に認識されていなくてはなりませんが。 (該当するデバイス・ドライバがアクティブになっている必要あり)

stoneblue
質問者

お礼

大分整理がつきました。物理メディアがもつファイル形式をLinuxのもつファイルツリーで扱っているファイル形式に組み込むイメージですね。それでファイルが読み取れるという訳でしょうか。大変わかりやすかったです。ありがとうございました。

  • yakan9
  • ベストアンサー率54% (2244/4125)
回答No.7

質問者さんの聞きたいことは、 > linuxのマウントって一体、具体的に何をやっているんですか? ということですね。 分かりやすく的を絞って回答したつもりです。 /media/hda1がマウントポジションは、質問者さんでも知っているでしょう。

  • u-kid
  • ベストアンサー率50% (34/67)
回答No.6

3番さん以外、誤った解答が付いていますので、少しコメントします。 マウントはある物理デバイス上のファイルシステムをシステムのファイルシステムに接続すること、アンマウントは接続を解除することです。 論理デバイスは関係ありませんし、/media/sda1などは論理デバイスではなく、マウントポイントです。 デバイスドライバとかデバイス名のマッピングはマウントの前に完了しているべき問題で、デバイスがカーネルから操作できる状態になっていて、初めてマウントが可能になります。 mountコマンドのman pageを読んでください。

参考URL:
http://www.linux.or.jp/JM/html/util-linux/man8/mount.8.html
stoneblue
質問者

お礼

ある物理デバイスのファイルシステムとシステムのファイルシステムを接続することがマウントであることが明確になりました。ドライバをロードすることでカーネルの認識が行われることがわかりました。大変参考になりました。ありがとうございました。

  • yakan9
  • ベストアンサー率54% (2244/4125)
回答No.5

一部ミスがありました。 > それをまとめたテーブルが、/etc/gstabです。 は、間違い。 それをまとめたテーブルが、/etc/fstabです。

  • yakan9
  • ベストアンサー率54% (2244/4125)
回答No.4

マウントというのは、簡単に言うと、物理デバイスと論理デバイスを 繋げる役目をするものです。 OSの中では、BIOSから情報を得て、物理デバイスのままでは、 OSというソフトでは扱いづらいので、それを展開して、プログラム上 でも見れるようにするために、論理デバイスという形で持って処理の 対照とします。 具体的には、/dev/hda1とかの物理デバイスと、/media/hda1とかの、 論理デバイスです。 それをまとめたテーブルが、/etc/gstabです。 起動時にこのテーブルを見て、自動マウントしたり、フロッピや、 CD/DVD-ROMは、起動時にセットしていない場合は、起動後、 これらの結びつきをマウントコマンドで作り出してくれます。

stoneblue
質問者

お礼

初心者にわかりやすく教えていただきありがとうございます。

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.2

例として Windows で USBメモリを刺す場合を考えます. このとき 1.USBメモリをカーネルが認識する 2.(通常は) 適当なドライブ名をカーネルが割り当てる という動作が行われます. 「マウント」はこの 2 に近いものだと思ってください. ただし, Linux では「ドライブ名」というものを使わないので「既存のどこかのディレクトリ」を指定して割り当てることになります. そして, マウントすることによりストレージとして使うことができるようになります. 実は Windows でも既存のディレクトリに割り当てることができて, そうするとより Linux のマウントと同じような動作になります. 逆にこの割り当てを解除する操作が「アンマウント」で, こちらは Windows の「ハードウェアの取り外し」のようなものだと思えば OK. 物理的には接続されていてもカーネルからは存在しないように見えます. なお, マウントやアンマウントは「ランダムアクセスできるデバイス」, つまりハードディスクや USBメモリなどにのみ必要です. プリンタやテープデバイスなど「シーケンシャルアクセスしかできないデバイス」はマウントできません.

stoneblue
質問者

お礼

WINDOWSでAドライブ、Bドライブ、Eドライブ等をOSが割り付ける動作に似てることが直感的にイメージできました。ありがとうございました。大変参考になりました。

  • nemoax006
  • ベストアンサー率14% (343/2433)
回答No.1

マウントするとそのデバイスドライバがカーネルに登録されて使えるようになります、アンマウントは逆の行為になります

stoneblue
質問者

お礼

初心者にも難しい言葉は使わず、回答していただいたことに感謝しています。ありがとうございました。

stoneblue
質問者

補足

カーネルというのは、OS自体と思っていいでしょうか?OSにデバイスドライバを登録して、これでデバイスを認識し使えるようになる。例えばプリンタ接続する時にそのドライバをPCに入れるイメージでプリンタを認識するようなイメージでしょうか???すごい初心者ですいません。

関連するQ&A