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 ページドキュメント」 を参照してください。
型 | 説明 |
---|---|
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 ページを参照してください。
オプション | 説明 |
---|---|
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「共有マウントポイントの作成」 を参照してください。 - スレーブマウント
- スレーブマウントにより、所定のマウントポイントの複製を作成する際に制限を課すことができます。マウントポイントがスレーブマウントとしてマークされている場合は、元のマウントポイント内のすべてのマウントが複製マウントポイントに反映されますが、スレーブマウント内のマウントは元のポイントに反映されません。マウントポイントのタイプをスレーブマウントに変更するには、シェルプロンプトで次を入力します。
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. 起動時に読み取り専用パーミッションでマウントする ルート
の設定
/etc/sysconfig/readonly-root
ファイルで、READONLY
をyes
に変更します。# Set to 'yes' to mount the file systems as read-only. READONLY=yes [output truncated]
/etc/fstab
ファイルで、ルートエントリー(/
)でデフォルト
をro
に変更します。/dev/mapper/luks-c376919e... / ext4 ro,x-systemd.device-timeout=0 1 1
/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"
- GRUB2 設定ファイルを再作成します。
#
grub2-mkconfig -o /boot/grub2/grub.cfg tmpfs
ファイルシステムに書き込みパーミッションでマウントするファイルおよびディレクトリーを追加する必要がある場合は、/etc/rwtab.d/
ディレクトリーにテキストファイルを作成し、そこに設定を配置します。たとえば、/etc/example/file
を書き込みパーミッションでマウントするには、以下の行を/etc/rwtab.d/ のサンプル
ファイルに追加します。files /etc/example/file
重要tmpfs
のファイルおよびディレクトリーへの変更は、再起動後は維持されません。この手順の詳細は、「書き込みパーミッションを保持するファイルおよびディレクトリー」 を参照してください。- システムを再起動します。
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/
に追加する場合も同じ形式が適用されます。