ファイルサーバーを仮想化するメリットと注意点
ファイルサーバーとは
「クライアント」からのリクエストを受けて、要求されたファイルの内容を送る、データをファイルに追加する、指定されたデータを削除する、指定されたデータを新たな内容に書き換えるなどの働きを行っているのが「ファイルサーバー」です。データベースの場合、データベースの本体であるファイルを管理しているのがデータベースサーバーです。これには、サーバーとクライアントが同じPCに同居するスタイルと、別々のPC上にサーバーとクライアントが存在し、ネットワーク経由でサーバーとクライアントがやり取りをするスタイルの二つがあります。サーバーとクライアントが同じPCで動作している場合、そのPC上のCPUでサーバーのプログラムとクライアントのプログラムが同時に動作するため、CPUの動作率が高くなります。CPUの動作率が高い状態は「CPU負荷」が大きい状態です。
別々のPC上でサーバーとクライアントが動作している場合、各PCのCPUはサーバー側ならサーバープログラムの動作に専念できますし、クライアント側はクライアントプログラムの動作に専念できるため、個々のPCのCPU負荷は小さいです。ネットワーク上でのやり取りを「トラフィック」と呼びますが、別々のPCでサーバーとクライアントを動作させた場合、ネットワークを流れるトラフィック量は増加しますが、個々のPCのCPU負荷は下がるのです。
データベースサーバーやメールサーバーは、データをファイルに保持しています。このファイルが複数のサーバーに分散している場合、バックアップはサーバー毎に取る必要があります。そのため、50台のサーバーがあれば50回のバックアップ作業が必要です。さらに同じ業務に関係するデータベースの場合、各サーバーのファイルの内容は同じでないと不具合が生じます。このような場合、各サーバーの内容を一致させる「同期」と呼ばれる作業が必要ですが、各サーバー上に分散しているファイルをネットワーク経由で一つにまとめれば、同期の問題は解消しますし、バックアップの手間は一気に軽減します。
複数のサーバーに分散しているファイルを一つにまとめ、ネットワーク経由でファイルを共有するのが「ファイルサーバー」です。ファイルサーバーを構築しますと、ネットワーク上のトラフィックは増加しますが、同期の問題は解消され、バックアップの手間も軽減されます。また、既存の物理的なネットワーク監視装置(プログラム)があれば、ネットワークを流れる情報を監視すれば、データベースの動作も監視できますのでセキュリティ上も有利になるでしょう。
ファイルサーバーの仮想化とメリット
多くの業務システムは、ファイルサーバーでファイルを集約して管理し、各サーバー上でサーバーのプログラムが動作しています。そして、ファイルサーバー及び複数のサーバーがWAN・LANの物理的ネットワークで結ばれて動作しています。現行の業務システムの場合、ハードウェアの性能向上により、CPU負荷率が30%にすぎないケースも少なくありません。その場合、サーバーが動作しているハードウェアを丸ごとソフトウェア化して、一台で複数のサーバーを動作させるようにすれば、物理PCの台数を減らすことができます。CPU負荷率が平均30%であれば1台で3つのサーバーを動作させることができますから、3台を1台に減らすことが可能です。
多くの場合、各サーバープログラムは多様な仕事をこなしています。サーバープログラムは例外的に単純なプログラムを除き、「今このサーバープログラムは、このような環境でこのような状態で動作しています。」という情報をプログラム内部で保持しながら動作しています。そのため、システムのバックアップを行う場合、データーファイルをバックアップするだけではなく、サーバープログラムの状態情報もバックアップすることが必要です。サーバープログラムの状態情報のバックアップは、システムの管理者にある程度のスキルが要求されるとともに、非常に手間がかかる作業です。
ファイルサーバーの仮想化を行うと物理的PC自体がファイルとして扱えますから、サーバープログラムの状態情報もファイルのバックアップと同じように行うことができます。ファイルサーバーを仮想化するメリットは、物理PCの台数減によるコストダウンとシステムのバックアップ時の手間が軽減できることです。レンタルサーバーを使用している場合、台数減はレンタル料の削減につながります。特に、システムに不具合が生じた場合、早急に不具合発生前の状態に戻す必要がありますが、その手間がファイルサーバーの仮想化を行うことで大きく軽減されるのです。また、ファイルサーバーの仮想化は、システムの運用効率の向上にも非常に大きなメリットがあります。
ファイルサーバー仮想化にともなう注意
既存OS上のアプリケーションの一つとして仮想マシンを動作させる「ホスト型」や、ハードウェアを管理する専用のプログラムであるハイパーバイザー上で仮想マシンのプログラムを動作させる「ハイパーバイザー型」など、ファイルサーバーの仮想化を行う方法はさまざまですが、各サーバーPCはネットワークを介して通信を行い動作しています。そのため、ファイルサーバーの仮想化を行うと、仮想化されたサーバー間の通信を受け持つネットワークもソフトウェア化されるのです。
ハイパーバイザー型であれば、ハイパーバイザーを構成するプログラムがネットワーク機能を提供しますし、ホスト型では仮想マシンを実現しているアプリケーションプログラムがOSの機能も利用してソフトウェア的にネットワーク機能を提供しています。このように、いずれの場合も仮想マシン間の通信・ネットワーク機能はプログラムによって実現されているのです。
サーバー間のトラフィック量が増加しますと、仮想化されたファイルサーバーでは通信を担当するプログラムの動作量が増えます。仮想環境下のトラフィック量の増加は、CPU負荷の増加を招く要因です。また、仮想化されていないシステムでもトラフィック量が多い場合、ネットワークのバンド幅がボトルネックになっている例があります。一定の時間内に、そのネットワークが受け付ける最大トラフィック量が「バンド幅」です。仮想化にあたっては、各サーバー間の最大トラフィック量と各サーバーPC及びサーバープログラムの合計でCPU負荷を検討しておく必要があります。ファイルサーバーを仮想化する場合、サーバークライアントのプログラムによるCPU負荷の最大値に加えて、ネットワークトラフィックの増加によるCPU負荷の最大値も検討しておく必要があります。
不具合が発生した場合、仮想化していないシステムでは原因がサーバーなのかネットワークなのか、サーバープログラムなのか比較的容易に切り分けられます。しかし、仮想化したファイルサーバー環境下では、ネットワーク機能も含めてハードウェアの機能をソフトウェアで実現していますので、どうしても原因の切り分けが困難になってしまいがちです。
仮想化された環境下では、ソフトウェアでサポートしているネットワークについて、既存の物理LAN監視装置が使えません。管理上ネットワークを流れている情報の監視は、有効な手段の一つです。しかし、ハイパーバイザー型では、ハイパーバイザーがゲストサーバー間の通信を見せる機能を提供していない場合、ネットワークを流れる情報を見ることができませんし、ホスト型でも、特殊なプログラムを用意しないとネットワークを流れる情報を見ることができないのです。
Tintriによる仮想環境の見える化と障害切り分けの簡素化
仮想環境専用フラッシュストレージのTintri VMstoreはTintri OS 4.2よりLarge vDiskサイズをサポートしています。例えばVMware vSphere環境であれば最大のvDiskサイズは64TBとなり、十分にエンタープライズでのファイルサーバー仮想化用ストレージとして利用できます。そして、仮想環境のサーバー、ネットワーク、ストレージそれぞれのレイテンシーをひとつの画面で表示します。Tintri VMstore上でファイルサーバーを稼働させれば、万が一の遅延や性能劣化が発生したとしても、原因の切り分けを簡単に行うことができるようになるのです。