サーバーの仮想化について

プロアクシアコンサルティングでオープンソリューション事業部に所属しています H.A です。
今日は、サーバーの仮想化技術について紹介していきたいと思います。

プロアクシアでの役割とこれまでの経験を教えてください

IT 関係の仕事に従事するようになったのが MS-DOS から MS-Windows に切り替わるタイミングぐらいでした。その当時は C 言語を利用して、シーケンサーなどの周辺機器を PC で制御するためのアプリケーションの開発を中心に担当しておりました。

その後は、時代の流れに合わせてクライアントサーバーシステムや Web システムの設計や開発を担当すると共に、サーバー構築やネットワーク構築などのインフラも担当するようになりました。現在はオープン系システムにおいて、マネージメントから開発・構築までプロジェクト全般を担当しております。

オープンソリューション事業部では、どのような技術分野・案件を担当してきましたか

主に担当している案件としては、業務システムのリプレースや新規構築などの開発案件と、サーバー構築やネットワーク設計などのインフラ全般の構築や運用支援を担当しております。

それ以外に、Azure や Office 365 などのクラウドサービスを利用した社内システムの構築なども担当しておりまます。

仮想化技術について

仮想化技術の歴史は古く 1960年代ぐらいから利用されてきました。
当初は高価なコンピューターを多くの人で利用するために、1台のコンピューターをあたかも複数のコンピューターが存在しているように利用させようとして生み出されたのが仮想化の技術でした。

それ以降、コンピューターの進歩や価格の低下などもあり、個々で専用のコンピューターが利用できるようになりましたが、コンピューターの台数が増えるにつれ機能や役割の重複や会社全体としてガバナンスを効かせた管理をするのが難しくなるなどの問題が出るようになりました。
これらの問題に対応するために、再び仮想化技術が注目されるようになります。

特に業務システムでクライアントサーバーシステムが利用されるようになったころから、3階層アーキテクチャを考慮して役割別にサーバーを分けて複数台のサーバーでシステムを構成するようになりました。この際、サーバーの役割や利用頻度に合わせてハードウェアのスペックを決定しても、ピーク時以外はリソースを完全に活用しきることはできないため、リソースを有効活用する方法としてサーバーを集約することが検討されました。
しかし、サーバーごとに個別のタスクを実行する方が信頼性が高いと考えられていたこともあり、集約することは容易ではありませんでした。

2000年前後から VM Ware や Microsoft Virtual Server などの仮想サーバー用ソフトウェアを利用したサーバーの仮想化が利用されるようになったことで、1台のハードウェア上に仮想化したサーバー(仮想マシン)を複数台実行できるようになり、信頼性を確保したまま分散していたサーバーを集約してリソースを有効活用できるようになりました。

これにより、多くのサーバーを抱える企業では仮想化技術を利用してサーバーの集約を行い、信頼性を確保しながら効率的なシステム構成を組めるようになりました。
サーバーの仮想化はシステムを新規構築する際だけでなく、既存システムのサーバーにも活用できるため、老朽化したハードウェア上で稼働しているサーバーの移行にも有効活用されています。

ハイパーバイザーについて

サーバーの仮想化はハイパーバイザーと呼ばれる仮想マシンを作成および実行するためのソフトウェアで管理されます。

ハイパーバイザーはホストと呼ばれる物理サーバー上で実行され、CPU・メモリー・ストレージ・ネットワークなどのリソースの管理と仮想マシンへのリソースの割り当てを行います。ハイパーバイザーがリソースのスケジューリングをすることで、複数の仮想マシンが競合することなく1台のハードウェア上で稼働することができるようになります。

ハイパーバイザーはハードウェア上で直接動作するネイティブ型と、ホスト OS 上で実行されるホスト型の2種類があります。最近は性能面でも優れているネイティブ型のハイパーバイザー(Microsoft の Hyper-V や VMware の vSphere など)が業務サーバーなどのエンタープライズ用途で主に利用されています。

パブリッククラウド(Microsoft Azure、Amazon Web Service など)の普及に伴い、オンプレミスのサーバー上にハイパーバイザーを構築して仮想マシンを実行するのではなく、クラウドサービスの仮想環境を利用して仮想マシンを実行する場面も多くなってきています。

サーバーの仮想化環境の構成について

2000年当時は1台のサーバー上に搭載できる CPU の数も少なく、メモリも高価でした。また、記憶装置も HDD が主流で複数の仮想マシンで利用するためのパフォーマンスを確保しようとすると、高性能なディスク装置が必要になることもあり、1台のホスト上に多くの仮想マシンを集約するためには多くの課題がありました。

最近は CPU のマルチコア化、メモリの高集積化と低価格化、大容量 SSD の低価格化、ネットワークの高速化など、ハードウェアの大幅な進歩により課題がクリアされ、1台のホスト上に多くの仮想マシンを集約できるようになりました。これにより、多くの物理サーバーを設置することなく、少数のサーバー構成で安定したシステムを構築することが可能です。

また、オンプレミス環境だけでなくクラウドサービス上の仮想化基盤を活用することで、以前と比べて小規模な投資でディザスタリカバリを考慮した、マルチロケーションでのシステム構成も組むことが可能です。

ハードウェアやクラウドサービスの進歩により、仮想環境を構築するための構成も大きく変化していますが、サーバーを仮想マシン化してハードウェアから切り離すことで、物理的な制約を受けずに柔軟に対応することが可能です。上手く仮想化環境を利用することで、大企業だけでなく複数のサーバーを抱える中小企業でも、少ない投資で柔軟かつ障害に強いシステム環境を構築することができます。

サーバーの仮想化のメリットとデメリット

サーバーを仮想化することによるメリット
運用コスト削減物理サーバーを減らすことで省スペース、省電力、ハードウェア保守費の削減に繋がる
リソースの有効利用分散している物理サーバー上の余剰リソースを集約することで効率的に利用できる
リソース追加が容易設定だけで仮想マシンへのリソース割り当てを変更できる
障害・災害対策仮想マシンのイメージをバックアップすることで別のハードウェア上への移行が容易になる
バックアップ運用仮想マシンの管理環境にはバックアップ機能が準備されており容易にバックアップ・リストアが実行できる
サーバーを仮想化することによるデメリット
構築・運用の知識が必要仮想サーバーの構築や運用に関連して仮想化に関する専門的な知識が必要になる
他サーバーの影響集約してリソースを共用することで他の仮想マシンの影響を受ける場合がある
障害の範囲の拡大ホストの障害時に仮想マシン全体に影響が発生する場合がある
初期投資の拡大ホスト用に高性能なハードウェアが必要になるため初期投資が高額になる可能性がある
障害時の切り分けが困難仮想化の技術が起因する障害の場合に原因特定が難航する場合がある

サーバーの仮想化を行う際には上記のようなメリット・デメリットがあります。仮想化を上手く活用できれば、物理サーバーを利用する場合より効率的な運用ができコストカットに繋がりますが、環境によってはメリットを最大限に活かしきれない場合もあります。
このため、仮想化を導入する場合は、現状の環境を把握してメリット・デメリットを慎重に比較する必要があります。

開発環境など短期的な利用が明確になっている物や、必要となるリソースの伸びが予測しずらい環境などについては、必要な時だけ利用できるクラウドサービス上の仮想環境を利用するのも有効な方法だと思います。

仮想マシンのバックアップ運用について

サーバーの仮想化の管理環境では、仮想マシンの起動・停止、リソースの割り当て、バックアップなどの操作が可能です。このため、専用のバックアップソフトウェアなどを利用しなくてもバックアップを運用できます。

仮想マシンの一般的なバックアップでは、仮想マシンのイメージ全体をバックアップします。仮想サーバーの管理環境を利用すれば、仮想マシンがオンライン中でもイメージファイルのバックアップを実行することも可能です。
また、バックアップ以外にスナップショットやチェックポイントと呼ばれる機能を利用すれば、特定の状態の仮想マシンを保持することができ、開発環境などで一時的に環境変更し、作業後に環境を戻す場合などに有効に利用できます。

バックアップしたイメージファイルの管理については、同一筐体内や別媒体で保管する方法もありますが、災害対応を考慮する場合は別拠点に保存するのが安全です。この場合、別拠点にバックアップ用のサーバーを準備するか、クラウドサービスで提供されている Azure Backup などのサービスを活用するのも有効です。

クラウドサービスで提供されているバックアップ機能では、リージョン全体での冗長化・高可用性・拡張性が確保されていますので、拠点全体での障害の場合でも安全にバックアップを確保することができます。
また、クラウド上の仮想環境とバックアップイメージを利用して仮想マシンを起動することもできるので、災害発生時に仮設環境としてクラウドサービス上に業務環境を復旧することも可能です。

最近ニュースで度々取り上げられていますランサムウェアによる攻撃を受けた場合、感染力が強く同一ネットワーク内へのバックアップも危険にさらされます。このため、バックアップ環境にセキュリティが提供されている Azure Backup などのクラウドサービスを利用したバックアップも有効です。

サーバーの仮想化環境の構築時に心がけていること

2000年当時と比べて、現在ではサーバーの仮想環境を構築する場合に多くの選択肢を選ぶことができます。オンプレミス、クラウド、ハイブリットクラウドなど構築する場所も選択できますし、記憶装置も容量やパフォーマンスに応じて HDD だけでなく SSD も利用できます。
また、サーバーの仮想化は仮想マシンを集約して実行するため、仮想化環境自体に障害が発生すると影響範囲が大きくなるため、仮想化環境の冗長化も検討する必要があります。

このため、お客様の提示される機能要件・パフォーマンス・拡張性・コストなど多くの要件を満たすには、トータルバランスのいいシステム構成を設計することが重要で、それぞれの環境の特長を把握し、十分評価・検証した上で決定する必要があります。

特に、クラウドサービスを利用する場合、自社では制御できない要因も多く存在しますし、パフォーマンスを確保しようとすると高額なリソースや追加サービスが必要な場合もありますので注意が必要です。

今後取り組んでいきたい技術や案件について

過去に周辺機器を制御するためのアプリケーションの開発を担当してたこともあり、デバイスと連携して行うシステムの開発をしてみたいと思っています。

最近は IoT で多くのデバイスをインターネットに接続して遠隔制御するなどのサービスが提供されていますので、現時点まだシステム化されていない分野で新しいビジネスを作っていければと思っています。

今後エンジニアとして、どのように成長していきたいとお考えですか

現在も設計・開発からインフラ構築、運用支援まで広い範囲で対応しておりますが、マネージメントも含めてシステム全体を把握して対応できるエンジニアになっていきたいと思います。

また、自分の成長だけでなく後進の育成も重要だと感じておりますので、自分の培ってきた技術を後輩に伝承していけるように取り組んでいきたいです。