Linuxのmountコマンドを完全解説!ファイルシステム接続の仕組みと使い方
生徒
「Linux(リナックス)を使っていて、USBメモリや新しいハードディスクを追加したとき、どうやって中身を見るんですか?」
先生
「Linuxでは、新しく接続したストレージやパーティションを使える状態にするために、mount(マウント)という操作が必要なんですよ。」
生徒
「マウントですか?Windows(ウィンドウズ)みたいに差し込んだらすぐに見れるわけじゃないんですね。」
先生
「そうですね。Linuxではファイルシステムという仕組みを、特定のディレクトリに結合させる必要があります。一見難しそうですが、仕組みがわかれば簡単ですよ。一緒に学習していきましょう!」
Linuxを初めて学ぶ人や、 OS・プロセス・メモリ管理・仮想マシン・コンテナの仕組みを図解で理解したい人におすすめの定番書籍です。
試して理解 Linuxのしくみを見る※ Amazonアソシエイト広告リンク
1. mountコマンドとは?
mount(マウント)コマンドは、Linuxにおいて新しいストレージデバイスやファイルシステムを、現在のディレクトリ構造の一部として組み込むための命令です。読み方はマウントといいます。
WindowsやMacなどのOS(オーエス)では、USBメモリを差し込むと自動的に「Dドライブ」や「Eドライブ」として認識されます。しかし、Linuxの根本的な考え方は「すべてはファイルである」というものです。そのため、外部接続された機器も、OSが管理している既存のフォルダ(ディレクトリ)のどこかに紐付ける必要があります。
この「デバイスとディレクトリを合体させる作業」をマウントと呼びます。逆に、使い終わったデバイスを安全に切り離す作業はumount(アンマウント)といいます。この操作を正しく行わないと、データの破損につながることもあるため、サーバー構築やインフラ管理において非常に重要な基礎知識となります。
2. ファイルシステムとマウントポイントの仕組み
Linuxを学ぶ上で欠かせないのが、ファイルシステム(読み方はファイルシステム)とマウントポイント(読み方はマウントポイント)という言葉の意味です。
ファイルシステムとは、データを管理するためのルールのことです。Linuxでよく使われるのはext4(イーエックスティーフォー)やxfs(エックスエフエス)といった形式です。一方で、マウントポイントとは、デバイスを接続する「空のディレクトリ」を指します。
例えば、外付けハードディスクの内容を「/mnt/backup」というディレクトリで見たい場合、この「/mnt/backup」がマウントポイントになります。マウントを実行すると、このフォルダを開くだけで、外付けディスクの中身にアクセスできるようになります。まるで魔法のドアを設置するようなイメージですね。
3. 現在マウントされているデバイスを確認する
まずは、自分のパソコンやサーバーで、現在どのデバイスがどこにマウントされているかを確認してみましょう。引数なしでmountコマンドを実行するだけで一覧が表示されますが、情報が多すぎる場合はdf(ディーエフ)コマンドを併用するのが一般的です。
dfコマンドは、ディスクの空き容量を確認する際にも使われます。ここでは一般ユーザーで実行してみましょう。
df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda1 20G 8.5G 11G 46% /
tmpfs 1.9G 0 1.9G 0% /dev/shm
/dev/sdb1 100G 20G 80G 20% /data
上記の実行結果の「Mounted on」という列が、マウントポイントを示しています。「/」はルートディレクトリ(読み方はルートディレクトリ)と呼ばれ、システム全体の大元です。また、/dev/sdb1というデバイスが/dataにマウントされていることがわかります。
4. mountコマンドの基本的な使い方
では、実際に手動でマウントを行う方法を見ていきましょう。マウント操作には特権が必要なため、root(ルート)ユーザー、もしくはsudo(スードゥー)コマンドを使って実行します。ここではrootユーザーによる操作例を紹介します。
書式は「mount [オプション] デバイス名 マウントポイント」となります。あらかじめ、マウント先となる空のディレクトリを作成しておく必要があります。今回は「/mnt/usb」というディレクトリを作成して、そこにデバイスを繋いでみます。
mkdir /mnt/usb
mount /dev/sdb1 /mnt/usb
ls /mnt/usb
photo.jpg document.pdf work_data.zip
これで、/dev/sdb1というストレージの中身が/mnt/usbから閲覧・編集できるようになりました。ディレクトリを作成するmkdir(エムケーディーアイアール)コマンドもセットで覚えておくと便利です。
5. umountコマンドで安全に取り外す
USBメモリなどのデバイスを抜く前には、必ずumount(アンマウント)コマンドを実行しなければなりません。マウントしたまま物理的に引き抜くと、書き込み中だったデータが消えてしまったり、ファイルシステムが壊れたりする恐れがあります。
アンマウントの際は、マウントポイントまたはデバイス名のどちらかを指定します。注意点として、そのディレクトリを誰かが使用中(カレントディレクトリにしている場合など)は「target is busy」と表示されて失敗します。必ずそのディレクトリから移動してから行いましょう。
cd /
umount /mnt/usb
df -h | grep /mnt/usb
実行後、dfコマンドなどで表示されなくなれば、安全に取り外しができる状態です。このように、Linuxでは「接続したらマウント、終わったらアンマウント」が鉄則のルールとなっています。
6. /etc/fstabによる自動マウント設定
手動で毎回マウントするのは大変ですよね。そこで、Linuxにはパソコンを起動したときに自動で特定のデバイスをマウントする仕組みがあります。それが「/etc/fstab」という設定ファイルです。読み方は、エトセ・エフエスタブといいます。
このファイルには、起動時にどのデバイスを、どの場所に、どのようなオプションでマウントするかを記述します。設定を間違えるとシステムが起動しなくなることもあるため、非常に慎重な作業が求められます。管理者はUUID(ユーユーアイディー)という、デバイス固有の識別番号を使って指定することが多いです。
cat /etc/fstab
# /etc/fstab: static file system information.
UUID=a1b2c3d4-e5f6-g7h8-i9j0 / ext4 errors=remount-ro 0 1
UUID=z9y8x7w6-v5u4-t3s2-r1q0 /data xfs defaults 0 2
この設定ファイルがあるおかげで、私たちは再起動のたびにコマンドを打つ必要がなく、いつでも決まった場所でファイルにアクセスできるのです。
7. よく使うmountのオプション知識
mountコマンドには、用途に合わせて様々なオプションが存在します。これらを使いこなすことで、より高度な管理が可能になります。特によく使われるのは「-t」や「-o」オプションです。
「-t」はファイルシステムのタイプを指定します。通常は自動で判別してくれますが、明示的に指定する場合に使います。「-o」はマウント時の詳細な振る舞いを決めます。例えば、中身を読み取るだけで、書き込みを禁止したい場合は「ro(リードオンリー:読み取り専用)」オプションを付与します。
mount -o ro /dev/sdb1 /mnt/readonly_disk
touch /mnt/readonly_disk/test.txt
touch: cannot touch '/mnt/readonly_disk/test.txt': Read-only file system
上記の例では、読み取り専用でマウントしたため、新しいファイルを作ろうとしてもエラーになります。重要なデータを誤って消したくない場合に有効なテクニックです。他にも実行権限を制限するnoexec(ノーエグゼック)などの便利な設定があります。
8. マウントできないときのトラブルシューティング
初心者の方が陥りやすいトラブルとして「マウントができない!」という現象があります。原因はいくつか考えられますが、まずはエラーメッセージをしっかり読みましょう。
一つ目は「マウントポイントが存在しない」場合です。mkdirでディレクトリを作ったか確認しましょう。二つ目は「ファイルシステムが破損している」場合です。この時はfsck(エフエスシーケー)という修復コマンドが必要になります。三つ目は「他のプロセスが使用中」であることです。
また、ネットワーク経由でフォルダを共有するNFS(エヌエフエス)や、Windowsの共有フォルダを扱うCIFS(シーアイエフエス)といったネットワークファイルシステムのマウントも可能です。これらは、クラウド環境や社内サーバーの連携で非常によく使われる技術ですので、基本のマウントをマスターした後にぜひ挑戦してみてください。
LPICレベル1の合格を目指している人や、 Linuxコマンド・シェル・ネットワーク・セキュリティの試験対策を効率よく進めたい人におすすめの定番問題集です。
Linux教科書 LPICレベル1 スピードマスター問題集を見る※ Amazonアソシエイト広告リンク
まとめ
今回の記事では、Linuxシステムを運用する上で避けて通れない「mount(マウント)コマンド」の本質とその具体的な活用方法について詳しく解説してきました。Linuxの世界では、すべてのデバイスがファイルとして扱われます。WindowsのようにUSBメモリを差し込むだけで自動認識される「プラグアンドプレイ」の裏側で、Linuxカーネル(中核)がどのような処理を行っているのか、その一端を理解いただけたのではないでしょうか。
マウント操作の重要ポイント再確認
マウントとは、ストレージデバイスのパーティションをLinuxのディレクトリツリーの特定の場所に接続することです。この接続先をマウントポイントと呼び、通常は空のディレクトリを用意します。マウントを行う際は、デバイス名(例:/dev/sdb1)とマウントポイントのパスを正確に指定する必要があります。また、マウント解除の際には、データの一貫性を保つために必ずumount(アンマウント)を行うことが、システム管理の鉄則です。
実践的な管理スキルとしてのfstab
個別のコマンド操作に慣れたら、次のステップは自動化です。/etc/fstab(エトセ・エフエスタブ)ファイルを適切に編集することで、サーバーの再起動時にも設定したストレージが自動的に利用可能になります。これは、大規模なデータベースサーバーやファイルサーバーの構築において、可用性を高めるための必須スキルです。設定時には、デバイス名が変動するリスクを避けるためにUUID(Universally Unique Identifier)を使用することが推奨されます。
応用編:書き込み制限とセキュリティ
セキュリティやデータ保護の観点から、マウントオプションを使いこなすことも重要です。例えば、読み取り専用でマウントする「ro」オプションや、バイナリファイルの実行を禁止する「noexec」オプションなどを組み合わせることで、堅牢なシステムを構築できます。下記に、実務で役立つ複数のオプションを組み合わせたサンプルコードを記載します。
# 読み取り専用かつ、デバイス上の実行ファイルの起動を禁止してマウントする例
sudo mount -o ro,noexec /dev/sdc1 /mnt/secure_data
# マウント状態の確認
mount | grep /mnt/secure_data
/dev/sdc1 on /mnt/secure_data type ext4 (ro,noexec,relatime)
このように、Linuxのファイルシステム管理をマスターすることは、インフラエンジニアやサーバー管理者への第一歩となります。基本的なコマンドから、設定ファイルによる自動化、そして安全な運用のためのオプション設定まで、一つずつ確実に身につけていきましょう。
生徒
「先生、今日の講義でマウントの仕組みがすごくよくわかりました!Linuxでは、ただ繋ぐだけじゃなくて、自分で『ここが入り口ですよ』って場所を決めてあげないといけないんですね。」
先生
「その通りです。マウントポイントという『入り口』を作ることで、初めてデバイスの中にあるデータに触れることができるようになります。理解が早いですね!」
生徒
「でも、アンマウントを忘れるとデータが壊れるかもしれないっていうのは、ちょっと怖いですね。Windowsの『安全に取り外す』と同じ意味だと考えればいいんでしょうか?」
先生
「まさにその通りです。Linuxでは、メモリ上のデータをディスクに書き込むタイミングをOSが最適化しているので、アンマウントをせずに抜くと、まだ書き込まれていないデータが消えてしまうリスクがあるんです。必ずumountを実行する癖をつけましょう。」
生徒
「わかりました!あと、/etc/fstabの設定もやってみたいです。これがあれば、毎回コマンドを打たなくて済むから、自分専用のサーバーを作るときには欠かせない設定ですよね。」
先生
「いい意気込みですね。ただし、/etc/fstabは一文字でも記述ミスをすると、システムが起動しなくなることもあるので、作業前には必ずバックアップを取るようにしてください。慎重に、かつ大胆に挑戦してみましょう!」
生徒
「はい、まずは仮想マシンで練習してから本番に挑みます。読み取り専用のオプションとかも使い分けて、安全なサーバー管理を目指します!」
先生
「素晴らしいですね。次は、ネットワーク経由で他のサーバーのディスクをマウントする、NFSやCIFSについても学んでいきましょう。活用の幅がぐんと広がりますよ。」