umountコマンドとは?Linuxでマウントを安全に解除する方法

Linux

LinuxでマウントしたディスクやUSBメモリ、ISOファイルなどを安全に解除したいときは、umountコマンドを使用します。

前回解説したmountコマンドは、ファイルシステムをディレクトリへ接続するコマンドでした。

一方、umountコマンドは、マウント済みのファイルシステムをディレクトリツリーから切り離すためのコマンドです。

この記事では、Linux初心者でも実際に操作できるように、umountコマンドの基本構文、マウントポイント指定・デバイス指定での解除方法、USBメモリやISOファイルの解除、target is busyエラーの対処法、lsoffuserで使用中プロセスを確認する方法まで実例付きで解説します。

  1. umountコマンドとは
  2. コマンド名はunmountではなくumount
  3. umountコマンドの基本構文
  4. 現在のマウント状態を確認する方法
  5. マウントポイントを指定して解除する方法
  6. デバイス名を指定して解除する方法
  7. USBメモリを安全に取り外す方法
  8. ISOファイルのマウントを解除する方法
  9. bindマウントを解除する方法
  10. tmpfsを解除する方法
  11. umountコマンドの主なオプション
  12. target is busyエラーとは
  13. まずカレントディレクトリを確認する
  14. lsofで使用中のプロセスを確認する方法
  15. fuserで使用中のプロセスを確認する方法
  16. 使用中プロセスを終了してから解除する方法
  17. 遅延アンマウントする方法
  18. 強制アンマウントする方法
  19. 読み取り専用で再マウントを試みる方法
  20. すべての対象をまとめて解除する方法
  21. /etc/fstabとumountの関係
  22. アンマウント後にマウントポイントの中身が消えたように見える理由
  23. umount・mount・df・lsblkの違い
  24. umountコマンドでよくあるエラー
    1. target is busy
    2. not mounted
    3. no mount point specified
    4. must be superuser to unmount
    5. device is busy
  25. よくある質問
    1. umountコマンドは何に使いますか?
    2. unmountではなくumountなのですか?
    3. マウントポイントとデバイス名のどちらを指定すればよいですか?
    4. USBメモリを抜く前にumountは必要ですか?
    5. target is busyが出たらどうすればよいですか?
    6. umount -lは何ですか?
    7. umount -fは使ってもよいですか?
    8. アンマウントしたらデータは消えますか?
    9. UbuntuやCentOS Streamでも使えますか?
  26. まとめ

umountコマンドとは

umountは、Linuxでマウント済みのファイルシステムを解除するためのコマンドです。

たとえば、/dev/sdb1/mnt/dataにマウントしている場合、次のように解除できます。

sudo umount /mnt/data

これにより、/mnt/dataから/dev/sdb1の中身へアクセスできなくなります。

主に次のような場面で使います。

  • USBメモリや外部ディスクを取り外す前
  • 一時的にマウントしたディスクを解除したいとき
  • ISOファイルのマウントを解除したいとき
  • tmpfsやbindマウントを解除したいとき
  • マウント設定の確認や変更を行うとき
  • サーバーでディスク交換やマウント先変更を行う前

コマンド名はunmountではなくumount

初心者が間違えやすい点として、Linuxのコマンド名はunmountではなくumountです。

umount

nが入らないため注意してください。

次のように実行すると、環境によってはコマンドが見つからない場合があります。

unmount /mnt/data

正しくは次の形です。

sudo umount /mnt/data

umountコマンドの基本構文

umountコマンドの基本構文は次のとおりです。

umount [オプション] マウントポイントまたはデバイス

実際には管理者権限が必要になることが多いため、sudoを付けて実行します。

sudo umount マウントポイント

または、デバイス名を指定して解除できます。

sudo umount デバイス名

現在のマウント状態を確認する方法

アンマウントする前に、現在どこにマウントされているか確認しましょう。

分かりやすいのはlsblkです。

lsblk

実行結果の例です。

NAME   SIZE TYPE MOUNTPOINTS
sda     50G disk
├─sda1   1G part /boot
└─sda2  49G part /
sdb    100G disk
└─sdb1 100G part /mnt/data

この例では、/dev/sdb1/mnt/dataにマウントされています。

df -hでも確認できます。

df -h

よりマウント状態を詳しく見たい場合は、findmntも便利です。

findmnt

マウントポイントを指定して解除する方法

最もよく使う方法は、マウントポイントを指定して解除する方法です。

sudo umount /mnt/data

解除できたか確認します。

lsblk

実行結果の例です。

sdb    100G disk
└─sdb1 100G part

MOUNTPOINTSから/mnt/dataが消えていれば、アンマウントされています。

デバイス名を指定して解除する方法

マウントポイントではなく、デバイス名を指定して解除することもできます。

sudo umount /dev/sdb1

どちらの指定でも解除できますが、初心者にはマウントポイントを指定する方法が分かりやすいです。

対象を間違えないように、事前にlsblkで確認してから実行しましょう。

USBメモリを安全に取り外す方法

USBメモリや外部ディスクを取り外す前には、必ずアンマウントします。

まずマウント状態を確認します。

lsblk

例として、USBメモリが/media/user/USBにマウントされている場合は、次のように解除します。

sudo umount /media/user/USB

解除後、lsblkでマウントポイントが消えていることを確認します。

lsblk

アンマウントせずに取り外すと、書き込み途中のデータが壊れる可能性があります。

ISOファイルのマウントを解除する方法

ISOファイルを/mnt/isoへマウントしている場合も、通常のマウントと同じように解除できます。

sudo umount /mnt/iso

確認します。

findmnt /mnt/iso

何も表示されなければ、マウントは解除されています。

bindマウントを解除する方法

mount --bindで作成したbindマウントも、umountで解除できます。

たとえば、次のようにbindマウントしていた場合です。

sudo mount --bind /var/log /mnt/logs

解除するには、マウント先を指定します。

sudo umount /mnt/logs

元の/var/logが削除されるわけではありません。

解除されるのは、/mnt/logsから/var/logを見る接続だけです。

tmpfsを解除する方法

tmpfsを一時的にマウントしていた場合も、同じように解除できます。

sudo umount /mnt/tmp

tmpfsはメモリ上の一時的なファイルシステムです。

アンマウントすると、その中に保存していたデータは基本的に使えなくなるため注意してください。

umountコマンドの主なオプション

オプション 説明
-a /etc/fstabなどに基づいて複数のファイルシステムを解除する
-l 遅延アンマウントを行う
-f 強制アンマウントを行う
-r 解除に失敗した場合、読み取り専用で再マウントを試みる
-v 詳細情報を表示する
-t 種類 対象のファイルシステム種類を指定する
-O オプション 指定したマウントオプションを持つものを対象にする
--help ヘルプを表示する
--version バージョン情報を表示する

通常の解除では、まずオプションなしのsudo umount マウントポイントを使います。

-l-fは便利ですが、状況を理解せずに使うとトラブルの原因になるため注意しましょう。

target is busyエラーとは

umountでよく出るエラーがtarget is busyです。

umount: /mnt/data: target is busy.

これは、対象のマウントポイントを何らかのプロセスが使用中であることを意味します。

たとえば、次のような場合に発生します。

  • ターミナルの現在位置がマウント先ディレクトリ内にある
  • アプリケーションがマウント先のファイルを開いている
  • ログ出力先として使用中
  • 別のプロセスがそのディレクトリを参照している
  • シェルやエディターが対象ディレクトリ内のファイルを開いている

まずカレントディレクトリを確認する

意外と多い原因が、自分のターミナルがマウント先の中にいるケースです。

pwd

もし/mnt/data配下にいる場合は、別の場所へ移動します。

cd ~

その後、もう一度アンマウントします。

sudo umount /mnt/data

lsofで使用中のプロセスを確認する方法

どのプロセスがマウント先を使用しているか確認したい場合は、lsofを使います。

sudo lsof +D /mnt/data

実行結果の例です。

COMMAND  PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
bash    1234 user  cwd    DIR   8,17     4096    2 /mnt/data
vim     2345 user    3r   REG   8,17     1024   10 /mnt/data/test.txt

この例では、bashvim/mnt/dataを使用しています。

不要なプロセスであれば終了し、必要な作業中であれば保存して閉じてからアンマウントします。

fuserで使用中のプロセスを確認する方法

fuserでも、マウントポイントを使用しているプロセスを確認できます。

sudo fuser -vm /mnt/data

実行結果の例です。

                     USER        PID ACCESS COMMAND
/mnt/data:           user       1234 ..c..  bash
                     user       2345 F....  vim

fuserは、対象を使っているプロセスを簡潔に確認したいときに便利です。

使用中プロセスを終了してから解除する方法

使用中のプロセスが不要であることを確認できた場合は、終了してからアンマウントします。

まずプロセスを確認します。

sudo fuser -vm /mnt/data

通常は、対象のアプリケーションやターミナルを閉じるのが安全です。

どうしてもコマンドで終了する場合は、PIDを指定して終了します。

sudo kill 2345

それでも終了しない場合にkill -9を使うこともありますが、データ破損や処理中断のリスクがあるため慎重に扱ってください。

sudo kill -9 2345

プロセスが終了したら、再度アンマウントします。

sudo umount /mnt/data

遅延アンマウントする方法

-lオプションを使うと、遅延アンマウントを行えます。

sudo umount -l /mnt/data

遅延アンマウントでは、マウントポイントを現在の名前空間から切り離し、使用中の参照がなくなったタイミングで実際に解除されます。

すぐに見た目上は外したいが、まだ使用中のプロセスが残っている場合に使われることがあります。

ただし、原因となるプロセスを確認せずに多用するのは避けましょう。

強制アンマウントする方法

-fオプションを使うと、強制アンマウントを試みます。

sudo umount -f /mnt/data

強制アンマウントは、主にNFSなどのネットワークファイルシステムが応答しない場合に使われることがあります。

通常のローカルディスクでは、まず使用中プロセスを確認してから解除するのが基本です。

-fは最後の手段として考えましょう。

読み取り専用で再マウントを試みる方法

-rオプションを使うと、アンマウントに失敗した場合に読み取り専用で再マウントを試みます。

sudo umount -r /mnt/data

ファイルシステムの安全確保を目的に使われることがあります。

ただし、通常の解除ではあまり頻繁に使うオプションではありません。

すべての対象をまとめて解除する方法

-aオプションを使うと、複数のファイルシステムをまとめてアンマウントできます。

sudo umount -a

ただし、システムに必要なファイルシステムまで対象になる可能性があるため、通常の作業で安易に使うべきではありません。

特定の種類だけ対象にしたい場合は、-tを組み合わせることがあります。

sudo umount -a -t nfs

初心者は、基本的にマウントポイントを個別に指定して解除する方法を使いましょう。

/etc/fstabとumountの関係

/etc/fstabに設定されているファイルシステムでも、手動でアンマウントできます。

sudo umount /data

ただし、/etc/fstabに設定が残っている場合、再起動時やmount -a実行時に再びマウントされることがあります。

自動マウント自体をやめたい場合は、/etc/fstabの設定も見直す必要があります。

編集前には必ずバックアップを取りましょう。

sudo cp /etc/fstab /etc/fstab.bak

アンマウント後にマウントポイントの中身が消えたように見える理由

マウントしている間、マウントポイントのディレクトリには、マウントしたファイルシステムの中身が表示されます。

アンマウントすると、その接続が外れるため、マウント前のディレクトリの中身に戻ります。

つまり、マウントしていたディスクのデータが削除されたわけではありません。

もう一度マウントすれば、ディスク内のデータを確認できます。

sudo mount /dev/sdb1 /mnt/data

umount・mount・df・lsblkの違い

コマンド 主な用途
mount ファイルシステムをマウントする
umount マウントを解除する
df マウント済みファイルシステムの空き容量を確認する
lsblk ディスク・パーティション構成を確認する
findmnt 現在のマウント状態を見やすく確認する

マウント作業では、次のような流れで使うと分かりやすいです。

lsblk
sudo mount /dev/sdb1 /mnt/data
df -h /mnt/data
sudo umount /mnt/data

umountコマンドでよくあるエラー

target is busy

umount: /mnt/data: target is busy.

対象のマウントポイントを使用中のプロセスがあります。

まず、自分がそのディレクトリ内にいないか確認します。

pwd
cd ~

それでも解除できない場合は、lsoffuserで確認します。

sudo lsof +D /mnt/data
sudo fuser -vm /mnt/data

not mounted

umount: /mnt/data: not mounted.

指定した場所はマウントされていません。

現在のマウント状態を確認します。

findmnt /mnt/data
lsblk

no mount point specified

umount: no mount point specified.

解除対象を指定していません。

マウントポイントまたはデバイス名を指定してください。

sudo umount /mnt/data

must be superuser to unmount

umount: only root can unmount /mnt/data

権限が不足しています。

通常はsudoを付けて実行します。

sudo umount /mnt/data

device is busy

umount: /dev/sdb1: device is busy.

target is busyと同様に、対象デバイスを使用中のプロセスがあります。

マウントポイントを確認し、使用中プロセスを調べます。

lsblk
sudo fuser -vm /mnt/data

よくある質問

umountコマンドは何に使いますか?

マウント済みのディスク、USBメモリ、ISOファイル、tmpfsなどをLinuxのディレクトリツリーから切り離すために使います。

unmountではなくumountなのですか?

はい。Linuxのコマンド名はumountです。unmountではないため注意してください。

マウントポイントとデバイス名のどちらを指定すればよいですか?

どちらでも指定できますが、初心者にはマウントポイントを指定する方法が分かりやすいです。

sudo umount /mnt/data

USBメモリを抜く前にumountは必要ですか?

はい。書き込み途中のデータを保護するため、取り外す前にアンマウントするのが基本です。

target is busyが出たらどうすればよいですか?

対象を使用中のプロセスがあります。まずcd ~で別ディレクトリへ移動し、それでも解除できない場合はlsoffuserで確認します。

sudo lsof +D /mnt/data
sudo fuser -vm /mnt/data

umount -lは何ですか?

遅延アンマウントです。すぐにマウントポイントを切り離し、使用中の参照がなくなったタイミングで実際に解除されます。ただし、原因確認なしに多用するのは避けましょう。

umount -fは使ってもよいですか?

強制アンマウントです。主にNFSなどが応答しない場合に使われます。通常のローカルディスクでは、まず使用中プロセスを確認するのが基本です。

アンマウントしたらデータは消えますか?

いいえ。アンマウントは接続を解除するだけで、ディスク内のデータを削除する操作ではありません。

UbuntuやCentOS Streamでも使えますか?

はい。Ubuntu、Debian、CentOS Stream、Rocky Linux、AlmaLinuxなど、多くのLinuxディストリビューションで利用できます。

まとめ

umountコマンドは、Linuxでマウント済みのファイルシステムを安全に解除するためのコマンドです。

基本的な使い方は次のとおりです。

sudo umount /mnt/data

デバイス名を指定することもできます。

sudo umount /dev/sdb1

解除前には、lsblkfindmntでマウント状態を確認しましょう。

lsblk
findmnt

target is busyが表示された場合は、対象を使用中のプロセスがあります。

sudo lsof +D /mnt/data
sudo fuser -vm /mnt/data

-l-fを使う方法もありますが、まずは使用中の原因を確認してから解除するのが安全です。

USBメモリや外部ディスクを取り外す前、ISOファイルの利用後、追加ディスクの設定変更前などは、umountで安全にマウントを解除しましょう。

コメント

タイトルとURLをコピーしました