Linux ハードディスクをアンマウント(umount)する
ハードディスクを外すには、OSが認識しているmount状態を解除します。マウント(mount)されたハードディスクを解除するには、umountコマンドを使います。ここではumountコマンドについて解説します。
Last Update : 2013年08月17日
Linux ハードディスクをアンマウント(umount)する 項目
1. umountの書式
書式
umount デバイス名orマウントポイント
有用なオプション
オプション | 意味 |
-t タイプ | 指定したタイプのファイルシステムだけアンマウントする |
-l(小文字のL) | lazy アンマウント。対象のファイルシステムへの全ての参照がbusyでなくなった時点でアンマウントする |
デバイス名、マウントポイントはどちらかひとつをパスで指定します。
2. umountする
実際にアンマウントしてみます。
# df Filesystem 1K-ブロック 使用 使用可 使用% マウント位置 /dev/mapper/vg_sandbox1-lv_root 5716804 2668532 2757868 50% / tmpfs 510244 0 510244 0% /dev/shm /dev/sda1 495844 56502 413742 13% /boot /dev/sdb5 988180 17628 920356 2% /mnt/diskA ※ sdb5 がマウントされている # umount /dev/sdb5 ← /dev/sdb5 をアンマウント # df Filesystem 1K-ブロック 使用 使用可 使用% マウント位置 /dev/mapper/vg_sandbox1-lv_root 5716804 2668532 2757868 50% / tmpfs 510244 0 510244 0% /dev/shm /dev/sda1 495844 56502 413742 13% /boot ※ /dev/sdb5のマウントが解除され表示されなくなった
3. umountできない時 - 使用しているユーザーを調べる
アンマウント対象のファイルシステム上のファイルがオープンされていたり、あるプロセスのワーキングディレクトリになっていたりすると、「busy」という状態になり、アアンマウントできません。
# umount /mnt/diskA/ umount /mnt/diskA/: デバイスがビジーです。 (このデバイスがプロセスによって使われているのであれば、 lsof(8)やfuser(1)を使って調査するのが有益かもしれません)
こういった場合は、誰がそのファイルシステムを使用しているか調べれば解決します。
調査にはfuserコマンドが便利です。fuserコマンドに「-v」オプションと、マウントポイントを指定すると使用しているユーザーやコマンドがわかります。
※/mnt/diskA/を使っているユーザーや、プログラムを調べる
# fuser -v /mnt/diskA/
USER PID ACCESS COMMAND
/mnt/diskA/: root 5774 ..c.. bash
root 6058 ..c.. vi
対象のユーザーの、/mnt/diskA/ 配下での処理を終了させればアンマウントができるようになります。
また、PID(プロセスID)がわかるので、lsofコマンドを使って、PIDからそのプロセスがどのファイルを使っているか調べる事ができます。
# lsof -p 6058
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
vi 6058 root cwd DIR 8,21 4096 2 /mnt/diskA
vi 6058 root rtd DIR 253,0 4096 2 /
vi 6058 root txt REG 253,0 770248 724 /bin/vi
vi 6058 root mem REG 253,0 156912 143815 /lib64/ld-2.12.so
vi 6058 root mem REG 253,0 22536 143841 /lib64/libdl-2.12.so
vi 6058 root mem REG 253,0 1922152 143830 /lib64/libc-2.12.so
vi 6058 root mem REG 253,0 598680 143842 /lib64/libm-2.12.so
vi 6058 root mem REG 253,0 124624 166227 /lib64/libselinux.so.1
vi 6058 root mem REG 253,0 21152 176008 /lib64/libattr.so.1.1.0
vi 6058 root mem REG 253,0 138280 163308 /lib64/libtinfo.so.5.7
vi 6058 root mem REG 253,0 33816 176009 /lib64/libacl.so.1.1.0
vi 6058 root mem REG 253,0 142536 134856 /lib64/libncurses.so.5.7
vi 6058 root mem REG 253,0 65928 134061 /lib64/libnss_files-2.12.so
vi 6058 root mem REG 253,0 99154480 175599 /usr/lib/locale/locale-archive
vi 6058 root 0u CHR 136,0 0t0 3 /dev/pts/0
vi 6058 root 1u CHR 136,0 0t0 3 /dev/pts/0
vi 6058 root 2u CHR 136,0 0t0 3 /dev/pts/0
vi 6058 root 4u REG 8,21 12288 13 /mnt/diskA/.test.txt.swp ← オープンしているファイル
この場合、「6058」というプロセスIDは、 /mnt/diskA/.test.txt.swpというアンマウント対象のファイルシステム上にあるファイルをオープンしている事がわかります。
これらの情報をもとに、デバイスのビジー状態を解除すれば(ファイルの使用をやめてもらったり、プロセスをkillする)、アンマウントができるようになります。
4. umountできない時 - 誰も使わなくなったらアンマウントする
umountコマンドには、lazy アンマウントというオプションがあります。これは、Busy状態で今アンマウントできなくても、ファイルシステムの利用がなくなった時点でアンマウントするという機能をもつオプションです。
lazy アンマウントを試します。ユーザーAと、rootアカウントの二つの立場から、状態を確認してみます。
ユーザーA | root |
/mnt/diskA がマウントされている # df Filesystem 1K-ブロック 使用 使用可 使用% マウント位置 /dev/mapper/vg_sandbox1-lv_root 5716804 2668592 2757808 50% / tmpfs 510244 0 510244 0% /dev/shm /dev/sda1 495844 56502 413742 13% /boot /dev/sdb5 988180 17628 920356 2% /mnt/diskA |
|
アンマウント対象のファイルシステムを使用中。 # pwd /mnt/diskA |
|
アンマウントを試みる # umount /mnt/diskA/ umount /mnt/diskA: デバイスがビジーです (このデバイスがプロセスによって使われているのであれば、 lsof(8)やfuser(1)を使って調査するのが有益かもしれません) ユーザーAが/mnt/diskAを利用しているのでアンマウントできない |
|
lazy オプションでアンマウントする # umount -l /mnt/diskA/ ← lazy オプションでアンマウント
マウント状態を確認する。
# df
Filesystem 1K-ブロック 使用 使用可 使用% マウント位置
/dev/mapper/vg_sandbox1-lv_root
5716804 2668580 2757820 50% /
tmpfs 510244 0 510244 0% /dev/shm
/dev/sda1 495844 56502 413742 13% /boot
※ /mnt/diskA の表示がない
いっけん/mnt/diskAがアンマウントされたように見える |
|
# pwd /mnt/diskA # touch test.txt # ls -l 合計 16 drwx------. 2 root root 16384 8月 15 11:22 2013 lost+found -rw-r--r--. 1 root root 0 8月 15 13:25 2013 test.txt umount 後も、まだファイルシステムを使用できる。 |
|
/mnt/diskA ディレクトリから移動し、アンマウント対象のファイルシステムのBusyを解除する # cd /mnt/ # ls -l /mnt/diskA/ 合計 0 /mnt/diskA から移動した瞬間にアンマウントされ、先ほど作ったファイルも見えなくなる この時点で正式にアンマウントの処理が完了しています。 |
|
再マウントしてみる # mount -t ext4 -o defaults /dev/sdb5 /mnt/diskA/ |
|
# ls -l /mnt/diskA/ 合計 16 drwx------. 2 root root 16384 8月 15 11:22 2013 lost+found -rw-r--r--. 1 root root 0 8月 15 13:25 2013 test.txt マウントされるとアンマウント前に作成したファイルが見える |