計算サーバの構築
インストールメディア
- <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)