ぼちぼちPCクラスタのUbuntuを20.04から22.04へアップグレードする作業をしています。最初の一台をアップグレードして計算を試してみたら「libpython3.8.so.1.0 が無い」って怒られました…。ググったら「似たような名前の新しそうなやつにリンク張っとけばおk」みたいな記事が出てきたので「対処療法~」と思いながら実行しました。
sudo ln -s /usr/lib/x86_64-linux-gnu/libpython3.10.so.1.0 /usr/lib/x86_64-linux-gnu/libpython3.8.so.1.0
動いてるからヨシ!
#NFS で home/ ディレクトリを共有しているファイルサーバーに #SSH で "connection refused" と言われて入れなくなりました。ping は返ってくるし、そもそも NFS のファイル共有は使えていました。何だろう?と思って現地に行くと "You are in emergency mode." との事。
"You are in emergency mode."でググってみると、HDDやSSDがマウントに失敗しているときにこうなっている例が多く、幸いなことに(?)私のファイルサーバーも同様でした。そこで、マウントに失敗しているHDDを起動時にマウントしないように /etc/fstab を編集して再起動することで通常起動するようになりました。
とは言え、マウントに失敗していたのはNFSで共有しているHDDのバックアップだったので、現状、バックアップ先が一つ減ってしまった状態です。そのうち何とかしなければいけませんね…。
$\log$ とは別の話になりますが「見やすい」グラフの別の例が #自作PCクラスタ超入門 にもありました。
同じ計算を計算機のCPU数 $n$ を増やしながら行って行ったとき、その計算にかかる時間 $t$ は、(理想的には)CPU数に反比例 $t \propto 1 / n$ するはずです。このとき、横軸を $n$ 縦軸を $t$ でプロットするよりも、縦軸を実行時間の逆数 $1/t$ にした方が良い…と。
人間は、データが直線に乗っているか乗っていないかを目視で判断するのは割と得意ですが、それ以外の関数と合っているかを判断するのは結構難しい、なので「どうなるべきか?」が分かっているものは、それが直線のグラフになるようにプロットするのが便利だって事でしょうね。
OMRON の UPS を Ubuntu で使う場合は、付属しているCent OS用のシャットダウンソフトを無理に使うよりも nut を利用するほうが上手く行くようです。
私が使ってるのは OMRON の POWLI BU300RW
ちなみに vendorid は 0590
productid は 0077 でした。
UPSの導入時に参考にしているのはこの辺り
NUT(Network UPS Tools)のmaster・slaveモードでの設定
https://ameblo.jp/p630/entry-12333636345.html
Ubuntu 10.04 LTS - nut - omron BY50S
https://seesaawiki.jp/w/kou1okada/d/Ubuntu%2010.04%20LTS%20-%20nut%20-%20omron%20BY50S
なんか UPS の初期化に失敗してるっぽい?
#自作PCクラスタ超入門 #UPS #nut
nut@$hostname$ から流れてきた全体周知メッセージ (somewhere) (Sat
UPS bu300rw@$ipaddress$ is unavailable
みたいな通知が来る...
sudo service nut-server restart
とやると
nut@$hostname$ から流れてきた全体周知メッセージ (somewhere) (Sat
Communications with UPS bu300rw@$ipaddress$ established
となって直りますが、再起動のたびにやるのはめんどくさいですね...
もう一つ、躓きポイントがありました。SSH の .ssh/known_hosts への登録に関してです。
SSH 接続をすると、最初の1回は、本当にそのサーバーに接続してよいのか?という事をパソコンが尋ねてきて yes と答える必要があります。
PBS では SSH を使っているので、PBS で SSH 接続を行う前に、あらかじめ手動で SSH 接続をやっておく必要があるのですが、そこで IP アドレスで接続したときとホスト名で接続したときで .ssh/known_hosts の登録が別になることを知らなかったのが躓きポイントでした。
たとえばホスト名が node010 で IP アドレスが 192.168.0.10 の計算ノードがあったとします。
PBS ではホスト名で SSH 接続をするので
ssh node010
であらかじめ接続をやっていれば問題なく進みますが
ssh 192.168.0.10
でやっていると PBS で弾かれます。
OpenPBS を用いたノード間並列計算に少してこずりました。
上記サイトでは
#!/bin/bash
#PBS -V
#PBS -l select=2:ncpus=6:mpiprocs=12
cd $\$$PBS_O_WORKDIR
mpirun ./hello
のようなジョブ投入スクリプトでノード間並列ができるとの事でしたが、私の環境では machinefile の指定が必要でした。
#!/bin/bash
#PBS -V
#PBS -l select=2:ncpus=6:mpiprocs=12
cd $\$$PBS_O_WORKDIR
uniq $\$$PBS_NODEFILE > hostsfile
mpirun -np 12 --machinefile ./hostsfile ./hello
みたいな感じです。
Python 3.5 を要求される件、改善されたようです。普通に Ubuntu 20.04 に入っている python3 である 3.8.5 で OpenPBS のインストールが可能です。
#自作PCクラスタ超入門
NFSの挙動がイマイチ理解できない。多分下記URLを読めば書いてあることなんだと思うのですが、今日はもう寝ます...
NFSの設定と動作
https://hhelibex.hatenablog.jp/entry/20111205/1323111243
テスト用のPCクラスタのどのノードにもSSHがつながらない...根元のスイッチングハブが死んだのかなぁ...
お払い箱にするつもりの物ばっかりで組んだクラスタだから、いつどこが死んでもびっくりしないけど、う~ん。
sudo apt install build-essential libffi-dev libssl-dev zlib1g-dev liblzma-dev libbz2-dev libreadline-dev libsqlite3-dev git
git clone https://github.com/pyenv/pyenv.git ~/.pyenv
echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bashrc
echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bashrc
echo 'eval "$(pyenv init -)"' >> ~/.bashrc
source ~/.bashrc
pyenv -v
pyenv install 3.5.10
cd ~/openpbs/
pyenv local 3.5.10
python --version
"現在のバージョン(pbs20.0.0)ではPythonのバージョンが3.5であることを要求してくるので、configureで文句を言われたときはpyenvなどを使って変更してください。"
と書かれているとおりpyenvでpython 3.5.10 を入れる必要がありました。configureでは文句を言われなかったのですが...
本日(昨日)は、ジョブ管理ソフトのOpenPBSを下記URLを倣って練習用のクラスタにインストールしてみました。
本番用のファイルサーバーマシンもRAID1でインストールをするつもりですが、発注したHDDが欠品中とのことで実際に作業に移れるのは今月下旬でしょうね...
ちなみに、まだRAID1の構成が終わっていないらしく
sudo mdadm -D /dev/md0
と打つと
State : clean, resyncing
Resync Status : 82% complete
などと返ってきます。
2TBのHDDですが、普通に半日ぐらいかかりそうなので、ここまで行ったらその日の作業は終了ですね。一応、使えないことはないのですが、HDDのアクセスランプが付きっぱなしでめちゃくちゃ重いです。
今日は、お払い箱にする予定のPCにHDDを2台つないでRAID1でUbuntu 20.04 のサーバー版をインストールしました。
デスクトップ版はインストール段階でRAID1を選べないのですが、サーバー版はブート領域も含めてRAID1にインストールできるとの事です。
ソフトウェアRAID1でUbuntuをインストール
https://note.classact.co.jp/user/honma-h/%E3%83%A1%E3%83%A2/2020/08/23/%E3%82%BD%E3%83%95%E3%83%88%E3%82%A6%E3%82%A7%E3%82%A2RAID1%E3%81%A7Ubuntu%E3%82%92%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB
ヘッドノードのパーティション構成が変だったので直そうとしたら、起動しなくなった…仕方ないのでOSごと再インストール。
まあUbuntuのインストールなんて手慣れたもんですよ...
CAT5eの古いLANケーブル使いまわしてたら一番根元のヤツがCAT5だった死にたい...
IPアドレスの設定をするときには、基礎知識として以下のサイトを読みました。
IPアドレスの基礎知識
https://qiita.com/mogulla3/items/efb4c9328d82d24d98e6
また、10進数と2進数の相互変換には下記のサイトを利用しています。
2進数、8進数、10進数、16進数相互変換ツール
https://hogehoge.tk/tool/number.html