OS 授業向けのマルチユーザ VM 環境の提案

Taiki Taira, Shinji Kono

発表の流れ

  1. VM を用いた Web サービスの教育
  2. 授業 Operating System / Web サービスの学習で要求されること
  3. ie-virsh 導入前の VM 管理システム
  4. ie-virsh の実装
  5. ie-virsh の動作するサーバ構成
  6. ie-virsh の動作するブレードサーバの性能
  7. ie-virsh の動作するブレードサーバの環境
  8. ie-virsh の機能
  9. ie-virsh の使用例
  10. リソースの制限
  11. Vagrant Box の使用
  12. 構成に使ったツールと他のツールとの比較
  13. 他の VM 管理ツールとの比較
  14. ie-virsh の改善点
  15. まとめと今後の課題

VM を用いた Web サービスの教育

VM を用いた Web サービスの教育

授業 Operating System / Web サービスの学習で要求されること

授業 Operating System では、VM での課題や実験を行う。Web サービスの学習では、VM を用いて構築した Web サービスを公開する。そのためには VM を学生が操作するにあたっての基本的な要件を満たす必要があり、また教師や管理者側の負担を減らさなければならない。

  • 学生のノート PC で環境設定したイメージを、本学科のブレードサーバ上で VM として動作させることができる
  • 作成した VM を、VM を持つ学生だけが削除できる
  • 学生自身の VM のみを起動・停止できる
  • VM へ ssh でのアクセスが可能である
  • パスワードやフィルタリングなどの安易な設定をチェックし、設定し直すよう勧告する
  • 授業 Operating System で使われる場合は実験後に電源入れたままの VM を、停止するように勧告する

ie-virsh 導入前の VM 管理システム

授業 Operating System では、ie-virsh を実装し適用する前に VMWare ESXI / vSphere Client を利用していた。

VMWare ESXI / vSphere Client

KVM / ie-virsh への変更

授業 Operating System に使用するために、VMWare ESXI / vSphere Client の代わりに ie-virsh を実装した

ie-virsh の実装

virsh をラップし、複数の学生が学生自身の VM のみを操作できるように実装した。virsh の個々の VM を操作するのに必要な機能だけを抜き出し、学生に提供する。

libvirt

仮想マシンの制御を抽象化したライブラリで、VM の情報を習得・操作することができる API 群である。KVM の他にも VMWare や Xen など多くのハイパーバイザに対応しており、アクセスすることができる。

virsh

ie-virsh の動作するサーバ構成

OCFS2

分散ファイルシステム Oracle Cluster FileSystem 2(OCFS2) を利用した。OCFS2 とは汎用の共有ディスククラスタファイルシステムであり、一つのブロックデバイスを複数の PC から同時に読み書きでき、整合性を保つことが可能である。

サーバ構成

  • ie-virsh は情報工学科のブレードサーバの一つで動作している
  • OCFS2 により、ストレージは複数のブレードサーバから同時に参照・書き出しすることができる
  • ブレードサーバ同士での VM イメージの参照を容易に行うことができる

ie-virsh の動作するブレードサーバの性能

OS Debian 3.2.51
CPU 2 * Intel(R) Xeon(R) CPU X5650 @ 2.67GHz
Memory 128GB

この上で複数の学生が課題や Web サービスの学習を行う。

ie-virsh の動作するブレードサーバの環境

学生は ie-virsh を使用するためにブレードサーバ上のホスト OS へアクセスし、ie-virsh によって学生自身の VM を操作する。

  • 学生は学科のアカウントを用いて ssh でブレードサーバにアクセスし、ie-virsh を使用して VM を操作することができる
  • 情報工学科の IP アドレス配布に対応するため、仮想ブリッジで外部ネットワークと接続する
  • 設定した IP アドレスやドメイン名を使用して、VM へ ssh アクセスすることができる

ie-virsh の機能

ie-virsh は virsh にある機能を制限し、学生に VM に必要な基本的な操作を提供する。

command 説明
define XML の template を元に domain を作成
undefine define で作成した domain の削除
list define で作成した domain を一覧表示
start 指定した domain の VM を起動
destroy 指定した domain の VM を停止
dumpxml domain の XML を参照

ie-virsh の使用例

授業 Operating System で学生にさせた操作の例を挙げる。

VM の作成

  1. 学生のノート PC で VMWare や VirtualBox を使用して Linux をインストール
  2. 作成したイメージを OVF 形式から qcow2 へ変換
  3. ブレードサーバにアップロードし指定のディレクトリへ配置
  4. ie-virsh define [domain name] で domain name の VM を作成

VM の操作

マルチユーザへの対応

ie-virsh では各個人の操作を制限することによって、複数の学生の VM 使用を管理することができる。

学生が持つことのできるリソースの制限

限られたリソースをマルチユーザとして複数の学生に配布するためには操作を制限するだけでなく、学生が個人で大量のリソースを取らないようにすることも必要である。

XML template

libvirt は VM を XML の設定ファイルを使用して管理している。ie-virsh ではその XML ファイルを事前に作成して template として用意することで、リソースを制限した。各学生が使用できる VM は、

となっている。これらの設定を学生が使用する template XML ファイルに記述し、domain の作成時に自動的に適用する。

ドメイン数の制限

学生は VM のインスタンスを最大4つまで作ることができる。これは学生が大量に VM を作成・起動し、ブレードサーバのメモリや CPU を消費することを防ぐためである。

Vagrant Box の使用

Vagrant

Vagrant Box

Vagrant Box の問題点

構成に使ったツールと他のツールとの比較

OCFS2 と NAS

KVM と VMWare ESXI

ie-virsh と他の VM 管理ツールとの比較 [1/2]

Vagrant

OpenStack

ie-virsh と他の VM 管理ツールとの比較 [2/2]

Web サービス実装

ie-virsh の改善点 [1/2]

ie-virsh を実装し使用して発見した ie-virsh の改善が必要な点を挙げる。

VM のセキュリティチェック

学生が VM のセキュリティ設定をしているか確認し、また VM に対して攻撃や不正なアクセスがないかを検査する機能が ie-virsh に必要である。

ie-virsh の改善点 [2/2]

クラウドへのデプロイ

学生が Web サービスを構築し、運用を続けるためには遠方からのアクセスにも対応する必要が出てくる。そのためには AWS やさくら VPS などの外部のクラウドサービスへ VM をデプロイできるようにする。

始めに学生は学生の PC 上の VM を設定し、ブレードサーバへアップロードする。Web サービスの構築を終わらせ、ブレードサーバでの運用が可能になると、次は遠方からのアクセスに対応しなければならない。

遠方からのアクセスはネットワークの速度が遅く、ネットワーク的に近いクラウドサービスを利用しなければならない。そのため、ブレードサーバから外部のクラウドサービスへ Web サービスをデプロイする仕組みが必要である。

まとめ

今後の課題