サーバー 仮想化 入門 研修コースに参加してみた
今回参加した研修コースは サーバー仮想化入門 です。
もう Xen などの本が登場するようになってから 10 年は経とうとしているでしょうか。はじめて聞いたときは「そんな危なっかしいこと、何を言っているのだ」と思いましたが、今や当たり前です (その当時から老害発言ですね) 。
参加してみると、仮想化がそもそもなぜ出来るのか、そのメリットがは何か、また実際、仮想マシンと物理的なネットワークやストレージとどのように繋ぐのか、かなり広い範囲をカバーした解説だったので、入門らしいコースでした。
最後には学んだことだけで、プライベートクラウドの中の構成が説明できたので、「なるほど」体験もできました。
では、どんな内容だったのか、レポートします !!
もくじ
コース情報
想定している受講者 | PC およびサーバー、ネットワークに関する基礎知識があること |
---|---|
受講目標 |
|
講師紹介
今回登壇されたのは、この「参加してみた」レポートでは初登場の 新谷 泰英さん です。
通常 4 月から 9 月までは他の新人研修に登壇されていて、 SE カレッジではいつも 10 月以降から登壇されています。実は、 SE カレッジのインフラ系全般のコース企画からテキスト作成、実機演習の設計・構築まで幅広く携わって頂いています。
最近では、研修コースが終わった後も、受講者が自宅 PC で仮想の LAN 環境を簡単に構築できるようシミュレータの準備を進めておられ、受講者の満足度だけでなくスキルアップにとてもこだわってらっしゃいます。
どうすれば技術を身につけられるか、理解できるか、研究しつづけるインフラ系の人気トレーナー
仮想化とは ~実現方法とメリット~
まずは仮想化について、全体をざっくり解説です。
- ハードウェアをプログラムで提供する
- 見た目や振る舞いは本物
- ハードウェアは 1 台しかないけど、 2 台~ 3 台以上の役割を果たすことが出来る
- コストや設備 (電源など) が 1 台分で済む
- なぜ出来るのか?
- 通常ハードウェアの使用率は多く見積もっても 20 % ~ 30 %
- この 70 % ~ 80 % の空いている資産を使う
- 実際一般的な PC でもタスクマネージャを見ると空いている
- とはいえ、空いている資産は使用ピークに合わせているはず
- 例えば、月末の給与計算など
- 仮想化ソフトウェアには自動で負荷分散する機能が備わっている
- 処理負担を他の空いているハードウェアに移している
- 例えば Amazon や Google などは地球規模でバランスしている
- 仮想化の頻出用語
- VM: 仮想マシン ( Virtual Machine )
- ホスト: 実機、物理マシン
- ゲスト: ホストで動くマシンや OS // 仮想マシン
- 物理に対して論理
- 仮想化メリット
- 「安くて」
- ハードウェア資源を効率的に使える
- 「便利」
- ライブマイグレーションで VM を他のマシンに移動できる
- 無停止でメンテナンスしやすい
- ライブマイグレーションで VM を他のマシンに移動できる
- 「安くて」
頻出用語は地味に必要ですね。会話やドキュメントなどを書く中で、実機とかサーバーとか本物とか言っていると、いちいち理解するのに時間がかかってしまいます。
仮想化を支える技術
全体を掴んだところで、どのように仮想化を実現しているのか、その仕組みや技術のお話です。
仕組み
- 完全仮想化
- 今の標準
- ハードウェアを仮想化している
- 準仮想化に比べ、ゲスト OS やドライバに手を加えない
- 準仮想化に比べ、仮想ハードウェアの層が増えるため、 I/O が発生する
- 今は CPU が仮想化に最適化して早くなっている
- デフォルトで無効化されていることが多い
- BIOS のセキュリティ設定にある
- 準仮想化
- 昔の技術
- ハードウェアを仮想化している
- OS が稼働するハードウェアを再現している
- 詳しく言うと、 OS のドライバがハードウェアと認識すればよい
- さらにゲスト OS のドライバにも手を加える
- なので Windows OS では出来ない。。 UNIX、Linux 系 OS で出来る
- なぜ、こんなことをやるのか?
- 動作が早くなる
- とはいえ OS のアップデートの追従が手間
仮想化の方式 それぞれのメリット デメリット
では、いまの標準となっている完全仮想化をどういう技術で実現しているのか、というお話です。
- ホスト OS 型
- 簡易なもので今日使うのもこれ
- ホストのメモリを使うので、それによって VM も制限される
- ホスト OS 上で動く 1 つのアプリケーションとして仮想化がある
- 結果遅くなるので、動作検証などで使うことが多い
- ハイパーバイザー型
- 業務で使うもの
- ホスト上の OS の代わりに VM を動かすだけの軽量のエンジンが入る
- VM の中にその VM を動かす OS がある
- VMware vSphere (ESXi) : ESXi も含めて管理サーバーとして使う
- なお Xen と Hyper-V は元が一緒で共同開発チームを組んでいた
- コンテナ型
- 新しくて、今とても普及しようとしている
- 上の 2 つの仮想化に対して、仮想化ライクなもの
- Docker というソフトウェアでコンテナ技術を使っている
- OS は 1 つでコンテナが分離独立した 1 つのアプリケーションとして動く
- ハイパーバイザー型との違いはコンテナに OS が無いので速い
とにかくホストからみてオーバーヘッドが無いように VM を動かせるように進化してきているんですね。
VM 作成実習
ここで実際に Virtual Box で VM を作ってみます。
通常の構築と違うのは、空のハードウェアを作るところと、 OS 越しに処理を高速化する補助ツールを入れることです。
演習手順
- Virtual Box を使って、仮想ハードディスク ( HDD ) を作成
- この仮想 HDD は本物の HDD からは 1 つのファイルとして扱われる
- Linux (今回は TinyCore というディストリビューションを使用) をインストールして起動
- VM の設定ファイルを確認
- VM とリアルなネットワークを設定
- ブリッジ接続: VM と直接ネットワークを繋ぐ -> 外部に公開して他 PC などからアクセスできる
- VM 毎に IPアドレス を割り当てるので数に制限があると厳しい
- ホストオンリー: VM と繋がるのはホストのみ -> VM から外部ネットワークには出られない
- NAT: ホストと NAT を繋ぎ、 NAT に仮想ルーターを構築 -> 仮想ルーターと VM を接続
- VM -> 仮想ルーター -> ホスト -> 外部ネットワーク // 外部ネットワークからは VM にアクセスできない
- 内部ネットワーク: L2 スイッチを使って VM と VM を繋ぐ
- ブリッジ接続: VM と直接ネットワークを繋ぐ -> 外部に公開して他 PC などからアクセスできる
仮想化の他の設定
- 通常、 SAN のような外部ストレージを使って、ネットワークを経由して外部にファイルを保存
- CPU やメモリ、レジスタ などと ディスク が分離される
- クラウドのように追加したり消したりが柔軟にできるようになる (!!)
- ディスクの領域も予め確保するのか、サイズに合わせて確保するのか選択可能
- 予め確保すると、連続してディスクが取れるので動作が速くなる <-> その分容量が必要
- バラバラにディスクに保存されるので動作が遅い <-> 初期の容量は少ない
- 手元で検証するだけなら後者のほうが良い
小並感ながらこのディスクを分けてしまうやり方はめちゃ 頭いい!! ですね。。
プライベートクラウド
最後にこの仮想化技術を使って、プライベートクラウドを実現できるので、それをどうやるのか解説いただきました。