ディスク・ファイル系

【Linuxの基礎知識】mount/umountとfstabの基本と応用

Linuxで外部ストレージやネットワークドライブを利用するとき、「どうやってシステムに認識させ、アクセス可能にするのか」と疑問に感じたことはありませんか。

普段は意識せず使っているファイルシステムも、裏側では必ずマウントという仕組みを経て利用できる状態になっています。

例えばUSBメモリを差し込んだ際、勝手に「/media」や「/mnt」に見慣れないディレクトリが現れるのを目にしたことがあるでしょう。

それはLinuxが内部的にmountコマンドを実行し、ファイルシステムを使えるようにした結果です。

一方で、外したいときにはumountコマンドを実行しなければならず、正しく扱わなければデータが破損する危険もあります。また、システム起動時に毎回手作業でマウントするのは非効率で、そのために用意されているのがfstabという設定ファイルです。

この記事ではmount/umountの基本からfstabを使った応用までを整理し、実務で役立つ理解を深めていきます。

mount/umountコマンドとは

Linuxにおいてファイルシステムを利用可能にするためには、マウントという操作が欠かせません。

外部ディスクやUSBメモリ、ネットワークドライブを利用するときも、必ずmountコマンドによってシステムに組み込まれ、利用可能な状態になります。

そして取り外す際にはumountコマンドを用いて安全に切断する必要があります。

これらの操作はLinux管理における基本でありながら、誤操作によるデータ破損や起動トラブルにも直結するため、正しい理解が重要です。

基本概要

mountコマンドはデバイスやパーティションをLinuxのディレクトリツリーに接続する役割を持ちます。逆にumountコマンドは接続されたファイルシステムを切り離すために使用します。例えばUSBメモリを接続した場合、自動的にマウントされることもありますが、手動で管理することでより柔軟な制御が可能です。

mount /dev/sdb1 /mnt/usb

上記の例では、USBメモリを/mnt/usbにマウントします。

umount /mnt/usb このコマンドで安全にアンマウントできます。

利用できる情報と機能

mountコマンドは、現在どのファイルシステムがどこにマウントされているかを確認する機能も備えています。オプションなしで実行すると、システム全体のマウント状況を一覧表示できます。

mount

出力例:

/dev/sda2 on / type xfs (rw,relatime)
/dev/sdb1 on /mnt/usb type ext4 (rw,nosuid,nodev)

この出力により、対象デバイス、マウントポイント、ファイルシステムの種類、利用オプションなどを確認できます。

利用するメリット

mount/umountコマンドを適切に理解して利用することで、以下のようなメリットがあります。

メリット説明
柔軟な管理必要に応じて任意の場所にファイルシステムをマウント可能
安全な取り外しumountによってデータ破損を防ぎつつデバイスを切断できる
システム状態の把握現在のマウント状況を一覧で確認できる
応用的な利用ネットワークストレージや仮想ディスクの管理に応用可能

このようにmount/umountは、Linuxの基盤を支える重要な仕組みであり、日常的なシステム運用から障害対応まで幅広く活用されています。

mount/umountコマンドの導入手順

mountおよびumountコマンドは、多くのLinuxディストリビューションにおいて標準でインストールされています。

そのため追加作業を行わなくても利用可能なケースがほとんどです。

ただし、最小構成で導入した環境やカスタム環境では、関連パッケージを手動でインストールする必要があります。

ここでは導入確認とインストール方法、そして基本的な使い方を整理します。

パッケージのインストール方法

RHEL系ディストリビューションでは、mount/umountコマンドはutil-linuxパッケージに含まれています。インストールされているかどうかを確認するには以下のコマンドを実行します。

rpm -q util-linux

出力例:

util-linux-2.37.4-15.el9.x86_64

もし未インストールの場合はdnfを使って導入します。

sudo dnf install -y util-linux

これにより、mountとumountコマンドを含む一連の基本ツールが利用可能になります。

mount/umountコマンドの基本的な使い方

実際の運用現場でストレージを扱うと、USBメモリや外付けディスク、NFS共有などをマウントする場面が頻繁にあります。

特にサーバー管理では、誤ったマウントやアンマウント操作がシステム障害やデータ破損につながるため、確実に理解しておく必要があります。

ここでは、現場でよく使うオプションや状況に即した利用例を紹介します。

運用で利用頻度の高いオプションをまとめました。デバッグや制約付きマウントを行う場面で役立ちます。

オプション用途
-tファイルシステムの種類を指定するときに使います。誤認識を避けるため明示することがあります。
-o ro読み取り専用でマウントします。ログ解析など、書き込みを避けたい時に利用します。
-o rw書き込み可能でマウントします。通常はこちらですが、障害対応時は慎重に使います。
-o noexecマウント先でバイナリ実行を禁止します。セキュリティ強化のために用いられます。
-afstabに記載されたすべてをまとめてマウントします。起動時に自動で処理されます。

基本的なマウントとアンマウント

現場で最も多いのは、外部ストレージを一時的に接続するケースです。事前にマウントポイントを用意してからマウントします。

sudo mkdir /mnt/usb
sudo mount /dev/sdb1 /mnt/usb

マウント後、内容を確認するとファイルが参照できるようになります。

ls /mnt/usb

利用後は必ずアンマウントしてから取り外します。これを怠るとキャッシュが残り、ファイル破損につながります。

sudo umount /mnt/usb

条件付き指定の利用方法

障害調査などで「読み込みだけ行いたい」場合は、読み取り専用でマウントします。これにより、誤って書き込みを行うリスクを排除できます。

sudo mount -o ro /dev/sdb1 /mnt/usb

この方法は不具合発生時のディスク調査やフォレンジック対応で多用されます。

詳細オプションによる確認

マウント状況を調べるとき、オプションを付けて確認すると便利です。

mount -v

出力例:

/dev/sda2 on / type xfs (rw,relatime)
/dev/sdb1 on /mnt/usb type ext4 (ro,nosuid,nodev)

このように「どのデバイスが、どこに、どんなオプションで」接続されているかを明確に把握できます。

システム全体のマウント状況確認

システム全体の状態を確認するには、オプションなしでmountを実行します。障害対応時や運用監視で必ず確認するポイントです。

mount

出力例:

/dev/sda2 on / type xfs (rw,relatime)
tmpfs on /run type tmpfs (rw,nosuid,nodev)
/dev/sdb1 on /mnt/usb type ext4 (rw,nosuid,nodev)

ここで不要なデバイスが残っていないか、想定外のオプションでマウントされていないかを確認することで、運用上のリスクを減らすことができます。

fstabの役割と基本構造

Linuxサーバーでは、一度マウントしたディスクやネットワークストレージは、再起動後も自動的に利用できる仕組みになっています。

実際には、その仕組みを担っているのが「/etc/fstab」です。

システムは起動時にfstabの内容を読み込み、記載されたディスクや共有領域を自動的にマウントすることで、毎回同じ環境を再現しているのです。

このファイルは1行ごとに「どのデバイスを、どこに、どんな条件でマウントするか」を定義する形式になっており、6つのフィールドで構成されています。

項目内容
デバイス名またはUUID対象ディスクやパーティションの識別子。UUIDを使うことで再起動時も安定して認識されます。
マウントポイント接続先のディレクトリ。例: /, /home, /mnt/usb
ファイルシステムタイプext4、xfs、nfsなどの種類
マウントオプションrw(読み書き可)、ro(読み取り専用)、noexecなどを指定
dumpバックアップ対象かどうか。通常は0
fsck起動時のファイルシステムチェック順序。rootは1、それ以外は2か0

このようにfstabは、単なる設定ファイルではなく「再起動後にシステムがどのディスクをどこにマウントするか」を保証する役割を担っています。だからこそ、fstabを正しく理解して編集することが運用上の安定性に直結します。

以下は「/etc/fstab」に記載するサンプルです。

ルートディスク、ユーザー領域、外部USBストレージ、NFS共有を自動マウントする設定をコメント付きで示しています。

# / (root) は xfs で管理
UUID=1111-AAAA / xfs defaults 0 1

# /home は ext4 で永続化
UUID=2222-BBBB /home ext4 defaults 0 2

# 外部 USB ストレージ(必要に応じて接続)
UUID=3333-CCCC /mnt/usb ext4 rw,noexec 0 0

# NFS サーバーからの共有領域をマウント
server:/share /mnt/nfs nfs defaults,_netdev 0 0

このように、UUID指定によるローカルディスク、外部ディスク、ネットワークストレージを組み合わせて記述できます。fstabは単なる設定ファイルではなく、サーバー起動時の安定性に直結するため、検証した内容だけを反映させることが大切です。

fstabを編集することで、サーバー再起動後も自動的にストレージがマウントされます。運用ではバックアップ領域やログ保存用ディスクを常に利用可能にする目的で設定されます。

UUIDの確認

fstabを編集する前に、対象ディスクのUUIDを確認する必要があります。UUIDを使うことで、デバイス名(/dev/sdb1 など)が再起動時に変わっても安定してマウントできます。確認にはblkidコマンドを利用します。

sudo blkid

【出力例:】

/dev/sda1: UUID="1111-AAAA" TYPE="xfs" PARTUUID="aaa-bbb"
/dev/sda2: UUID="2222-BBBB" TYPE="ext4" PARTUUID="ccc-ddd"
/dev/sdb1: UUID="3333-CCCC" TYPE="ext4" PARTUUID="eee-fff"
/dev/nvme0n1p1: UUID="4444-DDDD" TYPE="vfat" PARTUUID="ggg-hhh"

このように、デバイス名(/dev/sda1など)、UUID、ファイルシステムの種類(TYPE)、さらにPARTUUIDが一覧で出力されます。fstabに記載する際は、この中のUUIDを利用するのが一般的です。

次にfstabを編集してUUIDを記載します。

sudo vi /etc/fstab

【出力例:】

UUID=1234-5678 /mnt/usb ext4 defaults 0 0

編集後に設定を反映するには以下を実行します。

sudo mount -a

エラーがなければ、再起動後も自動でマウントされるようになります。

UUID(Universally Unique Identifier)は、ディスクやパーティションを一意に識別するための番号です。/dev/sda1 のようなデバイス名は再起動や接続順序で変わることがありますが、UUIDは基本的に変わりません。そのためfstabでデバイスを指定する際にはUUIDを使うことで、安定して確実に同じディスクを参照できるようになります。

fstab編集時の注意点

fstabの編集を誤ると、システムが起動できなくなるケースがあります。特に存在しないデバイスやマウントポイントを記述した場合、起動時にカーネルが処理を止めてしまうことがあります。そのため、以下の点に注意する必要があります。

注意点詳細
UUIDを利用/dev/sdb1のようなデバイス名は再起動時に変わる可能性があるため、必ずUUIDで指定します。
noautoオプション外部ディスクなど常時接続しないものは「noauto」を設定し、手動でmount -aを実行できるようにします。
エントリ検証編集後は必ず「sudo mount -a」でテストを行い、エラーがないか確認します。
バックアップ編集前に必ず/etc/fstabをバックアップし、起動不能時に復旧できるようにします。

このようにfstabは便利で強力ですが、同時にリスクも伴います。特に本番サーバーでは軽率に編集せず、検証環境で試した上で導入することが重要です。

initramfsとfstabの違い

Linuxが起動するとき、最初に使われるのは「initramfs」と呼ばれる初期RAMディスクです。

これはシステムがまだディスクを認識できない段階で最低限の環境を用意するための仕組みで、ここに含まれるスクリプトやドライバによってrootファイルシステムが探され、マウントされます。たとえばUUIDやラベルを頼りにrootパーティションを探し、必要に応じて暗号化ディスクの解除やLVMの初期化も行います。

ここで重要なのは、この時点ではまだ「/etc/fstab」は参照されていないという点です。initramfsはあくまで「rootを起動できる状態にする」ことが役割であり、ユーザーが編集するfstabの内容がコピーされるわけではありません。

一方、/etc/fstabが読み込まれるのはrootファイルシステムがすでにマウントされ、通常の環境に切り替わった後です。

この段階でfstabに記述された情報が参照され、/homeや/mnt/usb、NFS共有といった追加の領域が自動的にマウントされます。つまりfstabは「起動後に利用する全てのストレージのマウントルール」を定義しているファイルという位置づけです。

混同しやすいのは、「initramfsがrootをマウントする仕組み」と「fstabが追加ディスクを管理する仕組み」は全く別物であるという点です。

fstabの内容がそのままinitramfsにコピーされることはありません。

initramfsはカーネルと一緒に作られる独立した仕組みであり、fstabはrootが立ち上がった後の世界で効力を持つ設定ファイルです。

この違いを理解しておくことで、起動時に「fstabを間違えたせいでrootがマウントできない」と誤解することを避けられます。

fstabによる応用・拡張

fstabは単なる仕組みの説明だけではなく、実務の中でどう活かすかが重要です。

システム管理者がよく直面するのは「再起動後も同じストレージを確実に使えるようにしたい」「障害時に安全にディスクを調査したい」「外部ストレージやNFS共有を用途に合わせて制御したい」といった場面です。

ここでは具体的な応用例を整理します。

USBストレージの制御

USBディスクを常時接続せず、必要なときだけ利用したいケースがあります。

この場合はfstabに「noauto」を指定しておき、普段はマウントされないように設定します。必要になったときに手動でmountコマンドを実行すれば、安全に利用できます。

UUID=3333-CCCC /mnt/usb ext4 rw,noauto 0 0

このようにしておけば、外付けストレージを抜き差ししても起動時のトラブルを防げます。

fstabに記載しておく利点

fstabにあらかじめ設定を記載しておくと、単に「再起動後も自動でマウントされる」だけでなく、管理の手間を大幅に減らすことができます。

例えばfstabに記載しない場合、毎回以下のようにフルコマンドを入力する必要があります。

sudo mount -t nfs -o defaults,_netdev server:/share /mnt/nfs

一方、fstabに設定を残しておけば、手動マウント時もコマンドはシンプルに次の1行で済みます。

sudo mount /mnt/nfs

fastabを使う利点

  • 再起動後に自動でマウントされること
  • 手動で再マウントが必要な場合でも「mount /マウントポイント」だけで済むこと
  • オプションをいちいち思い出して打ち込む必要がなくなること

これによって運用時の入力ミスや作業時間を削減でき、特にNFSやUSBストレージのように接続が不安定な領域を扱う際に効果を発揮します。

ログ専用ディスクの利用

システム運用では、ログが肥大化して /var/log が root 領域と同じパーティションにあると、root 領域を圧迫しシステム全体が停止する危険があります。この問題を避けるには、/var/log を専用パーティションや専用ディスクに分ける方法が有効です。

インストール時に分割する以外にも、LVMで既存ディスクから領域を切り出して割り当てることが可能です。

# 空き領域から論理ボリュームを作成
sudo lvcreate -L 10G -n lv_log vg0

# 作成した領域をext4でフォーマット
sudo mkfs.ext4 /dev/vg0/lv_log

# マウントポイントを作成
sudo mkdir /var/log

UUIDを確認し、fstabに書き込みます。

sudo blkid /dev/vg0/lv_log

【出力例:】

/dev/vg0/lv_log: UUID="abcd-1234" TYPE="ext4"

fstabへの追記例:

UUID=abcd-1234 /var/log ext4 defaults 0 2

設定を反映し、動作確認を行います。

sudo mount -a df -h | grep log

これで再起動後も /var/log は専用領域に自動的にマウントされます。

仮にログ領域が満杯になっても root 領域が影響を受けないため、システム全体が停止するリスクを回避できます。

NFS共有の自動マウント

複数サーバーでファイルを共有する場合、NFSのマウントをfstabに記述しておけば起動時に自動で接続されます。ただしネットワークが立ち上がる前に処理されると失敗するため、「_netdev」オプションを併用します。

server:/share /mnt/nfs nfs defaults,_netdev 0 0

これにより、ネットワークが利用可能になった段階で確実にマウントされ、ファイル共有が安定します。

「_netdev」はfstabで利用できるマウントオプションのひとつで、ネットワーク経由で接続するストレージに対して指定します。NFSやCIFSなどをfstabに記載する際、このオプションを付けておくと、システムはネットワークが有効になるまでマウント処理を遅らせてくれます。もし_netdevを指定しないと、ネットワークがまだ利用できない段階でマウントを試みて失敗し、起動時にエラーメッセージが出ることがあります。つまり_netdevは「ネットワーク準備が整ってからマウントを行う」ための制御オプションです。

障害調査用の読み取り専用マウント

障害時にディスクを誤って書き換えないよう、fstabに「ro」を設定して読み取り専用でマウントすることがあります。

フォレンジック調査や破損したディスクの調査時に有効です。

UUID=5555-EEEE /mnt/recovery ext4 ro 0 0

このように設定しておけば、調査中に誤操作でファイルを上書きするリスクを排除できます。

フォレンジック調査とは、システム障害や不正アクセスが発生した際に、証拠保全や原因究明のためにディスクやログを解析する作業を指します。この調査では「元のデータを一切改変しない」ことが最も重要です。そのためfstabで「ro(読み取り専用)」を指定してマウントし、調査対象のディスクに書き込みが発生しないようにします。誤ってファイルを更新してしまうと証拠が失われたり、調査結果が信頼できなくなるため、読み取り専用マウントはフォレンジック作業の基本手順のひとつとされています。

実践的な活用例

mount/umountコマンドとfstabの基本は理解しやすいですが、実際の現場ではそれだけでは解決できないケースが数多くあります。

ここではsystemdを利用した柔軟な自動マウント制御や、アンマウントできないときの具体的な対応方法など、実務で役立つテクニックを紹介します。

systemdでの自動マウント制御

従来はfstabに書いておくのが一般的でしたが、systemdが導入されている環境では「x-systemd.automount」オプションを使うとより柔軟に制御できます。

これにより、起動時に無理にマウントせず、最初のアクセス時に自動的にマウントされる仕組みを作れます。

fstab記述例:

server:/share /mnt/nfs nfs defaults,_netdev,x-systemd.automount 0 0

この方法なら、ネットワークが遅延していてもシステム起動に影響せず、必要になったときだけ自動でマウントされます。NFSやNASのように接続が不安定な環境では特に有効です。

x-systemd.automountとは

「x-systemd.automount」は、fstabに記載するマウントオプションの一つで、systemd環境で利用できます。このオプションを付けると、起動時に即座にマウントするのではなく、最初にアクセスがあったタイミングで自動的にマウントされる仕組みになります。

通常のfstab設定では、起動時に対象のデバイスやネットワークドライブが存在しないとマウントに失敗し、起動プロセスが遅延したりエラーを出す原因になります。しかしx-systemd.automountを付けることで、接続が遅いNFSサーバーや一時的に抜けている外部ディスクがあっても、システムの起動は問題なく進みます。

つまり「起動を止めない」「必要なときにだけマウントする」という柔軟な挙動を実現するためのオプションがx-systemd.automountです。

アンマウントできない場合の強制解除

運用中によく遭遇するのが「umountを実行してもデバイスが使用中で解除できない」ケースです。このときは、そのデバイスを掴んでいるプロセスを特定する必要があります。

sudo umount /mnt/usb
umount: /mnt/usb: target is busy.

このエラーは、そのディレクトリを利用中のプロセスが存在することを意味します。

経験的に、「umount: /mnt/usb: target is busy.」出力時の最も多い原因は、自分自身のシェルがumount対象ディレクトリをカレントディレクトリとしている場合です。

この場合は、単純に別のディレクトリへ移動すれば解決します。

cd /
sudo umount /mnt/usb

それ以外にも、vimなどのエディタでファイルを開いたままにしていたり、バックアップ処理が実行中であるといったケースもあります。どのプロセスが利用しているのかを特定するには、lsofやfuserを使います。

sudo lsof +D /mnt/usb

【出力例:】

vim 1234 user /mnt/usb/config.txt

特定したプロセスを終了させればアンマウントできます。どうしても解除したい場合はfuserを強制モードで使います。

sudo fuser -km /mnt/usb
sudo umount -f /mnt/usb

このようにプロセスを明示的に解放してからumountするのが、安全かつ確実な方法です。

マウント障害の調査ポイント

mountコマンドで失敗した場合は、単純な書式ミス以外にもハードウェアやネットワークの要因があります。原因を切り分けるにはdmesgやjournalctlを確認します。

dmesg | tail -n 20
journalctl -xe | grep mount

これにより「ファイルシステムが壊れている」「ネットワークが未接続」といった具体的な理由が把握できます。fstabの設定だけを見直しても解決しないトラブルでは、こうしたログ調査が欠かせません。

運用上の注意点

mount/umountやfstabは便利ですが、設定や運用を誤るとシステム障害やセキュリティリスクにつながります。

ここでは実際の運用で注意すべきポイントを整理します。

マウント失敗時の影響

マウントが失敗すると、そのディスクや共有領域に依存するアプリケーションが動作しなくなります。例えば、ログ保存先やデータベースのディレクトリがマウントできなければ、サービスが起動しても書き込みエラーが発生します。

トラブルシュートの際は、まず現在のマウント状況を確認するのが基本です。

mount -v

【出力例:】

/dev/sda2 on / type xfs (rw,relatime)
/dev/sdb1 on /mnt/data type ext4 (rw,nosuid,nodev)

サービス障害の原因がマウント失敗に起因することは少なくないため、依存ディレクトリは常に監視しておくことが重要です。

設定ミスによるシステム起動障害

fstabの記述ミスは、システムが起動できなくなる典型的な原因です。誤ったUUIDや存在しないデバイスを指定すると、起動時にマウント処理が失敗し、リカバリモードに落ちてしまいます。

変更前には必ずバックアップを取っておき、編集後には次のコマンドで確認します。

sudo cp /etc/fstab /etc/fstab.backup
sudo mount -a

【出力例:】

mount: /mnt/usb: special device UUID=xxxx not found.

このようにエラーが出た時点で修正できれば、再起動不能を未然に防げます。特に商用環境では、fstab編集は計画的に行う必要があります。

セキュリティと権限管理

マウント設定を誤ると、意図せず権限を緩めてしまうことがあります。たとえば外部ディスクを誰でも書き込み可能にマウントすると、不正利用や情報漏洩の原因になります。

代表的な制御オプションを以下に整理します。

オプション意味と利用シーン
noexecマウント先でバイナリ実行を禁止。USB経由のマルウェア対策。
nosuidSUID/SGIDの動作を無効化。権限昇格の防止。
nodevデバイスファイルを無効化。不要なデバイスアクセスを防ぐ。

UUID=3333-CCCC /mnt/usb ext4 rw,noexec,nosuid,nodev 0 0

このようにfstabに明示的に記載しておけば、利便性を損なわずにセキュリティを高められます。運用では常に「誰が何を利用するか」を考えた設定を心掛けることが重要です。

まとめ

mount/umountコマンドとfstabは、Linuxサーバーを運用する上で欠かせない仕組みです。手動でのマウント操作は一時的な利用や検証作業に役立ち、fstabへの記述は起動時に自動的に安定した環境を提供します。さらにsystemdの拡張オプションやセキュリティ設定を組み合わせれば、柔軟で安全性の高い運用が可能となります。

一方で、設定ミスや依存関係の把握不足は、サービス停止やシステム起動障害といった重大なトラブルにつながります。そのため、編集前のバックアップや変更後の検証は必ず実施し、障害時の切り分け手順をあらかじめ確認しておくことが重要です。

今回解説した基本操作、fstabによる自動化、systemdによる制御、トラブルシュート方法を理解しておけば、日常運用から障害対応まで幅広く対応できるようになります。実務の現場では「なぜその設定を行うのか」という視点を常に持ち、運用リスクを最小限に抑えることが求められます。

よく読まれている記事

1

「私たちが日々利用しているスマートフォンやインターネット、そしてスーパーコンピュータやクラウドサービス――これらの多くがLinuxの力で動いていることをご存じですか? 無料で使えるだけでなく、高い柔軟 ...

2

Linux環境でよく目にする「Vim」という名前。サーバーにログインしたら突然Vimが開いてしまい、「どうやって入力するの?」「保存や終了ができない!」と困った経験をした人も多いのではないでしょうか。 ...

3

ネットワーク技術は現代のITインフラにおいて不可欠な要素となっています。しかし、ネットワークを深く理解するためには、その基本となる「プロトコル」と「レイヤ」の概念をしっかり把握することが重要です。 こ ...

4

この記事は、Linuxについて勉強している初心者の方向けに「Shellスクリプト」について解説します。最後まで読んで頂けましたら、Shellスクリプトはどのような役割を担っているのか?を理解出来るよう ...

5

Javaは世界中で広く使われているプログラミング言語であり、特に業務システムやWebアプリケーションの開発において欠かせない存在です。本記事では、初心者向けにJavaの基礎知識を網羅し、環境構築から基 ...

-ディスク・ファイル系