計算サーバの構築

インストールメディア

  • <URL:https://www.debian.org/CD/netinst/> より, ネットワークインストール用インストーラを取得する.
  • 取得したイメージを USB メモリに焼く. Linux から焼く場合は dd コマンドを用いればよい. 以下では iso イメージを焼く先の USB メモリのデバイス名が /dev/sdb であることを仮定している.

    $ sudo dd if=debian-10.7.0-amd64-netinst.iso of=/dev/sdb bs=1m

Debian のインストール

  • Debian GNU/Linux インストーラで以下の設定をする.
    • 言語:日本語
    • パーテーション:
      • 全領域を使うお任せ設定
    • ネットワーク
    • ユーザ情報:適宜設定.
    • タスクセルでは, SSH server と標準システムのみ選択. デスクトップ環境は入れない.

Debian の初期設定

sudo の設定をしておく

基本的なソフトウェアのインストール

# apt-get update

管理的なツール

# apt-get install net-tools screen pciutils openssh-server fail2ban sudo build-essential rsync git lhasa software-properties-common dnsutils

エディタ

# apt-get install emacs vim

ページャー

# apt-get install lv

テキストブラウザ

# apt-get install w3m

Ruby

# apt-get install ruby

X11 関係

# apt-get install xvfb x11-apps x11-utils x11-xserver-utils dbus-x11

以下は計算サーバ (ncsv1, ncsv2 のみ)

コンパイラ

# apt-get install gfortran clang f2c

LAPACK, BLAS

# apt install libblas3 liblapack3 libblas-dev liblapack-dev

GNU 科学ライブラリ (GSL)

# apt-get install gsl-bin libgsl-dev

FFTW

# apt-get install libfftw3-long3 libfftw3-quad3 libfftw3-single3 libfftw3-bin libfftw3-dev ruby-fftw3

NetCDF

# apt install libnetcdf-dev libnetcdff-dev

画像系

# apt-get install imagemagick qiv ffmpeg

解析ツール

# apt-get install grads

ネットワーク100G (bonding)

必要なパッケージのインストール

# apt-get install ifenslave

NICのインターフェース名を確認する.

# ifconfig -a

  enp67s0f0np0 と enp67s0f1np1 が 100G の NIC

/etc/network/interfaces に 100G の設定を追加.LACP でボンディングしている. address と bond-slaves は機器に応じて適切に書き換えないといけない

auto bond0
iface bond0 inet static
   address 10.0.100.22/24
   bond-slaves enp67s0f0np0 enp67s0f1np1
   bond-mode 802.3ad
   bond-miimon 100
   bond-downdelay 200
   bond-updelay 200
   bond-lacp-rate 1

100 G の NIC を立ち上げ

# ifup bond0
# ifconfig bond0

設定確認.ethtool で speed が 200000 Mb/s (200G) になっていることを確認する.

# apt install ethtool

# ethtool bond0

  Speed: 200000Mb/s    <--- これが表示されるか確認

ping が通ることを確認

# ping 10.0.100.22

  PING 10.0.100.22 (10.0.100.22) 56(84) bytes of data.
  64 bytes from 10.0.100.22: icmp_seq=1 ttl=64 time=2.13 ms
  64 bytes from 10.0.100.22: icmp_seq=2 ttl=64 time=0.153 ms
  64 bytes from 10.0.100.22: icmp_seq=3 ttl=64 time=0.303 ms

IPv6 無効化

# vi /etc/sysctl.conf  

  # disable IPv6
  net.ipv6.conf.all.disable_ipv6 = 1

有効化

# sysctl -p

確認

# ifconfig

ssh X11 forwarding

IPv6 サポートを切っている場合は,以下の設定を入れておかないと ssh -Y をした時に自動的に DISPLAY 環境変数が設定されない.

# vi /etc/ssh/sshd_config 

  AddressFamily inet

# /etc/init.d/ssh restart

実際に試してみる.

(PC) $ ssh 10.0.100.24 -Y

(Server)$ echo $DISPLAY

   localhost:10.0

ソフトウェア RAID (ログインノードのみ)

# sudo apt-get install mdadm rsync initramfs-tools

パーティショニング

df すると /dev/sda がマウントされ,それがシステムとして使われていることが分かる. データ領域 /dev/sdb ~ /dev/sdy を順にパーティショニングする.

# cfdisk /dev/sdb

  * label type: gpt
  * type: Linux RAID

パーティショニングの確認

# lsblk

RAID6 の作成

RAID6 で作成.スペア無し

# mdadm --create /dev/md0 -l raid6 \
     -n 24 /dev/sdb1 /dev/sdc1 /dev/sdd1 /dev/sde1 /dev/sdf1 /dev/sdg1 \
           /dev/sdh1 /dev/sdi1 /dev/sdj1 /dev/sdk1 /dev/sdl1 /dev/sdm1 \
           /dev/sdn1 /dev/sdo1 /dev/sdp1 /dev/sdq1 /dev/sdr1 /dev/sds1 \
           /dev/sdt1 /dev/sdu1 /dev/sdv1 /dev/sdw1 /dev/sdx1 /dev/sdy1

    mdadm: Defaulting to version 1.2 metadata
           mdadm: array /dev/md0 started.

確認.[UUUU...] となっていれば OK.

# cat /proc/mdstat

  Personalities : [raid6] [raid5] [raid4]
       md0 : active raid6 sdy1[23](S) sdx1[22] sdw1[21] sdv1[20] sdu1[19] sdt1[18] sds1[17] sdr1[16] sdq1[15] sdp1[14] sdo1[13] sdn1[12] s\
       dm1[11] sdl1[10] sdk1[9] sdj1[8] sdi1[7] sdh1[6] sdg1[5] sdf1[4] sde1[3] sdd1[2] sdc1[1] sdb1[0]
                 78762700800 blocks super 1.2 level 6, 512k chunk, algorithm 2 [23/23] [UUUUUUUUUUUUUUUUUUUUUUU]
                 [>....................]  resync =  0.0% (845296/3750604800) finish=1108.9min speed=56353K/sec
                 bitmap: 28/28 pages [112KB], 65536KB chunk

OS再起動した時にも自動で raid が構成されるように情報を保存する.

# cp /etc/mdadm/mdadm.conf /etc/mdadm/mdadm.conf.bk

# sudo mdadm --detail --scan | sudo tee -a /etc/mdadm/mdadm.conf

# dpkg-reconfigure mdadm

  冗長性チェックを自動的に行うように設定

ファイルシステムの作成

# mkfs.ext4 /dev/md0

マウント

以下を参照しながら.設定.noatime を付けておかないと多量の書き込み時に反応が遅くなる https://wiki.archlinux.jp/index.php/Fstab#atime_.E3.82.AA.E3.83.97.E3.82.B7.E3.83.A7.E3.83.B3

# mkdir /pool0

# vi /etc/fstab

   /dev/md0  /pool0     ext4    defaults,noatime  0       2

# mount -a

# df -h | grep md0

   /dev/md0          40T   24K   38T    1% /pool0

テスト

再起動して問題なく /dev/md0 がマウントされることを確認する.

# df -h /dev/md0

  ファイルシス   サイズ  使用  残り 使用% マウント位置
  /dev/md0          40T   17T   22T   43% /pool0

NFS の設定

サーバ (ログインノード)

https://wiki.debian.org/NFSServerSetup NFSv4 を使う場合は rcpbind パッケージは不要

# apt install nfs-kernel-server

# vi /etc/idmapd.conf
  Domain = matsue-ct.ac.jp

# vi /etc/exports
  /pool0/deepLearning 10.0.100.0/24(rw,sync,no_root_squash,no_subtree_check)

クライアント (ログインノード以外)

インストールと動作確認

# apt-get install nfs-common
# mkdir /work/
# mount -t nfs 10.0.100.31:/pool0/deepLearning /work
# df
# umount /work

AutoFS 化

# apt-get install autofs
# echo "/-  /etc/auto.mount" >> /etc/auto.master
# echo "/work -fstype=nfs4,rw 10.0.100.31:/pool0/deepLearning/" >> /etc/auto.mount
# systemctl restart autofs

確認:

# ls /work/
# df

[補遺] Infiniband <==> Ethernet

AMD EPYC 搭載サーバは, MCX556A-ECA という FiberChannel と Ethernet の 両方で使えるカードが搭載されている. デフォルトでは FiberChannel のモードに なっているので, mstflint ツールを用いて設定変更を行う.

Mellanox の説明では, mlxconfig というコマンドを使うことになっているが, パッケージを入れても mlxconfig コマンドが見当たらなかった.... なぜ?

# apt-get install mstflint

# lspci | grep Mellanox

  21:00.0 Infiniband controller: Mellanox Technologies MT27800 Family [ConnectX-5]
  21:00.1 Infiniband controller: Mellanox Technologies MT27800 Family [ConnectX-5]

# lspci -d 15b3:
# mstflint -d 21:00.0 q
# mstflint -d 21:00.1 q

# mstconfig -d 21:00.0 q

  ずらずら設定が流れる. 

# mstconfig -d 21:0.0 set LINK_TYPE_P1=2 LINK_TYPE_P2=2

  Device #1:
  ----------

  Device type:    ConnectX5
  Name:           MCX556A-ECA_Ax
  Description:    ConnectX-5 VPI adapter card; EDR IB (100Gb/s) and 100GbE; dual-port QSFP28; PCIe3.0 x16; tall bracket; ROHS R6
  Device:         21:0.0

  Configurations:                              Next Boot       New
           LINK_TYPE_P1                        IB(1)           ETH(2)
           LINK_TYPE_P2                        IB(1)           ETH(2)