スケールアップとは?スケールアウトとは?
ここで GlusterFS の性能を向上させる方法について考えてみたいと思います。
通常分散ファイルシステムに限らず分散化されたシステムで性能向上を考える場合、次のどちらにするか議論が分かれます。
- スケールアップ:システム自体の性能を向上させる
- スケールアウト:システム内の処理台数を増やす
スケールアップの場合、CPU 周波数を上げたり、HDD の SATA を SAS あるいは SSD にする等、回転数を上げることでサーバ個々の能力を向上する方法が採られます。
一方でスケールアウトの場合、サーバ台数自体を増やすことでシステム全体の能力向上を図ります。
ただし、一般的にはスケールアップには限界があります。CPU 周波数は既に頭打ちになっており、HDD にしてもミラーリング構成を取るなど RAID 構成を考慮した場合性能向上は難しくなります。またスケールアップ時はそのサーバを一旦停止する必要があることが多くシステムの可用性も落ちてしまう可能性があります。
スケールアウトであれば性能の低いサーバーであっても増やせば増やすだけシステムの処理性能が上がり、多くの場合サーバ停止は必要ありません。これらの理由から最近ではほとんどこちらが好まれています。
ただ、システムをスケールアウトさせるにはアプリケーション側も同じ処理を複数台で行うことを考慮して設計する必要があり、その実装は簡単ではありません。
もちろん GlusterFS では最初からスケールアウトが意識されている為、スケールアップもスケールアウトもボリュームオプションさえ指定しておけば簡単に扱うことができます。
GlusterFS ではスケールアップとスケールアウトのどちらがいいか
では GlusterFS ではスケールアップとスケールアウトのどちらがよいのでしょうか?
スケールアウトが考慮されている分散ファイルシステムの場合、性能の低いサーバであっても追加すればするほど有利になります。
ただ、 GlusterFS は動画や OS のイメージファイルのような大きなファイルを共有した場合、ストライプドボリュームオプション等も有効に効くのですが小さなファイルが大量にある場合(例えばメールファイル、小さな画像等)は NFS よりも性能が落ちるケースがあります。
このため、大きなファイルを共有しているボリュームではサーバ数をどんどん追加しスケールアウトを図っていくのが有効的です。
一方で小さなファイルを大量に共有するような場合はサーバ自身のスループットも高めていくのがよいでしょう。この場合スケールアウトも一緒に行うべきです。
これらのことを加味して以下のように分類できます。
- 大きなファイルを共有するボリューム:スケールアウト
- 小さなファイルをたくさん共有するボリューム: スケールアウトとスケールアップ
- 4.1. ブリックとトランスレータ – GlusterFS Community ではじめる分散ファイルシステム
- 4.2. さまざまなボリュームオプション(その1) – GlusterFS Community ではじめる分散ファイルシステム
- 4.3. さまざまなボリュームオプション(その2) – GlusterFS Community ではじめる分散ファイルシステム
- 4.4. さまざまなボリュームオプション(その3) – GlusterFS Community ではじめる分散ファイルシステム
- 4.5. ヒーリングとスプリットブレイン – GlusterFS Community ではじめる分散ファイルシステム
- 4.6. ブリック追加・削除とリバランス – GlusterFS Community ではじめる分散ファイルシステム
- 4.7. GlusterFS のスケール – GlusterFS Community ではじめる分散ファイルシステム