本文へジャンプ

Hitachi

日立アドバンストサーバ HA8500/9000Vシリーズ

今回はOS関連で、幾つかのキーワードを解説します。OS関連のキーワードは市販本やインターネット検索などで基礎知識を得ることができます。ここでは、少しHP-UXの機能で“味付け”した基礎知識を紹介します。

『OS』ってどんなもの?

UNIXシステムは、ハードウェアとOSとアプリケーションソフトウェアの3つの要素で構成されます。さらにOSは、カーネル部とそれ以外の部位で構成されます。まずは、カーネルについて説明します。カーネルは、OSの中核となる部分で、アプリケーションソフトウェアとハードウェアのインターフェイスとなる「システムコール」や「プロセス管理」、「メモリ管理」、およびデバイス管理の「ファイルシステム」と「ネットワーク」部位で構成されます。(図1参照)
カーネルは、簡単に説明すると、システムのリソースを管理し、ハードウェアとアプリケーションソフトウェアのやりとりを行うものです。

画像 OSとカーネル
図1. OSとカーネル

『マルチスレッド(multi-thread)』ってどんなこと?

画像 タスクの構成
図2. タスクの構成

threadの和訳は「縫い糸」ですので、複数の縫い糸がマルチスレッドということになります。スレッドの解説の前に、プログラム構造を簡単に触れます。
図2に示すように、一つのタスクは命令語が格納されているテキストと、取扱うデータおよびスタックとで構成されています。スタックとは、たとえば読書している時に電話が鳴り、読書を中断して電話にでる時に、どこまで読んだかを示すために“しおり “を本に挟みますが、この栞のような機能をスタックと呼びます。割込みが発生した時に、元に戻る為のアドレスやデータ(CPUのレジスタの内容)を保管する領域です。

画像 マルチタスク処理
図3. マルチタスク処理

画像 マルチスレッド
図4. マルチスレッド

次にたとえば図3に示すように、会員登録システムがあったとした時に、入会を登録する入会タスクと脱会で会員データベースから削除する脱会タスクがあるとすると、Aさんの入会とBさんの脱会を同時に処理することを、マルチタスク処理と呼びます。

イベント開催後、一度に多くの人から入会の申込みが殺到した場合、図4のように入会タスクが繰返し実行されます。この同一のタスクが同時に動作する状態をマルチスレッドと呼びます。

このスレッドを多重化する制御は、一般にはOSのカーネルが行います。また、Cosminexus等に内蔵されているJavaVM でも行うことができます。

マルチスレッドは、マルチタスク処理を高速化にします。しかし、留意すべきこともあります。図 4の例で言えばAスレッドに、B、Cと割込まれると、Zスレッドの終了で順次戻ってきますので、この割込み退避/回復のオーバヘッドが無視できない場合が発生します。この対策としては、スレッドが使用できる CPUを制限して多重度を抑止します。HP-UXではPsetと呼ぶ機能でこれを実現できます。

『ロー(raw)I/O』ってどんなこと?

RawI/Oとは、アプリケーションソフトウェアがカーネル内の「ファイルシステム」機能を介さずに、直接デバイスドライバとやりとりを行う機構のことをいいます。

画像 Block I/Oとraw I/O
図5. Block I/Oとraw I/O

デバイスドライバを制御するのはカーネルの役割です。図5に示すように、カーネルの機能を使用すれば、エラー処理を含めてカーネルがデータの書込み/読出しをします。このため、一般的なアプリケーションソフトウェアは、このBlock I/Oを用います。しかし、Oracleといったアプリケーションソフトウェアでは、

  • OSのバッファサイズに拘束されずに、大きな表(データ)を直接扱いたい
  • ハードウェアに書き込む所まで、自らが見届けたい

といった要望を満たす為に、HP-UXではRaw I/Oと呼ぶ機構を用意しています。

これらと同様な機構は他のOSでも用意されていますが、基幹系システムでOracleを用いる時に、HP-UXが数多く採用されるのは、HP-UXのRaw I/O機構とOracleとの親和性の高さが評価されていることも要因の一つです。

『LVM』ってどんなこと?

LVMはLogical Volume Managerの略で、HP-UXが提供する論理ボリュームの機能を呼称します。論理ボリューム機能は、最近でこそWindowsでもサポートされるようになりましたが、HP-UXでは10年以上前から提供している優れた機能の1つです。
LVMを活用すれば、図6に示すようにハードウェア構成上は複数のハードディスクであっても、アプリケーションからは一つのボリュームとしてアクセスが可能となります。また、LVMを用いて論理ボリューム化することで、たとえばハードディスク2台で構成される論理ボリュームに、システム稼動中でも3台目のハードディスクを増設し、論理ボリュームの容量を拡張できます。

画像 LVMによる論理ボリュームの構成
図6. LVMによる論理ボリュームの構成

これはLVMのマッピングと言う機能で実現しています。このマッピング機能の応用としては、図7に示すように、論理ボリュームを二つのハードディスクにマッピングすることにより、ソフトウェアでのミラーリングを構成することができます。
またLVMは、大容量かつフレキシブルなマス・ストレージ環境を提供し、ソフトウェアでのストライピング機能などを提供します。HP-UXではLVMが、早くから実装され、UNIXの大規模システム構築実績に富んでいるため、基幹業務で利用される大規模ストレージシステムのサーバにHA8500が採用される理由にもなっています。

画像 マッピングによるミラーリング
図7. マッピングによるミラーリング

まとめ

今回は、OSの基本でもある「カーネル」「マルチスレッド」「RawI/O」「LVM」について解説しました。
これらの機能や技術がHA8500の性能、信頼性、可用性を支えています。
今後もHP-UXそしてHA8500にご注目ください。