# HG changeset patch # User taiki # Date 1397956921 -32400 # Node ID f97f6e6d04122d9dbbf97eb5360e829301c72c97 # Parent 87d82d5c241683bacbe9c29082d174471cf67993 change pdf diff -r 87d82d5c2416 -r f97f6e6d0412 paper/evaluation.tex --- a/paper/evaluation.tex Sat Apr 19 20:18:38 2014 +0900 +++ b/paper/evaluation.tex Sun Apr 20 10:22:01 2014 +0900 @@ -1,41 +1,4 @@ \section{評価} -授業 Operating System で実際に使用した、VM 環境の構成を説明する。授業 Operating system は、受講者60名の授業である。 - -\subsection{サーバの構成} -ホストサーバの環境は以下である。 - -\begin{itemize} -\item OS:debian -\item CPU: Intel(R) Xeon(R) CPU X5650 @ 2.67GHz -\item Memory: 24GB -\item Filesystem: OCFS2 -\end{itemize} - -また OCFS2 との接続は、図\ref{fig:nasstructure}となっている。複数台のブレードサーバから OCFS2 でフォーマットされたファイルシステムへ接続し、書き込みを行う。ブレードに内蔵されている SSD では大量の VM イメージを保存するには足りないため、外部の記憶装置を利用する必要があるためである。 -また別のブレードサーバ上に KVM をたてた場合に移行が簡単になる。 - -\begin{figure}[htb] - \begin{center} - \includegraphics[scale=0.6]{./images/sanstructure.pdf} - \end{center} - \caption{All Server structure} - \label{fig:sanstructure} -\end{figure} - -情報工学科では、グローバルIPアドレスを取得することができる。生徒は取得したIPアドレスを使用して VM へ ssh アクセスする。そのため、virsh が作る仮想ネットワークではなく、情報工学科の DHCP サーバによって生徒のIPアドレスが受け取られるように設定する必要がある。それには仮想ブリッジを配置してその問題に対処した。 - -図\ref{fig:serverstructure}は ie-virsh を使用して生徒が VM を配置するホストの構成である。 - -\begin{figure}[htb] - \begin{center} - \includegraphics[scale=0.6]{./images/serverstructure.pdf} - \end{center} - \caption{Server structure} - \label{fig:serverstructure} -\end{figure} - -また、情報工学科で使用されている LDAP サーバの情報を使用して、学科のアカウントでssh ログイン可能な状態に設定した。そうすることで、生徒一人一人のアカウントを登録する必要がなく、またアカウント名は学籍番号になっているため管理が容易となる。 - \subsection{マルチユーザでの利用} ie-virsh はマルチユーザで利用できるように実装している。今回授業 Operating System で使用した際は、受講者 60 人が使用し、授業 Operating system の課題を行った。 生徒一人一人が VM をブレードサーバにアップロードし、ssh 接続し操作することができた。 diff -r 87d82d5c2416 -r f97f6e6d0412 paper/ievirsh.tex --- a/paper/ievirsh.tex Sat Apr 19 20:18:38 2014 +0900 +++ b/paper/ievirsh.tex Sun Apr 20 10:22:01 2014 +0900 @@ -1,5 +1,5 @@ \section{ie-virsh}\label{section:ievirsh} -ie-virsh は、virsh をラップして作られた VM 管理用のプログラムである。生徒は ssh で学科アカウントを使用して VM に接続後、ie-virsh を使用して VM を操作することができる。 +ie-virsh は、virsh をラップして作られた VM 管理用のツールである。学生は ssh で学科アカウントを使用してブレードサーバに接続し、ie-virsh を使用して VM を操作することができる。 表\ref{table:ievirshfunc}が ie-virsh の機能である。 \begin{tiny} @@ -27,31 +27,72 @@ \end{table} \end{tiny} -ie-virsh には virsh にあるような、ネットワークの構成などの管理者側がするべき操作はなく、管理者でない生徒は操作できないようになっている。 +ie-virsh には virsh にあるような、ネットワークの構成などの管理者側がするべき操作はなく、管理者でない学生は操作できないようになっている。また学生は、他の学生の VM を操作することもできない。 -生徒が ie-virsh を使用して VM を起動する手順はこうである。まず生徒のノートパソコンで、VMWare や Virtual Box を使って Linux をインストールし、イメージを作成する。作成したイメージをブレードサーバにアップロードする。イメージを qcow2 に変換して指定のディレクトリに配置し、以下のコマンドを実行する。 +学生が ie-virsh を使用して VM を起動する手順はこうである。まず学生のノートPCで、VMWare や Virtual Box を使って Linux をインストールし、イメージを作成する。作成したイメージをブレードサーバにアップロードする。イメージを qcow2 に変換して指定のディレクトリに配置し、以下のコマンドを実行する。 \begin{verbatim} % ie-virsh define [domain name] \end{verbatim} そうすると、template XML を元に domain が生成される。 -ie-virsh は XML の template を持ち、その template は生徒が VM のイメージをブレードサーバにアップロードして define した際に使用される。そこには virsh 上で VM を使用するために必要な設定が記述されている。 +ie-virsh は XML の template を持ち、その template は学生が VM のイメージをブレードサーバにアップロードして define した際に使用される。そこには virsh 上で VM を使用するために必要な設定が記述されている。 生成された domain は以下のように起動することができる。 \begin{verbatim} % ie-virsh start [domain name] \end{verbatim} -自身が持っている VM の状態を、下記で見ることができる。 +自身が持っている VM の状態を、下記のコマンドで見ることができる。 \begin{verbatim} % ie-virsh list \end{verbatim} -\subsection{XML template} -生徒が作成する VM は、XML のテンプレートを元に作成される。テンプレートは VM にしておくべき設定が記述されており、ie-virsh はこのテンプレートを元に生徒の XML ファイルを生成する。 -XML template にされている設定は以下のようになる。 +\subsection{ie-virsh の動作環境} + +ホストサーバの環境は以下である。 + +\begin{itemize} +\item OS:debian +\item CPU: Intel(R) Xeon(R) CPU X5650 @ 2.67GHz +\item Memory: 24GB +\item Filesystem: OCFS2 +\end{itemize} + +SAN は Oracle Cluster Filesystem(OCFS2) でのフォーマットを行った。OCFS2 は汎用の、共有ディスククラスタファイルシステムである。一つのブロックデバイスを複数の PC から同時に読み書きすることができる。 + +各計算ノードがそれぞれファイルシステムへの処理を行い、ストレージに対して個別に読み書きをする。一貫性を持った読み書きを実現する機構として Distributed Lock Manager (DLM) が使われる。DLM で他の計算ノードと矛盾しないように調整しながらそれぞれの計算ノードが並行してストレージへの読み書きを行うことで、全体として一貫性のあるファイルシステムを実現している。 + +標準のファイルシステムインターフェイスを通じてすべてのノードが並行してストレージに読み書きできるため、クラスタにまたがって動作するアプリケーションの管理が容易になる。 + +OCFS2 との接続は、図\ref{fig:sanstructure}となっている。複数台のブレードサーバから OCFS2 でフォーマットされたファイルシステムへ接続し、書き込みを行う。ブレードに内蔵されている SSD では大量の VM イメージを保存するには足りないため、外部の記憶装置を利用する必要があるためである。 +また別のブレードサーバ上に KVM をたてた場合に移行が簡単になる。 + +\begin{figure}[htb] + \begin{center} + \includegraphics[scale=0.6]{./images/sanstructure.pdf} + \end{center} + \caption{All Server structure} + \label{fig:sanstructure} +\end{figure} + +情報工学科では、グローバルIPアドレスを取得することができる。学生は取得したIPアドレスを使用して VM へ ssh アクセスする。そのため、virsh が作る仮想ネットワークではなく、情報工学科の DHCP サーバによって学生のIPアドレスが受け取られるように設定する必要がある。それには仮想ブリッジを配置してその問題に対処した。 + +図\ref{fig:serverstructure}は ie-virsh を使用して学生が VM を配置するホストの構成である。 + +\begin{figure}[htb] + \begin{center} + \includegraphics[scale=0.6]{./images/serverstructure.pdf} + \end{center} + \caption{Server structure} + \label{fig:serverstructure} +\end{figure} + + +\subsection{資源の制限} +学生が作成する VM は、XML のテンプレートを元に作成される。テンプレートは VM にしておくべき設定が記述されており、ie-virsh はこのテンプレートを元に学生の XML ファイルを生成する。 +XML template にされている設定は以下のようになる。これによって学生が使用するブレードサーバの資源を制限し、過剰なメモリや CPU の確保を防ぐ。 \begin{itemize} \item ネットワークの設定 @@ -69,4 +110,47 @@ \item VM イメージの配置 \end{itemize} -以上が生徒が利用するための XML テンプレートの設定である。 +また学生が VM を大量に作成することを防ぐため、作成できる VM の台数を4台に制限した。授業 Operating System を 60 名の学生が受講する場合、最大 240 台作成される。 + +\subsection{マルチユーザでの利用} + +学生の Web サービス構築の学習や、授業 Operating System で複数の学生の使用に対応するため ie-virsh はマルチユーザで動作する必要がある。情報工学科で使用されている LDAP サーバの情報を使用して、学生が学科のアカウントで ssh ログイン可能な状態に設定した。そうすることで、学生一人一人のアカウントを登録する必要がなく、またアカウント名は学籍番号になっているため学籍番号で管理することができる。 + +\subsection{権限の設定} + +学生に VM を貸し出す際に管理しなければならないのは、学生が持つ権限である。ie-virsh で学生が可能なことは、自身の VM の作成・削除と、起動・停止である。すべての VM に関係する仮想ネットワークの設定や、他の学生の VM に対する操作はできないように設定した。 + +\subsection{Vagrant Box の利用} + +VM を使用する際は学生の PC で VM を設定し、VM イメージをアップロードさせるという形をとった。授業 Operating System では VM を学ぶ環境として学生の PC で Vagrant を使用させた。 + +Vagrant は異なる環境に移行可能な開発環境を簡単に構築・管理・配布することが出来る開発環境作成ツールである。手軽にテスト環境を導入することができ、変更が加わっても開発環境・本番環境に自動的に適用される。また、環境を気軽に捨てることも可能である。ホスト環境として、VirtualBox や VMWare などで動かすことができる。表\ref{table:vagrantfunc}は Vagrant で使用することの主な機能である。 + +\begin{tiny} + \begin{table} + \begin{center} + \caption{vagrant の主なコマンド} + \label{table:vagrantfunc} + \small + \begin{tabular}[t]{c|l} + \hline + up & Vagrant Box を起動 \\ + \hline + destroy & 仮想マシンの削除 \\ + \hline + halt & 起動している Vagrant Box の停止 \\ + \hline + ssh & 起動している Vagrant Box へ ssh 接続 \\ + \hline + status & ステータスの確認 \\ + \hline + box add & 新しい Vagrant Box の追加 \\ + \hline + \end{tabular} + \end{center} + \end{table} +\end{tiny} + +また Vagrant で仮想マシンを利用する際に、仮想マシンのベースとなるイメージファイルが Vagraint Box である。Vagrant で Vagrant Box を VM イメージとして起動し、開発環境を構築し配布することができる。また配布されている Vagrant Box を取得し、Vagrant で起動し使用することが可能である。 + +Vagrant は学生の PC の VirtualBox で使用させたため、Vagrant Box の VM イメージは VirtualBox に対応する OVF形式となっていた。そのため OVF 形式から、KVM で動作する形式へ変換する必要があった。学生はブレードサーバへ VM イメージをアップロードする際、OVF 形式から KVM で動作する qcow2 形式へ変換する。 diff -r 87d82d5c2416 -r f97f6e6d0412 paper/introduction.tex --- a/paper/introduction.tex Sat Apr 19 20:18:38 2014 +0900 +++ b/paper/introduction.tex Sun Apr 20 10:22:01 2014 +0900 @@ -1,2 +1,8 @@ \section{研究の目的} -: +Web サービスが IT 技術のひとつとして広まり、Web framework などの普及で学生でも実装が容易になってきている。そのため、学生でも Web サービスを開発する技術は必須なものとなっている。学生が個人で Web サービスを開発するためには、 Web サーバを手持ちの PC で構築し、外部の VPS やクラウド等へデプロイする必要がある。しかし外部のサービスを利用する場合はコストがかかる。Web サービスを学生が構築、開発し、運用するためにはコストのかからない VM を与える必要がある。 + +また、情報工学科では Operating System という授業がある。この授業では OS について学ぶ一環として、VM について学習し、課題を提出させる。課題では VM の環境を学生が設定し、情報工学科の持つブレードサーバ上にアップロードし、プログラムの実装や計測を行う。 + +こういった需要から学生に与える学習環境のひとつとして、情報工学科のブレードサーバ上に VM を持たせ、VM の起動・停止等の操作をさせる必要が出てきた。複数の学生に適切な権限と資源を与え、Web サービスや課題についての学習を促進する。 + +ie-virsh を用いて、複数の学生の VM を管理することができる。 diff -r 87d82d5c2416 -r f97f6e6d0412 paper/kvm.tex --- a/paper/kvm.tex Sat Apr 19 20:18:38 2014 +0900 +++ b/paper/kvm.tex Sun Apr 20 10:22:01 2014 +0900 @@ -1,5 +1,5 @@ \section{Kernel-based Virtual Machine (KVM)} \label{kvm} -Linux 自体を VM の実行基盤として機能させるソフトウエアである。完全仮想化により、OS の仮想化環境を提供する。 +Linux 自体を VM の実行基盤として機能させるソフトウエアで、無償で使用することのできるオープンソースである。る。完全仮想化により、OS の仮想化環境を提供する。ie-virsh が動作する VM 環境のハイパーバイザである。 図\ref{fig:kvmarch}は、KVM のアーキテクチャである。KVM は Linux 用のカーネルモジュールとして実装されており、OS が持つメモリ管理プロセスやスケジューリング機能を利用している。そのため他の仮想マシンソフトウエアに比べ、KVM 自体のコードは簡潔なものになっている。 diff -r 87d82d5c2416 -r f97f6e6d0412 paper/mmnewversion_vmforoslecture.mm --- a/paper/mmnewversion_vmforoslecture.mm Sat Apr 19 20:18:38 2014 +0900 +++ b/paper/mmnewversion_vmforoslecture.mm Sun Apr 20 10:22:01 2014 +0900 @@ -1,6 +1,6 @@ - + - + @@ -13,8 +13,7 @@ for operating system lecture

- -
+ diff -r 87d82d5c2416 -r f97f6e6d0412 paper/sigos.pdf Binary file paper/sigos.pdf has changed diff -r 87d82d5c2416 -r f97f6e6d0412 paper/sigos.tex --- a/paper/sigos.tex Sat Apr 19 20:18:38 2014 +0900 +++ b/paper/sigos.tex Sun Apr 20 10:22:01 2014 +0900 @@ -59,12 +59,10 @@ % 本文はここから始まる \input{introduction} % 研究目的 -\input{ievirsh} % ie-virsh \input{libvirt} % libvirt \input{kvm} % KVM -\input{vagrant} % vagrant -\input{ocfs2} % ocfs2 -\input{evaluation} % 評価 +\input{ievirsh} % ie-virsh +\input{ievirshcomp} % ie-virsh 比較 \input{conclusion} % まとめ %\input{manycore} % many core system %\input{osmesa} % OSMesa diff -r 87d82d5c2416 -r f97f6e6d0412 paper/vagrant.tex --- a/paper/vagrant.tex Sat Apr 19 20:18:38 2014 +0900 +++ b/paper/vagrant.tex Sun Apr 20 10:22:01 2014 +0900 @@ -1,30 +0,0 @@ -\section{Vagrant} -Vagrant は異なる環境に移行可能な開発環境を簡単に構築・管理・配布することが出来る開発環境作成ツールである。手軽にテスト環境を導入することができ、変更が加わっても開発環境・本番環境に自動的に適用される。また、環境を気軽に捨てることも可能である。ホスト環境として、VirtualBox や VMWare などで動かすことができる。表\ref{table:vagrantfunc}は Vagrant で使用することの主な機能である。 - -\begin{tiny} - \begin{table} - \begin{center} - \caption{vagrant の主なコマンド} - \label{table:vagrantfunc} - \small - \begin{tabular}[t]{c|l} - \hline - up & Vagrant Box を起動 \\ - \hline - destroy & 仮想マシンの削除 \\ - \hline - halt & 起動している Vagrant Box の停止 \\ - \hline - ssh & 起動している Vagrant Box へ ssh 接続 \\ - \hline - status & ステータスの確認 \\ - \hline - box add & 新しい Vagrant Box の追加 \\ - \hline - \end{tabular} - \end{center} - \end{table} -\end{tiny} - -\subsection{Vagrant Box} -Vagrant で仮想マシンを利用する際に、仮想マシンのベースとなるイメージファイルである。Vagrant で Vagrant Box に開発環境を構築し、配布することができる。また配布されている Vagrant Box を取得し、Vagrant で起動し使用することが可能である。