【Debian】BeeGFSの導入
前説?
今回はBeeGFSを使うにあたって、色んなサイトを見ているとDebian系のOSでBeeGFSを導入する人が少ないのか、参考にできる文献が少なかったため、自分なりに調べながらトライ&エラーでやってみたところとりあえず動くところまできたので、まとめてみました。
BeeGFSについて
BeeGFSの公式サイトには次のように書かれています。
The leading parallel file system
つまり、代表的な並列ファイルシステム
らしいです。また詳しく読むと、次のようなことも書かれていました。
BeeGFS is designed for all performance-oriented environments including HPC, AI and Deep Learning, Media & Entertainment, Life Sciences, and Oil & Gas (to name a few)
訳すと、BeeGFSは、HPC、AIとディープラーニング、メディア&エンターテイメント、ライフサイエンス、オイル&ガス(一部を除く)など、あらゆるパフォーマンス志向の環境向けに設計されています。
らしいです。
使用機器と構成図
今回はRaspberry Pi 4 ModelB/8GBを4台用いて行いました。BeeGFSでは、ManagementServer
、MetadataServer
、StorageServer
、Client
、AdmonServer
という5つのサーバが必要になります。ただし、今回はラズパイが4台しかないため以下のような構成で作成していくことにしました。
名前 | hostname | IPv4 アドレス | 備考 |
---|---|---|---|
ManagementServer & AdmonServer | node1.local | 192.168.50.110/24 | ManageServerとAdmonServerの同居 |
Metadata Server | node2.local | 192.168.50.111/24 | ext4でフォーマットするのが推奨 |
Client | node3.local | 192.168.50.112/24 | |
Storage Server | node4.local | 192.168.50.120/24 | ext4,xfsなどでフォーマットするのが推奨 |
ラズパイのセットアップ
ここからはラズパイの設定を行っていくため、「ラズパイを使わない人、設定済みの人、こんなの見ないでも設定できるわ!」という人は飛ばしていただいて構いません。ただし、途中の赤い注意事項だけは読むようにお願いします。
Raspberry Pi Imagerのインストール
OSをインストールするためにOSのImageをダウンロードして、そのまま焼き付けまでやってくれるアプリケーションをラズパイの公式サイトからダウンロードして行いました。
使い方は、OperationgSystemで使いたいOSを選択し、Storageで最終的にOSを使うことになるSDカードを選択し、Writeを押すだけでラズパイにOSの書き込みができるという簡単な仕様になっています。また、OSは自分がダウンロードしたISOファイルも使えるみたいです(※検証はしていない)。
OSのインストール
OSは先ほどの画像にもある通りUbuntu Server22.04.1 LTS(64bit)
を使うことにします。
ネットワークの設定
次に、ラズパイにSSHで接続して設定を行って行きため、DHCPでIPアドレスを振るのではなく、IPアドレスを固定にしたいと思います。
- まず、OSをダウンロードしたSDカードをPCで開きます。(Windowsだとエクスプローラー、MacだとFinder等)
-
network-config
と書かれたファイルがあるので、それをメモ帳などのテキストエディタで開きます。 - ファイルを開いたら設定するノードごとに以下のような感じで変更します。ただし、イーサネット名である
eth0
、addresses
、gateway4
、nameservers
の設定は、お使いの環境に合わせて変更してください。(今回は最初に示した構成図のところの表通りに設定しました。)
network:
ethernets:
eth0:
dhcp4: false
addresses:
- 192.168.50.110/24
routes:
- to: default
via: 192.168.165.254
nameservers:
addresses:
- 1.1.1.1
version: 2
- 上記の内容で保存したのちに、ラズパイにSDカード(OSを書き込んだストレージ)を差して、電源をつけて起動します。
各種BeeGFSパッケージのインストール
準備
BeeGFSのパッケージをダウンロードするには、aptには標準で存在しないため自分でPGPキーとリポジトリの場所を指定してからダウンロードする必要があります。以下のコマンドをすべてのサーバで実行してください。
- 保存場所の作成
sudo mkdir -p /etc/apt/keyrings
- PGPキーのダウンロード
curl -fsSL https://www.beegfs.io/release/beegfs_7.3.2/gpg/GPG-KEY-beegfs | sudo gpg --dearmor -o /etc/apt/keyrings/beegfs.gpg
- リポジトリの登録
cat <<EOF | sudo tee /etc/apt/sources.list.d/beegfs.list
deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/beegfs.gpg] https://www.beegfs.io/release/beegfs_7.3.2 $(lsb_release -cs) non-free
EOF
- 2・3番で登録したのを更新することでダウンロードを可能にする。
sudo apt update
インストール
上記の準備を行うと、パッケージがダウンロードできるようになるので、それぞれのノードごとに対応するパッケージをダウンロードします。
- node1(ManagementServer & AdmonServer)
sudo apt install -y beegfs-mgmtd beegfs-mon
- node2(MetadataServer)
sudo apt install -y beegfs-meta
- node3(Client)
sudo apt install -y beegfs-client beegfs-helperd beegfs-utils
- node4(StorageServer)
sudo apt install -y beegfs-storage
各ノードごとの設定について
ノードごとのIDについて
設定をする際に、各ノードのIDを指定する必要があります。そのIDはあらかじめ時決まっているものではなく、自分で決めるものであるため以下に例を示します。
ノード名 | ID(識別番号) | ストレージID | 備考 |
---|---|---|---|
node1.local | 1 | 規定値でこれが設定されている | |
node2.local | 5 | ||
node4.local | 100 | 1000 |
設定時のオプションの説明
次に各ノードごとに設定を行っていく際に出てくるオプションについて説明します。
オプション | 説明 |
---|---|
-p | 保存をする場所を指定する際に用いる |
-m | どのノードを指すかを指定する |
-s | ID(識別番号)の指定に用いる |
-i | ストレージのIDを指定するときに用いる |
各ノードごとに設定に必要なコマンド
ManagementServer&AdmonServer(node1)
sudo mkdir -p /beegfs/beegfs_mgmtd
sudo /opt/beegfs/sbin/beegfs-setup-mgmtd -p /beegfs/beegfs_mgmtd
次に、beegfsのサービスをスタートさせるためには、beegfsの構成ファイルを共有鍵をそれぞれのサービスで同じ共有鍵を参照するようにする必要があります。そのため、以下のコマンドで鍵を作成します。
sudo dd if=/dev/random of=/etc/beegfs/connauthfile bs=128 count=1
次に、作成したファイルをルートユーザのみが読み取れるようにします。
sudo chown root:root /etc/beegfs/connauthfile
sudo chmod 400 /etc/beegfs/connauthfile
次に、作成した共有鍵を参照できるように、/etc/beegfs/beegfs-mgmtd.conf
をvimやnanoコマンドで変更します。変更点は、
の画像のような箇所があるのでconnAuthFile =
と書かれた行の右辺に/etc/beegfs/connauthfile
と書くことで共有できるようにします。
また、監視用のAdmonサーバは、/etc/beegfs/beegfs-mon.conf
という構成ファイルがあるのでVimやnanoコマンドで開くと、
の画像のような箇所があるので、ManagementServerのIPアドレスを入力してください。(同様に、connAuthFile
の部分も設定する必要があります)
これらを行うことでサービスを開始できるようになります。サービスは以下のコマンドを入力してスタートできます。
sudo systemctl restart beegfs-mgmtd.service
sudo systemctl restart beegfs-mon.service
sudo systemctl status beegfs-mgmtd.service
sudo systemctl status beegfs-mon.service
おそらく、上記のコマンドを実行していただくとアクティブと出てくるはずです。
最後に、connauthfile
を他のノードにも配布する必要があるので、今回はscpコマンドを用いてファイルを共有することにします。ただし、ファイルの共有はしやすい方法でやっていただいて構いません。
sudo scp /etc/beegfs/connauthfile meta@192.168.50.111:~/
sudo scp /etc/beegfs/connauthfile client@192.168.50.112:~/
sudo scp /etc/beegfs/connauthfile storage@192.168.50.120:~/
MetadataServer(node2)
sudo mkdir /beegfs/beegfs_meta
sudo /opt/beegfs/sbin/beegfs-setup-meta -p /beegfs/beegfs_meta -s 5 -m 192.168.50.110
connauthfile
を正しい設置場所に持ってくるために、mvコマンドを使います。
sudo mv connauthfile /etc/beegfs/
ダウンロードしたのちに、ダウンロードした共有鍵を参照できるように、/etc/beegfs/beegfs-meta.conf
ファイルを変更します。変更点は同じように変更すれば大丈夫です。変更することができればサービスを開始できるようになります。
sudo vim /etc/beegfs/beegfs-meta.conf
sudo systemctl restart beegfs-meta.service
sudo systemctl status beegfs-meta.service
これでサービスがアクティブになり、このノードの設定は終わりになります。
Client(node3)
sudo /opt/beegfs/sbin/beegfs-setup-client -m 192.168.50.110
connauthfile
を正しい設置場所に持ってくるために、mvコマンドを使います。
sudo mv connauthfile /etc/beegfs/
次に、共有鍵を参照できるように/etc/beegfs/beegfs-client.conf
ファイルを今までと同じように変更します。変更することができれば、サービスを開始できるようになります。また、Client(node4)にはBeeGFSのサービスをインストールするときに、beegfs-helperd
をダウンロードしているので、/etc/beegfs/beegfs-helperd.conf
の構成ファイルを開き、今までと同様に共有鍵を参照できるように変更します。
sudo vim /etc/beegfs/beegfs-client.conf
sudo vim /etc/beegfs/beegfs-helperd.conf
sudo systemctl restart beegfs-client.service
sudo systemctl restart beegfs-helperd.service
sudo systemctl status beegfs-client.service
sudo systemctl status beegfs-helperd.service
これでサービスがアクティブになり、このノードの設定は終わりになります。
StorageServer(node4)
sudo mkdir -p /beegfs/storage
sudo /opt/beegfs/sbin/beegfs-setup-storage -p /beegfs/storage -s 100 -i 1000 -m 192.168.50.110
connauthfile
を正しい設置場所に持ってくるために、mvコマンドを使います。
sudo mv connauthfile /etc/beegfs/
ダウンロードした共有鍵を参照できるように/etc/beegfs/beegfs-storage.conf
ファイルを変更します。ただし変更点は今までと同じです。変更することができればサービスを開始できるようになります。
sudo vim /etc/beegfs/beegfs-storage.conf
sudo systemctl restart beegfs-storage.service
sudo systemctl status beegfs-storage.service
これでサービスがアクティブになり、このノードの設定は終わりになります。
確認
beegfs-check-servers
の使い方
Management/Meta/Storageの3つのサーバに関する情報(NodeID,IPアドレス)を確認できる。
beegfs-check-servers
beegfs-ctl
の使い方
BeeGFSのシステムで使われている、storageサーバに接続されているストレージの状況を確認できる。
beegfs-ctl --listtargets --longnodes --state --spaceinfo
参考文献
今回の記事を作成するにあたって、参考にさせていただいたサイトです。ありがとうございました。
Discussion