19.2. ファイルシステムのマウント

特定のファイルシステムを接続するには、以下のような形式で mount コマンドを使用します。
$ mount [option] device directory
device は、以下で識別できます。
  • block device へのフルパス: 例 /dev/sda3
  • 幅広く一意の識別子 (UUID): - 例 UUID=34795a28-ca6d-4fd8-a347-73671d0c19cb
  • ボリュームラベル: - 例 LABEL=home
ファイルシステムがマウントされると、directory の元のコンテンツにアクセスできなくなります。

重要

Linux では、すでにファイルシステムが接続されているディレクトリーに対してファイルシステムをマウントする動作が阻止されることはありません。特定のディレクトリーがマウントポイントとして使用されているかどうかを確認するには、そのディレクトリーを引数として findmntユーティリティーを実行し、終了コードを確認します。
findmnt directory; echo $?
ディレクトリーにいずれのファイルシステムも接続されていない場合は 1 を返します。
デバイス名、目的のディレクトリー、またはファイルシステムタイプなど、必要な情報をすべて指定せずに mount コマンド実行すると、mount コマンドは /etc/fstab ファイルの内容を読み取り、指定のファイルシステムが記載されているか確認します。/etc/fstab ファイルには、選択したファイルシステムがマウントされるデバイス名およびディレクトリーのリスト、ファイルシステムタイプ、およびマウントオプションが含まれます。そのため、/etc/fstab で指定されたファイルシステムをマウントするときに、以下のオプションの 1 つを選択できます。
mount [option] directory
mount [option] device
root でコマンドを実行しない限り、ファイルシステムのマウントには権限が必要であることに注意してください (「マウントオプションの指定」 を参照)。

注記

特定のデバイスの UUID やラベル (デバイスがラベルを使用している場合) を確認するには、次のようにして blkid コマンドを使用します。
blkid device
たとえば、/dev/sda3 の情報を表示:
# blkid /dev/sda3
/dev/sda3: LABEL="home" UUID="34795a28-ca6d-4fd8-a347-73671d0c19cb" TYPE="ext3"

19.2.1. ファイルシステムタイプの指定

ほとんどの場合、mount によって自動的にファイルシステムが検出されます。ただし、NFS (Network File System) や CIFS (Common Internet File System) などの認識できないファイルシステムがあるため、こうしたファイルシステムの場合は手作業で指定しなければなりません。ファイルシステムのタイプを指定するには次のように mount コマンドを使用します。
$ mount -t type device directory
表19.1「一般的なファイルシステムのタイプ」 は、mount コマンドで使用できる一般的なファイルシステムのタイプの一覧を表示します。利用可能なファイルシステムのタイプの詳細は 「man ページ」 を参照してください。

表19.1 一般的なファイルシステムのタイプ

タイプ説明
ext2ext2 ファイルシステム
ext3ext3 ファイルシステム
ext4ext4 ファイルシステム
btrfsbtrfs ファイルシステム
xfsxfs ファイルシステム
iso9660ISO 9660 ファイルシステム、通常は CD などの光学メディアで使用されます。
jfsJFS ファイルシステムは IBM によって開発されました。
nfsNFS ファイルシステム、ネットワーク経由でファイルにアクセスする場合に一般的に使用されます。
nfs4NFSv4 ファイルシステム、ネットワーク経由でファイルにアクセスする場合に一般的に使用されます。
ntfsNTFS ファイルシステム、 Windows オペレーティングシステムを稼動しているマシンで一般的に使用されます。
udfUDF ファイルシステム、DVD などの光学メディアで一般的に使用されます。
vfatFAT ファイルシステム、Windows オペレーティングシステムを稼動しているマシンや特定のデジタルメディア (USB フラッシュドライブ、フロッピーディスクなど) 上で一般的に使用されます。
使用例については 例19.2「USB フラッシュドライブのマウント」 を参照してください。

例19.2 USB フラッシュドライブのマウント

旧式の USB フラッシュドライブは FAT ファイルシステムを使用していることがよくあります。このようなドライブが /dev/sdc1 デバイスを使用しているとします。また /media/flashdisk/ というディレクトリーが存在すると仮定します。このデバイスを /media/flashdisk/ ディレクトリーにマウントするには、 root で次のようにシェルプロンプトに入力します。
~]# mount -t vfat /dev/sdc1 /media/flashdisk

19.2.2. マウントオプションの指定

マウントの追加オプションを指定する場合は、次のような形式のコマンドを使用します。
mount -o options device directory
複数のオプションを使う場合は、コンマの後に空白を入れないようにしてください。空白を入れてしまうと、mount は空白の後の値を追加のパラメーターとして解釈してしまいます。
一般的なマウントオプションの一覧を 表19.2「一般的なマウントオプション」 に示します。使用できる全オプションの一覧については 「man ページ」 セクションに記載している該当の man ページをご覧ください。

表19.2 一般的なマウントオプション

オプション説明
asyncファイルシステム上での非同期の入/出力を許可します。
automount -a コマンドを使ったファイルシステムの自動マウントを許可します。
defaultsasync,auto,dev,exec,nouser,rw,suid のエイリアスを指定します。
exec特定のファイルシステムでのバイナリーファイルの実行を許可します。
loopイメージをループデバイスとしてマウントします。
noautomount -a コマンドを使ったファイルシステムの自動マウントをデフォルトの動作として拒否します。
noexec特定のファイルシステムでのバイナリーファイルの実行を拒否します。
nouser普通のユーザー (つまり root 以外のユーザー) によるファイルシステムのマウントおよびアンマウントを拒否します。
remountファイルシステムがすでにマウントされている場合は再度マウントを行います。
ro読み取り専用でファイルシステムをマウントします。
rwファイルシステムを読み取りと書き込み両方でマウントします。
user普通のユーザー (つまり root 以外のユーザー) によるファイルシステムのマウントおよびアンマウントを許可します。
使用例については 例19.3「ISO イメージのマウント」 を参照してください。

例19.3 ISO イメージのマウント

ISO イメージ (または一般的にはディスクイメージ) はループデバイスを使用することでマウントすることができます。Fedora 14 インストールディスクの ISO イメージが現在の作業ディレクトリーにあると仮定します。また、/media/cdrom/ と言うディレクトリーが存在するとします。このイメージを /media/cdrom/ ディレクトリーにマウントするには次のコマンドを実行します。
# mount -o ro,loop Fedora-14-x86_64-Live-Desktop.iso /media/cdrom
ISO9660 は設計上、読み取り専用のファイルシステムになっていることに注意してください。

19.2.3. マウントポイントの共有

システム管理作業の中には、同じファイルシステムにディレクトリーツリー内の複数の場所からのアクセスする必要がある場合があります (chroot 環境を準備する場合など)。Linux では同じファイルシステムを複数のディレクトリーに必要なだけマウントすることが可能です。また、mount コマンドは重複したマウントポイントを持たせることができる --bind オプションを実装します。以下のように使用します。
$ mount --bind old_directory new_directory
上記のコマンドにより、ユーザーはいずれの場所からでもファイルシステムにアクセスできるようになりますが、これは元のディレクトリー内にマウントされているファイルシステムには適用されません。これらのマウントも含めるには、以下のコマンドを実行します。
$ mount --rbind old_directory new_directory
さらに Red Hat Enterprise Linux 7 では、可能な限り柔軟性を持たせるために、共有サブツリー と呼ばれる機能を実装しています。次の 4 種類のマウントを使用することができます。
共有マウント
共有マウントにより、任意のマウントポイントと全く同一の複製マウントポイントを作成することができます。マウントポイントを共有マウントしてマークすると、元のマウントポイント内のあらゆるマウントが反映されます。マウントポイントのタイプを共有マウントに変更するには、シェルプロンプトで以下を入力します。
$ mount --make-shared mount_point
代わりに、選択したマウントポイントとその下にあるすべてのマウントポイントのマウントタイプを変更するには:
$ mount --make-rshared mount_point
使用例については、例19.4「共有マウントポイントの作成」 を参照してください。

例19.4 共有マウントポイントの作成

他のファイルシステムがマウントされる一般的な場所が 2 箇所あります。リムーバルメディア用の /media/ ディレクトリーと一時的にファイルシステムをマウントする場合の /mnt/ 所です。共有マウントを使用することで、これら 2 種類のディレクトリーが同じコンテンツを共有できるようになります。これを実行するには、root になり、/media/ ディレクトリーを shared としてマークします。
# mount --bind /media /media
# mount --make-shared /media
以下のコマンドを使用して、複製を /mnt ディレクトリーに作成します。
# mount --bind /media /mnt
これで /media 内のマウントが /mnt/ 内にも表示されることが確認できます。たとえば、CD-ROM ドライブに何らかのコンテンツを持つメディアがあり、/media/cdrom/ ディレクトリーが存在する場合は次のコマンドを実行します。
# mount /dev/cdrom /media/cdrom
# ls /media/cdrom
EFI  GPL  isolinux  LiveOS
# ls /mnt/cdrom
EFI  GPL  isolinux  LiveOS
同様に、/mnt/ ディレクトリー内にマウントしているファイルシステムが /media/ 内に反映されていることを確認できます。たとえば、/mnt/flashdisk/ というディレクトリーが存在し、また何らかのコンテンツを持つ USB フラッシュドライブが /dev/sdc1 デバイスを使用するとした場合、この USB をプラグインしてから次を入力します。
# # mount /dev/sdc1 /mnt/flashdisk
# ls /media/flashdisk
en-US  publican.cfg
# ls /mnt/flashdisk
en-US  publican.cfg
スレーブマウント
スレーブマウントにより、所定のマウントポイントの複製を作成する際に制限を課すことができます。マウントポイントをスレーブマウントとしてマークすると、元のマウントポイント内のすべてのマウントがそれに反映されますが、スレーブマウント内のマウントはオリジナルには反映されません。マウントポイントのタイプをスレーブマウントに変更するには、シェルプロンプトで次を入力します。
mount --make-slave mount_point
選択したマウントポイントとその下にあるすべてのマウントポイントのマウントタイプを変更することも可能です。次のように入力します。
mount --make-rslave mount_point
使用例については 例19.5「スレーブマウントポイントの作成」 を参照してください。

例19.5 スレーブマウントポイントの作成

/media/ ディレクトリーの内容が /mnt/ ディレクトリーでも表示されるようにしながら、/mnt/ ディレクトリー内のマウントは /media/ ディレクトリーには反映させない方法を以下に示します。root になり、まず /media/ ディレクトリーに shared のマークを付けます。
~]# mount --bind /media /media
~]# mount --make-shared /media
次に /media ディレクトリーの複製を /mnt/ ディレクトリーに作成して、今度は slave のマークを付けます。
~]# mount --bind /media /mnt
~]# mount --make-slave /mnt
/media 内のマウントが /mnt/ でも表示されるかを確認します。たとえば、CD-ROM ドライブに何らかの内容を持つメディアがあり、/media/cdrom/ というディレクトリーが存在するとします。次のコマンドを実行します。
~]# mount /dev/cdrom /media/cdrom
~]# ls /media/cdrom
EFI  GPL  isolinux  LiveOS
~]# ls /mnt/cdrom
EFI  GPL  isolinux  LiveOS
また、/mnt/ ディレクトリー内にマウントされているファイルシステムが /media/ に反映されていることを確認します。たとえば、/dev/sdc1 デバイスを使用する何らかのコンテンツを含む USB フラッシュドライブをプラグインしており、かつ /mnt/flashdisk/ ディレクトリーが存在している場合に以下を入力します。
~]# mount /dev/sdc1 /mnt/flashdisk
~]# ls /media/flashdisk
~]# ls /mnt/flashdisk
en-US  publican.cfg
プライベートマウント
プライベートマウントはマウントのデフォルトタイプであり、共有マウントやスレーブマウントと異なり、伝播イベントの受信や転送は一切行いません。マウントポイントを明示的にプライベートマウントにするには、シェルプロンプトで以下を入力します。
mount --make-private mount_point
または、選択したマウントポイントとその下にあるすべてのマウントポイントを変更することもできます。
mount --make-rprivate mount_point
使用例については 例19.6「プライベートマウントポイントの作成」 を参照してください。

例19.6 プライベートマウントポイントの作成

例19.4「共有マウントポイントの作成」 の状況を考慮に入れ、共有マウントポイントが次のコマンドを使って root で以前に作成されていると仮定します。
~]# mount --bind /media /media
~]# mount --make-shared /media
~]# mount --bind /media /mnt
/mnt/ ディレクトリーに private のマークを付けるには、次のように入力します。
~]# mount --make-private /mnt
これで /media/ 内のマウントはいずれも /mnt/ 内では表示されないことを確認できるようになります。たとえば、CD-ROM デバイスに何らかのコンテンツを含むメディアがあり、/media/cdrom/ ディレクトリーが存在する場合に、次のコマンドを実行します。
~]# mount /dev/cdrom /media/cdrom
~]# ls /media/cdrom
EFI  GPL  isolinux  LiveOS
~]# ls /mnt/cdrom
~]#
また、/mnt/ ディレクトリー内にマウントしているファイルシステムは /media/ ディレクトリーには反映されないことを確認することもできます。たとえば、/dev/sdc1 デバイスを使用し、何らかのコンテンツを含む USB フラッシュドライブをプラグインして、/mnt/flashdisk/ ディレクトリーが存在する場合に以下を入力します。
~]# mount /dev/sdc1 /mnt/flashdisk
~]# ls /media/flashdisk
~]# ls /mnt/flashdisk
en-US  publican.cfg
バインド不可能なマウント
任意のマウントポイントに対して一切複製が行われないようにするには、バインド不能のマウントを使用します。マウントポイントのタイプをバインド不能のマウントに変更するには、次のようにシェルプロンプトに入力します。
mount --make-unbindable mount_point
または、選択したマウントポイントとその下にあるすべてのマウントポイントを変更することもできます。
mount --make-runbindable mount_point
使用例については 例19.7「バインド不可能なマウントポイントの作成」 を参照してください。

例19.7 バインド不可能なマウントポイントの作成

/media/ ディレクトリーが共有されないようにする場合は、root として、以下を実行します。
# mount --bind /media /media
# mount --make-unbindable /media
これにより、これ以降にこのマウントの複製を作成しようとするとエラーが出て失敗します。
# mount --bind /media /mnt
mount: wrong fs type, bad option, bad superblock on /media,
missing codepage or helper program, or other error
In some cases useful info is found in syslog - try
dmesg | tail  or so

19.2.4. マウントポイントの移動

ファイルシステムがマウントされているディレクトリーを変更するには、次のコマンドを使用します。
# mount --move old_directory new_directory
使用例については 例19.8「既存の NFS マウントポイントの移動」 を参照してください。

例19.8 既存の NFS マウントポイントの移動

NFS ストレージにはユーザーのディレクトリーが含まれ、すでに /mnt/userdirs/ にマウントされています。root として、次のコマンドを使用してこのマウントポイントを /home に移動します。
# mount --move /mnt/userdirs /home
マウントポイントが正しく移動したことを確認するため、両方のディレクトリーのコンテンツを表示させます。
# ls /mnt/userdirs
# ls /home
jill  joe

19.2.5. ルートへの読み取り専用パーミッションの設定

場合によっては、ルートファイルシステムを読み取り専用パーミッションでマウントする必要があることがあります。ユースケースの例には、システムの予期せぬ電源切断後に行うセキュリティーの向上またはデータ整合性の保持が含まれます。

19.2.5.1. 起動時に読み取り専用パーミッションでマウントするようルートを設定

  1. /etc/sysconfig/readonly-root ファイルで READONLYyes に変更します。
    # Set to 'yes' to mount the file systems as read-only.
    READONLY=yes[出力は省略されています]
  2. /etc/fstab ファイルでルートエントリー (/) の defaultsro に変更します。
    /dev/mapper/luks-c376919e... / ext4 ro,x-systemd.device-timeout=0 1 1
  3. ro/etc/default/grub ファイルの GRUB_CMDLINE_LINUX ディレクティブに追加し、rw が含まれないようにします。
    GRUB_CMDLINE_LINUX="crashkernel=auto rd.lvm.lv=rhel/root rd.lvm.lv=rhel/swap rhgb quiet ro"
  4. GRUB2 設定ファイルを再作成します。
    # grub2-mkconfig -o /boot/grub2/grub.cfg
  5. tmpfs ファイルシステムで書き込みパーミッションでマウントされるファイルおよびディレクトリーを追加する必要がある場合は、/etc/rwtab.d/ ディレクトリーでテキストファイルを作成し、そのファイルに設定を追加します。たとえば、/etc/example/file を書き込みパーミッションでマウントするには、以下の行を /etc/rwtab.d/example ファイルに追加します。
    files /etc/example/file

    重要

    tmpfs のファイルおよびディレクトリーの変更内容は、再起動後に永続されません。
  6. システムを再起動します。

19.2.5.2. ルートを即時に再マウント

システムの起動時にルート (/) が読み取り専用パーミッションでマウントされた場合、書き込みパーミッションで再マウントできます。
# mount -o remount,rw /
これは、誤って / が読み取り専用パーミッションでマウントされた場合に便利です。
/ を読み取り専用パーミッションで再マウントする場合は、以下を実行します。
# mount -o remount,ro /

注記

このコマンドは、/ 全体を読み取り専用パーミッションでマウントします。「起動時に読み取り専用パーミッションでマウントするようルートを設定」 に説明があるように、RAM にコピーして特定ファイルおよびディレクトリーの書き込みパーミッションを保持する方がよいでしょう。

19.2.5.3. 書き込みパーミッションを保持するファイルおよびディレクトリー

システムが適切に機能するためには、一部のファイルやディレクトリーに書き込みパーミッションが必要になります。ルートが読み取り専用モードである場合、これらのファイルやディレクトリーは tmpfs 一時ファイルシステムの RAM にマウントされます。このようなファイルおよびディレクトリーのデフォルトのセットは、以下が含まれる /etc/rwtab ファイルから読み取りされます。
dirs	/var/cache/man
dirs	/var/gdm[出力は省略されています]
empty	/tmp
empty	/var/cache/foomatic[出力は省略されています]
files	/etc/adjtime
files	/etc/ntp.conf[出力は省略されています]
/etc/rwtab ファイルのエントリーは以下の形式にしたがいます。
ファイルまたはディレクトリーが tmpfs にコピーされる方法       	ファイルまたはディレクトリーへのパス
ファイルまたはディレクトリーは、以下の 3 つの方法で tmpfs にコピーできます。
  • empty path: 空のパスが tmpfs にコピーされます。例: empty /tmp
  • dirs path: ディレクトリーツリーは空の状態で tmpfs にコピーされます。例: dirs /var/run
  • files path: ファイルまたはディレクトリーツリーはそのまま tmpfs にコピーされます。例: files /etc/resolv.conf
カスタムパスを /etc/rwtab.d/ に追加する場合も同じ形式が適用されます。