なかぱち IBM メインフレーム Hint&Tips -3ページ目

System zでLinux

ここにきてまたトレンドなのかなーと思います。

ちょうどSystem zでLinuxは誕生して10年になりますが、つい5年位前までははっきり言って遅くて使い物にならずに「これはいったいなんのメリットがあるんだろう」とずっと思ってました。

z10がでたあたりからこの辺が劇的に改善し、他社のハイエンドサーバーと同じくらいのパフォーマンスを出すようになりました。Linux自体もかなり進化しており、従来のUNIXをも肩をならべたのではないでしょうか。

System z(IBMメインフレーム)でLinuxを使うメリットがずっとわからずにいましたが、ここにきて理解ができました。
理由はSW保守費用の大幅な削減が可能であるということ。
おそらく100台以上のUNIXを使ってるあたりから、メリットが出てくると思います。

あとは仮想化でしょうか。なんたって元祖仮想化ですから・・・。
この辺はまだ優位性が崩れてないのも事実です。
仮想化でたくさんの仮想マシンを1台で動かしてもよほどのことがない限りスローダウンすることがありません。
(明らかにCPUやメモリーを相当使うサーバーを統合するとさすがに落ちます・・・)
これもメインフレームの特性。コンテキストスイッチが非常に早いのでこの辺もあまりボトルネックにはなりません。
コレのおかげでI/Oをたくさん使う処理でもスローダウンが少ない。
今までもこういう特性があったのですが、いかんせんCPUスピードが遅かったのですが、z10のアーキテクチャ変更からこの辺もクリア。
1台で仮想化マシンをたくさん立てて、筐体全体でかなりのCPUを使用してもスローダウンがあまり出ません。
仮想マシン間のCPUのスライシングも早いのが特徴です。
よってたくさんのUNIXサーバーを統合することが可能になります。
ということは実質的にCPU数が減るので、Oracleなどの保守料が結果的に減るというのが最大の利用価値ではないかと思います。

今はItaniumがかなり微妙なところです。大規模DBとしてのハイエンドサーバーとしての受け皿にもなります。
確かに今でもSystem zは旧来のレガシィーな使い方をする人もたくさんいます。
ただ、今まで全くメインフレームに縁がなかった人が使う機会も増えてきました。

ハイエンドUNIXの代替としてかなり存在感が増したというのが現状ではないでしょうか?


z196+SLES11+Bochs

以前からやっております、Bochsのz/Linuxへのポーティング。
今回はレスキュー用のz/Linuxを作ったついでにやってみました。

http://ameblo.jp/nakapachi2/entry-10798176141.html
このエントリーの時は不発に終わりましたが、今回ある程度めどが立ちました。

今回はz196+SLES11SP1+Bochs2.4.6という組み合わせ。
Bochsって何?という方はこちらを。ちなみにBochsはBoxをもじったものだそうです。
http://bochs.sourceforge.net/
いわゆる、IA-32/64を完全にSWでエミュレーションしてしまうもの。
理論上は、どんなアーキテクチャーのLinuxでもエミュレーションができるはずだったのが1年近く苦戦をしている訳です。

SLES11SDKからx関連のdevel rpmも合わせて導入する必要があります。
コレを含めて、makeします。一応Fedora for s390xにはrpmがあるみたい・・。今回もOSが違うのでmakeから。

Compile optionはmarch=z10 としました。(SLES11SP1に含まれるgccがまだz196に対応していないため)

makeはあっけなく終了・・・。
特にエラーやワーニング類は一切なし。

早速Freedosのブートをしてみる。VGA周りでうまくいかない感じだった。
Bochs側のVGA設定周りを変えてみると、なんと、BochsのBIOS画面が出てきました。
おー。ここまでが長かった・・。
FloppyのFreedosのイメージをBootしてみる。いけますね。きちんとプロンプトも出ます。
一応IAエミュレートはうまく行っているようだ。

次はFreedosのCDimageからFreedosのDISKへのインストールと稼働確認。
まずは空のDiskImageを作成。次にFreedos ISOイメージファイルをマウント。
続いてBoot。コレも問題なし。インストールも問題なし。最後はDiskからBoot。コレも問題なし。

最終的にこの超個人的なプロジェクト(笑)何がやりたいかというとWindows XPをz196で動かしたい訳です。

というわけでWindowsXPのメディアをお借りしてInstallに挑戦。
あくまでトライアルでアクティベーションはやりません。

WIN XPのISOからBootしてみる。できます。インストールは途中までは進むようです。
ファイルをコピーするところでブルーバックです。しかも原因がバラバラ・・・。
WinXPからするとかなり異質な環境ではありますので・・・。

というわけでここまでは来ました・・・。

BochsのBIOS画面が出るようになったのは今までとは違う部分です。
おそらくx周りかな・・・と思ってまして今回はデバックをするつもりでしたがすんなり行ってしまいました・・・。

Freedosを使ってみた感じではさくさく動きます。z196だからでしょうか。
WINXPのインストールも途中まではさくさくいきます。エミュレーターの割には優秀ではないでしょうか。

またヒマがあったらやってみます・・。






z/VM Under Oracle RAC

GW前日からGW初日の朝までこの環境の準備をやってました。はっきり言って拷問。
まず、3390-3型のフォーマット。容量にして約1T程度で、いまどきアキバでも3TのHDDが売ってるくらいですから、一般の人には大したことないやんといわれるのがオチ。ECKD(3390)ディスクって要は3型の場合は2.2Gのディスクの器が決まっているので1Tといわれるとこれらの3390DASD全部をフォーマットしなくてはならないのです。つまりFCPディスクのように1つでかいLUNを作ってそこをフォーマットというわけにはいかないのです。
その辺があんまり理解されてないっすね。
これ、LPARUnderだったら少しはまし。でもVM Underとなるとちょっとめんどくさいです。

さてー、この400vol強のDASDをどうやってフォーマットするか?
まずはVM Underで1つ目のLinuxを作ります。そこにRACの共有DASDをとりあえずATTACHしておきます。
これはコマンドとかGUI(Yast)でできるレベルではないのでシェル作りました。
手順としてはDASDFMT→FDASDになりますが、DASDFMTのほうは複数Volumeをいっぺんに指定ができるのでその中で並行フォーマットの数などを指定できます。
DASDFMT自体は時間がかかるのですが、並行でやればある程度時間は短縮できます。
シェルはこんな風に作りました。
for i in 'ls /dev/disk/by-pass/ccw-0.0.xxxx | grep part'
do dasdfmt $i
done
という風に作ります。これでdasdfmtはできる。
問題はfdasd。これは1つずつしかできない。うーん困った・・・。シェルを考えるも思いつかない。
とりあえず、lsdasdをawkで先頭デバイスをひらって、fdasdのコマンドを作った(笑)
これもきちんとしたシェルにできるのかもしれないが時間がなかった(笑)

今回はOracleのASMで管理を行うのでLVMでパーテーションを切るまででおしまい。

さてこれをRACの相手側と共有しなくてはならない。LPARの場合は簡単なんだけどVM Underでは一筋縄ではいかない。
まず、あるGuest Userに単純にATTACHしてしまうと、ほかのGuestユーザは使えない。
なので、MINIDISKとして定義をする。通常MIDIDISKって名前の通り、100Cylとか区切って使うものだが、今回は3390-3のフルVolumeのMIDIDISKとしてUser directに定義を行う。

MDISK xxxx 3390 0 END 0Xxxxx MNW と定義を行う。400vol分。
ちなみにCylder指定で、0 ENDとするとVTOCも変更できるが1 ENDとするとVTOCが変更できません。

これでRAC 1側の設定はおしまい。

続いてRAC 2側の設定。すでにDASDおよびLVMの設定は終わっているので、VMの定義から。
今度はRAC 1側で定義したMINIDISKにLINKを行います。

LINK xxxx xxxx RAC1 GuestUser MW
をRAC 2側からRAC1GuestユーザーのMINIDISKに書き込み可能状態でLINKします。

これでRAC2側からもDASDが見える状態になりますが、このままではLinuxが認識しないので、
vgscan でRAC 1側で作ったvgが見えるか確認します。
見えたら、vgchange -ay VG名にすると晴れてRAC 2側からも書き込み可能なDASDが完成します。

これで私は徹夜しました。