(ヽ´ω`) < 助けてほしいマン

わからないことを助けてほしいマンが書くブログ

(ヽ'ω`) < Vultrについてあれこれ

(ヽ'ω`) < この記事書いたのいつだっけ

今見たら半年前に下書き状態で放置してたやつだ… 現在の状況と違う点もあるかもしれないけど、まぁ参考程度にってことで。

(ヽ'ω`) < サーバをシャットダウンしててもお金かかるの?

かかります。

Vultr.com Frequently Asked Questions - Vultr.com

Do you pay for your server when it's off? - Vultr

この辺りはDigitalOceanとかと同じ。課金を停止したい時はサーバを削除する必要がある。スナップショット機能でサーバの状態を取得・復元が可能。ただし、復元時にMACアドレスが変わりudevdの働きでインターフェース名が変更されるので、そのあたりの調整は必要。

(ヽ'ω`) < 追加IPはもらえるの?

1つのサーバにつき、IPv4アドレスが1つ追加可能。 追加料金として、$2.0/月か$0.003/時のどちらか少ないほうがかかる。サーバと同じく、1時間以下の利用でも1時間として課金される。

Add a Secondary IPv4 Address to Your VPS - Vultr.com

上記の設定例を見る限り、仮想NICの追加ではなくサブインターフェースによる提供のよう。 また、IP追加時はサーバの再起動が必要となる。

(ヽ'ω`) < OBP25してる?

してる。外部25番ポートへのOutboundはブロック済み。

Vultr.com Frequently Asked Questions - Vultr.com

制限を解除したい場合は、サポートチームに連絡してAuthorization Formを埋めろって書いてあるけど、多分ユーザメニューのSettingsの項目を全て入力した上で、サポートチケットの発行でOKだと思う。

(ヽ'ω`) < DDoS対策サービスって提供してる?

今のところはない模様。

DDoS Protection - Vultr

DDoS食らったらnull routingするって書いてあるが、手動なんだろうか…?

(ヽ'ω`) < 転送量上限ってどれぐらい? 超過した時の料金は?

転送量上限はプラン次第で、1000GBytesから。

Vultr.com Frequently Asked Questions - Vultr.com

転送量を使い切ると、以下の通り追加の料金が発生する。

リージョン 1GBytesあたりの料金
東京 $0.05
シドニー $0.10
それ以外のリージョン $0.02

(ヽ'ω`) < 転送量上限の値って上り? 下り? それとも合算?

ここがDigitalOceanやAmazon EC2と違ってるところで、上りと下りどちらかの多い方が測定される。

Vultr.com Frequently Asked Questions - Vultr.com

例えば

  • 上り(vultr -> インターネット)の転送量が800GBytes
  • 下り(インターネット -> vultr)の転送量が900GBytes

という状態の時、それぞれの転送量は1000GBytesを超えていないので、追加の料金は発生しない。

上り・下りどちらかの転送量が1000GBytesを超えると、追加の料金が発生する。

ちょっと怖いのが、DDoS攻撃を食らった場合。DigitalOceanやAmazon EC2の場合、下りの転送量に関しては追加料金が発生しないが、vultrの場合、下りでも超過分の料金が発生してしまう。自分が気付くか、或いはvultr側でnull routing設定されるのが先かはわからないが、気付かないでいると、とんでもないことになってしまう。

実際のこの辺りの取り扱いがよくわからなくて、サーバが応答不能状態になると、そこでカウントが止まるのか、サーバではなくスイッチまでのトラヒックで課金されるのか。

(ヽ'ω`) < サーバ破棄してスナップショットから復元したらグローバルIPが変わるの?

DigitalOceanと違い、今のところは変わらない模様。

上でも述べた通り、サーバのMACアドレスが変わるので、インターフェース名を戻すための調整は必要。

(ヽ'ω`) < バックアップ機能って提供されてる?

スナップショットの自動取得機能が用意されている(有料)。

サーバ毎に有効/無効の設定が可能で、各サーバにかかる料金の+20%が追加課金される。

VPS Automatic Backups - Vultr.com

ただ、説明を読む限りでは、

  • スナップショットを1日1回取得する
  • 保存されるのは2世代のみ
  • 個別のファイル取得は不可で、スナップショットの復元のみ
  • 当然のことながらSQLサーバのようなものは、別途プログラムのバックアップ機能を使用して保存・復元を行わなければならない。

と、現状ではそこまで高機能とは言えない状態。

(ヽ'ω`) < VultrはDigitalOceanを殺すのか? - 日本リージョンとWindows -

(ヽ´ω`) < 追記2: 2015/09/28

コメント欄にてid:masakielastic2より、日本リージョンのネットワーク転送量が400GBになってるぞ〜 と情報をいただきました。ありがとうございます!

実際に下記のようにアナウンスが出ており、2015/09/01より転送量が200GBから倍の400GBになっています。

www.vultr.com

新規と既存、両方のインスタンスで新しい転送量が適用されるとのこと。

(ヽ´ω`) < 追記: 2015/02/15

コメント欄にてid:yunyさんより、Japanリージョンのネットワーク転送量についての情報を頂きました。ありがとうございます!

VULTRは東京リージョンの転送量上限が極端に低くて、1番下のプランから月間200GB単位しかありません。 で、これを超えると1GBあたり$0.05。1TB換算で$50とかなり高く… 東京だとスタンドアロンで使うのが良さそうです。

実際に確認してみたところ、確かにインスタンス作成画面でJapanリージョンを選択すると"1000GB TRANSFER"と書かれていた部分が、しれっと"200GB TRANSFER"と変わっていました。

(ヽ´ω`) < 恐ろしい

(ヽ'ω`) < Japanリージョンが欲しい…

国内・国外問わず、色々なところがVPSサービスを提供しているが、海外の時間あたりの激安VPSといえばDigitalOceanが有名。

Web APIが用意されており、Vagrantと組み合わせてアレコレすることも可能という事で、面白いサービスだ。

ただ、海外産のサービスなので、選択可能なリージョンの中には日本は含まれていない。地理的な直近リージョンはシンガポールとなっている。

地理的な距離は、必ずしもネットワーク上での距離と比例はしないのだが(日本だと隣り同士の県でも一旦東京・大阪に迂回というケースがある)、国を跨ぐような通信の場合、海底ケーブルの本数も限られているため、やはり地理的な要因が大きく出ることがほとんど。

実際にDigitalOceanシンガポールリージョン上のDropletに対してpingを打っても、100msは切れないという報告が多い。(ただ、それまでのアメリカ国内のリージョンが更に遅かったので、相対的に「早くなった!」といった感想が多いのだが)

そんなわけで、時間課金で日本リージョンを提供するサービスはないかなーと探してみたところ、https://vultr.comというサービスを見つけた。

(ヽ'ω`) < DigitalOceanとVultrの比較

海外のフォーラムや記事などを見ていると、DigitalOcean, Vultrに加えて、Linodeの3つが、時間課金制でSSDのVPSとして比較されることが多いようだ。

それぞれの金額ページを以下に示すと、

このとおり、DigitalOceanとVultrは最安プランで$0.007/h、Linodeも日本リージョンはあるものの$0.015/hで2倍以上の金額となるので、今回の比較対象からは外す。(今回は価格優先の比較だが、機能面で考えるとNodeBalancerと呼ばれるロードバランサーを持っているLinodeも十分に魅力的)

VultrとDigitalOcean、価格がほぼ一緒となると、やはり一番大きなポイントは日本リージョンがあるか。コレに尽きる。

ディスクやCPUのパフォーマンスについては、以下の投稿で詳しく比較している。

Benchmarks - DigitalOcean vs Linode vs Vultr [48GB 16 CPUS] centminmodbench.sh results | Centmin Mod Community

ざっと見た限りでは、Vultrは(他と比較して)CPU性能が高く、Disk性能が低い傾向にあるようだ。ネットワークはリージョンによって大きく違うので、参考程度に。この辺りのスコアは日進月歩の世界なので、随時変わっていくだろうし、性能限界までとなるとそもそも共有型のVPSはどうなんだという話になるので深くは突っ込まない。

(ヽ'ω`) < Vultrの隠し玉、Windows Server 2012 R2

実際、他のVultrに関して紹介しているページを見てみても、日本リージョンがあるという事にフォーカスされている記事がほとんどだが、実はVultrには大きな隠し玉がある。

それは、OSでWindows Server 2012 R2提供しているということ。

実際にOS選択の画面には、Windows Server 2012 R2 x64の選択肢がある。

気になる料金だが「サーバ料金+OS使用料」という形ではなく、ベースのサーバ料金がアップする。最安プランでは、下記の通り1core/1GB memory/20GB SSDで$21/月($0.031/時)となる。

また、ライセンスについてだが、明記はされていないがSPLAライセンスで運用されていると思われる。 (SPLA以外だとモロにライセンス違反なので、さすがにそんな自殺行為はしないだろう)

Windows Server 2012 R2 / System Center 2012 R2 ライセンス早わかりガイド |マイクロソフト サーバー & クラウド プラットフォーム

SPLAで提供されているWindows利用について、クライアント側のライセンスはどうなのよ? というところは、以下のページが参考になる。

Windows Server on AWSにCALは必要か確認した | Developers.IO

このページではAWS上のWindows Serverについて説明されているが、SPLAライセンスについては大きな違いは無いだろう。CAL必要ないとかマジですか?

使い方は人によってそれぞれだと思うが、通常のサーバとして使用する用途とは別に、

  • Windows版しか出ていないアプリケーションの利用
  • サイト制作後にInternetExplorerでの挙動を確認
  • サブスクリプション型のOffice365を使って、必要な時だけWindowsでドキュメントを編集
  • 挙動が怪しいソフトウェアの検証(VPSなので検証が終わったらOSごと削除)

などが考えられる。サーバOSなので、一部のコンシューマ向けソフトが動作しないという事もあるだろうが(バックアップ系ソフトはほぼ全滅のはず)、それでも試してみる価値はある。

$0.031/時という事は10時間使っても50円以下(2015/02/02 \117/$)。

DigitalOceanもWindows系OSの提供について、ユーザの意見を聞いて判断すると述べており、実際にユーザからの要望も多い。対抗して出してくるのは時間の問題と思われる。

Support Windows Server – Customer Feedback for DigitalOcean

(ヽ'ω`) < 例のアレです、アレ

SSD VPS Servers, Cloud Servers and Cloud Hosting by Vultr - Vultr.com

上記リンクからサインアップして貰えればウハウハってやつです、もしMakeMoneyできたらDigitalOceanとかLinode、さくらのクラウドとかとの比較記事でも書いてみますかね。

(ヽ'ω`) < ところで、何このタイトル?

(ヽ'ω`) < なんか気分でつけました

(ヽ'ω`) < DigitalOceanでプリペイド残高を超過した場合の措置

(ヽ'ω`) < Paypalでプリペイド

DigitalOceanでは料金の支払方法として、クレジットカードのポストペイとPaypalによるプリペイド、2つを選べるようになっている。

Droplet自体にかかる料金は、上限が月額を超えることはないが、ネットワークの転送量については上限金額の記載がない。

さすがに料金が青天井という事は考えにくいが、Dropletにしてもプリペイドで入れた金額を超えたらどうなるのかが、明確な記載がないので少し調べてみた。

(ヽ'ω`) < 無い

というわけで調べてみたのだが、どこにも書いてない…

利用規約のページ、"Suspension for Nonpayment"に以下の記述がある。

SSD Cloud Server, VPS Server, Simple Cloud Hosting | DigitalOcean

Suspension for Nonpayment
5.7 If a Subscriber is past due on their balance, DigitalOcean may send up to three (3) email notifications within a fifteen (15) day period before suspending the Subscriber's account. Servers will be temporarily powered off during the suspension period. DigitalOcean reserves the right to delete the Subscriber's suspended machines after the final termination notice.

支払いが滞った場合、アカウント停止日の15日前までにDigitalOceanから通知のメールが届く。その間、サーバは電源Offの状態にされる。最終的に支払いが確認されなかった場合、DigitalOceanはそのサーバを削除する(権利を持っている、削除すると明記はしてないが、まぁ残しておく意味はないですよね)

(ヽ'ω`) < 良く言えば柔軟、悪く言えば曖昧

DigitalOceanのサポートフォーラムを見てるとわかるのだが、なんというか、企業としてキッチリしていない感じ。金回りの話は明確にしてもらえたほうが安心できるのだが…

とはいえそれが全て悪いかというとそうでもなくて、他のところでも書かれているが細かな対応をしてくれる。ユーザの問い合わせに対して、きちんとモデレータが対応して回答を出してくれているし、ちょっと込み入った相談の場合はサポートチケット切って、個別に対応するわーと言ってくれる。

このあたりは人によって好みがわかれるかと思うが、個人的には悪くないかなと。

まぁこんな感じの揉め事も起きたりしていますが、VPS業者なら大なり小なり起きてる問題かなと。

Stop Using Digital Ocean Now : The Aftermath

Stop Using Digital Ocean Now: The Aftermath | Hacker News

Please explain violation of term described here | DigitalOcean

(ヽ'ω`) < DigitailOceanのネットワーク周りのお話

(ヽ'ω`) < いろいろと

DigitalOceanのネットワーク周りの情報やTIPSをまとめてみた。

(ヽ'ω`) < グローバルIPを変更したいんだけど

IPを変えたい時はDropletを削除・再作成するといいよ、というポストを見つけた。モデレータが回答しているので、コントロールパネルでの機能としては用意されていないっぽい。

How do I change the IP address of the server? | DigitalOcean

(ヽ'ω`) < 帯域制御とかしてるの?

普通の使い方ならしていないとのこと。逆に言うと、明らかにヤバイだろコレっていう状況だとされるのかな?

Do you limit bandwidth? | DigitalOcean

benMOD November 15, 2012 We do not throttle bandwidth or traffic after a certain amount. From time to time you may speed different bandwidth speeds depending on internet conditions, load on your droplet, or the system as a whole.

(ヽ'ω`) < 帯域の上限は? 帯域保証はあるの?

Dropletが1Gigabit NICなので1Gbpsが上限。とはいえそこまでいけるわけ無いよねと。

Do you limit bandwidth? | DigitalOcean

creating.www October 15, 2013 Do you guarantee any speed, and what is upper limit for one Droplet? kamaln7MOD October 18, 2013 @creating.www: All droplets are on 1Gbps ports.

帯域保証については言及なしなので、機能として用意されてないっぽい。

(ヽ'ω`) < 1Tの転送量を超えたらどうなるの?

Outboundトラヒックに対しては、$0.02/GBの転送量が加算される。

Bandwidth transfer | DigitalOcean

Is Digital Ocean a metered server? What if I exceed the Network Bandwidth limits? | DigitalOcean

(ヽ'ω`) < 転送量使い切ったらアクション起こすとかの機能は無いの?

下記のポストを見る限り、用意されていないっぽい。(モデレータが記事の案内をしている。機能として用意されているならそれを掲載するはず)

Bandwidth limit | DigitalOcean

このポストに簡単なスクリプトが投稿されている。

Can I make my server automatically suspend if it hits the bandwidth limit? | DigitalOcean

[Bash] Florian Strankowski - Pastebin.com

vnstatコマンドで当月の通信量を確認して、999Gを超えていたらshutdownコマンドを発行するという、単純明快なスクリプト。コレをcronで1日1回実行と書かれているが、バーストトラヒックが予測不可能な場合は、もっと細かく時間を区切ったほうがいいだろう。

実際に使うときにはshutdownコマンドの代わりにサービスを停止したり、トラヒックを抑える処理を行うほうが良いと思う。ロードバランサ配下であれば、グループメンバーから外させるとか。

ネットワークに限った話しでなく、支払い全体ということであれば、メールの通知サービスが用意されている。

Never Get Surprised By Your Monthly Invoice Again! | DigitalOcean

任意の金額を超えたらメールで警告を送ってくれる。ただし、警告を送るだけでその後のアクションはユーザ自身に任される。

(ヽ'ω`) < ネットワークの物理的な構成は?

このトピックにDigitalOceanの中の偉い人(zagiってユーザ名)が登場して説明しているところによると、

Very bad performance downloading from Digital Ocean VPS (HTTP) - Page 2 - LowEndTalk

2013年の話だが、ニューヨークリージョンの物理サーバは1Gbpsでコアネットワークに接続されていて、そこからインターネットへは冗長化された10Gbps回線で接続されているとのこと。上位ISPはCogentLevel3

公式のHPにも1Gbps、10Gbps接続の記述があるので、そこは変わってなさそう。

Frequently Asked Questions | DigitalOcean

All DigitalOcean physical nodes are connected via gigabit ethernet to switches, which are uplinked to our aggregators and core routers. All core routers are uplinked via 10-gigE uplinks to providers.

(ヽ'ω`) < 速度が安定しない

先ほど書いたトピックにも報告があるが、同一リージョンでも速度差が発生することがあるっぽい。理由については色々推測されているが、とりあえずDropletを削除・作成して新しいIPを取得することで、改善したケースもあるとのこと。(元のIPが上位ISPで帯域制御の対象になっていたのでは? と推測されている)

その他の対処方法についても、先のトピックに詳しい。…が最安$0.007/hourのサービスに多くを求めるのも酷というもの(ヽ'ω`)

高額プランもあるじゃないか、と言われるとそれはそうなんですが、ある程度の額を出すのであればDigitalOceanである必要性が…と言うより帯域保証のあるVPSサービスってあるのかな?

(ヽ'ω`) < 使っていて他に気づいたことがあったら

また第2段ってことで書いていきます。

もしも気が向いたら下のリンクのコレをアレしてください、Vultrとの比較や負荷実験とかして記事にします(ヽ'ω`)

SSD Cloud Server, VPS Server, Simple Cloud Hosting | DigitalOcean

(ヽ'ω`) < DigitalOceanのVirtIOオプションはOnにするのが良いのか?

(ヽ'ω`) < そもそもVirtIOってなんなのよ?

下記のページによると、KVMやQEMUで採用されている、I/O周りのドライバの準仮想化ソフトらしい。

libvirt: Wiki: Virtio

VirtIOを使用しない環境(完全仮想化)では、ハイパーバイザーによってI/O周りのドライバが完全にエミュレーションされる。ハイパーバイザーが実際のハードウェアの挙動を再現する形になるので、それなりに処理コストが大きくなる。

VirtIOを使用すると、VM上ではNICやディスクコントローラが仮想化されたものであると認識された上で、専用のドライバを経由してハイパーバイザーで処理される。そのドライバはハイパーバイザーの動作に最適化されたものなので、完全仮想化環境に比べて、パフォーマンスが向上する。

ここでの完全・準仮想化について、あくまでI/O周りのドライバに限定した話で、OS自体の仮想化方式については関係ない。というより、完全仮想化されたOSで、I/Oドライバのみ準仮想化させパフォーマンスを向上させる、というお話。

(ヽ'ω`) < 基本的にはOnでOK

DigitalOceanの中の人も、基本的にはパフォーマンスが上がるからOnでいいよー、とのこと。

What is VirtIO? Do I need this option? | DigitalOcean

RedhatもKVMでVirtIOを有効化することでパフォーマンスが上がると解説している。(Windowsについてだが)

第10章 KVM 準仮想化 (virtio) ドライバー

KVM virtio ドライバーを使用すると、以下の Microsoft Windows バージョンがベアメタルベースのシステムと同様の動作をすることが予想されます。

ただ、実際のDiskベンチマークではスコアが落ちているケースもある。

VirtIO Testing Disk DigitalOcean Cloud Benchmarks - OpenBenchmarking.org

コンパイルオプションで-j $NUM_CPU_JOBSを渡しているので、コンパイル時のスレッド数はコア数+1になると考えると、マルチスレッド系の処理が少し弱くなるっぽい。

この現象がDigitalOcean特有のものなのか、KVM全般的なものなのかは不明だが、ディスクアクセスが多いアプリケーションを使用する場合は、念の為にテストを行ったほうが良いかと思われる。今KVM環境が手元にないので検証はいずれ(ヽ'ω`)

(ヽ'ω`) < VirtIOを有効化することによるデメリットは?

マルチスレッドプロセスのディスク処理が遅くなる可能性については上で述べた。

他には完全仮想化ではなくなるので、アプリケーションによっては動作の一部に影響が出るかもしれない。とはいえ、ドライバレベルでゴリゴリ書いてあるようなアプリケーションなんてそうそう無いだろうし、そんなものをVPSで動かすシチュエーションもあまり想像できないので、一般的な環境では"無い"。

…と言ってしまうと問題ありかもしれないのだが、DigitalOceanの中の人は言っちゃってるんですよね。

csalinas July 18, 2013 I have a question, if i am using VirtIO, ¿this has an impact on my billing? Thanks. kamaln7MOD July 18, 2013 csalinas, enabling VirtIO does not incur any extra charges. We recommend enabling it :]

elgs1980 August 14, 2013 So is there any penalty or side effect using VirtIO? I mean is there any reason to not select the VirtIO on droplet creation? Thanks. kamaln7MOD August 15, 2013 VirtIO doesn't have any side effects. You should enable it unless you have a valid reason not to. :]

contacto November 7, 2013 I would like to know that too, when should i NOT enable VirtIO? kamaln7MOD November 10, 2013 VirtIO doesn't have any side effects usually. You should enable it unless you have a valid reason not to (which is usually rare). :]

Lynx April 20, 2014 Can you provide any specific examples where VirtIO should be disabled? kamaln7MOD April 21, 2014 You might need to disable VirtIO if you're using a program that's not compatible with it. Usually you're fine with VirtIO enabled.

(ヽ'ω`) < VirtIO機能提供以前のDropletでVirtIOを有効にしたい

サポートチケットを発行せよとのこと

sabbir456 August 18, 2013 How to enable VirtIO in old droplets ?

kamaln7MOD August 21, 2013 @Sabbir: Please open up a support ticket so we can enable VirtIO on your old droplets.

(ヽ'ω`) < VirtIOが正しく有効化されているか確認したい

dfコマンドの出力で/dev/vdaがあればOKっぽい。

marana October 26, 2013 Is there any way to know if i have VirtIO activated in my droplet? Thanks!

kamaln7MOD October 29, 2013 @marana: Run the following command to check if VirtIO is enabled.
[[ df | grep '/dev/vda' | wc -l -ne 0 ]] && echo 'enabled'

さくらのVPSでも/dev/vdaあったから、KVM使ってるところはほとんど有効化推奨って感じなんですかね。

(ヽ'ω`) < FSCTでWindowsファイル共有サービスのパフォーマンスを測定する2 - ネットワーク-

(ヽ´ω`) < ネットワークについて

前回の記事でFSCTでは3つの役割のPCが必要という事を解説した。

(ヽ'ω`) < FSCTでWindowsファイル共有サービスのパフォーマンスを測定する - 概要- - (ヽ´ω`) < *****

複数台のPCが存在し、テスト対象はWindowsファイル共有サービスなので、当然3つの役割を担当するPCはネットワークに接続されている必要がある。

ここでテストの敷居が多少高くなり、サーバとクライアントのPCにはデータ通信(実際の負荷)用のネットワークと、テストをコントロールするためのネットワーク、2つのNICが必要となる。

物理・仮想を問わず、通常のファイルサーバやミドル~ハイエンドのNASであれば、NICが2つ以上最初からついていたり、増設は簡単だと思うが、ローエンドのNASの場合はどうするか。恐らくだが、そもそもFSCTではそういった製品のテストを想定していないと思われる。

(ヽ'ω`) < テスト用ネットワークの構築

添付の説明文書では、テスト用ネットワークとして4つの形態を例に上げている。

各形態の概要図については、添付の説明文章内の"FSCT Architecture"の"Networking"を参照していただきたい。

Basic

基本的なスタイル。

サーバと各クライアントはNICを2つ持ち、1つを負荷生成用に使用し、もう一方をテストのコントロールに割り当てる。当然、テストではない環境ではクライアントのNICは1つだけとなる。

おそらく、通常のオフィスなどで最も一般的な形態と思われる。

Segmented

2台以上のクライアントを別々のLANセグメントに配置することで、負荷を分散する。サーバはLANセグメントの数だけNICが必要となる。

1つ重要なことが書いてあって、1Gbpsの回線あたり、4,000ユーザをまかなうことができるとある。

これはhpのPDF文章でも、"FSCTの経験則"として記載されている。

http://h50146.www5.hp.com/products/storage/whitepaper/pdfs/4AA3-8726jpn.pdf

4000以上のユーザがいる場合は、LANセグメントとNICを分割することで、効果的に

使用状況にも大きく左右されると思うが、参考として覚えておくと良い。

Shared

サーバと各クライアントは3つ以上のNICをを持ち、2つ以上のNICを負荷生成用に使用する。

実運用時、各クライアントは別LANセグメントのIPを2つ持つ事になるのだが、サービスレイヤでロードバランシングされるのかな?

という事で軽く検索してみると、Windows Server 2012とSMB3.0の組み合わせで、SMBマルチチャネルという機能が追加されたらしい。

The basics of SMB Multichannel, a feature of Windows Server 2012 and SMB 3.0 - Jose Barreto's Blog - Site Home - TechNet Blogs

Segmentedの場合、クライアント通信を行うのはそのLANセグメントに属する1つのNICだけだが、Sharedの形態でSMBマルチチャネルが有効な場合は複数のNICが使われるっぽい。

Windows Server 2012 R2 のネットワークの注意事項 - SMB Multichannel (1) - 仮想化でプリセールスしてるSEの一日

NIC Team は Ethernet (L2) ヘッダーの情報で送信パスを決定しますが*1、Multichannel は L7 ベースでコントロールするため、この時点では送信元や宛先に関するヘッダー情報は持っていません。このため、宛先などは一切考えず、到達できるすべてのパスを用いてラウンドロビン的に送ろうとします。

上記ページの図を見ても、複数のLANセグメント(別のサブネット)の通信をまとめてファイル転送が行われている。

逆に同一セグメントの場合はどうなるの? といった疑問だが、Windowsファイル共有に限った話ではなく、Windowsネットワーク全般の話で、同一セグメントでの複数IP付与は想定してないらしい。

How multiple adapters on the same network are expected to behave

複数NICを使用しての通信ということになるとNICチーミングと同じでは? と思われるかもしれないが、NICチーミングはあくまでもL2/3でのロードバランシングなので、単一の相手との通信ではNICのワイヤスピード以上が出ることはない。

また、あるパスでエラーが発生しても、その他のパスを使用して転送が行われるため、サービスの可用性も向上する。

Network fault tolerance. When clients simultaneously use multiple network connections, the clients can continue without interruption despite the loss of a network connection.

SMBマルチチャネルの設定はデフォルトでOnになっていて、複数パスが存在する場合、自動的に構成が行われるので、特に管理者は難しい設定を行う必要はない。

必要がないだけで、経路の制御などを行いたい場合は、ちゃんとそのための方法が用意されている。

Windows Server 2012 R2 のネットワークの注意事項 - SMB Multichannel (3) - 仮想化でプリセールスしてるSEの一日

NIC Teaming

名前の通り、サーバ側のNICをチーミング構成にすることで負荷分散を行う。実際に負荷が分散されるかは、チーミングモードの設定と、運用環境に依る。

チーミングモードについては、以下のページに詳しい。

運用:Windows Server 2012 R2のNICチーミング機能(LBFO)をマスターする (2/3) - @IT

Windows Server 2012 R2であれば、動的モードにしておけば問題ないだろう。

(ヽ'ω`) < どのネットワーク形態がいいの?

FSCTの経験則から、1GbpsのNICが搭載されていれば、4000ユーザまではBasicでも問題が無いとのこと。

Sharedの形態でSMBマルチチャネルが有効であれば、パフォーマンスと可用性が向上するので理想的。

ただ、実際には複数のLANセグメントを接続できない場合が多いだろうから(サービスではなく、ネットワーク設計の問題)、NIC Teamingが現実的だろうか。

(ヽ'ω`) < 画像引用しろよ、文章だけだとわかりにくいだろ

そもそもこの記事自体も説明文章の内容そのまんまなので、ここに画像までやったら引用の範囲を超えますので(ヽ'ω`)

(ヽ'ω`) < あれ? 実際にテスト実行するんじゃないのか?

SMBマルチチャネルの話が少し長くなったので、

(ヽ'ω`) < 次で

(ヽ'ω`) < FSCTでWindowsファイル共有サービスのパフォーマンスを測定する - 概要-

(ヽ´ω`) < Windowsファイル共有のパフォーマンスを測定する

Windowsのファイル共有機能を提供する製品はいっぱいあるのだが、どの製品のどのランクのモノを選んでいいのかがわからない。パフォーマンスチューニングをしたのだが、どの程度の効果があるのかを測定したい。

そんな時には負荷テストを実施すると思うが、そんな時の助けになるのがこのツール。

(ヽ´ω`) < File Server Capacity Tool(FSCT)

Microsoftから提供されているWindowsのファイル共有機能に特化した計測ツール。

Download File Server Capacity Tool v1.2- (64 bit) from Official Microsoft Download Center

有名なのかそうじゃないのかよくわからなくて、Googleで検索しても日本語ページはほとんど引っかからず、hpのファイルサーバパフォーマンスに関するPDF文章で1件。

http://h50146.www5.hp.com/products/storage/whitepaper/pdfs/4AA3-8726jpn.pdf

英語のページを含めてもそんなに情報ソースが多く無い。使い方のソースになりそうなのが、Technetのページと本体に添付されている説明文章のみ。

How to use the File Server Capacity Tool (FSCT) on Server 2012 R2 - Ask Premier Field Engineering (PFE) Platforms - Site Home - TechNet Blogs

あとはStorage Developer Conference 2008でMicrosoftの社員が作成したと思われる、プレゼン資料ぐらいか。

http://www.snia.org/sites/default/files2/sdc_archives/2008_presentations/monday/JoseBarreto_CIFS_SMB_FSCT.pdf

資料が少ないから調べるの大変そうだなー、と思っていたら本体添付の説明文章がかなり細かく書いてあるので、意外に楽だった。

(ヽ´ω`) < FSCTの特徴

ディスクパフォーマンスを測定するだけなら他にもいくつもツールが有るが、FSCTは以下の特徴を持っている。 (本体添付の説明文章、"Introducing FSCT"より)

実際のWindowsとWin32アプリケーションの挙動をシミュレートする

他のDiskストレスツールと比べて最も特徴的な点。

一般的なDiskストレスツールはひたすらファイルの作成や削除、コピーなどを繰り返し続ける。(複数の物理クライアントからの操作や、ファイルサイズの大小変更等の機能もあるが)

当然のことながら、このタイプのテストで発生する負荷は、実際にユーザが操作する際の挙動とはかけ離れている。

それに対してFSCTでは、Windowsでのファイル操作(コマンドライン・エクスプローラーからのファイル操作、Wordでのファイルオープン・セーブ・クローズ等)をシミュレートすることで、実際にユーザがWindowsを操作している時の挙動と同じような負荷をかける事ができる。

Workloadsと呼ばれるテストシナリオ機能

前項で実際のユーザの操作をシミュレートすると説明したが、実際にどのような操作が行われるかはWorkloadsと呼ばれるシナリオに沿って定義される。

どのようなサイズのファイルを使って、どういう操作を行うのか。その操作の時間あたりの頻度は。それらを記述したXMLとテキストファイルの集合がWorkloadsの本体となる。

FSCTでは"HomeFolders"という名前のWorkloadsが提供されている。これはユーザのホームディレクトリがファイルサーバに存在する場合を想定したシナリオとなっている。

FSCTで提供されているWorkloadsは"HomeFolders"だけだが、例えば

  • 大きいファイルしか読み書きしない
  • ファイルの読み込みだけで書き込みをしない
  • ファイルのコピーしか行わない

というそれぞれのケースに合わせてWorkloadsを作成することで、自分の環境にマッチした系祖国を行うことができる。

1つの物理クライアントで複数のセッションを生成可能

ストレステストなので、リクエストを発行するクライアントPCはそれなりの台数が必要だが、10000台のクライアントを想定した環境で、実際に10000台のテスト用PCを用意することは

(ヽ´ω`) < 無理

FSCTでは1台のクライアントPC内に複数のユーザを作成し、それぞれのユーザからのリクエストをシミュレートすることができる。ファイルサーバの同時接続数の限界を測定するのに役に立つ。

詳細なレポート機能

FSCTでのテスト結果はテキストファイルで出力される。このファイルの中には

  • スループット
  • レイテンシ
  • ネットワーク帯域
  • OSのパフォーマンスカウンター(サーバ/クライアント両方)

等が含まれる。

更にEvent Tracing for Windows(ETW)のトレースデータとやらも出力可能とのこと。

ストレステストの場合、サーバ側の限界かと思っていたら、リクエストを送信するクライアントの限界だったというオチがあるので両方のデータが取得できるのは非常に便利。

テスト結果の出力例を引用すると

*** Results
Users  Overload  Throughput  Errors  Errors [%]  Duration [ms]
8000         0%         733       0          0%         181194
9000         0%         824       0          0%         181334
10000        0%         917       0          0%         180945
11000       19%         848      20          0%         203830
12000      200%         383      32          0%         216528

こんな感じで、上記の出力から察するにこのサーバの限界ユーザ数は10000~11000ぐらいと推測することができる。(Workloadsが適切に構成されていると仮定すると)

一度に複数パターンのユーザ数テストを行う事ができる

テストを行う際に、

  • 最小ユーザ数
  • 最大ユーザ数
  • ユーザ増数

を指定することができる。

先ほどのテスト結果の例を再掲すると

*** Results
Users  Overload  Throughput  Errors  Errors [%]  Duration [ms]
8000         0%         733       0          0%         181194
9000         0%         824       0          0%         181334
10000        0%         917       0          0%         180945
11000       19%         848      20          0%         203830
12000      200%         383      32          0%         216528

とあるが、これは

  • 最小ユーザ数 = 8000
  • 最大ユーザ数 = 12000
  • ユーザ増数 = 1000

でテストが行われたことがわかる。

ここで10000~11000あたりが限界とわかったので、次は

  • 最小ユーザ数 = 10000
  • 最大ユーザ数 = 11000
  • ユーザ増数 = 100

として、条件を徐々に細かくしていくことで限界点を詳細に探ることができる。

(ヽ´ω`) < Warning!!

添付の説明文章にも特徴のすぐ後に書いてあるのだが、FSCTで行われるテストではボリュームのフォーマットが行われる。しかも事前確認なし。データが消える可能性がある。

If you use FSCT in a production environment, you risk unintentional data loss.

可能性というかフォーマットされたら確実に消えると思うのだが、兎に角、FSCTによるテストは導入時か移行時のみとし、現用の環境では行わないこと。

また、FSCTではADドメイン(あるいはWorkgroup)のパスワードを、クリアテキストでネットワーク上に流すため、可能な限り専用のネットワーク内で行うことをオススメする。

(ヽ´ω`) < 3つの登場人物

FSCTでは最低限3つの役割を演じるPCが必要となる。

Controller(コントローラ)

テスト全体を制御し、得られたデータを蓄積していくためのPC。

FSCTが動作するWindows OSが動作していなければならない。

Server(サーバ)

テスト対象となるWindowsファイル共有サービスが動作しているサーバー。

動作させるWorkloadsの内容によるが、FSCTに標準で用意されている"HomeDirectory"を使用するためには、ユーザ一人辺り100MBytesの要領が必要となる。

Windowsファイル共有サービスが動いていれば(CIFS/SMB)、非Windowsサーバ(殆どの場合はLinux+Sambaだと思うが)でもOK。その場合は、ディレクトリの作成やパーミッションの設定等の細かい設定を、手動で行っておく必要がある。

Client(s)(クライアント)

実際にサーバにリクエストを送るクライアントPC。

先に説明したとおり、1台のクライアントで複数のユーザリクエストをシミュレートが可能なのだが、サーバより先にクライアント側が悲鳴を上げないように、適切な台数を用意する必要がある。

それじゃあどうやってその適切な台数を導出するのか、という話だが、テストを行った際にクライアント側のパフォーマンスカウンターも取得できるというのは説明したとおり。この値を見て、クライアント側の負荷を計測する。もしもキツイようなら、クライアントの台数を増やす。

一つの目安として、添付の説明文章ではサーバのCPUコアの4倍の数だけ、クライアントのCPUコアを用意するべきと書かれている。

例えばサーバが4コア1CPUならば、クライアントは4コア1CPU4台、2コア1CPU8台、1コア1CPU16台と言った感じ。

ここからは推測になるのだが、Disk自体の性能ではなく、CPUのコア数で決定するということは、FSCTで行われるテストでは単純なDiskのI/Oの計測ではなく、サービスレイヤ(Windowsファイル共有サービス)でのスループット・アベイラビリティを計測することに主眼をおいているのではないかと。

クライアントではFSCTプログラムを走らせる必要があるため、コントローラ同様、Windows OSである必要がある。

DC(ドメインコントローラ)

AD環境でテストを行う場合は、当然ADのDCが必要となる。

FSCTでは非AD環境のWorkgroupでもテストを行えるため、必須ではない。

ただし、サーバが非Windows OSの場合はユーザの一括作成・削除のためにAD環境とDCが必要となる。(必須では無さそうだが、Workgroupで非Windows OSサーバでのテストは以下のように記載されているだけで、それ以上の情報がない)

There is not an easy way to run an FSCT test in a workgroup with a non-Windows server.

登場人物をまとめると

上記の3つの役割をまとめると以下の通り

名前 役割 OSの制限 備考
Controller テストの全体的な制御とデータの取得を行う Windowsのみ
Server テスト対象となるWindowsファイル共有サービス(CIFS/SMB)が稼働しているサーバ 非Windows系OK
Client(s) Controllerから指令を受けて、Serverへのリクエストを送信する Windows系のみ サーバとクライアントのCPUコア数が1:4になるように台数を用意する

(ヽ'ω`) < ここまで概要

FSCTの特徴と3つの登場人物ができたところで一旦区切り。

次はこの3つの登場人物を接続するためのネットワークについて説明し、実際にテストを行なっていく。