レベル: 中級 Stephen B. Morris, CTO, Omey Communications
2008年 7月 29日 今日の組織は 2 つの大きな課題に直面しています。それは、より一層リッチになりつつあるさまざまなサービスを配備するという課題と、それに関連する大規模なコンピューティング・プラットフォーム・ベースを管理するという課題です。この記事では、組織のコンピューティング・アーキテクチャーの重要コンポーネントを扱うための (やや) 新しい手段として、オペレーティング・システム自体を個々の管理対象オブジェクトとして扱う方法を紹介します。
最新のコンピューティング技術が大きな成功を収めていることに異論をはさむ人はいないでしょう。良し悪しはともかく、これまでになくコンピューティング環境にアクセスできる環境が世界に広がっています。その結果もこれまでにはないもので、オンラインでつながる人の数が増えるにつれ、スパムやオンライン犯罪の登場を目の当たりにすることとなっています。しかしその一方で、世界的なコンピューター化が進むことには非常に多くのメリットがあり、例えばさまざまな情報にアクセスし、十分な知識を持った世界中の柔軟な労働力を活用できたりもします。
最新のコンピューティング技術の成功を支える基礎としてデータ・センターがあります。データ・センターはあまりよく知られていませんが、そこには膨大な数のサーバーやその他のハードウェアが格納されています。コンピューティング・サービスに対する要求は、多くのデータ・センターが規模と消費電力の面から急速に物理的な限界に達しつつあるほど (あるいは既に限界を超えるほど) 増大しています。
仮想化は、こうしたデータ・センターに対する過負荷を軽減するための比較的新しい技術です。図 1 は仮想化によって負荷を軽減する様子を示したものです。この図では 2 台の物理的な Linux® サーバーが、1 台のサーバー上でホストされる VM (virtual machine: 仮想マシン) に統合されています。
図 1. 仮想化を利用して Linux サーバーを統合する
図 1 に示すような統合を行うのは、単にデータ・センターのマシンの数を減らすための方法としては非常に面倒なものに思えるかもしれません。そのため、なぜ仮想化なのか、という重要な疑問が湧いてきます。
なぜ仮想化なのか
2 台の Linux サーバーを 2 つの VM の中に収めることが、なぜ良い考えなのでしょう。1 つの理由としては、電力要件が即座に半分に減ります。同様に 2 台のコンピューター間でのネットワーキング作業も削減されます。さらに、この新しいホスト・サーバーが他の用途にも使われる場合には、節約量はもっと多くなります。しかし控え目に見積もれば 50 パーセントの節約です。では欠点はあるのでしょうか。
技術に関する限り、一般的には代償なしに何かを得られることはなく、この場合も例外ではありません。1 台のコンピューターで 2 台の Linux サーバーをホストすることによって、単一障害点ができてしまいます。つまり、もし新しいマシンがダウンすると、それによって 2 つの仮想 Linux マシンもダウンしてしまいます。
仮想化の技術は、かつては非常に特別なものでしたが、今となっては特別なものではありません。実際、このすぐ後に説明するように、2 つか 3 つのダウンロードを行えば、最も高度な仮想化ソリューションをいくつか入手してデプロイすることができてしまいます。また現在では、仮想 Linux サーバーと Linux アプリケーションを比較的容易に Microsoft® Windows® にホストすることができます。(正直なところ、私はその実際を初めて見たとき、その容易さに驚きました。) では仮想 Linux システムについて詳しく調べてみましょう。
仮想 Linux システムのダウンロードと実行準備
まず、thoughtpolice のサイトから仮想 Linux のイメージをダウンロードすることから始めましょう。私がこの記事のために選択した仮想 Linux のイメージは Ubuntu-server-7.10-i386 ですが、このサイトにある他の任意のイメージも使用することができます。例えば、皆さんの IT 部門は標準として Fedora を使用しているかもしれません。その場合には下記の説明に少し変更が必要かもしれません。しかしシステム全体としての変更は比較的わずかなものです。
VMware Linux のイメージはディスク・フットプリントを大量に必要とすることに注意してください。この記事で使用する Ubuntu-server-7.10-i386 のイメージは約 193MB なので、ダウンロードには少し時間がかかるかもしれません。また VMware イメージに加え、プレイヤーというソフトウェアが必要です。プレイヤーは仮想オペレーティング・システム用の実行プラットフォームです (そのため、図 1 の中の下側のマシン上に常駐します)。今回使用するプレイヤーは VMware Player です。この VMware Player が仮想的なオペレーティング・システム・マシンを「再生」つまり実行する方法は、CD の曲を再生する方法とほとんど変わらないと考えることができます。
もちろん、必ずしも VMware Player を使う必要はありません。VMware Player の代わりに VMware Server を使うこともできます。VMware Server には VMware Player と似た機能のほかに、新しい VM を作成する機能などもあります。
この仮想化技術をよく理解する上で重要なことは、Ubuntu のイメージが本格的な Linux オペレーティング・システムであるという認識を持つことです。従って、ローカルからでもネットワーク経由でもこの Linux インスタンスを実行することができ、またこの Linux インスタンスとやり取りすることができます。こうしたオペレーティング・システムの機能を応用した興味深い一例として、ソフトウェアを配布するためのプリインストールされたプラットフォームとしてこの機能を使う方法があります。このような使い方をすると、イメージと関連ソフトウェアを統合環境として利用することができます。では、Linux イメージのプレイヤーについて調べてみましょう。
VMware Player は VMware のサイトからダウンロードできる無料のソフトウェアです。VMware Player も、約 172 MB という大きなディスク・フットプリントを必要とすることに注意してください。VMware Player をインストールすると、Windows のスタート・ボタンから VMware Player を起動することができます (図 2)。
図 2. VMware Player を起動する
図 2 は、仮想 Linux を使用するにあたっての出発点を示しています。VMware Player が概念的には音声ファイルの再生方法と似た方法で Linux イメージを実行することを思い出してください。つまりポイント・アンド・クリックで Linux イメージを実行することができます。VMware Player で利用できるすべてのユーザー・コマンドは、VMware Player の起動ページの Commands (コマンド) 領域に表示されています。
仮想機器に関心がある人は、VMware Player の同じ起動ページの Featured Virtual Appliance (主な仮想アプライアンス) 領域を見てください。また、実際に仮想ソフトウェアを実行する前に、図 2 の Commands (コマンド) のすぐ下に、最近実行された VM イメージのリストがあることに注目してください。この領域は、今はおそらく空白のはずです。なぜなら、まだソフトウェアをインストールしただけであり、VM を実行していないからです。そこで今度は VM を実行することにします。
Linux オペレーティング・システムのイメージを実行する
この時点で、VMware Player と、皆さんが選択した Linux VMware イメージの 1 つがダウンロードできているはずです。この状態でその仮想 Linux イメージを実行するためには、Commands (コマンド) 領域の Open (開く) コマンドをクリックし、次にその VM の場所を参照します。その VM が見つかると、その VM のファイルが VMware Player の新しいウィンドウに表示されます (図 3)。
図 3. 選択した VM のイメージを参照する
このウィンドウから先に進む前に、この Linux イメージの .vmx というファイル拡張子に注目してください。この拡張子は、VMware の VM を保存するために使用するファイル・フォーマットを表しています。この Linux インスタンスは別のオペレーティング・システム内部で実行されるため、ゲスト・オペレーティング・システムとも呼ばれます。実際にゲスト・オペレーティング・システムを実行するためには、.vmx ファイルを選択して、Open (開く) をクリックします。すると仮想 Linux インスタンスがゲスト・オペレーティング・システムとして起動されます。この時点で、セットアップがすべて適切に行われていれば、皆さんが選択したバージョンの Linux の完全な起動シーケンスが見られるはずです。
この魔法を調べてみると、すべてのことは Windows の下の独立したアプリケーションとして、コンソール・ウィンドウの中で行われています。ログインする際には、(VM の中をクリックすることで) VM に入って、Return キーを押す必要があります。すると、ユーザー名とパスワードを入力するように促されます。Ubuntu Linux の VM にログインするように促されたら、ユーザー名として notroot を、パスワードとして thoughtpolice を入力します (これは www.thoughtpolice.co.uk の Ubuntu Linux ディストリビューションでは普通のことです)。このログイン・ウィンドウを図 4 に示します。
図 4. Ubuntu Linux の仮想インスタンスが起動し、使用準備が整った状態
これで、Windows コンピューター上で仮想 Linux インスタンスが実行されている状態になりましたが、Windows と仮想 Linux インスタンスの間の切り替えはどのようにして行うのでしょう。ゲスト・オペレーティング・システムとネイティブ Windows オペレーティング・システムとの切り替えは簡単で、Control-Alt を押すだけです。Control キーと Alt キーのペアによって VMware Player にシグナルを送り、ネイティブの Windows ホストにフォーカスを戻したいという要求を伝えるのです。
オペレーティング・システムのイメージを閉じる
VMware Player で Linux イメージをシャットダウンしたい場合には、次のコマンドを入力します。
すると、root のパスワードを入力するように促され、次に notroot のパスワードを入力するように促されます。これは、Ubuntu VMware イメージが安全のために root パスワードを持たないためです。もちろん、必要であれば root のパスワードを作成することもできます。その場合に sudo コマンドが登場します。スーパーユーザー (つまり root レベル) のコマンドを実行する方法として、sudo コマンドを使う方が root ユーザーとしてログインするよりもセキュアで、広く受け入れられている、安全な方法です。
さて、これで基本的なインフラストラクチャーのセットアップができました。VM を利用すると Windows コンピューター上で任意の数の仮想 Linux インスタンスを実行することができ、また設定や実行も比較的簡単なのが、おわかりかと思います。つまり VM によって、データ・センターに必要なマシンの台数を削減するという元々の問題の一部を解決することができます。では Linux そのものを管理するという問題についてはどうなのでしょう。
Linux を管理対象オブジェクトとして扱う
この記事のここから先では、VM 上で実行される Linux インスタンスを管理対象オブジェクトとして扱います。これはつまり、各 Linux サーバーを個別に管理可能なエンティティーとして扱うということです。最近のサーバーやソフトウェアに関する典型的な管理方法を簡単にまとめると、次のようになります。
オペレーティング・システムに対する従来の扱い方
Linux やその他のオペレーティング・システムのインスタンスを扱うための従来のモデルでは、問題が生じたら解決する、という方式になりがちです。例えば次のような場合です。
- サーバーのメモリーが不足してきたため、一部のプロセスをシャットダウンする。
- プロセッサー利用率が高すぎるため、一部のプロセスをシャットダウンする。
- アプリケーションのコンポーネントに障害が発生したので、そのコンポーネントを再起動する。
- サーバー容量が不十分なので、さらにマシンを追加する。
これを見るとわかるように、こうした問題とその解決策は要するに問題対応型であり、人間が介入する必要があります。多くの場合、管理者はダッシュボード・ソフトウェアに表示される内容を参考にして行動するでしょう。ダッシュボード・ソフトウェアは通常、意志決定を行う上で使いやすいフォーマットでデータを収集して表示しようとします。しかし、もっと詳細なレベルでは、こうした従来のソリューションはあまりアジャイルではありません。
このような問題対応型のモデルは、SLA (service level agreements) の要求がそれほど高くなく、管理スタッフのコストがあまり大きな問題にならない限り適切なものです。しかし、ユーザーの要求がもっと厳しくなり、またスタッフのコストが高くなるにつれ、問題対応型のモデルは魅力を失います。ではそれに代わるものは何なのでしょう。それを一言で言えば、インスツルメンテーション (システム監視の機能装備) です。
オペレーティング・システムにインスツルメンテーションを追加する
管理対象としてのインスツルメンテーションを Linux に追加することで、Linux の管理がはるかに容易になります。ある面で、これは IBM のオートノミック・コンピューティングが約束していることの一部です (オートノミック・コンピューティングでは、インスツルメンテーションを通じて対象にアクセスします)。どのような方法をとるにせよ、結果は図 5 に示すようなものになります。
図 5. インスツルメンテーションが追加された Linux インスタンスと管理ダッシュボード instances and a management dashboard
図 5 で、それぞれの Linux インスタンスがホストしている管理ソフトウェアは、Linux インスタンスを管理対象オブジェクトにすることができます。これにより、ダッシュボード・アプリケーションを使って、オペレーティング・システムという管理対象オブジェクトの監視および制御を行えるようになります。
インスツルメンテーションが追加されたオペレーティング・システムを管理するための現在の方法
前のセクションで説明した考え方は、特別新しいものではありません。システム管理者はサーバーを管理するために何十年にもわたって苦労してきましたが、その結果、サーバーの管理には以下を組み合わせた方法が一般にとられるようになりました。
- メモリー、プロセッサー、そしてディスクにかかる負荷を監視するためのソフトウェアとスクリプト。
- 機能が停止 (ソフトウェア・バグが原因の問題などによる) してからの対応。
- サーバーの再起動。
- 直感と推測の活用。
ここで私は、効果的な管理を促進するために、Linux のインスツルメンテーションに関する一連のガイドラインを提案したいと思います。この提案に従うことによって、必然的に、Linux インスタンスの状態を全体的な視点と詳細な視点の両方から見られるようなソフトウェア構成になります。そうしたソフトウェアの鍵となる要素は次のとおりです。
- 標準化されていること。
- 単純であること
- 拡張性があること。
標準化されたソリューションを使うことで、ベンダー・ロックインを避けることができます。つまり標準に準拠した任意のベンダーのダッシュボード・アプリケーションが使えるはずです。また単純であれば管理ソリューションの使い方が理解しやすくなるはずです。さらに拡張性があれば、フォークリフト・アップグレードを行わなくとも将来要件に対応できるはずです。
適切にインスツルメンテーションが追加されたオペレーティング・システムのためのアーキテクチャーのガイドライン
では、インスツルメンテーションが追加されたオペレーティング・システムを、改善された (ベンダー特有ではない) 方法で管理するために、アーキテクチャーに関してどのようなガイドラインを使えばよいのでしょう。アーキテクチャーの品質面での望ましい性質として管理インスツルメンテーションに適用できるものを一覧にすると、次のようになります。
- 単純であること。
- 使いやすいものであること。
- 可用性が高く、与える影響が小さいこと
- ハイ・パフォーマンスであること。
- 変更が容易であること。
- セキュアであること。
- テストが容易なこと (単体テストや結合テスト、システム・テストなど)。
この一覧の先頭に単純さと使いやすさを挙げた理由は、従来の世代の管理技術がどれも過度に複雑であるという問題を持っていたからです。どのような管理インフラストラクチャーも、管理対象となるシステムに影響を与えないように、常に利用可能かつ十分軽量でなければなりません。またハイ・パフォーマンスであることによって、管理対象システムに対する影響を少なくすることができます。管理要件の変更はほとんど不可避なものですが、それによって大きな混乱が生じるようであってはいけません。そして、管理用のソフトウェアはシステム・レベルのアクセス権を持つことが多いため、セキュアでテストが容易なものであることが重要です。
まとめ
データ・センターにマシンが多すぎるという問題は大きくなりつつあり、ある面では、過剰なプロビジョニングをすることによってこの問題が悪化しています。プロビジョニングとは目的とする要求に対応するためにマシンを追加する手順を言います。この方法では一般的に、「規模の適正化」よりも「規模の拡大」が行われます。その結果、多くのデータ・センターにはマシンがあふれ、電力やスペースが足りなくなる事態に陥っています。
仮想化技術は、ある程度そうした過密状態を軽減するために役立ちます。実際、一部の仮想化ツールは容易に理解して使いこなすことができます。しかし暫定ソリューションとしての仮想化が限界に達すると、Linux のインフラストラクチャー管理というレベルでの根本的な見直しが必要になります。
Linux は今やグローバルなコンピューティング・インフラストラクチャーの重要コンポーネントです。こうした特筆すべき成功にもかかわらず、管理システムは相変わらず長年の問題を抱えたままであり、過度な複雑さや、ベンダー独自の仕様、相互運用性の欠如などに苦しんでいます。そのため、Linux プラットフォームを管理しようとする場合には、独自の管理システムを作成するか、あるいはベンダー独自のソリューションを使用する必要があります。しかし、こうした方法は将来にまでわたり使い続けられるものではありません。
従来世代の管理技術はどれも、過度の複雑さ、重量級の実装 (過度のリソース使用)、キメ細かすぎる手法といった問題を抱えています。実質的に Linux システムの管理インフラストラクチャーの領域は空白のままであり、その根本や枝葉部分を見直す余地が十分にあります。それらを検討する上で、私がここで提案したようなアーキテクチャーのガイドラインが手頃な出発点になるはずです。
参考文献 学ぶために
- 「XML-RPC で C++ アプリケーションを Web サービス対応可能にする」(Karthik Subbian と Ramakrishnan Kannan の共著、developerWorks、2006年6月20日) は C++ のメソッドをサービスとして公開するための方法を順を追って解説しています。
- 「WindowsからLinuxへのロードマップ」(developerWorks、2003年11月) を読み、Windows 環境から Linux 環境へのオペレーション・スキルの移行を開始してください。この 9 回シリーズの記事では「Linux で考える」ための方法を説明しており、また一般的なコマンドや、ポイント・アンド・クリックによる構成、ファイルシステムやログの扱い方、ネットワーク・ツールやリカバリー・ツールの使い方、入手可能なソース・コードからパッケージをコンパイルする方法などについて解説しています。
- Linux の基本を学び、認定試験の準備をするためのチュートリアルは、Linux 管理のためのあらゆるタスクを網羅しています。25 を超えるチュートリアルを順に学ぶことで、ゼロの状態から Linux の基本的なスキルを身につけることができ、あるいは LPI (Linux Professional Institute) から Linux システム管理者としての認定を得るために学習が必要な試験の話題を集中して学ぶこともできます。
- 「Linux ファイルシステムの徹底調査」(developerWorks、2007年10月) では、なぜ Linux がオペレーティング・システムのスイス・アーミー・ナイフのようなものなのかを説明しています。Linux はジャーナリング用のファイルシステムからクラスタリングや暗号化のためのファイルシステムに至るまで、膨大な数のファイルシステムをサポートしています。Linux は標準ファイルシステムを使用する場合にも非標準型ファイルシステムを使用する場合にも、またファイルシステムを開発する上でも素晴らしいプラットフォームです。この記事では Linux カーネルでの VFS (virtual file system) についても解説しています。
- 「Linux カーネルの徹底調査」(developerWorks、2007年6月) では大規模で複雑なオペレーティング・システムのコアである Linux カーネルを詳細に解説しています。Linux カーネルはその大きさのわりには、サブシステムおよび層構造に関してよく整理されています。この記事では Linux カーネルの一般的な構造をひととおり説明し、主要なサブシステムやコア・インターフェース、さらに詳しく掘り下げられるように関連リソースについても解説しています。
- チュートリアル「Hacking the Linux 2.6 kernel, Part 1: Getting ready」(developerWorks、2005年7月) で、システム要件と環境要件、Linux のソース・コードを入手するために最適な方法、新しいカーネルの構成方法と起動方法、そして起動中にメッセージを出力するための方法などを学んでください。
- developerWorks technical events and webcasts で最新情報を入手してください。
- developerWorks の Architecture ゾーンにはアーキテクチャーの領域でのスキルを磨くためのリソースが豊富に用意されています。
- developerWorks の Linux ゾーンには、Linux 開発者のためのリソースが豊富に用意されています。最も人気のあった記事とチュートリアルもご覧ください。
- technology bookstore には、この記事や他の技術的な話題に関する本が豊富に取り揃えられています。
製品や技術を入手するために
- IBM 製品の試用版をダウンロードし、DB2® や Lotus®、Rational®、Tivoli®、WebSphere® などが提供するアプリケーション開発ツールやミドルウェア製品をお試しください。
- SEK DVD セットをご注文ください。DB2 や Lotus、Rational、Tivoli、WebSphere など、Linux 用の最新 IBM ソフトウェアの試用版が含まれています。
- developerWorks から直接ダウンロードできる IBM ソフトウェアの試用版を利用して皆さんの次期 Linux プロジェクトを構築してください。
議論するために
著者について  | |  | Stephen Morris はアイルランドにある Omey Communications の CTO (最高技術責任者) です。彼は過去 20 年間、世界最大規模のネットワーク関連企業の何社かにおいて、さまざまなソフトウェア・プロジェクトに従事してきました。そうしたプロジェクトには、J2EE/J2SE ベースのネットワーク管理システムや課金アプリケーション、SNMP エンティティーの移植と開発、ネットワーク機器技術、GSM モバイル・ネットワーク・アプリケーションなどが含まれています。彼は『Network Management, MIBs and MPLS: Principles, Design and Implementation』(2003年 Prentice Hall PTR 刊) の著者でもあります。 |
記事の評価
|