過去記事 BeeGFS/170218

本家様 http://www.beegfs.com/content/
複数ノードによる分散ファイルシステム

仮想マシンで作業確認のために作ってみた。OSはCentOS 7です。
参照先:http://www.beegfs.com/wiki/ManualInstallWalkThrough

2017y02m18d_101446643.png

No役割hostHW構成(仮想マシン)備考*
1管理ノード
Management Server
ms.sybyl.local「Admon Server」と同居
2Metadata Serversmds.sybyl.localsda:16GB(system)
sdb:4GB(metadata,/beegfs)
ext4が推奨,4/8core,ssd有効
RAIDなら1or10有効
総ストレージの0.5%**
3Storage Serverss1.sybyl.localsda:16GB(system)
sdb:32GB(storage,/beegfs)
ext4,xfs,zfsが推奨
RAIDなら6-12本/1chのRAID6
複数ボリューム可
ss2.sybyl.local
ss3.sybyl.local
4Admon Serverms.sybyl.local「管理ノード」と同居
5クライアントclient.sybyl.local

機能ごとに5つの役割が存在しますが、同一マシン内でその役割を共存することも可能です。
例えば上記では「管理ノード」と「Admon Server」をホスト「ms.sybyl.local」で共存しています。
他にも「Metadata Servers」と「Storage Server」を同じにすることも可能です。丸々1台のマシンで全ての機能を持たすことも可能です。

(オプション)パスワードなしrootログイン環境

必須と言うわけではない。単に構築を楽に行うための手段です。操作の中心とする管理ノード「ms.sybyl.local」にてパスフレーズがない公開鍵・秘密鍵ペアを作成して各ノードに配布します。

[root@ms ~]# ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):   <---- そのままリターン
Created directory '/root/.ssh'.
Enter passphrase (empty for no passphrase):                <---- そのままリターン
Enter same passphrase again:                               <---- そのままリターン
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
 :
[root@ms ~]#

下記はMetadata Servers「mds.sybyl.local」へ配布しています。

[root@ms ~]# ssh root@mds 'mkdir .ssh && chmod 700 .ssh && touch .ssh/authorized_keys && chmod 600 .ssh/authorized_keys'
[root@ms ~]# ssh root@mds 'cat >> .ssh/authorized_keys' < .ssh/id_rsa.pub

これを他のノードにも行います クライアント「client.sybyl.local」も含む

BeeGFSリポジトリの登録

各ノードへBeeGFSのリポジトリを登録します。これでyumコマンドでBeeGFSのインストールが可能になります。
リポジトリの場所は http://www.beegfs.com/wiki/DownloadInstallationPackages
管理ノード「ms.sybyl.local」にて

[root@ms ~]# curl -o /etc/yum.repos.d/beegfs-rhel7.repo http://www.beegfs.com/release/beegfs_6/dists/beegfs-rhel7.repo

とbeegfs-rhel7.repoを取得して、これを各ノードへ配布します

[root@ms ~]# for i in mds ss1 ss2 ss3 client;do scp /etc/yum.repos.d/beegfs-rhel7.repo root@$i:/etc/yum.repos.d; done

BeeGFSパッケージのインストール

リポジトリで提供されているBeeGFSのパッケージは以下になる

NOパッケージ役目備考
1beegfs-mgmtdManagement Server
2beegfs-metaMetadata Server
3beegfs-storageStorage Server
4beegfs-clientClient
5beegfs-helperd
6beegfs-admonAdmon
7beegfs-utilsBeeGFS utilities for administrators
8beegfs-opentk-libBeeGFS OpenTK library共通
9beegfs-commonBeeGFS Common共通

管理ノード「ms.sybyl.local」には「beegfs-mgmtd」と「beegfs-admon」をインストールします

[root@ms ~]# yum install beegfs-mgmtd beegfs-admon

次にMetadata Servers「mds.sybyl.local」には

[root@ms ~]# ssh root@mds yum -y install beegfs-meta

とリモートでインストールを行います
次にStorage Servers

[root@ms ~]# for i in ss1 ss2 ss3;do ssh root@$i yum -y install beegfs-storage;done

最後にClient

[root@ms ~]# ssh root@client yum -y groupinstall "Development Tools"
[root@ms ~]# ssh root@client yum -y install beegfs-client beegfs-helperd

各ノードで設定

  • 管理ノード
    「/beegfs」を基点に設定ファイルを設置します
    [root@ms ~]# mkdir -p /beegfs/beegfs_mgmtd
    [root@ms ~]# /opt/beegfs/sbin/beegfs-setup-mgmtd -p /beegfs/beegfs_mgmtd
    Preparing storage directory: /beegfs/beegfs_mgmtd
     * Creating format.conf file...
    Updating config file: /etc/beegfs/beegfs-mgmtd.conf
     * Setting storage directory in config file...
     * Disabling usage of uninitialized storage directory in config file...
    All done.
    [root@ms ~]#
  • Metadata Servers
    /dev/sdbにパーティションを作成して、/dev/sdb1を作成。これをext4でフォーマットして、/beegfsにマウントします
    [root@ms ~]# ssh mds
     
    [root@mds ~]# cat /proc/partitions  |grep sdb
       8       16    4194304 sdb
       8       17    4193263 sdb1
    [root@mds ~]# mkfs.ext4 -m 0 /dev/sdb1
    [root@mds ~]# e2label /dev/sdb1 medatada
    [root@mds ~]# echo "LABEL=medatada /beegfs ext4 defaults 0 0" >> /etc/fstab && mkdir /beegfs && mount -a
    そしてMetadataの設定を行う。「-p」はmetadataの配置場所。「-s」は識別番号(なんでもいいみたい)。「-m」は管理ノードを示す
    [root@mds ~]# mkdir /beegfs/beegfs_meta
    [root@mds ~]# /opt/beegfs/sbin/beegfs-setup-meta -p /beegfs/beegfs_meta -s 4 -m ms
    Preparing storage directory: /beegfs/beegfs_meta
     * Creating format.conf file...
     * Creating server numeric ID file: /beegfs/beegfs_meta/nodeNumID
    Updating config file: /etc/beegfs/beegfs-meta.conf
     * Setting management host: ms
     * Setting storage directory in config file...
     * Disabling usage of uninitialized storage directory in config file...
     * Setting usage of extended attributes to: true
    All done.
    [root@mds ~]#
  • Storage Server
    ここではStorageTargetなvolumeは仮想ディスクにしているが、本番では1つのRAIDボリュームとかになる(LUNとか)
    *本家ではHDD12本のRAID6を1ボリュームとして提案している。それがStorage Serverに複数あっても可
    [root@ms ~]# ssh ss1
     
    [root@ss1 ~]# parted /dev/sdb
    [root@ss1 ~]# mkfs.xfs /dev/sdb1
    [root@ss1 ~]# xfs_admin -L ss1-ost1 /dev/sdb1
    [root@ss1 ~]# echo "LABEL=ss1-ost1 /beegfs xfs defaults 0 0" >> /etc/fstab && mkdir /beegfs && mount -a
    そしてStorageの設定を行う。「-p」はストレージの場所。「-s」は識別番号で、「-i」はストレージのID。一台に複数のストレージを保有しても構わない。「-m」で管理ノードを示す
    [root@ss1 ~]# /opt/beegfs/sbin/beegfs-setup-storage -p /beegfs/storage -s 1 -i 101 -m ms
    Preparing storage target directory: /beegfs/storage
     * Creating format.conf file...
     * Creating chunks directory...
     * Creating buddymir directory...
     * Creating target numeric ID file: /beegfs/storage/targetNumID
     * Creating server numeric ID file: /beegfs/storage/nodeNumID
    Updating config file: /etc/beegfs/beegfs-storage.conf
     * Setting management host: ss1
     * Appending to target directory list in config file...
     * Disabling usage of uninitialized storage targets in config file...
    All done.
    */beegfs/storageは設定コマンドで作ってくれる
    ほかss2,ss3も同様に設定を施す
    [root@ss2 ~]# /opt/beegfs/sbin/beegfs-setup-storage -p /beegfs/storage -s 2 -i 201 -m ms
     
    [root@ss3 ~]# /opt/beegfs/sbin/beegfs-setup-storage -p /beegfs/storage -s 3 -i 301 -m ms
  • Client
    [root@ms ~]# ssh client
     
    [root@client ~]# /opt/beegfs/sbin/beegfs-setup-client -m ms
    「beegfs-client.service」の起動に失敗して、下記のようなメッセージが表示されたら
    「Makefile:172: *** Linux kernel build directory not found. Please check if the kernel module development packages are installed for the current kernel version. (RHEL: kernel-devel; SLES: linux-kernel-headers, kernel-source; Debian: linux-headers)」
    yum updateを行って再起動してください。

起動

単純に各マシンを再起動します。
その後、clientにて下記のように確認ができればOK

[root@client ~]# df -Th -t beegfs
ファイルシス   タイプ サイズ  使用  残り 使用% マウント位置
beegfs_nodev   beegfs    96G   97M   96G    1% /mnt/beegfs
[root@client ~]#

調整

いくつのStorageにどの割合で分配するのかを定義します。
Storageが3台(ss1,ss2,ss3)で、データを16MBつづで分配するのなら、clientノードにて

[root@client ~]# beegfs-ctl --setpattern --numtargets=3 --chunksize=16m /mnt/beegfs

とします。現状の設定を確認するには

[root@client ~]# beegfs-ctl --getentryinfo /mnt/beegfs
Path:
Mount: /mnt/beegfs
EntryID: root
Metadata node: mds.sybyl.local [ID: 4]
Stripe pattern details:
+ Type: RAID0
+ Chunksize: 16M
+ Number of storage targets: desired: 3
 
[root@client ~]#

にて確認できます。
*beegfs-ctlはbeegfs-utilsパッケージに入ってます
chunksizeを大きくすれば、パフォーマンスは上がります。

公式でパフォーマンスの調整方法が各タイプごとに掲載されている
http://www.beegfs.com/wiki/TuningAdvancedConfiguration


トップ   編集 添付 複製 名前変更     ヘルプ   最終更新のRSS
Last-modified: 2017-04-19 (水) 14:04:07 (8d)