*beegfs7向けに修正しました

本家様 http://www.beegfs.com/content/
複数ノードによる分散ファイルシステム
BeeGFS6からBeeGFS7へのアップグレード BeeGFS/upgrade
ストレージノードを追加BeeGFS/StorageNode
メターデータの移動BeeGFS/moveMetadata
BeeGFS/MultiMode

仮想マシンで作業確認のために作ってみた。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のインストールが可能になります。
リポジトリの場所は https://www.beegfs.io/wiki/DownloadInstallationPackages
管理ノード「ms.sybyl.local」にて

[root@ms ~]# curl -o /etc/yum.repos.d/beegfs-rhel7.repo https://www.beegfs.io/release/beegfs_7_1/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のパッケージは以下になる

[root@ms ~]# yum list |grep beegfs
beegfs-admon.x86_64                       20:7.1.2-el7                 beegfs
beegfs-client.noarch                      20:7.1.2-el7                 beegfs
beegfs-client-compat.noarch               20:7.1.2-el7                 beegfs
beegfs-client-devel.noarch                20:7.1.2-el7                 beegfs
beegfs-common.noarch                      20:7.1.2-el7                 beegfs
beegfs-debuginfo.x86_64                   20:7.1.2-el7                 beegfs
beegfs-helperd.x86_64                     20:7.1.2-el7                 beegfs
beegfs-meta.x86_64                        20:7.1.2-el7                 beegfs
beegfs-mgmtd.x86_64                       20:7.1.2-el7                 beegfs
beegfs-mon.x86_64                         20:7.1.2-el7                 beegfs
beegfs-storage.x86_64                     20:7.1.2-el7                 beegfs
beegfs-utils.x86_64                       20:7.1.2-el7                 beegfs
beegfs-utils-devel.noarch                 20:7.1.2-el7                 beegfs
beeond.x86_64                             20:7.1.2-el7                 beegfs
beeond-thirdparty-gpl.x86_64              20:7.1.2-el7                 beegfs
libbeegfs-ib.x86_64                       20:7.1.2-el7                 beegfs
[root@ms ~]#

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

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

次にMetadata Servers「mds.sybyl.local」には「beegfs-meta」を折角なのでリモート操作でインストールします。

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

次にStorage Serversな「ss1、ss2、ss3」らには「beegfs-storage

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

最後にClientは、モジュールの作成があるので開発環境とkernel-develを加えてから「beegfs-client」「beegfs-helperd」をインストールします。

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

各ノードで設定

クライアントは関係しないが、「管理ノードManagement Server」と「Metadata Servers」、「Storage Server」には識別番号で区別する必要がある。
識別番号の「1」は既定で「管理ノードManagement Server」が担っている。
ここでは下記のように識別番号を定義した。

ノード識別番号ストレージID備考
ms1-既定で管理ノードは「1」
bee1101012つストレージを持たせるなら下記のようにする
101
102
bee220201
bee330301
mds9-

*機能ごとで異なっていればいいのか不明。なので全体で被らないように定義しました。
IDの取れる範囲は、1-65535

  • 管理ノード
    「/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 metadata
    [root@mds ~]# echo "LABEL=metadata /beegfs ext4 defaults 0 0" >> /etc/fstab && mkdir /beegfs && mount -a
    そしてMetadataの設定を行う。「-p」はmetadataの配置場所。「-s」は識別番号(なんでもいいみたい.ここでは「9」を指定)。「-m」は管理ノードを示す
    [root@mds ~]# mkdir /beegfs/beegfs_meta
    [root@mds ~]# /opt/beegfs/sbin/beegfs-setup-meta -p /beegfs/beegfs_meta -s 9 -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 10 -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: ms
     * 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 20 -i 201 -m ms
     
    [root@ss3 ~]# /opt/beegfs/sbin/beegfs-setup-storage -p /beegfs/storage -s 30 -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 ~]#

既定は/mnt/beegfsだが、/homeにmountすることも可能
「/etc/beegfs/beegfs-mounts.conf」を下記のように修正してbeegfs-helperd.serviceとbeegfs-client.serviceを再起動する。

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

確認

設定後に詳細を確認してみます。クライアントなノードでないと使えないのが??なのですが、
「beegfs-utils」を入れたノードで、「beegfs-check-servers」で現状の構成要素が見えます。

[root@client ~]# beegfs-check-servers
Management
==========
ms.sybyl.local [ID: 1]: reachable at 192.168.0.47:8008 (protocol: TCP)
 
Metadata
==========
mds.sybyl.local [ID: 9]: reachable at 192.168.0.48:8005 (protocol: TCP)
 
Storage
==========
ss1.sybyl.local [ID: 10]: reachable at 192.168.0.49:8003 (protocol: TCP)
ss2.sybyl.local [ID: 20]: reachable at 192.168.0.50:8003 (protocol: TCP)
ss3.sybyl.local [ID: 30]: reachable at 192.168.0.51:8003 (protocol: TCP)
 
[root@client ~]#

beegfsにデータを多少流し込んで、現在の使用率とか、各ノードの状態らも確認する

[root@client ~]# beegfs-ctl --listtargets --longnodes --state --spaceinfo
TargetID     Reachability  Consistency        Total         Free    %      ITotal       IFree    %   NodeID
========     ============  ===========        =====         ====    =      ======       =====    =   ======
     101           Online         Good      32.0GiB      28.4GiB  89%       16.0M       16.0M 100%   beegfs-storage ss1.sybyl.local [ID: 10]
     201           Online         Good      32.0GiB      28.4GiB  89%       16.0M       16.0M 100%   beegfs-storage ss2.sybyl.local [ID: 20]
     301           Online         Good      32.0GiB      28.4GiB  89%       16.0M       16.0M 100%   beegfs-storage ss3.sybyl.local [ID: 30]
[root@client ~]#

ストレージの状況は「beegfs-ctl --getentryinfo /mnt/beegfs」でみれます

[root@client ~]# beegfs-ctl --getentryinfo /mnt/beegfs
EntryID: root
Metadata node: mds.sybyl.local [ID: 9]
Stripe pattern details:
+ Type: RAID0
+ Chunksize: 512K
+ Number of storage targets: desired: 4
+ Storage Pool: 1 (Default)
[root@client ~]#

1つファイルを/mnt/beegfsに配置して、その分散具合は下記コマンドで見れます。

[root@client ~]# beegfs-ctl --getentryinfo /mnt/beegfs/IMG_20180220_0006.pdf
EntryID: 141-5C5DB94B-9
Metadata node: mds.sybyl.local [ID: 9]
Stripe pattern details:
+ Type: RAID0
+ Chunksize: 512K
+ Number of storage targets: desired: 4; actual: 3
+ Storage targets:
  + 301 @ ss3.sybyl.local [ID: 30]
  + 101 @ ss1.sybyl.local [ID: 10]
  + 201 @ ss2.sybyl.local [ID: 20]
[root@client ~]#

ここでは/mnt/beegfs/IMG_20180220_0006.pdf(865KB)のデータが3つに分かれています。
システム側は「desired: 4」と4つに分散して欲しいようです

もしchunksizeを大きくすれば、パフォーマンスは上がります。
Storageが3台(ss1,ss2,ss3)で、データを16MBつづで分配するのなら下記の様にします

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

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

観察

clientマシンからファイルを /mnt/beegfs に書き込むと Storage Server の/beegfs/storageはこんな感じになります

[root@ss1 ~]# ls -l /beegfs/storage/
合計 20
drwxrwxrwx 2 root root   6  2月  9 01:20 buddymir/
drwxrwxrwx 3 root root  16  2月  9 02:02 chunks/
-rw-r--r-- 1 root root  60  2月  9 01:20 format.conf
-rw-r--r-- 1 root root   0  2月  9 01:50 lock.pid
-rw-r--r-- 1 root root   3  2月  9 01:20 nodeNumID
-rw------- 1 root root 210  2月  9 01:50 originalNodeID
-rw------- 1 root root  13  2月  9 01:51 targetID
-rw-r--r-- 1 root root   4  2月  9 01:20 targetNumID
[root@ss1 ~]#
[root@ss1 ~]# du -hs /beegfs/storage/chunks/u0/5C5D/B/
3.4G    /beegfs/storage/chunks/u0/5C5D/B/
 
[root@ss1 ~]# ls /beegfs/storage/chunks/u0/5C5D/B/
0-5C5DB63A-9/    148-5C5DB894-9/  1E-5C5DB894-9/   43-5C5DB766-9/  72-5C5DB81B-9/  A9-5C5DB7DF-9/
0-5C5DB766-9/    14C-5C5DB894-9/  1E-5C5DB90E-9/   43-5C5DB7A2-9/  72-5C5DB94B-9/  A9-5C5DB81B-9/
0-5C5DB8D0-9/    14D-5C5DB81B-9/  1F-5C5DB98A-9/   45-5C5DB6EE-9/  73-5C5DB894-9/  A9-5C5DB8D0-9/
0-5C5DB90E-9/    15-5C5DB81B-9/   1F4-5C5DB81B-9/  45-5C5DB7A2-9/  74-5C5DB81B-9/  AB-5C5DB7A2-9/
1-5C5DB6B2-9/    150-5C5DB894-9/  1FA-5C5DB81B-9/  46-5C5DB766-9/  74-5C5DB90E-9/  AC-5C5DB7DF-9/
1-5C5DB7A2-9/    150-5C5DB90E-9/  1FD-5C5DB81B-9/  46-5C5DB81B-9/  74-5C5DB98A-9/  AD-5C5DB7A2-9/
 :
 :
[root@ss1 ~]#

一方Metadataサーバは、

[root@mds ~]# ls -lF /beegfs/beegfs_meta/
合計 24
drwxr-xr-x   4 root root 4096  2月  9 01:52 buddymir/
drwxr-xr-x 130 root root 4096  2月  9 01:52 dentries/
-rw-r--r--   1 root root   71  2月  9 01:18 format.conf
drwxr-xr-x 130 root root 4096  2月  9 01:52 inodes/
-rw-r--r--   1 root root    0  2月  9 01:52 lock.pid
-rw-r--r--   1 root root    2  2月  9 01:18 nodeNumID
-rw-------   1 root root  210  2月  9 01:52 originalNodeID
[root@mds ~]# du -hs  /beegfs/beegfs_meta/*
130M    /beegfs/beegfs_meta/buddymir
83M     /beegfs/beegfs_meta/dentries
4.0K    /beegfs/beegfs_meta/format.conf
67M     /beegfs/beegfs_meta/inodes
0       /beegfs/beegfs_meta/lock.pid
4.0K    /beegfs/beegfs_meta/nodeNumID
4.0K    /beegfs/beegfs_meta/originalNodeID
[root@mds ~]#

な感じとなる。


トップ   編集 添付 複製 名前変更     ヘルプ   最終更新のRSS
Last-modified: 2019-02-09 (土) 04:03:27 (128d)