電子計算記

個人的な検証を

9. MPIクラスターを作ろう! - NFSサーバーをたてよう

前回からのつづき。
8. MPIクラスターを作ろう! - ホスト設定ファイル - 電子計算記

実行バイナリを共有するためにNFSストレージサーバーを準備しましょう。

まずは、NFSストレージサーバー用に仮想マシンを作成します。

computeのマシンと同じリージョン/ゾーンに作成します。

マシンタイプはここでもLight.S1で作ります。

イメージはcomputeに合わせてUbuntu 16.04 の例とします。

ボリュームは、容量を必要に応じて増設できるように、データディスクを利用します。
ここでは10GBを追加します。

マシン名は、nfs-serverとしました。以降はこの名前を例にすすめます。

nfs-serverにSSHログイン後、最初にデータディスク上にパーティションを準備します。
将来的にオンラインで増設できるよう予めLVMで準備しておきます。
なお、上記の流れでマシンを作成すると、データディスクは/dev/sdbとして見えていると思います。

root@nfs-server:~# apt update
root@nfs-server:~# apt install parted lvm2 -y
root@nfs-server:~# parted /dev/sdb mklabel gpt
Yes/No? yes
root@nfs-server:~# parted /dev/sdb mkpart primary 1 100%
root@nfs-server:~# parted /dev/sdb set 1 lvm on
root@nfs-server:~# pvcreate /dev/sdb1
root@nfs-server:~# vgcreate VG01 /dev/sdb1
root@nfs-server:~# lvcreate -l 100%FREE -n LV01 VG01
root@nfs-server:~# mkfs.ext4 /dev/VG01/LV01

これで/deb/sdb1というパーティション上で、LVMを構成し、/dev/VG01/LV01というロジカルボリュームをext4でフォーマットしたものができあがりました。
このあと、NFSで共有に利用するディレクトリとして/nfsの例ですすめていきます。

root@nfs-server:~# mkdir /nfs
root@nfs-server:~# chmod 777 /nfs
root@nfs-server:~# echo "/dev/VG01/LV01 /nfs ext4 defaults 0 0" >> /etc/fstab
root@nfs-server:~# mount -a
root@nfs-server:~# df -h
Filesystem             Size  Used Avail Use% Mounted on
udev                   470M     0  470M   0% /dev
tmpfs                   98M  4.4M   94M   5% /run
/dev/sda1               15G  1.8G   13G  13% /
tmpfs                  488M     0  488M   0% /dev/shm
tmpfs                  5.0M     0  5.0M   0% /run/lock
tmpfs                  488M     0  488M   0% /sys/fs/cgroup
/dev/mapper/VG01-LV01  9.8G   23M  9.2G   1% /nfs

/nfs がマウントできればOKです。

次に、NFSサーバーのインストールですがaptで一発です。

root@nfs-server:~# apt install nfs-kernel-server -y

設定箇所は2つあります。1つ目に、ドメインの設定です。idmapd.conf の6行目のDomainをコメントインしてドメインを記述してください。

root@nfs-server:~# vi /etc/idmapd.conf 
[General]

Verbosity = 0
Pipefs-Directory = /run/rpc_pipefs
# set your own domain here, if id differs from FQDN minus hostname
Domain = cs30idcfcloud.internal

[Mapping]

Nobody-User = nobody
Nobody-Group = nogroup

東日本リージョン2のfaradゾーンで作成しているのでcs30idcfcloud.internalとなります。
ゾーンで異なるので、ドメインがわからなければ以下のとおり確認してください。

root@nfs-server:~# hostname -f
nfs-server.cs30idcfcloud.internal

2つ目の設定として、対象のディレクトリとアクセス制御の設定です。
ここでの設定例として、ファイアウォール配下にいるのでIPアドレスでの制御はしてません。
また、各ノードでアクセス時にデータが異なると困るので明示的にsyncを入れてます。(デフォルトなのでなくても大丈夫ですが)

root@nfs-server:~# echo "/nfs *(rw,sync,no_root_squash)" >> /etc/exports

最後にサービスをrestartしてうまくいけば完了です。

root@nfs-server:~# systemctl restart nfs-server

次回はNFSクライアント側の設定をしていきます。

fujish.hateblo.jp