この1ページで一通りわかる!Linuxのマウント(mount)について

Linuxマウント
  • このエントリーをはてなブックマークに追加
  • Pocket

Linuxでよく出てくるマウントとは、外部の記憶媒体を扱うための方法だ。

USBやCDROMなどが外部記憶媒体に当たる。WindowsであればUSBをPCにつなげるとすぐに使えるようになるはずだ。しかし、Linuxの場合ただ繋げただけだと使えないことが多い。マウントしてはじめて、使えるようになる。

このページではLinuxのマウントについて一通りわかるようにご紹介した。参考にしてほしい。

Linuxのマウントとは?

枝を追加すること

一般的にUSBメモリを始めとした外部記憶媒体をPCに接続するとWindowsOSの場合は「Dドライブ」や「Eドライブ」として認識される。この「D」や「E」のことを「ドライブレター」という。

ドライブ

しかしLinuxにはドライブレターという概念はない。ではLinuxではどうなっているのか?

イメージとしては「/」から始まるディレクトリツリー、「樹木構造(階層構造)」に記憶媒体という「枝」を追加するというのを想像してもらえるとわかりやすいだろう。

階層構造

詳しくわからないという方は下記の記事などを参考にしていただけるといいだろう。

この枝を追加する行程を「マウント」という。

「/」のしたであればほぼどこのディレクトリでも枝を追加することは可能だ。一般的に「/mnt」もしくは「/media」にマウントすることが多い。

mountコマンドはシステムに関わるコマンドなので基本的にスーパユーザ権限で実行することが多い。後ほど詳しくご紹介するが「fstabファイル」に設定を記述すれば一般ユーザでのマウントが可能になる。

マウントとアンマウント

記憶媒体は基本的にマウントすることで読み込み書き込みが可能になる。

記憶媒体をとり外すときは必ず「umount」コマンドを実行する。このコマンドにより、記憶媒体が安全にとりはずせるようになる。

もしumountコマンドを発行せずに記憶媒体をひきぬいた場合ファイルシステムが破損する可能性があるので必ず実行すること。

WindowsでいうところではUSB機器にたいしてタスクバーの「ハードウェアを安全に取り外す」という項目がlinuxのアンマウントに相当する。基本的に「外部記憶媒体」を接続したらマウントし、使用し終えたらアンマウントすることを頭にいれておこう。

実際にやってみよう

とにかく「マウント」してみよう。

ここまで言っていることと矛盾するが、CentOS7のデスクトップ環境の場合USB記憶媒体を刺した時点で、デスクトップにアイコンが出てくるのでそれをクリックすれば通常通り、ファイルの読み書きができることが多い。

しかし、LinuxはCUIで使うことの方が多い。CUIでの動作の場合、手動でマウント操作が必要になる。

dmesgコマンド

まずは、dmesgコマンドでデバイスが認識されていることを確認する。

$ dmesg

dmesg-grep

多くの場合はsdb1となっていることが多いだろう、今回は表示の関係上「grep」コマンドで絞ってある。

マウントを実行

このデバイスの割り当ては環境の状態によってかわるので注意すること、とりあえず記憶媒体「sdb1」をマウントしてみよう、以下のコマンドをスーパユーザ権限で実行してみよう。

# mount /dev/sdb1 /mnt

mount sdb1

そしたら

$ ls /mnt

ls mnt

としてみよう、記憶媒体の中身がみえるはずだ。次に「df」コマンドでどのデバイスがどこにマウントされているのか確認しよう。

$ df -Th

df-Th

/dev/sdb1が/mntにマウントされている。確認できたら、とりあえず、スーパユーザ権限で

# touch /mnt/testfile.txt

touch mnt

としてみよう、正常に書き込みがなされるはずだ。継木が完成しているというのがわかる。

$ ls /mnt

ls mnt

これで中身が確認できる。

アンマウントにチャレンジ

そしたら今度はアンマウントしてみよう、スーパユーザになって以下のコマンドを叩いてみよう。

# umount /mnt

umount mnt

とする。外付けのUSB記憶媒体などのアクセスランプが点灯しているばあいは、ランプが消灯するまでまとう。dfコマンドでアンマウントされことを確認したあと記憶媒体をひきぬこう。

umount df Th

/dev/sdb1がなくなっていることが確認できた。

アンマウントできないときは?

今おこなったのは、「マウント」し「書き込み」を行い「アンマウント」したのである。もしこのときデバイスがビジーであると警告が表示される場合、デバイスになにかしらの、アクセスがかかっており、アンマウントできない状態になっている、そういった場合は「lsof」でデバイスにアクセスがかかっていないか確認しよう。

今回は先の手順で再びマウントを行い

$ lsof /mnt

とすると状態が把握できる。試しに

$ cd /mnt

とした状態で

# umount /mnt

としてみるとアンマウントできないはずだ。

$ lsof /mnt

lsof mnt

で確認するとそこにアクセスをかけているプロセスIDや、そのユーザ名が表示されるので、アクセスをかけているプロセスをなくしてから再度「umount」すると正常にアンマウントできるはずだ。

一般ユーザでもマウントができるようにする

基本的にマウントしたデバイスはシステムの一部としてアクセスができるが、デフォルトの挙動ではスーパユーザ権限でマウントされ、通常の一般ユーザは読み込みはできるが書き込みができない状態になっている。

そこで「-o uid=<ユーザID>,gid=<グループID>」を追加してマウントしてみよう、すると無事にidで指定したユーザIDとグループIDで書き込みができるはずだ。「id」コマンドでユーザIDとグループIDは判別できる。

# mount -o uid=<ユーザID>,gid=<グループID> /dev/sdb1 /mnt

mount -o -uid -gid

アンマウントするときはスーパユーザ権限が必要となる。

fstabに記述する

もうひとつの手段として「fstab」に特別な手段として記述しておくという方法がある「/dev/sdb1   /mnt/  auto    noauto,user 0 0」と記述

# echo “/dev/sdb1   /mnt/  auto    noauto,user 0 0” >> /etc/fstab

すると

$ mount /mnt

mount mnt

とするだけで/dev/sdb1が/mntにマウントできるようになる。ここの辺りはLPICでも結構、出題される範囲だ。受けようと思っている方は理解しておいた方がいい。

ここで気をつけなければならないのは、例えばいま「/dev/sdb1」が認識された状態でもうひとつ記憶媒体を認識させると、大概は「/dev/sdc1」となることが多い、このように状態によりけりで、デバイスファイルの指定が変わるので、その点を念頭においておこう。

fstab設定ファイル

fstab

少々ややこしい記述となっているが、一番下の行先ほど追加した/dev/sdb1を見ていただきたい。デバイスとUUIDの関連づけを確認するには

$ ls -l /dev/disk/by-uuid

uuid

で確認できる。

fstabにUUIDでデバイスを記述することで、デバイスの接続順に関係なくマウントが可能になる。デバイスの識別別名だと思えばいいだろう。

書式設定は

  • カラム1がデバイス名
  • カラム2がマウントポイント
  • カラム3がファイルシステム
  • カラム4がマウントオプション
  • カラム5がファイルシステムをdumpの必要かどうか
  • カラム6がシステム起動時にfsckチェックを行うかどうか

を表わしている。

fstabのオプション

defaultsとすると「 rw, suid, dev, exec, auto, nouser, async」それぞれを有効にしてマウント。

auto とするとmount コマンド -a オプションでマウントされる。

user 一般ユーザもファイルシステムをマウント可能にする。

uid = マウント時のユーザID指定

gid = マウント時のグループID指定

noauto コマンドで明示的にマウントしないかぎり、マウントしない。

マウントに関連する各種コマンド

最後に、マウントに関連する各種コマンドをさらっとご紹介しておこう。

mountコマンド

デバイスをマウントするときに使用するコマンド

主要オプション

  • -a /etc/fstabに記述されたファイルシステムを全てマウントする例外としてnoautoオプションが記述されている場合そのデバイスはマウントしない。
  • -tファイルシステムを指定してマウント、サポートされているファイルシステムは、/etc/filesystemsに記述されている。
  • -oでさらにこまかいオプションが存在する。
  • uid= ユーザID指定
  • gid= グループID指定
  • ro 読み込み専用
  • rw書き込みの許可

umountコマンド

デバイスをアンマウントするときに使用するコマンドだ。

基本的にはマウントポイントを指定してアンマウントするだけなので、複雑なことを考えなくてもよい。

もし誤ってアンマウントせずにデバイスをぬいてしまった場合、マウント情報がシステムに残留するので「-f」オプション使って、強制アンマウントという形で対処する。

dfコマンド

ディスクの空き状況やマウントポイントなどを表示する。

主要オプション

  • -h 人間にわかりやすい単位で表示
  • -T ファイルタイプを表示

lsofコマンド

開いているファイルやディレクトリやソケットを表示する。

主要オプション

  • -u <ユーザ名> ユーザが開いているファイルなどを表示
  • -p <プロセスID> プロセスIDで開いているファイルを表示

 まとめ

このページではLinuxのマウントについて一通りまとめてきた。このページに載っていることを理解していれば、大体のことは実行できるはずだ。

マウントについて忘れてしまったら、時々見返していただければと思う。

  • このエントリーをはてなブックマークに追加
  • Pocket

このページの続きや関連ページは下記から一覧で確認できます。

IT講師に興味はありませんか?

・「今までIT講師をやってきたが、更に多くの講義を行いたい」

・「エンジニアとしてやってきたが講師業に魅力を感じている」

・「講師として活躍するためにベースとなる知識を知りたい」

・「様々な分野や言語の講師にチャレンジしてみたい」


という方はぜひIT講師募集のページをご覧ください。


リスキルテクノロジーでは「受講している方々にITを好きになってもらう」ことを目標に、同じ目標に向かって歩んで行ける講師の方を常に探しています。


システム開発やインフラ構築などのエンジニアリング経験を活かし、新入社員などの未経験者や経験の浅い初学者の方々に対してITトレーニングを行っていただくことになります。


テキストやカリキュラムは事前に用意されており、それらを元に講義を進めていくため、IT講師をはじめて実施する方でも安心してトレーニングを実施できます。


IT講師募集のページを見る

SNSでもご購読できます。

コメント

  1. 松本健作 より:

    Linux初心者です。マウントのことよく分かりました。ただ、1つ質問があります。
    マウントポイント配下に既にファイルがあった場合、それらは見えなくなるのでしょうか?

    1. リカレントテクノロジー より:

      いつもご愛読いただきありがとうございます。

      (1) 例えば /mnt/test というフォルダを作り、その中に test.txtなど適当なテキストファイルを作ります。
      (2) 続いて mount /dev/sda1 /mnt/test を実行します

      その後に作成した /mnt/test/test.txt がどうなってしまうか、ということですね。
      結果としては、ls -al /mnt/test を実行するとマウントされた /dev/sda1 下のフォルダ内容が表示されます。
      そのためtest.txtは見えなくなります。

      その後、 umount /mnt/test を実行してマウントを解除、ls -al /mnt/test を実行すると
      test.txt のみが表示されます。 /mnt/test の「行き先」が変わるだけなので元あったファイルは残っています。

コメントを残す

*

未経験からの育成制度も充実
IT講師に興味はありませんか?

リスキルテクノロジーでIT講師の積極募集を開始! 経験・未経験問わずご応募可能。育成制度で講師スキル向上も目指せます

IT講師に応募する