質問: プログラミングと直接は関係ないのですが サーバー会社のストレージはどうなっているのでしょう? 100GBで契約してその後200GBにアップグレードするとアップグレードされますが サーバーの容量は決まっているはずです アップグレードするかどうかわからないユーザーのためにサーバーの大半を空けておくわけにはいかないとおもいます となるとやはりゲートウェイで管理操作しているのでしょうか?
回答: > > サーバーの容量は決まっているはずです > > > これが実際には異なっていて、「サーバの容量」は割と自由です。 一般的には、「ストレージ装置」を複数台のサーバで共用している構成になっています。ユーザーからの見え方は大雑把には二通りあって * いわゆる「共有フォルダ」みたいなイメージ * ストレージ装置の中に「論理的なHDD」が存在していてサーバはそれに接続している 前者の場合は「ユーザーの契約容量=フォルダごとの容量制限」なので、その制限を書き換えれば容量は変更できます。 後者の場合は「ユーザーの契約容量=論理的なHDDのサイズ」で、これはストレージ装置の機能で変更できます。 これは仮想化以前の時代から使われている技術で、ストレージ装置の基本的な機能です。 今時の仮想化技術を使ったレンタルサーバ(VPS)では間に仮想化のレイヤが入るので少し複雑になります。物理サーバの中の仮想マシンごとにストレージ装置の「論理的なHDD」に接続する場合は仮想化なしの時と同じです。もう一つ、物理サーバごとに「論理的なHDD」に接続して、その中に仮想マシンごとの「仮想HDD」を作る場合もあります。この場合、HDDの容量の変更は仮想基盤の機能で仮想HDDをリサイズすることになります。といっても、仮想HDDは単なるファイルなので、単純にはファイルのリサイズをやっているだけです。 > > アップグレードするかどうかわからないユーザーのためにサーバーの大半を空けておくわけにはいかないとおもいます > > > ストレージ装置は一般的にはあとからディスクを増設して容量を増やすことができるのでそうはならない、といいたいところですが、無尽蔵に増やせるわけではないですし、様々な理由で増設は最初から選択肢とならない場合もあります。 ところで、ストレージ装置につなげるサーバの台数にも限りがあるので、普通は「1台のストレージ装置に複数のサーバ」のグループを需要によって増やしていくような形になります。 どんどん契約が増えていく前提であれば、複数のグループにバランスを見ながらユーザーを割り振っていくことで、 * 途中で「アップグレード」するユーザーが予想より多ければ単にそのグループに割り当てられるユーザーが減る * 逆に予想より少なければ、後からそのグループに追加でユーザーを割り当てる とすれば使用量は割とコントロールできることになります。少なくとも、10GB~1TBまでプランがあるので、全員が1TBにアップグレードする前提でディスクを用意しておく、などということはどこもしていません。 AWSのようなクラウドサービスの場合はまた考え方が違って、見かけ上は「無限の容量を持ち無限のサーバを接続できるストレージ装置」があります。実際にはプロバイダが複数のストレージ装置をよしなに運用することで実現しているわけですが、「よしなに運用する」コストがかかるので、その分割高です。