[rocky linux 8.9]NFS(Network File System)でファイル共有を行う手順まとめ
ChatGPTに聴きまくってなんとか実装したNFSのログ
研究室の初心者輪講用にまとめましたが、備忘録も兼ねています。
前提
VM1~VM4が172.16.1.1~4の固定IPアドレスを持っています。
それぞれは外部(8.8.8.8等)への通信および他VMとの相互通信が可能です。
Rocky Linux release 8.9 (Green Obsidian)上に立てたRocky Linux release 9.4 (Blue Onyx)のVMで作業します。
NFSはバージョン4.2
サーバー側の設定手順
1. 必要なパッケージのインストール
NFSサーバーパッケージをインストールする。
sudo dnf install nfs-utils -y
例としてVM1の/homeを共有する。
2. /etc/export
ファイルの編集
エクスポート設定を行うために /etc/export
ファイルを編集する。
/etc/export
はNFSでどのファイルをエクスポートするかの設定が書いてあるファイルである。
sudo vim /etc/export
以下の行を追加する。ここでは、172.16.1(人によっては172.16.2)のネットワーク全体に共有できるようにしたいので172.16.1.0/24とする。
/export/nfs 172.16.1.0/24(rw,sync,no_root_squash)
もしくは
/export/nfs 172.16.2.0/24(rw,sync,no_root_squash)
ちなみに。
rw=Read and Write 読み書き可能であることを指す。
sync=データがディスクに書き込まれる際にすぐにディスクに書き込まれることを保証する。順番が崩れないのでデータの一貫性が保たれるらしい。
no_root_squash=クライアント側のrootユーザがサーバ上のファイルシステムにフルアクセセスできるようにする。
(root_squash=クライアントのrootユーザが書き込む際にそのユーザを匿名ユーザにマッピングする)
3. エクスポート設定の再読み込み
設定を反映させるためにエクスポート設定を再読み込みする。
sudo exportfs -r
エラーがでなければ成功。
4. NFSサービスの起動と有効化
NFSサービスを起動し、自動起動を有効にする。これはそんなにやらなくてもいいけど一応。
sudo systemctl start nfs-server
sudo systemctl enable nfs-server
私の環境ではskipping,みたいなのが表示されたが、無視してもできた。解決できた人がいたら教えてください。
5. NFSサービスの状態確認
NFSサービスが正しく動作していることを確認したいならこれ。
sudo systemctl status nfs-server
active(runnning)と出れば成功。
6. エクスポート状態の確認
エクスポートされているディレクトリを確認する。
sudo exportfs -v
/home 172.16.1.0/24(sync,wdelay,hide,no_subtree_check,sec=sys,rw,secure,no_root_squash,no_all_squash)
このような表示があれば成功。
7. showmount
コマンドでエクスポート確認
サーバー上でエクスポートされているディレクトリを確認する。
showmount -e localhost
以下のように表示されたら成功
Export list for localhost:
/usr 172.16.1.0/24
クライアント側の設定手順
1. 必要なパッケージのインストール
NFSクライアントパッケージをインストールする。
sudo dnf install nfs-utils
2. マウントポイントの作成
NFS共有をマウントするディレクトリを作成する。例えば、homeVM1
を作成する。
sudo mkdir homeVM1
tips:
ディレクトリ内のディレクトリを作りたいときは-pで一発作成可能。
sudo mkdir -p NFS/homeVM1
入れないと親ディレクトリが存在しないと言われる。
sudo mkdir NFS/homeVM1
mkdir: cannot create directory ‘NFS/homeVM1’: No such file or directory
3. マウントコマンドの実行
サーバーのエクスポートされたNFSディレクトリをマウントする。
sudo mount -t nfs 172.16.1.1:/home homeVM1
4.確認
ls homeVM1
ファイルが見れれば基本的には成功している。ファイルを作成して反映されるか。読み書きができるかなどチェックしてください。
デバッグのコツ
1.変更は必ず反映しよう。
ファイルを変更しただけではサーバに反映されないことはいままでもよくあったと思います。
今回であればexportfs -r
やdaemonの再起動により反映を行いました。
2.firewallは忘れた頃に邪魔してくる。
mountを実行してもサーバにアクセスできない、pingは通るのに。
そんなときはきっとfirewallがポートを塞いでいます。
sudo firewall-cmd --permanent --add-service=nfs
sudo firewall-cmd --permanent --add-service=rpc-bind
sudo firewall-cmd --permanent --add-service=mountd
sudo firewall-cmd --reload
この辺りを実行して、firewall設定を行ってください。
要注意
マウントコマンドの実行は十分に気をつけて行うこと!!
sudo mount -t nfs 172.16.1.1:/home /etc
とかしないように!
(意図的に行う方は自己判断でお願いしますね。)
大事なファイル※をマウントポイントにすると、最悪linuxがお亡くなりになります。
大事なファイル以下を参照。
Linux基礎(ファイルシステムの構成&ファイル検索)
https://qiita.com/kakkie/items/6f81d8916a61aa49a47b