Red Hat Training

A Red Hat training course is available for Red Hat Enterprise Linux

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

特定のファイルシステムを添付するには、以下の形式で mount コマンドを使用します。
$ mount [option] device directory
デバイス は、以下の方法で識別できます。
  • ブロックデバイス へのフルパス: /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 で指定されたファイルシステムをマウントする場合は、以下のいずれかのオプションを選択できます。
mount [option] directory
mount [option] device
root でコマンドを実行しない限り、ファイルシステムのマウントにはパーミッションが必要であることに注意してください( 「マウントオプションの指定」を参照してください)。
注記: 特定デバイスの UUID とラベルの確認
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 一般的なファイルシステムのタイプ

説明
ext2 ext2 ファイルシステム。
ext3 ext3 ファイルシステム。
ext4 ext4 ファイルシステム。
btrfs btrfs ファイルシステム。
xfs xfs ファイルシステム。
iso9660 ISO 9660 ファイルシステム。通常、これは光学メディア (通常は CD) で使用されます。
nfs NFS ファイルシステム。通常、これはネットワーク経由でファイルにアクセスするために使用されます。
nfs4 NFSv4 ファイルシステム。通常、これはネットワーク経由でファイルにアクセスするために使用されます。
udf UDF ファイルシステム。通常、これは光学メディア (通常は DVD) で使用されます。
vfat FAT ファイルシステム。通常、これは Windows オペレーティングシステムを実行しているマシンや、USB フラッシュドライブやフロッピーディスクなどの特定のデジタルメディアで使用されます。
使用例は、例19.2「USB フラッシドライブのマウント」 を参照してください。

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

多くの場合、古い USB フラッシュドライブは FAT ファイルシステムを使用します。このようなドライブが /dev/sdc1 デバイスを使用し、/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 ファイルシステム上での非同期の入/出力を許可します。
auto mount -a コマンドを使用して、ファイルシステムを自動的にマウントできるようにします。
defaults async,auto,dev,exec,nouser,rw,suid のエイリアスを指定します。
exec 特定のファイルシステムでのバイナリーファイルの実行を許可します。
loop イメージをループデバイスとしてマウントします。
noauto デフォルトの動作では、mount -a コマンドを使用したファイルシステムの自動マウントが禁止されます。
noexec 特定のファイルシステムでのバイナリーファイルの実行は許可しません。
nouser 通常のユーザー( root以外のユーザー)によるファイルシステムのマウントとアンマウントを禁止します。
remount ファイルシステムがすでにマウントされている場合は再度マウントを行います。
ro 読み取り専用でファイルシステムをマウントします。
rw ファイルシステムを読み取りと書き込み両方でマウントします。
user 通常のユーザー(つまり root以外のユーザー)がファイルシステムをマウントおよびアンマウントすることを許可します。
使用例は、例19.3「ISO イメージのマウント」 を参照してください。

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

ISO イメージ (または一般的にはディスクイメージ) はループデバイスを使用することでマウントすることができます。Fedora 14 インストールディスクの ISO イメージが現在の作業ディレクトリーに存在し、/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/ ディレクトリーを共有としてマークします。
# 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/ に反映されていることを確認できます。たとえば、/dev/sdc1 デバイスを使用する空でない USB フラッシュドライブが接続されており、/mnt/flashdisk/ ディレクトリーが存在する場合は、以下を入力します。
# # 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/ ディレクトリーを共有としてマークします。
~]# mount --bind /media /media
~]# mount --make-shared /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/ ディレクトリーをプライベートとしてマークするには、以下を入力します。
~]# 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. rootの読み取り専用パーミッションの設定

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

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

  1. /etc/sysconfig/readonly-root ファイルで、READONLYyes に変更します。
    # Set to 'yes' to mount the file systems as read-only.
    READONLY=yes
    [output truncated]
  2. /etc/fstab ファイルで、ルートエントリー(/)で デフォルトro に変更します。
    /dev/mapper/luks-c376919e... / ext4 ro,x-systemd.device-timeout=0 1 1
  3. /etc/default/grub ファイルの GRUB_CMDLINE_LINUX ディレクティブに ro を追加し、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/ のサンプル ファイルに追加します。
    files /etc/example/file
    重要
    tmpfs のファイルおよびディレクトリーへの変更は、再起動後は維持されません。
  6. システムを再起動します。

19.2.5.2. root を即座に再マウントする

root (/)がシステム起動時に読み取り専用権限でマウントされている場合は、書き込み権限で再マウントできます。
# mount -o remount,rw /
これは、/ が読み取り専用パーミッションで誤ってマウントされている場合に特に便利です。
読み取り専用権限で / を再マウントするには、次のコマンドを実行します。
# mount -o remount,ro /
注記
このコマンドは、読み取り専用パーミッションで / 全体 をマウントします。より良い方法は、「起動時に読み取り専用パーミッションでマウントする ルート の設定」 で説明されているように、特定のファイルとディレクトリーを RAM にコピーして、それらの書き込み権限を保持することです。

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

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