前回は、高稼働率を実現するしくみである冗長性の確保とシステムの安定化についてまとめた。ここでは、リソース使用率を上げる仮想化技術と自作サーバといった効率向上作戦について解説する。
1 仮想化技術
仮想化技術の導入
仮想化技術の目的は以下の3つが挙げられる。
- スケーラビリティ:オーバーヘッド(間接負荷)の最小化
- コストパフォーマンス:リソースの使用率の向上、運用の柔軟さ(環境の単純化)
- 高可用性:環境の隔離
代表的な製品は、VMware、Virtual PC、Parallels、Xenがある。はてなでは、Xen(Cent OS 5.2、Xen 3.0.3)を使用している。
仮想化技術の効用
Xen(Cent OS 5.2、Xen 3.0.3)による仮想化技術の効用は以下の4つが挙げられる。
- IPMI(Intelligent Platform Management Interface:リモート管理機能)の代替としてのハイパーバイザ(ホストOS)
- ハード差分の吸収(環境の抽象化):新旧ハードの差がなくなる
- 準仮想化(ParaVirtualization)を使用
- リソース消費の制御:過負荷のアラート、負荷の調整
仮想化サーバの構築ポリシー
仮想化技術の構築ポリシーは、ハードウェアリソースの利用率の向上である。そのために、空いているリソースを主に利用するゲストOS(DomU)を投入する。例えば、CPUリソースが空いていたらWebサーバ、I/Oリソースが空いていたらDBサーバ、メモリ容量が空いていたらキャッシュサーバを投入する。
注意点は、リソースの食い合いを避けるため同じ傾向かつ負荷の高い用途同士(別サーバのWebサーバ同士など)は避けること、費用対効果が悪いため中央ストレージは使用しないことである。
仮想化によって得られたメリットの小まとめ
仮想化によって得られたメリットは以下の2つが挙げられる。
- 物理的なリソース制約からの解放:リソースの動的な変更、VMのマイグレーション・複製が容易
- ソフトレベルの強力なホスト制御:異常動作時の局所化、ホストの制御が容易
これらのことから、スケーラビリティの確保やハードウェア・運用のコスト低下につながり、高可用性が可能となる。
仮想化と運用
サーバ管理ツールで仮想化のメリットを運用で活かすことが重要である。例えばはてなでは、仮想化されたホストの親子関係をDNSを使用して調べることができるようにしている。
仮想化の注意点
仮想化の注意点はパフォーマンス上のオーバーヘッドである。はてなにおける経験値として、以下の目安が挙げられる。
- CPUで2-3%
- メモリの性能も1割くらい
- ネットワークの性能は半分くらい
- I/Oの性能が5%くらい落ちる
2 ハードウェアと効率向上
プロセッサの性能向上
プロセッサは指数的に性能が向上するハードウェアである。いわゆるムーアの法則とも言われ、集積回路上のトランジスタ数は18ヶ月ごとに倍になる」というものである。
メモリ、HDDのコスト低下
メモリやHDDは急速に安くなっている。具体的には以下の通り。
- 3年前:2GBで3万円、8GBで12万円
- 現在:2GB×2で5千円程度、8GBで1万円
- 4 core CPU 8GBのサーバにかかる費用:3年前は数十万円、現在は8万円
安価なハードの有効利用
安価なハードウェアの有効利用の方針は、最小限の管理機能、多くのコアのCPU、そして大量のメモリを積むことが基本となる。また、I/O性能は用途ごとに求められるレベルが異なるため、ディスクレスサーバやハードウェアRAID-10、そしてSSD RAID-0といったものを用意する。さらに、IPMIのような管理系のハードウェアはコストになる(1-2万円)ため、Intel AMTといったデスクトップ用のマザーボードにも付いている機能で代替するとよい。
仮想化を前提としたハードウェアの具体的な構成は、以下の5つである。
- デスクトップ用マザーボード:Intel AMT
- デスクトップ用CPU
- ネットワークポート×1
- ECC(Error Check and Correct)なしメモリ(non-ECCメモリ)
- RAID(Redundant Arrays of Inexpensive Disks)なし、またはソフトウェアRAID
SSD
SSD(Solid State Drive:フラッシュメモリドライブ)は、記憶媒体としてフラッシュメモリを用いるドライブ装置で、ハードディスクの代替として利用できる。良好なランダムアクセス性能を持ち、その順序はメモリ>HDD RAID-0/10>HDD RAID-1と十分に高速である。価格も現在は10万円程度で作成できる。はてなの本番環境ではIntel SSD X-25E/Mが稼働中である。
最後に
仮想化技術を使用しホストの集積度を上げることで、全体でのリソースの使用率を上げることができる。また、自作サーバを使うことでサーバの冗長な仕様を削ぎ落とし、システム全体での低コスト化を進めることができる。同居を避ける組み合わせなどに注意が必要だが、効率よくリソースを活用することができる技術である。
次回は、サービスの成長と分岐点であるWebサービスとネットワークについて解説する。
![]() |
[Web開発者のための]大規模サービス技術入門 ―データ構造、メモリ、OS、DB、サーバ/インフラ (WEB DB PRESS plusシリーズ) |