残りリソースを把握していますか?

「うちの仮想環境、あとどれくらいリソースが残っているの?」――これは、仮想環境の運用でよく出てくる質問の1つです。リソース増強計画を立てるときや、統合率をどこまで向上できるか(前回記事)を知るときに、「残り容量」を確認する必要があります。

この質問に対して、あなたの会社のエンジニアは答えを持っていますか?

筆者の予想としては、恐らく、「的確な答えを持っていない」、もしくは、「持っていたとしても、その算出に多大な手間をかけている」のどちらかに当てはまる方が多いのではないかと思います。

後で理由を説明しますが、仮想環境の 「残り容量」 を手動で求めることは意外と手間のかかる作業です。エクセルで大変な苦労をして計算している方や、自分で求めることをあきらめてベンダー任せになってしまっている方が多いのではないかと思います。

今回の記事では、仮想環境の「残り容量」 の算出になぜ手間がかかるのか、そしてそこにはどのような注意点があるのかを説明します。そして、1つの解決策を紹介したいと思います。

関連記事

「割当ベース」から「利用量ベース」のリソース管理へ

実は、仮想化が始まったころは、残り容量を求めることは比較的簡単でした。総容量から、各仮想マシンに「割り当てた」リソースの合計を引けば残り容量が求まります。

最近の仮想環境ではリソース管理のやり方が変わってきており、仮想マシンに「割り当てた」静的な容量ではなく、仮想マシンが「実際に利用している」容量をベースにリソースを管理します。すなわち、「割当ベース」から「利用量ベース」にリソース管理のやり方が変わってきています。

この背景には、「割当ベース」には無駄が多く、「利用量ベース」のほうが統合率を高められるということがあります。「割当ベース」では、割り当てられたのに使われていないリソースが大量に余ってしまいます。一方 「利用量ベース」では、割当量とは関係なく、実際の利用量をベースにCPUやメモリリソースをオーバーコミットして用いるので、リソースの利用率を高めることができます(オーバーコミットについては前回記事を参照下さい)。

ただ、「利用量ベース」の課題は、残り容量を手動で求める際に手間が掛かるところです。以下、その理由を説明しましょう。

「利用量ベース」の課題

「利用量ベース」のリソース管理では、時とともに変わる実際の利用量をベースに残り容量を算出します。ベースとなるデータは、各リソースの利用量の時系列データになります(例えば、クラスタ全体におけるCPU/メモリの利用量を5分ごとに測定したものなど)。

このデータを用いてどのように残り容量を算出するかですが、一番シンプルなアプローチは、期間全体の平均を取るやり方です。ただこのやり方の問題点は、利用量が比較的低めに出てしまうということです。システムのメインの稼働時間帯以外、たとえば、夜中だとか週末・休日、こういった時間帯も全て含めて計算してしまうので、低くなってしまうのです。

もう少しベターなやり方としては、算出に含めない期間を設けるやり方があります。たとえば、夜中や週末といった時間帯を除くことで、システムのメインの稼働時間帯における利用量を出すことができ、より的確な値を出すことが可能になります。

更なる工夫としては、リソースごとにピーク期間を抽出し、その時間帯のデータだけを使って利用量を計算する方法があります。これにより、サービスレベルを考慮した残り容量が算出できます。

ただ、読者の皆さんは想像がつくと思いますが、上記のようにある期間のデータだけを抜き出したり、ピーク期間を抽出したり、それをリソースおよびホスト(もしくはクラスタ)ごとに行っていったりすることは、非常に手間のかかる作業になってしまいます。

私が冒頭で、残り容量に対して「的確な答えを持っていない」、もしくは、「持っていたとしてもその算出に多大な手間をかけている」のどちらかに当てはまる方が多いと述べた理由が、ここからわかっていただけるのではないかと思います。