20110528 きたくら

posted May 27, 2011, 9:37 PM by 北倉輝昭   [ updated May 28, 2011, 1:53 AM ]
本日はHPC(High Performance Computing)用のストレージについて調査

GlusterFSについて http://www.gluster.org/

現在のバージョンは 3.2 http://download.gluster.com/pub/gluster/glusterfs/3.2/
(昔の開発バージョンに benki( version 1.2 ぐらい) というのがあり、若干盛り上がった記憶がある。ただし、日本語ではなくインド南部のカンナダ語で火を意味する。)

InifiniBand

ストレージとの接続をInfiniBand にする利点は良くわからない...
ストレージとしては内蔵ディスクを使用してGlusterFS を構築したほうが安価でいいと思うのだが、どうなんだろう?

http://cloud.watch.impress.co.jp/epw/cda/special/2004/07/07/2573.html より引用

InfiniBandに基づくホストには、I/Oバスブリッジを介してHCA(HCA Host Channel Adapter)が接続される。HCAは、InfiniBand機器がホスト側のCPUやメモリにアクセスできるようにするもので、ホストにとって InfiniBandの出入口となる。一方、ターゲットとなる機器(ストレージやネットワーク機器)は、TCA(Target Channel Adapter)を介して接続される。TCAは、それぞれの機器に求められるI/O機能を提供する。接続形態はLANと非常によく似ており、ホストとター ゲットのデバイスはすべてI/Oスイッチを介して一対一で接続される。ネットワーク層でのパケット転送をサポートするルータを用いれば、サブネット間の通 信も可能だ。

http://www.atmarkit.co.jp/fnetwork/tokusyuu/51ib01/02.html より引用

InfiniBandは現在も、広帯域化が進められている技術です。現在は40Gbps接続を実現したQDR(Quad Data Rate)のHCAが最高速の状態にあります。しかし2011年から翌年の早い段階で、112Gbpsを実現するFDR(fourteen data rate)に対応するHCAがリリースされるといわれています。

 しかしながら、これだけ広帯域のネットワークインターフェイスを実装できるサーバ側のマザーボードはまだなく、バス接続を実現するにはPCI Express 3.0など次世代技術を適用する必要があります。サーバ分野の技術も日進月歩ではありますので、適宜これら状況を確認しつつ、その時最適なネットワークお よびシステム構成を利用するとよいでしょう。




RDMA (Remote DMA (Direct Memory Access))

http://h50146.www5.hp.com/products/servers/proliant/whitepaper/wp049_060331/index.html より引用

固有のプロセッサオーバヘッドとメモリ帯域幅の制限は、それが必要な場合(イーサネット)であれ、互換性の目的(InfiniBand)であれ、TCPを使用するネットワークの障害になります。

イーサネットでは、TOE (TCP/IP Offload Engines)とRDMAを使用することにより、こうした障害を軽減することができます。TOE搭載のNIC (Network Interface Adapter)は、TCP/IP処理の役目を果たし、ホストプロセッサをその他のタスク用に解放します。TOEの機能は、そのハードウェア設計、OSプ ログラミングインタフェース、実行されるアプリケーションによって決まります。

RDMAテクノロジは、あるコンピュータのメモリのデータを別のコンピュータのメモリに、プロセッサの関与を極力小さくして転送するために開発されまし た。RDMAプロトコルに含まれている追加の情報を参照することにより、システムは、転送されるデータを追加したり、暫定コピーしたりすることなく、その メモリの最終目的地に直接届けることができます。この「ゼロコピー」あるいは「直接データ配置」(DDP: Direct Data Placement)機能により、システム間で最も効率的なネットワーク通信が可能になります。

TOEとRDMAは、どちらもホストプロセッサをネットワーク オーバヘッドから解放することを目的としているので、混同されることがあります。しかし、TOEは、TCP/IP処理を担当するハードウェア ソリューションであり、RDMAは、ネットワーク通信スタックの上位レイヤーで動作するプロトコル ソリューションです。このため、TOEとRDMAは連携できます。TOEがデバイスとの局所化された接続を可能にし、RDMAがより効率的なプロトコルで データスループットを向上させます。

InfiniBandでは、コア機能にRDMAを使用してアーキテクチャが設計されているので、RDMA処理によってパフォーマンスがさらに大きく向上します(TOEは不要)。

RDMAは、アプリケーションがネットワークデバイス間でメッセージを転送するための、より高速なパスを提供します。Ethernetと InfiniBandの両方に適用可能です。これらのインターコネクトは両方とも、SDP (Sockets Direct Protocol)、iSER (iSCSI Extensions for RDMA)、NFS (Network File System)、DAFS (Direct Access File System)、MPI (Message Passing Interface)といった、最新および既存のネットワーク業界標準規格をすべてサポートしています。

ちなみにglusterfs でRDMA はサポートされているようだ。
http://gluster.org/pipermail/gluster-users/2011-January/006395.html

NFSプロトコルでは開発中っぽい。

TCP/IP Offload Engines

NIC でTCP/IPを処理させる機能だが、10Gb だと必須だろう。

GlusterFS Release Note より

3.2

  • Gluster Geo-replication
    遠隔レプリケーション
  • Directory Quota
    クォータ
  • Gluster Volume Profile and Top commands
    プロファイリング と top コマンド
  • Enhanced Log Messages
    ログ機能の拡張
3.1
  • Elastic Volume Management
    サーバの再起動無しにボリュームの構成変更が可能
  • Gluster Console Manager
    コマンドラインコンソール。サーバ稼働中でも使用可能
  • GlusterFS native NFS support
    ネイティブでNFSプロトコルをサポート
3.0
  • Self-heal of open files
    リプリケーションファイルを自己修復する
  • Performance improvements in self heal
    • Choice of self-heal algorithms
    • Background self-heal
  • Stat-prefetch performance translator
  • Quick-read performance translator
  • I/O Cache
  • Direct FUSE device I/O
  • Process Dump
  • GlusterFS Volume Generator – Self optimized configuration
  • Re-optimized Internal Data Structures
glusterfs を amazon EC2 でテスト

http://www.gluster.com/community/documentation/index.php/Gluster_3.1:_Launching_Gluster_Virtual_Appliance_for_Amazon_Web_Services

AMI: gluster-ami-3-2 (ami-08f80661) 5日間の限定使用版らしい

起動するとglusterd が起動済みになっている。

[root@ip-XX-XXX-XXX-XXX ~]# cat /etc/glusterfs/glusterd.vol
volume management
    type mgmt/glusterd
    option working-directory /etc/glusterd
    option transport-type socket,rdma
    option transport.socket.keepalive-time 10
    option transport.socket.keepalive-interval 2
end-volume

/etc/glusterd/ の内容

[root@ip-XX-XXX-XXX-XXX ~]# find /etc/glusterd/
/etc/glusterd/
/etc/glusterd/glusterd.info
/etc/glusterd/geo-replication
/etc/glusterd/geo-replication/gsyncd.conf
/etc/glusterd/vols
/etc/glusterd/peers
/etc/glusterd/nfs

クライアント debian でインストールのテスト ( squeeze の glusterfs は3.0.5 なので これでは繋がらない)

~$ sudo aptitude install glusterfs-client
The following NEW packages will be installed:
  glusterfs-client libglusterfs0{a} libibverbs1{a}
0 packages upgraded, 3 newly installed, 0 to remove and 312 not upgraded.
Need to get 1497 kB of archives. After unpacking 4235 kB will be used.
Do you want to continue? [Y/n/?]
Get:1 http://ftp.jp.debian.org/debian/ squeeze/main libibverbs1 amd64 1.1.3-2 [33.7 kB]
Get:2 http://ftp.jp.debian.org/debian/ squeeze/main libglusterfs0 amd64 3.0.5-1 [1269 kB]
Get:3 http://ftp.jp.debian.org/debian/ squeeze/main glusterfs-client amd64 3.0.5-1 [193 kB]
Fetched 1497 kB in 1s (819 kB/s)
Selecting previously deselected package libibverbs1.
(Reading database ... 185222 files and directories currently installed.)
Unpacking libibverbs1 (from .../libibverbs1_1.1.3-2_amd64.deb) ...
Selecting previously deselected package libglusterfs0.
Unpacking libglusterfs0 (from .../libglusterfs0_3.0.5-1_amd64.deb) ...
Selecting previously deselected package glusterfs-client.
Unpacking glusterfs-client (from .../glusterfs-client_3.0.5-1_amd64.deb) ...
Processing triggers for man-db ...
Setting up libibverbs1 (1.1.3-2) ...
Setting up libglusterfs0 (3.0.5-1) ...
Setting up glusterfs-client (3.0.5-1) ...


サーバ?

~$ sudo aptitude install glusterfs-server
The following NEW packages will be installed:
  glusterfs-server
0 packages upgraded, 1 newly installed, 0 to remove and 312 not upgraded.
Need to get 172 kB of archives. After unpacking 274 kB will be used.
Get:1 http://ftp.jp.debian.org/debian/ squeeze/main glusterfs-server amd64 3.0.5-1 [172 kB]
Fetched 172 kB in 1s (109 kB/s)
Selecting previously deselected package glusterfs-server.
(Reading database ... 185440 files and directories currently installed.)
Unpacking glusterfs-server (from .../glusterfs-server_3.0.5-1_amd64.deb) ...
Processing triggers for man-db ...
Setting up glusterfs-server (3.0.5-1) ...








Comments