まだプログラマーですが何か?

プログラマーネタとアスリートネタ中心。たまに作成したウェブサービス関連の話も http://twitter.com/dotnsf

タグ:pdp

IBM がビジネスパートナー企業様向けに無料で Power アーキテクチャのサーバーの試用を提供しています。1回につき2週間程度なので、長期利用を前提とする使い方はできませんが、アプリケーションの Power 上(RedHat Enterprise Linux や Ubuntu の Power 版、AIX, i/OS など)の動作確認や互換性チェックなどを行うには充分だと思っています。利用前に企業登録などの手続きの必要はありますが、料金が発生することはありません。 この PDP(Power Development Platform) と呼ばれるサービスの利用方法については過去にこのブログでも何度かとりあげています。RHEL での紹介ですが、興味ある方はこちらも参照ください:
Power 版 RHEL(RedHat Enterprise Linux) を無料で2週間借りる

実はこの PDP 上の RHEL 環境を使っていて、少し気になることがありました。サーバーリソースがアクティブになり、VPN も張り、いざ SSH でリモートログイン! ・・・しようとすると、結論としてログインできるのですが、SSH コマンドを実行してからパスワードを聞かれるまでに、やけに時間がかかるのです:
2015061001

結論としてはログインできるんだけど、SSH を実行してからパスワードプロンプトが表示されるまでに1分くらいかかってしまいます。それまではパスワードを入力したくてもできない。 で、待ってる間に別の作業でも・・・と思ってメールとか見ていると、いつの間にか夢中になって5分くらい過ぎて、パスワード入力もタイムアウトになってログインに失敗しているという(苦笑)。

RHEL 以外の環境で同様のことが発生するかは試していないのですが、どうやらこれは sshd の認証設定によるものなので設定を変えれば回避できそうです。具体的にはこちらで紹介している対処方法でいけます:

↑こちらで紹介している手法にしたがって、最後に sshd をリスタートしておけば、それ以降の SSH アクセスではすぐにパスワードを聞いてくるようになりました。 PDP 上の RHEL を使っていて気になる方は参考にしてください。



IDCフロンティア様主催の MariaDB ミートアップに参加してきました。

MariaDB は MySQL 互換の RDB です。自分自身が作って運営しているマンホールマップねっぴツイートマッパーなど多くのサービスで MariaDB を採用しています。

このミートアップの中で現 Chief Evangelist の Colin さんから「MariaDB は IBM の Power8 プラットフォーム上で非常に高いパフォーマンスを発揮している」という紹介がありました。おそらくこの記事で紹介されていることだと思います:

MariaDB on Power8

ほー、そうなのか(知らなかったw)。ただ、実は以前に自分もこのようなブログエントリを書いたことがありました:
Power Linux 上で MariaDB をビルドして使う

これを書いた頃はまだ(後述の)PDP 環境で提供される RedHat のバージョンが 6 でした。RHEL 6 では標準 RDB が MySQL でしたが、RHEL 7 になって標準 RDB は MariaDB に変更になっているはずです。つまり「もうわざわざビルドしなくても Power Linux 上で MariaDB が使えるようになっているはず」です。

さっそく試してみます。環境としては IBM がビジネスパートナー様向けに無料で提供しているクラウドの Power 環境である PDP を使って Power8 + RedHat 7 環境を予約して使います。この辺りの詳しい手順はこちらを参照ください:
Power 版 RHEL(RedHat Enterprise Linux) を無料で2週間借りる(1/2)
Power 版 RHEL(RedHat Enterprise Linux) を無料で2週間借りる(2/2)


上記の (1/2) の手順でマシンリソースの予約を行い、(2/2) の手順で SSH でリモートアクセスして Power8 のリモート環境にログインします:
2015060907


念のため環境を確認します。まごうことなき Power 8 アーキテクチャ上の RedHat Enterprise Linux 7.1 です。:
2015060909


ではさっそくというか、いきなり MariaDB のインストールにとりかかります。リポジトリなどの準備なしでいきなり yum install を実行すると・・・
[root@sys-74413 ~]# yum install mariadb-server mariadb-client mariadb-devel
Loaded plugins: product-id, subscription-manager
This system is not registered to Red Hat Subscription Management. You can use subscription-manager to register.
No package mariadb-client available.
Resolving Dependencies
--> Running transaction check
---> Package mariadb-devel.ppc64le 1:5.5.41-2.ael7b will be installed
--> Processing Dependency: openssl-devel(ppc-64) for package: 1:mariadb-devel-5.5.41-2.ael7b.ppc64le
---> Package mariadb-server.ppc64le 1:5.5.41-2.ael7b will be installed
--> Processing Dependency: mariadb(ppc-64) = 1:5.5.41-2.ael7b for package: 1:mariadb-server-5.5.41-2.ael7b.ppc64le
--> Processing Dependency: perl-DBI for package: 1:mariadb-server-5.5.41-2.ael7b.ppc64le
--> Processing Dependency: perl-DBD-MySQL for package: 1:mariadb-server-5.5.41-2.ael7b.ppc64le
--> Processing Dependency: perl(DBI) for package: 1:mariadb-server-5.5.41-2.ael7b.ppc64le
--> Processing Dependency: libaio.so.1(LIBAIO_0.4)(64bit) for package: 1:mariadb-server-5.5.41-2.ael7b.ppc64le
--> Processing Dependency: libaio.so.1(LIBAIO_0.1)(64bit) for package: 1:mariadb-server-5.5.41-2.ael7b.ppc64le
--> Processing Dependency: libaio.so.1()(64bit) for package: 1:mariadb-server-5.5.41-2.ael7b.ppc64le
--> Running transaction check
---> Package libaio.ppc64le 0:0.3.109-12.ael7b will be installed
---> Package mariadb.ppc64le 1:5.5.41-2.ael7b will be installed
---> Package openssl-devel.ppc64le 1:1.0.1e-42.ael7b will be installed
--> Processing Dependency: zlib-devel(ppc-64) for package: 1:openssl-devel-1.0.1e-42.ael7b.ppc64le
--> Processing Dependency: krb5-devel(ppc-64) for package: 1:openssl-devel-1.0.1e-42.ael7b.ppc64le
---> Package perl-DBD-MySQL.ppc64le 0:4.023-5.ael7b will be installed
---> Package perl-DBI.ppc64le 0:1.627-4.ael7b will be installed
--> Processing Dependency: perl(RPC::PlServer) >= 0.2001 for package: perl-DBI-1.627-4.ael7b.ppc64le
--> Processing Dependency: perl(RPC::PlClient) >= 0.2000 for package: perl-DBI-1.627-4.ael7b.ppc64le
--> Running transaction check
---> Package krb5-devel.ppc64le 0:1.12.2-14.ael7b will be installed
--> Processing Dependency: libverto-devel for package: krb5-devel-1.12.2-14.ael7b.ppc64le
--> Processing Dependency: libselinux-devel for package: krb5-devel-1.12.2-14.ael7b.ppc64le
--> Processing Dependency: libcom_err-devel for package: krb5-devel-1.12.2-14.ael7b.ppc64le
--> Processing Dependency: keyutils-libs-devel for package: krb5-devel-1.12.2-14.ael7b.ppc64le
---> Package perl-PlRPC.noarch 0:0.2020-14.ael7b will be installed
--> Processing Dependency: perl(Net::Daemon) >= 0.13 for package: perl-PlRPC-0.2020-14.ael7b.noarch
--> Processing Dependency: perl(Net::Daemon::Test) for package: perl-PlRPC-0.2020-14.ael7b.noarch
--> Processing Dependency: perl(Net::Daemon::Log) for package: perl-PlRPC-0.2020-14.ael7b.noarch
--> Processing Dependency: perl(Compress::Zlib) for package: perl-PlRPC-0.2020-14.ael7b.noarch
---> Package zlib-devel.ppc64le 0:1.2.7-14.ael7b will be installed
--> Running transaction check
---> Package keyutils-libs-devel.ppc64le 0:1.5.8-3.ael7b will be installed
---> Package libcom_err-devel.ppc64le 0:1.42.9-7.ael7b will be installed
---> Package libselinux-devel.ppc64le 0:2.2.2-6.ael7b will be installed
--> Processing Dependency: libsepol-devel >= 2.1.9-1 for package: libselinux-devel-2.2.2-6.ael7b.ppc64le
--> Processing Dependency: pkgconfig(libsepol) for package: libselinux-devel-2.2.2-6.ael7b.ppc64le
--> Processing Dependency: pkgconfig(libpcre) for package: libselinux-devel-2.2.2-6.ael7b.ppc64le
---> Package libverto-devel.ppc64le 0:0.2.5-4.ael7b will be installed
---> Package perl-IO-Compress.noarch 0:2.061-2.ael7b will be installed
--> Processing Dependency: perl(Compress::Raw::Zlib) >= 2.061 for package: perl-IO-Compress-2.061-2.ael7b.noarch
--> Processing Dependency: perl(Compress::Raw::Bzip2) >= 2.061 for package: perl-IO-Compress-2.061-2.ael7b.noarch
---> Package perl-Net-Daemon.noarch 0:0.48-5.ael7b will be installed
--> Running transaction check
---> Package libsepol-devel.ppc64le 0:2.1.9-3.ael7b will be installed
---> Package pcre-devel.ppc64le 0:8.32-14.ael7b will be installed
---> Package perl-Compress-Raw-Bzip2.ppc64le 0:2.061-3.ael7b will be installed
---> Package perl-Compress-Raw-Zlib.ppc64le 1:2.061-4.ael7b will be installed
--> Finished Dependency Resolution

Dependencies Resolved

================================================================================
 Package                     Arch        Version               Repository  Size
================================================================================
Installing:
 mariadb-devel               ppc64le     1:5.5.41-2.ael7b      server     747 k
 mariadb-server              ppc64le     1:5.5.41-2.ael7b      server      11 M
Installing for dependencies:
 keyutils-libs-devel         ppc64le     1.5.8-3.ael7b         server      37 k
 krb5-devel                  ppc64le     1.12.2-14.ael7b       server     640 k
 libaio                      ppc64le     0.3.109-12.ael7b      server      24 k
 libcom_err-devel            ppc64le     1.42.9-7.ael7b        server      30 k
 libselinux-devel            ppc64le     2.2.2-6.ael7b         server     174 k
 libsepol-devel              ppc64le     2.1.9-3.ael7b         server      71 k
 libverto-devel              ppc64le     0.2.5-4.ael7b         server      12 k
 mariadb                     ppc64le     1:5.5.41-2.ael7b      server     9.1 M
 openssl-devel               ppc64le     1:1.0.1e-42.ael7b     server     1.2 M
 pcre-devel                  ppc64le     8.32-14.ael7b         server     477 k
 perl-Compress-Raw-Bzip2     ppc64le     2.061-3.ael7b         server      33 k
 perl-Compress-Raw-Zlib      ppc64le     1:2.061-4.ael7b       server      58 k
 perl-DBD-MySQL              ppc64le     4.023-5.ael7b         server     140 k
 perl-DBI                    ppc64le     1.627-4.ael7b         server     802 k
 perl-IO-Compress            noarch      2.061-2.ael7b         server     260 k
 perl-Net-Daemon             noarch      0.48-5.ael7b          server      51 k
 perl-PlRPC                  noarch      0.2020-14.ael7b       server      36 k
 zlib-devel                  ppc64le     1.2.7-14.ael7b        server      50 k

Transaction Summary
================================================================================
Install  2 Packages (+18 Dependent packages)

Total download size: 24 M
Installed size: 124 M
Is this ok [y/d/N]: 

Power 用の RHEL7 でも、ちゃんと MariaDB が標準で使えるようになってました。これで "y" を指定すればインストールできちゃいます。

ただし、このコマンドで導入できるのは MariaDB 5.5 のようですね。MariaDB 10.x を使いたい場合はまだソースからビルドする必要がありそうです。その手順はこちらのエントリを参照してください:
Power Linux 上で MariaDB をビルドして使う

 

このブログエントリを書こうと思ったキッカケはこの技術記事でした:
MySQL / MariaDB 5.7 on POWER8 パフォーマンス情報

MariaDB を Power8 搭載サーバー(の Linux)上で動かすと非常に高いパフォーマンスを発揮させることができる、という内容です。

現在、Power サーバー上で動く RHEL(RedHat Enterprise Linux) 6.6 では、普通に yum で MySQL をインストールすることはできます。ただ標準リポジトリに用意されている MySQL のバージョンは低く、上記記事で書かれたパフォーマンス改善パッチが適用されたものではありません。 また MariaDB のバイナリはまだ Power Linux 向けには提供されておらず、厳密には正式な稼働プラットフォームでもありません。 というわけで、Power Linux 上で MariaDB をソースコードからビルドして動かすまでの手順を紹介します。

まずは環境の用意です。ほとんどの人は Power チップ搭載サーバーを使える環境は手元にないと思いますが、IBM のビジネスパートナーであれば、ビジネスパートナー向けに無償で(クラウド経由で)提供されている IBM PDP(Power Development Platform) を使うことも可能です。IBM PDP の説明や RHEL on Power の利用手順についてはこちらを参照ください:
Power 版 RHEL(RedHat Enterprise Linux) を無料で2週間借りる(1/2)
Power 版 RHEL(RedHat Enterprise Linux) を無料で2週間借りる(2/2)
IBM PDP で Power Linux をすぐに使えるように予約する


今回、MariaDB をソースコードからコンパイルしてインストールします。その場合、RHEL の導入時に "Development Tools" を導入しておく必要があります:
# yum groupinstall "Development Tools"

また、libaio-devel パッケージが必要です:
# yum install libaio-devel

更に、MariaDB をソースファイルからコンパイルする際のビルドツールには configure ではなく cmake を使います。というわけで cmake を事前に導入しておきます:
# yum install cmake


事前準備ができたら早速 MariaDB のソースコードを公式サイトからダウンロードします。このブログエントリを書いている時点での最新安定バージョンは 10.0.15 だったので、これを使います(上記記事のパフォーマンス改善パッチが適用後のバージョンです)。

ダウンロードサイトから "Source" と書かれた mariadb-X.X.X.tar.gz(X.X.X はバージョンなので、今回であれば 10.0.5)のリンクをクリックして、このファイルをダウンロードします:
2014122901


ダウンロードできたら /usr/local/src 以下に展開します:
# cd /usr/local/src
# tar xzvf ~/mariadb-10.0.15.tar.gz

ここからが Power Linux 用の特殊な部分です。最初に cmake で Makefile を作りますが、以下のオプションを付けて cmake を実行します:
# cd mariadb-10.0.15
# cmake . -DLDLIBS=-lpthread -DCMAKE_C_FLAGS=-mminimal-toc -DCMAKE_CXX_FLAGS=-mminimal-toc -DBUILD_CONFIG=mysql_release

cmake コマンドが正常終了したら make でビルドして、インストールします:
# make
# make install

これで Power Linux の /usr/local/mysql 以下に MariaDB が導入されます。



 

IBM PDP(Power Development Platform) は IBM がビジネスパートナー向けに無料で Power チップのサーバーをクラウド経由で貸し出すサービスです。この利用方法やセットアップ手順については以前のブログで記述しているのでそちらを参照ください:


この予約手順の中で、1つ不満というか、仕様が???な箇所がありました。それはアメリカとの時差の関係で、申し込みから最短でも18時間ほど待つことになる、ということです。まあ18時間待てばいいとも言えるのですが、「それすらも待てん!」というタイム・イズ・マネーなあなたに贈る裏ワザです。

まず現象を確認してみましょう。実際の PDP でのサーバー予約画面がこちらです:
2014122601


いくつかの必須入力項目がありますが一旦無視します。そして Project Dates(利用期間)欄に注目です。ローカルタイムとして 2014/12/26 12:43PM と出ています。これは日本時間です。利用時間は米国東海岸時間で指定する必要があります。また利用開始は現在から2時間以上先の時刻を指定する必要があります。

この現在時刻は米国東海岸時間では 2014/12/25 10:43PM なので、計算上では 2014/12/26 00:43AM 以降を指定すればいいということになります。 というわけで念のため 12 時間ほど余裕を持たせて 2014/12/26 01:00PM を指定してみました。で、 "Add resources to project" ボタンをクリックします:
2014122602


ところがエラーです。"The start date and time should be more than 2 hours ahead of the current date and time." つまり「現在よりも2時間以上先じゃないとダメよ」というエラーメッセージですが、それは分かっていたつもりでした:
2014122603



どうやら「現在のローカル時間で2時間以上先の時刻を指定する。ただしその指定時刻は米国東海岸時刻と解釈されて予約される」という困った(?)挙動になっているようなのでした。

つまり上記例だと現在が日本時間で 2014/12/26 12:43PM なので、2014/12/26 02:43PM 以降の時刻でないと受け付けない、というエラーが出ていることになります。そしてここに 2014/12/26 03:00PM と指定すると、予約はできるのですが、米国東海岸時刻での 2014/12/26 03:00PM(日本時間 2014/26/27 07:00AM)から使えるようになる、という予約をしたことになるのでした。上記で「18時間待つ」と書いたのはこういう背景があるのでした(2時間+時差16時間)。うーむ、なるほど・・・ (^^;;

まあ使える期間が変わるわけではないし、そこまで急ぐ必要がなければこれで逆算しながら予約してもいいのですが、どうしても2時間後から使いたい、という場合は以下の手順を実行してください。


まずロケールを変更します。 Windows であればコントロールパネルから「日付と時刻」をクリックし、「タイムゾーンの変更」ボタンをクリックします:
2014122604


タイムゾーンを米国東部標準時に変更して、OKをクリックします:
2014122605


これでこの PC は米国東海岸時間で動いていることになります:
2014122606


改めて PDP のサーバーリソース予約画面を開いて利用期間を指定します。今度はローカルタイムが先程変更したように米国東海岸時間(2014/12/25 10:45PM)になっていることを確認して、その2時間ちょっと先である 2014/12/26 01:00AM からの利用を指定します。併せてプロジェクト名など他の必須入力項目も埋めておきます。最後に "Add resources to project" ボタンをクリック:
2014122607


今度は成功しました! エラーメッセージもなく、Resources 欄に指定のマシンリソースが追加されたはずです。最後に "Create project and resavation" ボタンでサーバーリソースの予約を完了すれば、約2時間後から利用できるリソースが予約できます:
2014122608


なお、タイトルでは Linux を借りる場合という書き方としていますが、AIX や IBM i を借りる場合も同様です。

予約後はまたロケールを元に戻しておくことをお忘れなく。


(2014/Dec/27 追記)
上記で「米国東海岸時間」と書いていますが、自信なくなってきました。もしかすると「米国山岳時間」にするのが正解かもしれない・・・



 

このページのトップヘ