Infra Engineer

ファイルシステムのマウント~mountコマンド・umountコマンド~
2022.06.28
Lv1

ファイルシステムのマウント~mountコマンド・umountコマンド~

本記事の対象者

LPIC level1習得を目指す初学者の方
コマンドの基本的な用途について、要点を絞って解説します。


今回の内容

今回は、mountコマンドとumountコマンドについて解説します。
前者はファイルシステムをマウントするコマンド、後者はファイルシステムのマウントを解除するコマンドです。
なお、「マウントとは何か」ということが知りたい方はこちらの記事を参照してください。

・ハードディスクを使用するための過程
・mountコマンド
・umountコマンド
・まとめ
・確認問題

ハードディスクを使用するための過程

パーティションについて」の記事で説明した通り、Linuxでハードディスクを接続して使用するには、以下の過程が必要です。

デバイスファイルを作成する。(基本的には自動で作成される。)
②ディスク内にパーティションを作成する。
③パーティション内にファイルシステムを構築する。
④ファイルシステムをマウントする。

今回は、最後の過程である④のファイルシステムのマウントについて、その具体的なコマンドを解説する記事になります。


mountコマンド

mountコマンドは、ファイルシステムをマウントするためのコマンドです。

mount
意味 ファイルシステムをマウントする。
書式 mount [オプション] [デバイスファイル名(パーティション名)] [マウントポイント]

なお、mountコマンドをオプションなしで使用した場合、現在のマウント状況を一覧表示します。

mountコマンドの主なオプションは以下です。

コマンドオプション(※1) 説明
-a 「/etc/fstab」(※2)に記述されているファイルシステムをすべてマウントする。(noautoオプションがついているものは除く)
-t <ファイルシステム> ファイルシステムの種類を指定する。
-o マウントオプションを指定する。複数指定する場合は、「,(カンマ)」で区切って入力する。
-v 詳細を表示する。

※1
mountコマンドにはマウントの際のオプションである「マウントオプション」があります(-oで指定)。それと区別するためにコマンドオプションと記載しています。

※2
「/etc/fstab」は、ファイルシステムの情報が記載されているファイルです。mountコマンドを実行する際にはこのファイルが参照されます。
「/etc/fstab」については、こちらの記事で説明しています。

mountコマンドの主なマウントオプションは以下です。
これは、「/etc/fstab」に設定として記載できるマウントオプションと同一のものです。
以下はその再掲となります。
※これらが試験に問われる可能性は低いです。

マウントオプション 説明
async ファイルシステムの非同期入出力を設定する。
auto -aオプションでmountコマンドを実行したときにマウントする。
noauto -aオプションでmountコマンドを実行してもマウントしない。
defaults デフォルトのオプションを設定する。
(async, auto, dev, exec, nouser, rw, suid)
exec バイナリの実行を許可する。
noexec バイナリの実行を許可しない。
ro 読み取り専用でマウントする。
rw 読み書きを許可してマウントする。
unhide 隠しファイルも表示する。
suid SUIDとSGIDを有効にする。
user 一般ユーザーでもマウントを可能にする。
users マウントしたユーザー以外のユーザーもアンマウント(マウント解除)できるようになる。
nouser 一般ユーザーのマウントを許可しない。
例①)
現在のマウント状況を一覧表示。
[root@localhost ~]# mount
sysfs on /sys type sysfs (rw,nosuid,nodev,noexec,relatime,seclabel)
proc on /proc type proc (rw,nosuid,nodev,noexec,relatime)
devtmpfs on /dev type devtmpfs (rw,nosuid,seclabel,size=490368k,nr_inodes=122592,mode=755)
securityfs on /sys/kernel/security type securityfs (rw,nosuid,nodev,noexec,relatime)
tmpfs on /dev/shm type tmpfs (rw,nosuid,nodev,seclabel)
devpts on /dev/pts type devpts (rw,nosuid,noexec,relatime,seclabel,gid=5,mode=620,ptmxmode=000)
tmpfs on /run type tmpfs (rw,nosuid,nodev,seclabel,mode=755)
tmpfs on /sys/fs/cgroup type tmpfs (ro,nosuid,nodev,noexec,seclabel,mode=755)
cgroup on /sys/fs/cgroup/systemd type cgroup (rw,nosuid,nodev,noexec,relatime,seclabel,xattr,release_agent=/usr/lib/systemd/systemd-cgroups-agent,name=systemd)
pstore on /sys/fs/pstore type pstore (rw,nosuid,nodev,noexec,relatime)
cgroup on /sys/fs/cgroup/cpuset type cgroup (rw,nosuid,nodev,noexec,relatime,seclabel,cpuset)
cgroup on /sys/fs/cgroup/freezer type cgroup (rw,nosuid,nodev,noexec,relatime,seclabel,freezer)
cgroup on /sys/fs/cgroup/perf_event type cgroup (rw,nosuid,nodev,noexec,relatime,seclabel,perf_event)
cgroup on /sys/fs/cgroup/net_cls,net_prio type cgroup (rw,nosuid,nodev,noexec,relatime,seclabel,net_prio,net_cls)
cgroup on /sys/fs/cgroup/cpu,cpuacct type cgroup (rw,nosuid,nodev,noexec,relatime,seclabel,cpuacct,cpu)
cgroup on /sys/fs/cgroup/hugetlb type cgroup (rw,nosuid,nodev,noexec,relatime,seclabel,hugetlb)
cgroup on /sys/fs/cgroup/memory type cgroup (rw,nosuid,nodev,noexec,relatime,seclabel,memory)
cgroup on /sys/fs/cgroup/pids type cgroup (rw,nosuid,nodev,noexec,relatime,seclabel,pids)
cgroup on /sys/fs/cgroup/blkio type cgroup (rw,nosuid,nodev,noexec,relatime,seclabel,blkio)
cgroup on /sys/fs/cgroup/devices type cgroup (rw,nosuid,nodev,noexec,relatime,seclabel,devices)
configfs on /sys/kernel/config type configfs (rw,relatime)
/dev/mapper/centos-root on / type xfs (rw,relatime,seclabel,attr2,inode64,noquota)
selinuxfs on /sys/fs/selinux type selinuxfs (rw,relatime)
systemd-1 on /proc/sys/fs/binfmt_misc type autofs (rw,relatime,fd=22,pgrp=1,timeout=0,minproto=5,maxproto=5,direct,pipe_ino=12453)
hugetlbfs on /dev/hugepages type hugetlbfs (rw,relatime,seclabel)
debugfs on /sys/kernel/debug type debugfs (rw,relatime)
mqueue on /dev/mqueue type mqueue (rw,relatime,seclabel)
fusectl on /sys/fs/fuse/connections type fusectl (rw,relatime)
/dev/sda1 on /boot type xfs (rw,relatime,seclabel,attr2,inode64,noquota)
sunrpc on /var/lib/nfs/rpc_pipefs type rpc_pipefs (rw,relatime)
tmpfs on /run/user/0 type tmpfs (rw,nosuid,nodev,relatime,seclabel,size=101476k,mode=700)
gvfsd-fuse on /run/user/0/gvfs type fuse.gvfsd-fuse (rw,nosuid,nodev,relatime,user_id=0,group_id=0)

引数なしで実行した場合、現在のマウント状況一覧が表示されます。
「/etc/mtab」の内容が加工されて表示されています。

例②)
「/dev/sda1」を「/mnt」にマウント。
[root@localhost ~]# mount /dev/sda1 /mnt
[root@localhost ~]# df -h
ファイルシステム          サイズ  使用  残り 使用% マウント位置
devtmpfs                  479M     0  479M    0% /dev
tmpfs                     496M     0  496M    0% /dev/shm
tmpfs                     496M  7.7M  488M    2% /run
tmpfs                     496M     0  496M    0% /sys/fs/cgroup
/dev/mapper/centos-root   6.2G  5.6G  681M   90% /
/dev/sda1                1014M  172M  843M   17% /mnt
tmpfs                     100M   36K  100M    1% /run/user/0

dfコマンドを使用して、マウントポイントを表示しています。
「/dev/sda1」が「/mnt」にマウントされていることが分かります。

例③)
「/etc/fstab」に記述されているすべてのファイルシステムをマウント。(-a)
[root@localhost ~]# mount | grep '/dev/sdb1'
[root@localhost ~]# cat /etc/fstab
/dev/mapper/centos-root /                       xfs     defaults        0 0
UUID=ca954bfe-e7ce-438d-bb79-cd13b768f028 /boot                   xfs     defaults        0 0
/dev/mapper/centos-swap swap                    swap    defaults        0 0
/dev/sdb1       /mnt    ext3    defaults        1       2
[root@localhost ~]# mount -a
[root@localhost ~]# mount | grep '/dev/sdb1'
/dev/sdb1 on /mnt type ext3 (rw,relatime,seclabel,data=ordered)

最初、「mount | grep ‘/dev/sdb1’」の標準出力はありません。つまり、「/dev/sdb1」はどこにもマウントされていない状態です。
ここで「/etc/fstab」の最終行に「/dev/sdb1を/mntにマウントする」という設定が書かれています。
この状態で「mount -a」をすることで「/etc/fstab」に記載された通りにマウントが実行されていることが分かります。


umountコマンド

umountコマンドは、ファイルシステムをアンマウントするコマンドです。

umount
意味 ファイルシステムをアンマウントする。
書式 umount [オプション] [デバイスファイル名(パーティション名) or マウントポイント]

mountコマンドの書式では当然「パーティション名」と「マウントポイント」の指定が必要でしたが、umountコマンドではそのどちらかを指定するだけで構いません。
パーティション名を指定すれば、そのパーティションがマウントされているマウントポイントからアンマウントされます。
マウントポイントを指定すれば、そのマウントポイントにマウントされているパーティションがアンマウントされます。

umountコマンドの主なオプションは以下です。

オプション 説明
-a 「/etc/mtab」(※3)に記述されているファイルシステムをすべてアンマウントする。
-t <ファイルシステム> ファイルシステムの種類を指定する。

※3
「/etc/mtab」は、現在マウントされているファイシステムが管理されているファイルです。ユーザが設定するファイルではなく、mountコマンドとumountコマンドが参照しているファイルです。
「/etc/mtab」については、こちらの記事で説明しています。

Tips : /proc/mounts
「/proc/mounts」はLinuxカーネルが、現在認識しているマウント状況をリアルタイムに反映しているファイルです。「/etc/mtab」と「/proc/mounts」の内容は異なることがあります。umountコマンドではなく、何らかの障害でデバイスがアンマウントされてしまった場合、「/etc/mtab」には残ったままになる場合があります。一方で「/proc/mounts」にはOSがどう認識しているかが反映されますので、このような状況もリアルタイムに反映されています。「/etc/mtab」はあくまで、mountコマンドとumountコマンドの参照ファイルです。

 

例①)
「/dev/sda1」をアンマウント。
[root@localhost ~]# umount /dev/sda1
[root@localhost ~]# df -h
ファイルシステム          サイズ  使用  残り 使用% マウント位置
devtmpfs                  479M     0  479M    0% /dev
tmpfs                     496M     0  496M    0% /dev/shm
tmpfs                     496M  7.7M  488M    2% /run
tmpfs                     496M     0  496M    0% /sys/fs/cgroup
/dev/mapper/centos-root   6.2G  5.6G  681M   90% /
tmpfs                     100M   36K  100M    1% /run/user/0

dfコマンドの一覧から消えていることが確認できます。
「umount  /mnt」としても同じ結果を得ることができます。


まとめ

今回は、ファイルシステムのマウントに関するコマンドについて解説しました。

これで、Linuxでハードディスクを使用するための過程の解説は一通り終了です。
最初から流れで見返していただくとより理解が深まるかと思います。

最後に確認問題で今回の記事の知識を是非復習してください。


確認問題

問題

現在マウントされているすべてのファイルシステムを表示するには次のコマンドのどれを使用すればよいか。 (2つ選択)

A) cat /proc/mounts
B) lsmount
C) mount
D) mount -a
E) mount -ls

解答
答え:A、C

A) ⇒ 正解です。
B) ⇒ このようなコマンドはありません。
C) ⇒ 正解です。
D) ⇒ /etc/fstabに記載のしべてのファイルシステムをマウントするオプションです。
E) ⇒ このようなオプションはありません。