記事の目的
自作PCクラスタの構築手順をしばしば失念するため,その備忘録をここに書き残すこととします.
自作PCクラスタ構築手順
1. 材料の準備
ノード/ファイルサーバ1台ごとに必要なもの
- CPU
- マザーボード
- PC用電源ユニット
- DRAM(DDR4やDDR5等)
- SSDまたはHDD
- LANケーブル
- PCケースまたはベンチ台
1つあればよいもの
- スイッチングハブ
- キーボード
- マウス
- モニター
- ディスプレイケーブル
- OSインストール用USB(LiveUSB)
オプショナルな材料
- グラフィックボード(GPU)
- Ethernetカード
- PCラック
- CPU冷却ファン(i9/Ryzen9クラスでは必須)
2. 組み上げ
(1) OSインストール用USB(LiveUSB)を作成しておく.
例えば,ubuntuであれば公式HPから.iso
イメージをダウンロードし,UNetbootin等を用いてLiveUSBを作成しておく.
(2) マザーボードにCPUを取り付ける.この際にピン曲がりに注意.
(3) (2)をPCケースに取り付け,電源ユニット,DRAM,SSD/HDD等を取り付ける.この際,のちの混乱を避けるため,ストレージとしてはOSをインストールする予定のSSD/HDDのみを接続しておく.
(4) 組んだPCにLiveUSBを挿してOSのインストールを行う.なお,hostnameとローカルIPアドレスはノードごとに事前に決めておくこと.以下ではUbuntu 18.04をインストールした場合について記述する.
(5) 計算ノードでは(5-1),ファイルサーバでは(5-2)を実行する.
(5-1) 計算ノードにログインしたら以下のスクリプトを実行する.次いで,mkdir /mnt/nfs
などを実行し,全計算ノード上の同じ場所にマウントポイントを作成する.また,ssh-keygen
しておく.
#!/bin/sh
sudo apt install -y gcc
sudo apt install -y gfortran
sudo apt install -y libopenmpi-dev
sudo apt -y install nfs-common
sudo apt -y install lm-sensors
sudo apt -y install openssh-server
#以下は好み次第では不要
sudo apt -y install libblas-dev
sudo apt -y install liblapack-dev
sudo apt -y install libatlas3-base
sudo apt -y install libatlas-base-dev
sudo apt -y install libopencv-dev
sudo apt -y install gcc-offload-nvptx
(5-2) ファイルサーバにログインしたら以下のスクリプトを実行する.次いで,mkdir /mnt/nfs
などを実行し,マウントポイントを作成する.また,ssh-keygen
しておく.
#!/bin/sh
sudo apt install -y gcc
sudo apt install -y gfortran
sudo apt install -y libopenmpi-dev
sudo apt -y install nfs-common
sudo apt -y install nfs-kernel-server
sudo apt -y install lm-sensors
sudo apt -y install openssh-server
#以下は好み次第では不要
sudo apt -y install libblas-dev
sudo apt -y install liblapack-dev
sudo apt -y install libatlas3-base
sudo apt -y install libatlas-base-dev
sudo apt -y install libopencv-dev
sudo apt -y install gcc-offload-nvptx
(6) ファイルサーバ上で,nfs用のディスクをマウント&フォーマットしたあとで,/etc/exports
を編集して,計算ノードに対してアクセスを許可する.その後,sudo systemctl start nfs-kernel-server
などとしてnfsサーバを起動する.
(7) 計算ノードのNICに,あらかじめ決めておいた固定IPを設定した上で(/etc/netplanから設定可能),sudo mount 192.168.0.200:/mnt/nfs /mnt/nfs
などとしてファイルサーバのnfs用領域をマウントする.
(8) 全ての計算ノード相互にssh-copy-id
を行い,パスワードなしで互いにログインできるようにしておく.
さいごに
多分以上の手続きを行えばよいのですが,もし漏れがあれば追記します.