共有領域がないと困ること困ること
並列計算で欠かせないのが共有ディレクトリを作ることです。
なぜかというと各マシンで同じ実行ファイルを見ているからです。
ですので、共有ディレクトリがないと、
1.実行ファイルを作る(プログラミング→コンパイル)
2.実行ファイルをばらまく(超めんどくさい)
3.あ、実行途中にバグった。(1.へ戻る)
を繰り返すはめになるので、面倒でしょ?
NFSの設定
NFSサーバ
ここでもAnsibleさんが大活躍、方法としては
- nfs-utilsの最新版をチェックして
- ファイアーウォールを設定して
- きちんとNFSの共有領域ができているかチェック
- NFS サーバの機動
を実行するようにします。
nfs-server/tasks/main.yml
---
- name: check latest nfs-utils
dnf:
name: nfs-utils
state: latest
update_cache: yes
- name: set firewall
shell: firewall-cmd --permanent --add-service nfs
- name: fix firewall
shell: firewall-cmd --reload
- name: unmount directory
shell: if [ -d /nfs/home/evakichi/ ];then umount /nfs/home;fi
- name: mount directory
shell: mount $(blkid |grep "/dev/sda" |cut -d" " -f2|sed "s/UUID=\"\(.*\)*\"/UUID=\1/g") /nfs/home
- name: start nfs
systemd:
name: nfs-server
enabled: true
state: started
NFSクライアント
クライアントも、サーバとほぼ同じです。
- nfs-utilsの最新版をチェックして
- ファイアーウォールを設定して
- いったんファイアーウィールをアンマウントして(マウントしていたらの話です)
- NFSマウント実行
nfs-client/tasks/main.yml
---
- name: check latest nfs-utils
dnf:
name: nfs-utils
state: latest
update_cache: yes
- name: set firewall
shell: firewall-cmd --permanent --add-service nfs
- name: fix firewall
shell: firewall-cmd --reload
- name: unmount directory
shell: if [ -d /nfs/home/lost+found ]; then umount /nfs/home; fi
- name: mount directory
shell: mount -t nfs ctl:/nfs/home/ /nfs/home
てなかんじ、もう少し工夫すれば一個のファイルでNFSの構築ができそうです。
ミソは、NFSサーバが完全に起動してからクライアントがNFSマウントしに行かなければいけないのを書かないといけないことでしょうか…。