CentOS7/RHEL7 におけるファイルシステムのマウント順序を指定する方法(2019/1/7 追記あり)

こんにちは。サイオステクノロジー OSS サポート担当何敏欽です。

CentOS7/RHEL7 のシステムにおいて、まず NFS マウントして、その後に NFS マウントした領域の中のディレクトリを bind マウントしたい場合はどう設定すればいいでしょうか。

方法は二つあります。/etc/fstab に依存関係を追記するか、自動作成されたマウント Unit ファイルを /etc/systemd/system にコピーするかです。下記にぞれぞれを説明します。

2019/1/7 追記:下記に説明する「/etc/fstab に依存関係を追記する方法」と「マウント Unit ファイルを /etc/systemd/system にコピーする方法」について、一部のサービスが起動しなくなる恐れがあることを判明しました。その原因と解決方法は「2019/1/7 追記:_netdev属性をマウントエントリに追加」をご確認ください。

/etc/fstab に依存関係を追記する方法

検証環境の NFS サーバ、クライアントの情報は下記のとおりです。なお、bind マウント用に /mnt/nfsclient/suika/momo/banana/ ディレクトリと /mnt/nfsclient/suika/momo/apple/strawberry ディレクトリを作成しておきます。

/etc/fstab に下記のように設定を追記します。

mount -a コマンドを実施後に mount コマンドを実施し、ちゃんと NFS マウント→ bind マウントの順番に実施されることが確認できます。

上記設定に使用している依存関係を構成する x-systemd.requires と x-systemd.requires-mounts-for の詳細について、下記をご確認ください。

マウント Unit ファイルを /etc/systemd/system にコピーする方法

 

/etc/fstab を設定後、「systemctl daemon-reload」コマンドを実施すると、マウント Unit ファイルが /run/systemd/generator/ ディレクトリに作成されます。

マウント Unit ファイルの中身は以下のとおりです。

マウント Unit ファイルを /etc/systemd/system/ にコピーした後、ファイルの中身に必要な調整を行います。その後、/etc/fstab に追記した依存関係の設定を削除します。

[systemctl start (Unit ファイル)] を実施後、[systemctl status (Unit ファイル)] を実施し、active であることを確認します。

mount コマンドを実施し、ちゃんと NFS マウント→ bind マウントの順番に実施されることが確認できます。

2019/1/7 追記:_netdev属性をマウントエントリに追加

「/etc/fstab に依存関係を追記する方法」と「マウント Unit ファイルを /etc/systemd/system にコピーする方法」実施すると、下記のコマンドの実行結果が示すように、起動時に一部のサービスが正しく起動しないことが判明しました。

この出力では、rpc-statd.service→nfs-config.service→local-fs.target→mnt-nfsclient-suika-momo-apple-strawberry.mount→mnt-nfsclient.mount→nfs-server.service→rpc-statd.service の順序で並べられています。mnt-nfsclient-suika-momo-apple-strawberry.mount と mnt-nfsclient.mount に依存関係が設定していることが原因です。

解決方法は、/etc/fstab に下記のように修正し、_netdev 属性をマウントエントリに追加する必要があります。

>> 雑誌等の執筆依頼を受付しております。
   ご希望の方はお気軽にお問い合わせください!

ご覧いただきありがとうございます! この投稿はお役に立ちましたか?

役に立った 役に立たなかった

1人がこの投稿は役に立ったと言っています。

コメント投稿

メールアドレスは表示されません。


*