Linuxコマンド辞典 mountコマンド(デバイス)

Linuxは、CD、DVD、ブルーレイ、外付けハードディスク、USBメモリ、HDDを追加した場合、マウントという作業が必要になる。Windowsであれば自動認識であったり、ディスク管理のボリューム作成の作業にあたる

Linuxはディレクトリにマウントして使用する。Windowsユーザーすれば、一見わかりづらい仕様であるが、良い面もある。どのディレクトリにもマウントすることができるので、容量が不足しているディレクトリがあれば、その配下にドライブをマウントすることで容量を増やすことができる。

RHEL Fedora CentOS Vine Deblan Ubuntu Plamo

参考サイト:Man page of INSTALL

概要・使用方法

書式

$ mount [オプション] [デバイス][マウントポイント]

Unixシステムのファイルシステムはツリー(木)構造からなり、/(ルート)を元にすべてのファイル、ディレクトリをその枝のように扱います。mountはHDDなどのファイルシステムをこのディレクトリツリーの任意の場所に接続します。

Linuxは、複数のファイルシステムをサポートしており、ハードウェアデバイス上でフォーマットされている形式に合わせてマウントし、そのデバイスの中のファイルを扱うことができます。また、サポートしているファイルシステムフォーマットを検索するために、「/etc/filesystems」を参照します。「/etc/filessystems」が無い場合は、次に「/proc/filesystems」を参照します。ディストリビューションによって、「/etc/filesystems」は「/proc/filesystems」のシンボリックリンクである場合があります。また、ハードウェアデバイスの他に、procファイルシステムなどのマウントも行うことができます。

オプション

-a
–all
/etc/fstabに記述されたファイルシステムのうち、「noauto」オプションがないものすべてマウントする
-F
–fork

-aオプションと併用し、ファイルシステムごとにforkしてマウントする。

マウント処理が並列実行されるため、NFSなど反応が遅いファイルシステムをマウントする場合に有効にである。

-r
–read-only
ファイルシステムを読み込み専用(-o ro)でマウントする
-w
–rw、–read-write
書き込み可能(-o rw)でマウントする
-t ファイルシステム指定したファイルシステムのパーティションをマウントする。利用可能なファイルシステムは/proc/filesystemで参照できる
※主なファイルシステムを参照
-o マウントオプションファイルシステムのマウントオプション
※主なマウントオプションを参照
-L ラベル
–label ラベル
指定したラベルのついたパーティションをマウント対象とする
-U UUID
–uuid UUID
指定したUUIDのついたパーティションをマウント対象とする

主なファイルシステム

ファイルシステム説明
ext2Linux標準ファイルシステム
ext3ジャーナル機能つきext2ファイルシステム
ext4ジャーナル機能つきext2ファイルシステム
vfatMS-DOSファイルシステム
ntfsWindowsNTファイルシステム
xfsXFSファイルシステム
jfsJFSファイルシステム
nfsNFS(ネットワークファイルシステム)
smbfsSambaファイルシステム
loopループバックファイルシステム

主なマウントオプション

マウントオプション説明
remount既にマウントしているファイルシステムを再マウントする。書き込み権限の変更などで利用する。
ro読み込み専用として扱う
rw書き込み可能として扱う
syncI/Oをすべて同期する
loopループバックデバイスをマウントする
exec実行可能ファイルの実行を許可する

ディスクマウントの状況を表示

mountコマンドに引数無しで実行すると現在マウント状況を一覧で表示します。

$ mount

実行結果

[root@localhost mnt]# mount
sysfs on /sys type sysfs (rw,nosuid,nodev,noexec,relatime)
proc on /proc type proc (rw,nosuid,nodev,noexec,relatime)
devtmpfs on /dev type devtmpfs (rw,nosuid,size=865856k,nr_inodes=216464,mode=755)
securityfs on /sys/kernel/security type securityfs (rw,nosuid,nodev,noexec,relatime)
tmpfs on /dev/shm type tmpfs (rw,nosuid,nodev,size=894996k,nr_inodes=223749)
devpts on /dev/pts type devpts (rw,nosuid,noexec,relatime,gid=5,mode=620,ptmxmode=000)
tmpfs on /run type tmpfs (rw,nosuid,nodev,size=894996k,nr_inodes=223749,mode=755)
tmpfs on /sys/fs/cgroup type tmpfs (ro,nosuid,nodev,noexec,size=894996k,nr_inodes=223749,mode=755)
cgroup on /sys/fs/cgroup/systemd type cgroup (rw,nosuid,nodev,noexec,relatime,xattr,release_agent=/usr/lib/systemd/systemd-cgroups-agent,name=systemd)
pstore on /sys/fs/pstore type pstore (rw,nosuid,nodev,noexec,relatime)
bpf on /sys/fs/bpf type bpf (rw,nosuid,nodev,noexec,relatime,mode=700)
cgroup on /sys/fs/cgroup/devices type cgroup (rw,nosuid,nodev,noexec,relatime,devices)
cgroup on /sys/fs/cgroup/net_cls,net_prio type cgroup (rw,nosuid,nodev,noexec,relatime,net_cls,net_prio)
cgroup on /sys/fs/cgroup/freezer type cgroup (rw,nosuid,nodev,noexec,relatime,freezer)
cgroup on /sys/fs/cgroup/rdma type cgroup (rw,nosuid,nodev,noexec,relatime,rdma)
cgroup on /sys/fs/cgroup/pids type cgroup (rw,nosuid,nodev,noexec,relatime,pids)
cgroup on /sys/fs/cgroup/cpu,cpuacct type cgroup (rw,nosuid,nodev,noexec,relatime,cpu,cpuacct)
cgroup on /sys/fs/cgroup/memory type cgroup (rw,nosuid,nodev,noexec,relatime,memory)
cgroup on /sys/fs/cgroup/cpuset type cgroup (rw,nosuid,nodev,noexec,relatime,cpuset)
cgroup on /sys/fs/cgroup/perf_event type cgroup (rw,nosuid,nodev,noexec,relatime,perf_event)
cgroup on /sys/fs/cgroup/hugetlb type cgroup (rw,nosuid,nodev,noexec,relatime,hugetlb)
cgroup on /sys/fs/cgroup/blkio type cgroup (rw,nosuid,nodev,noexec,relatime,blkio)
none on /sys/kernel/tracing type tracefs (rw,relatime)
configfs on /sys/kernel/config type configfs (rw,relatime)
/dev/mapper/rl-root on / type xfs (rw,relatime,attr2,inode64,logbufs=8,logbsize=32k,noquota)
systemd-1 on /proc/sys/fs/binfmt_misc type autofs (rw,relatime,fd=30,pgrp=1,timeout=0,minproto=5,maxproto=5,direct,pipe_ino=19298)
debugfs on /sys/kernel/debug type debugfs (rw,relatime)
mqueue on /dev/mqueue type mqueue (rw,relatime)
hugetlbfs on /dev/hugepages type hugetlbfs (rw,relatime,pagesize=2M)
fusectl on /sys/fs/fuse/connections type fusectl (rw,relatime)
/dev/sda1 on /boot type xfs (rw,relatime,attr2,inode64,logbufs=8,logbsize=32k,noquota)
sunrpc on /var/lib/nfs/rpc_pipefs type rpc_pipefs (rw,relatime)
tmpfs on /run/user/42 type tmpfs (rw,nosuid,nodev,relatime,size=178996k,nr_inodes=223749,mode=700,uid=42,gid=42)
tmpfs on /run/user/1002 type tmpfs (rw,nosuid,nodev,relatime,size=178996k,nr_inodes=223749,mode=700,uid=1002,gid=1002)
binfmt_misc on /proc/sys/fs/binfmt_misc type binfmt_misc (rw,relatime)
[root@localhost mnt]# 

外部ストレージをマウント

USB外部ストレージをdmesgでカーネルが出力したログをあさり、外部ストレージのログをあてる。

下記のサンプルはUSB外部ストレージを差し込んだ際のログ

$ dmesg
[   36.450974] virbr0: port 1(virbr0-nic) entered learning state
[   36.524953] usb 3-1: new high-speed USB device number 7 using xhci_hcd
[   36.689637] usb 3-1: New USB device found, idVendor=0411, idProduct=01c5
[   36.689646] usb 3-1: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[   36.689652] usb 3-1: Product: HD-PCTU2
[   36.689656] usb 3-1: Manufacturer: BUFFALO
[   36.689661] usb 3-1: SerialNumber: 3030304A4138533137383239
[   36.690859] usb-storage 3-1:1.0: USB Mass Storage device detected
[   36.691209] scsi host10: usb-storage 3-1:1.0
[   37.693307] scsi 10:0:0:0: Direct-Access     BUFFALO  HD-PCTU2         0108 PQ: 0 ANSI: 4
[   37.694250] sd 10:0:0:0: Attached scsi generic sg3 type 0
[   37.694606] sd 10:0:0:0: <span class="bold-red">[sdc]</span> 1250058927 512-byte logical blocks: (640 GB/596 GiB)
[   37.695418] sd 10:0:0:0: [sdc] Write Protect is off
[   37.695426] sd 10:0:0:0: [sdc] Mode Sense: 1c 00 00 00
[   37.695774] sd 10:0:0:0: [sdc] Write cache: enabled, read cache: enabled, doesn't support DPO or FUA
[   37.731210] sdc: sdc1
[   37.731221] sdc: p1 size 1250236416 extends beyond EOD, enabling native capacity
[   37.733762] sdc: sdc1
[   37.733769] sdc: p1 size 1250236416 extends beyond EOD, truncated
[   37.734963] sd 10:0:0:0: [sdc] Attached SCSI disk

fdiskで領域を確保

外部記録媒体(外付けハードディスク、USBメモリ、SDメモリ)は、本作業を行う。

$ fdisk /dev/sdc

コマンド (m でヘルプ): n
コマンドアクション
e 拡張
p 基本領域 (1-4)
p
領域番号 (1-4): 1
最初 シリンダ (1-xxxxxxxxx, default 1): 1
Using default value 1
終点 シリンダ または +サイズ または +サイズM または +サイズK (1-xxxxxxxxx, default xxxxxxxxx): xxxxxxxxx
Using default value xxxxxxxxx

コマンド (m でヘルプ): w

OSの非同期書き込みを考慮してもう一度、syncさせておく

$ sync

カーネルは (比較的遅い) ディスクの読み書きを避けるため、 データをメモリに保持する。 これにより性能は向上するが、コンピュータがクラッシュした場合、 結果としてデータが損失したりファイルシステムが壊れたりするかもしれない。 sync はメモリにある内容すべてがディスクに書き込まれることを保証する。

フォーマット

ext4 でフォーマットする。

$ mkfs.ext4 /dev/sdc1

ファイルシステム種類

解説
ext2初期段階のlinuxシステムで使用されていた。
「second extended filesystem」の略だ限界ファイルサイズ2TiB、最大容量(ボリュームサイズ)16TiB、ジャーナルには
非対応となっているので、使うのは避けたほうがいい。
rootのために一部容量を予約しているので限界まで容量をつかいきってもrootでのメンテナンスが可能となっている。
ジャーナルに非対応なため、一度クラッシュすると復旧に時間がかかる。
このファイルシステムは旧式なので「ext4」の使用をおすすめする。
ext3「third extended file system」の略だ、ext2との高い互換性があり、
ext2をext3に変換することも可能だ。大きな変更点としてはジャーナルが
追加されているところだろう。
ext4「fourth extended file system」の略である。ext3の拡張であり、
現在のlinuxファイルシステムのデファクトスタンダードだ。
最大ファイルサイズは16TiBと拡張され、最大ボリューム サイズも1EiBとなっている。
また日付範囲も1901年12月14日から2514年4月25日までと拡張されている、
下位互換もたもたれており、ext3としてマウントすることも可能だ。
JFSこのファイルシステムは「Journaled File System」の略であり、IBMが自社の商用UNIXである
AIXに採用したファイルシステムだ。
ジャーナルなファイルシステムとしては最古の部類に入る。
このファイルシステムは既存ファイルシステムを拡張、機能追加するのではなく、
ジャーナルを前提として新しく設計されたファイルシステムだ。
最大ファイルサイズは4PiB、最大容量(ボリュームサイズ)は32PiBとなっている、
高負荷時にも一定のパフォーマンスを維持できる。
信頼性は高いが、ディストリビューションのデフォルト設定ではext4が選択されていることが多い。
XFSXFSはSilicon Graphics Incで設計されたファイルシステムでRHEL7では
デフォルトのファイルシステムとなっている。
こちらも最古のジャーナリングファイルシステムの一つだ。
マウントした状態でのデフラグなどの操作が可能となっている。最大ファイル サイズ8EiB、
最大ボリューム サイズ8EiBである。
XFSは当初からハイエンドシステム向に開発されたためスケーラビリティの面において
ext4を圧倒している。
RHELがデフォルトでXFSを採用したのはそういった理由もあるだろう。
Fat「File Allocation Table」の略でWindows95やWindowsNTなどで使用されている
ファイルシステムのひとつだ。
非常に古典的なファイルシステムなためジャーナルには非対応でスケーラビリティも貧弱である。
またLinuxからの属性情報をひきつげないため、パーミッション情報などが、失われる。
容量の小さなUSBメモリを扱うのが限界だ。
しかし逆に超古典的なために、大概のOSで読み書きが可能となっている。
最大ファイルサイズは4GiB最大容量(ボリュームサイズ)も 4GiBとなる。
Fat32Fat32はFatの32Bit版である。
これにより、扱えるボリュームサイズが大きくなっている。
そのためFatと比べ外付けのHDDなどをフォーマットして使うパターンが多いだろう。
しかしジャーナルなファイルシステムではないので、こちらも障害耐性が低い。
こちらも古いものなので大抵のOSで読み書きが可能となっている。

UUIDでマウント

$ ls -al /dev/disk/by-uuid/
 
lrwxrwxrwx 1 root root  10  7月 31 07:01 7ba0cf96-598e-413d-8053-b4c547628424 -> ../../sdc1
lrwxrwxrwx 1 root root  10  7月 31 07:01 9aa422bc-689d-4efc-aae6-ee144c02127e -> ../../sdb1
lrwxrwxrwx 1 root root  10  7月 31 07:01 c3ff64a5-5e26-4438-855e-82183a81b1f9 -> ../../dm-0
lrwxrwxrwx 1 root root  10  7月 31 07:01 de09e6b8-3a26-4465-a971-8957fa6f5528 -> ../../dm-1

マウント用フォルダを作成。

基本的には、外部媒体をマウントするときは/mnt配下にディレクトリを作成してマウントする。

状況次第では、/mnt配下にこだわる必要はなく別のディレクトリでも問題ない。

$ sudo mkdir /mnt/usbdisk1

外付けHDDのマウント

$ mount /dev/sdc1 /mnt/usbdisk1

CD-ROMのマウント

$ mount -t cd9660 -o rdonly /dev/cd0c /cdrom

起動時に自動マウントする

恒常的なマウントを行うためには、以下の2つの作業を行う必要があります。

  1. /etc/fstabファイルの編集
  2. mountコマンドの実行、または再起動(init 6)の実行

viで/etc/fstabを編集する。

$ vi /etc/fstab
/dev/hda4               /                  ext3    defaults        1 1
/dev/hda1               /boot              ext3    defaults        1 2
/dev/cdrom              /mnt/cdrom         iso9660 noauto,owner,ro 0 0
/dev/fd0                /mnt/floppy        auto    noauto,owner    0 0
/dev/hda2               /var               ext3    defaults        1 3
/dev/hda3               swap               swap    defaults        0 0
/dev/sdc1               /mnt/usbdisk1      ext4    defaults        1 2
    ①               ②      ③     ④      ⑤⑥
項番フィールド設定内容
マウントするデバイスファイル名マウントするデバイスファイル名またはボリュームラベルを指定
マウントポイントマウントポイントとなるディレクトリの絶対パスを指定
ファイルシステムの種類①のファイルシステムの指定。下表1を参照。
マウントオプション①のマウントオプションの指定。下表2を参照。
dumpdumpコマンドによるバックアップ対象となるかどうかを指定 
0 : バックアップする必要がない
 1 : バックアップする必要がある
fsckシステム起動時にfsckコマンドでチェックを行う時の順序を指定 
0 : fsckコマンドでファイルシステムをチェックしない
 1 : ルートファイルシステム ( / ) に指定する数値
 2以上 : その他のファイルシステムに指定する数値

④のオプション表

オプション説明
asyncファイルシステムの入出力を非同期で実行
automount -a コマンドの実行時にマウントする
noautomount -a コマンドの実行時にマウントしない
defaultsデフォルトのオプションを設定 ( async、auto、dev、exec、nouser、rw、suid )
execバイナリの実行を許可
noexecバイナリの実行を禁止
ro読み取り専用モードでマウント 
rw読み書き可能モードでマウント
unhide隠しファイルも表示
suidSUIDとSGIDの有効化
user一般ユーザーにマウントを許可する
users一般ユーザーにマウントを許可し、マウントを実行していないユーザにもアンマウントを許可
nouser一般ユーザーのマウントを許可しない

パーティションをマウントする

$ mount -v /dev/sda1 /data/

CR-ROMイメージファイルをマウントする

$ mount -v -o loop ディレクトリ/isoイメージ.iso /tmp/iso

CR-ROMをマウントする

最近は、CDやDVDをドライブにセットすると自動的にマウントするようなっているディストリビューションもありますが、コマンド実行する必要があるときもあります。光学ディスクを対象とした場合、mountコマンドの引数にデバイスとしてCD-ROMのデバイス名を指定します。通常は、「/dev/cdrom」となります。読み取り専用の場合は、「-r」オプションを指定します。光学ドライブでは、引数として「iso9660」も指定します。「-r」と「-t iso9660」は省略することもできます。

$ mount -r -t iso9660 /dev/cdrom /mnt/cdrom

Windows(DOS)フォーマットのフロッピーディスクをマウントする

Linuxでは、Windowsでフォーマットされた、いわゆる「DOSフォーマット」フロッピーディスクのファイルシステムをマウントして使用することができます。mountコマンドに「-t」をつけてファイルシステムを「msdos」または「vfat」を指定します。msdosを指定した場合は、8.3形式のファイル名しか使用できませんが、「vfat」を指定した場合は、ロングファイルネームも使用できます。これは、Linuxカーネル2.4以降のとなります。

$ mount -t msdos /dev/fd0 /mnt/fd/