Mercurial > hg > Papers > 2015 > taiki-master
changeset 12:b4b5eb3b7321
update pdf
author | taiki |
---|---|
date | Sun, 15 Feb 2015 14:41:11 +0900 |
parents | a7cd328c44f2 |
children | 0e11fdce885d |
files | paper/abstract.tex paper/chapter1.tex paper/chapter2.tex paper/chapter3.tex paper/chapter4.tex paper/conclusion.tex paper/introduciton.tex paper/master_paper.pdf |
diffstat | 8 files changed, 240 insertions(+), 198 deletions(-) [+] |
line wrap: on
line diff
--- a/paper/abstract.tex Thu Feb 12 18:06:37 2015 +0900 +++ b/paper/abstract.tex Sun Feb 15 14:41:11 2015 +0900 @@ -1,11 +1,11 @@ \begin{abstract} - IT 技術の進歩は目まぐるしく、Virtual Machine (以下 VM ) やコンテナなどを使用して学習するためには多くのコストを支払う必要がある。また学習のための環境を管理することは手間がかかる。 + IT 技術の進歩は目まぐるしく、学ぶ必要のあることが増えてきている。学習環境として Virtual Machine (以下 VM ) やコンテナがあるが、それらをを使用するにはクラウドサービスを使用するなど多くのコストを支払わなければならない。また学習のための環境を管理することは手間がかかる。 - そのため学生が IT 技術を学習するための環境を供したい。また提供した環境を使用させるにあたり、管理者への煩雑な手続きを無くすことで管理者の負担を減らさなければならない。管理者側の負担として、VM の作成やアップロード、また VM のセキュリティ管理が挙げられる。 + そのため学生がコストを支払うことなく IT 技術を学習するための環境が必要である。また提供した環境を使用させるにあたり、管理者への煩雑な手続きを無くすことで管理者の負担を減らさなければならない。管理者側の負担として、VM の作成やアップロード、また VM のセキュリティ管理が挙げられる。 琉球大学情報工学科 (以下 本学科) では、定期的にシステム更新を行う。次期システムではクラウドサービスと連携し、学生が開発したサービスをオンプレミスの環境から外のサービスへ移行することで、サービスへの高速なアクセスが可能になる。現在のシステム構成から得られた知見を活かし、新たな教育用のシステムを構築する必要がある。 -本研究では、IT 技術を教育するための環境を学生に提供するために、教育用計算機システムに Shien システムの構築と評価を行った。本研究室では学生に VM が使える環境を提供し、複数のユーザに対応するための ie-virsh を開発している。Shien システムに ie-virsh と、docker で使われる資源を管理するための ie-docker を組み込み、学生に使用させる。またその際に計算機同士で共有する iSCSI ディスクに使う Filesystem 、 GFS2 と、コンテナや VM の IO 速度の評価を行った。 +本研究では、IT 技術を教育するための環境を学生に提供するために、計算機に Shien システムの構築と評価を行った。本研究室では学生に VM が使える環境を提供し、複数のユーザに対応するための ie-virsh を開発している。Shien システムに ie-virsh と、Docker で使われる資源を管理するための ie-docker を組み込み、学生に使用させる。またその際に計算機同士で共有する iSCSI ディスクに使う Filesystem である GFS2 と、コンテナや VM の IO 速度の評価を行った。 現在のシステムと比較して、本研究で提案する Shien システムが教育用に適正であることを確認した。
--- a/paper/chapter1.tex Thu Feb 12 18:06:37 2015 +0900 +++ b/paper/chapter1.tex Sun Feb 15 14:41:11 2015 +0900 @@ -1,169 +1,71 @@ -\chapter{これまでの学生向け VM 管理システム} - 本章では 2015 年現在使用されている、琉球大学情報工学科 (以下本学科) の運用している 2 つの VM 管理システムについて述べる。 +\chapter{教育用環境の要件} -\section{VMWare ESXi} -VMWare が無償で配布している Hypervisor であり、計算機に直接インストールし使用することができる。現在本学科では VMWare ESXi を Hypervisor として VM を管理している。 +本章では教育用システムの要件を挙げる。 -\section{VMWare ESXi による VM 管理システム} - オンプレミスのブレードサーバで構成されており、VMWare ESXi で動作している VM を VMWare vSphere Client と Web サービスで管理している。図\ref{fig:iesystem} のように、VM の所有者はメールでシステム管理者へ使用 VM を増やす依頼を行い、ユーザは本学科の提供する Web サービスから VM を作成する。 +\section{コンテナへの対応} -\begin{figure}[htpb] - \begin{center} - \includegraphics[scale=0.7]{figures/ie_system.pdf} - \caption{本学科のシステム} - \label{fig:iesystem} - \end{center} -\end{figure} +OS の環境を複数のグループで分割し、別のサーバのように利用することのできる技術がコンテナである。 +サーバ運用でコンテナを使用する例が増えてきている。一台のサーバに対して複数のサービスを、VM に比べて少ないオーバーヘッドで使用することができるためである。これからコンテナでの運用が主流になっていくので、教育用システムでもコンテナを使用可能にしなければならない。そのためには Linux をサーバに用いる必要がある。 -\section{本学科の提供する Web サービス} +\section{Multi User Support} -VM を操作するインターフェイスとして、VMWare の API を使った Web サービスを使用できる。 - -本学科のシステムでは、VM の操作は Web サービス実装を通して行う。VM の作成はメールなどの連絡手段を使って、管理者を通して行う。既成の VM をブレードサーバへアップロードするにも、管理者と連絡し手続きを取る。 - -Web サービスのポータル画面は図\ref{fig:ieportal}のようになる。本学科では IP アドレスもこの画面で配布している。 +本学科では一学年 60 名、学科全体で 240 名の学生が在籍している。そのすべての学生に対応するため、複数のユーザを管理できる必要がある。そのためには、複数のユーザに同じ権限を容易に配布するシステムでなければならない。 -\begin{figure}[htpb] - \begin{center} - \includegraphics[scale=0.35]{images/ie_sc_portal.png} - \caption{本学科の Web サービス} - \label{fig:ieportal} - \end{center} -\end{figure} +現在の本学科の VM 管理システムでは、複数のユーザに対応するための権限の配布は VMWare vSphere Client で行われている。VMWare vShpere Client は豊富な機能を持っており、権限も細かく配布することができる。しかし多くのユーザに権限を配布するには手間がかかってしまうため、その手間を減らさなければならない。 + +配布するべき権限は二種類ある。管理者とユーザである。管理者はシステムそのものを管理する。計算機や hypervisor の設定、全ての VM やコンテナの操作をすることができる。 -VM を作成するためには、図\ref{fig:ieportal}の VM 新規作成をクリックする。クリックすると図\ref{fig:iemakevm}の画面に移る。図\ref{fig:iemakevm}で必要な情報をすべて入力し、「ok」をクリックすることによって VM を作成することができる。 +ユーザはユーザ自身の資源のみを操作することができる。またシステム全体に関わるネットワークや他ユーザの VM などの操作は行うことができない。 + +\section{資源の制限} -\begin{figure}[htpb] - \begin{center} - \includegraphics[scale=0.35]{images/ie_sc_makevm.png} - \caption{Web サービスの VM 作成画面} - \label{fig:iemakevm} - \end{center} -\end{figure} +計算機の資源は、主にストレージ、CPU 、メモリである。ユーザに提供できる計算機資源は限られている。ユーザ1つに対して多くの資源を与えてしまうと、他のユーザへ資源の配布が困難になる。 -VM 作成後は VM を選択すると、図\ref{fig:ievmop} へ移り、VM を管理することができる。 +また明示的に資源を与えなくても、ユーザが管理者の許可無く大量の資源を確保することを防ぐ必要がある。 -\begin{figure}[htpb] - \begin{center} - \includegraphics[scale=0.35]{images/ie_sc_vmop.png} - \caption{Web サービスの VM 管理画面} - \label{fig:ievmop} - \end{center} -\end{figure} +現在のシステムではユーザは VM という形で資源を切り出している。 VM を新たに作成するにはメールで申請する。メールを受け取った管理者は VMWare ESXi 上に VM を作成し、VM 内に作成したユーザを申請者にメールで返信する。学生は最大240名いるため、一人ひとりに VM 申請作成を行うのは困難であり、全員に均等に VM を使って学習する機会を与えられない。 -本学科の Web サービスの管理画面で可能なことは、下記になる。 +制限可能な資源は、VM の場合は以下のようになる。 \begin{itemize} - \item 起動 - \item 停止 - \item サスペンド - \item 再起動 - \item スタンバイ + \item 使用 CPU core 数 + \item メモリ容量 + \item 作成可能な VM の数 \end{itemize} -\section{VMWare vSphere Client} - -GUI で VM を操作することができ、豊富な機能と高度な操作が可能となっている。管理者は VMWare vSphere Client での管理を行っている。VM などの資源に対する操作の権限を細かく扱うことができるため、利用者に対して権限を配布することが可能である。しかし GUI が複雑なため、操作に習熟する必要がある。 - -また使用する OS が限定されており、主に Windows でのみ使用可能なため、Mac OS X を推奨している本学科では使用が困難である。 - -\section{Kernel based Virtual Machine (KVM)} - -Linux 自体を VM の実行基盤として機能させるソフトウエアである。無償で利用可能なオープンソースとなっている。CPU の仮想化支援機能を必要とし、完全仮想化により仮想化環境を提供する Hypervisor である。 - -KVM は Linux のカーネルモジュールとして実装されており、OS が持つメモリ管理プロセスやスケジューリング機能を利用している。 -アーキテクチャは図\ref{fig:kvmarch}のようになっている。 - -\begin{figure}[htpb] - \begin{center} - \includegraphics[scale=0.7]{figures/kvmarch.pdf} - \caption{KVM architecture} - \label{fig:kvmarch} - \end{center} -\end{figure} - -Intel-VT や AMD-V などの仮想化支援機能を持つプロセッサや BIOS の載っている PC 上で動作する。 - -本学科のシステムは、KVM と VMWare ESXi の2つの Hypervisor を利用している。本学科全体の VM 管理は、主に VMWare ESXi が使われている。 - -\section{libvirt} - VM 管理ツールである virsh を含む、 VM の制御を抽象化したライブラリである。 VM の情報を習得・操作することが可能な API 群である。 - -\begin{figure}[htpb] - \begin{center} - \includegraphics[scale=0.7]{figures/libvirt_arch.pdf} - \caption{libvirt architecture} - \label{fig:libvirtarch} - \end{center} -\end{figure} - -図\ref{fig:libvirtarch}のように、アプリケーションから libvirt API を呼び出すと、API に従って内部の VMM API もしくは資源管理 API を呼び出し、制御を行う。libvirt は VM の管理だけではなく、仮想ネットワーク、仮想ストレージも管理することができる。もともとは Xen に対して API を提供していたが、現在は多くの Hypervisor に対応している。 - -\section{virsh} -virsh は libvirt に付属する VM 管理コンソールである。libvirt の API で VM を制御することができる。VM の起動や停止、情報の表示、ゲストが接続しているネットワークやデバイスの管理をすることができる。 - -virsh をそのまま使用して複数のユーザを管理するためには、ユーザやグループの設定が必要である。またユーザやグループの設定を行ったとしても、ネットワークなどの操作をを制限することができない。 - -\section{ie-virsh} - -virsh はグループの設定を行わない限り、root ユーザでのみ使用可能である。virsh を使う管理者以外のユーザ全てに root ユーザを使わせてしまうと、他のユーザに対しての不正な操作や、多量の資源取得、ネットワーク等の管理者がするべき操作を許してしまう。 - -そのため ie-virsh の開発を行った\cite{taira:2014}。ie-virsh は virsh をラップすることで作成された VM 管理用のツールである。ie-virsh を使用することにより、他のアカウントの VM を操作させずに VM 所持者に操作させられる。 - -表\ref{table:ievirshfunc}が ie-virsh の機能である。 - -\begin{tiny} - \begin{table}[ht] - \begin{center} - \caption{ie-virsh のコマンド} - \label{table:ievirshfunc} - \small - \begin{tabular}[t]{c|l} - \hline - define & XML の template を元に domain を作成 \\ - \hline - undefine & define で作成した domain を削除 \\ - \hline - list & define で作成した domain を一覧表示 \\ - \hline - start & 指定した domain 名の VM を起動 \\ - \hline - destroy & 指定した domain 名の VM を停止 \\ - \hline - dumpxml & domain の XML を参照 \\ - \hline - debug & linux kernel のコードを gdb で読む\\ - \hline - \end{tabular} - \end{center} - \end{table} -\end{tiny} - -virsh ではネットワークやストレージの設定を行うことも可能である。しかし ie-virsh では管理者ではないユーザにはネットワークやストレージの操作・設定ができないよう制限している。 - -\section{ie-virsh による資源の制限} - -複数のアカウントで計算機資源を共有する場合、管理者による資源の制限が必須である。VM の使用が主な ie-virsh では過剰なディスク容量やメモリ、CPU の確保を防がなければならない。 - -ie-virsh がラップしている virsh は、XMLファイルを使って VM を管理している。XML ファイルには VM のパラメータが記述されている。 - -ie-virsh では学生が使用する VM が使用する資源を制限するために、予めこの XML ファイルのテンプレートを作成し利用している。 - -XML テンプレートで予め制限されている設定は、以下のようになる。 +またコンテナの場合は以下のようになる。 \begin{itemize} - \item ネットワークの設定 - \item I/O 設定 - \item VM イメージのフォーマット - \item CPU 数 + \item 使用 CPU core 数 \item メモリ容量 + \item 作成可能なコンテナの数 \end{itemize} -これによって学生が使用する背資源を制限し、過剰なメモリや CPU の確保を防ぐ。 -また学生が VM を多く作成するという形で資源を利用してしまうことを防ぐために、作成し操作できる VM の数を4台に制限した。 +これらを制限することができれば、管理者がユーザの資源を固定できる。 + + +\section{iSCSI ファイルシステムへ対応} + +計算機の外部に大容量の記憶媒体を置くことで、計算機そのものに記憶媒体を搭載しなくても多くのユーザにデータ容量を配布できる。次期システムでは複数の計算機で大容量 iSCSI ディスクを共有する。 + +複数台の計算機で iSCSI ディスクを使用することで、 VM イメージやユーザのデータを共有できる。またそれによって VM をライブマイグレーション可能にする。計算機がメンテナンスをしなければならなかったり、計算機を止める必要のある際に VM を止めずに他の計算機へ移動することができる。 + +iSCSI で複数台の計算機から接続された場合に、高速で整合性を保つことのできる Filesystem を使用する必要がある。 + +\section{クラウドへの対応} -\section{ie-virsh による OS 管理システム} +クラウドサービスとは外部のサービス上でウェブサービスなどのシステムを稼働させる事のできるサービスである。 +現在のシステムでは、クラウドサービスへの対応を行っていない。学生が外部のクラウドサービスを使用するためには、自主的にコストを支払い一から構成する。 + +次期システムではクラウド上の資源を確保する。本学科のシステムのバックアップが行え、クラウドサービスを学生が使えるようになる。 + +次期システムへ対応するため、クラウドサービスへ学生の開発したサービスやシステムのデプロイが行え、また管理者の負担を抑えて管理できるようにしなければならない。 -ie-virsh によって複数のユーザの VM 管理を行っている。学生に VM をアップロードさせ、本学科のブレードサーバ上で Web サービスの開発や実験のために使用させる。 +\section{Linux kernel debug} -また本学科では Operating System という授業を提供している。この授業では OS について学ぶ一環として VM について学習し、課題を提出させる。課題では VM の環境を学生が設定し、本学科の持つブレードサーバ上に VM をアップロードし、プログラムの実装や計測を行う。ie-virsh による OS 管理システムを使用し、 VM のアップロードから計測までの課題を行わせた。 +Linux Kernel のソースコードを読む方法は2つ挙げられる。Linux kernel をダウンロードし、そのソースコードをそのまま読むという手法と、gdb で逐次ソースコード追って読むという手法である。 +教育用の環境の機能の一つとして、Linux kernel を debug する、という機能が必要である。gdb で Linux kernel のソースコードを追う準備には、手間がかかってしまう。 また授業で Linux kernel を題材に出す際、gdb で追うことができると課題の幅が広がる。 + +\section{セキュリティ管理} + +教育用の環境で VM を使用する場合、ユーザの VM へのセキュリティ管理が重要になる。具体的には脆弱なパスワード設定や無駄なポートの開放である。それをユーザに通知する機能が必要になる。またユーザの VM が外部を攻撃したりすることを防がなければならない。
--- a/paper/chapter2.tex Thu Feb 12 18:06:37 2015 +0900 +++ b/paper/chapter2.tex Sun Feb 15 14:41:11 2015 +0900 @@ -1,59 +1,174 @@ -\chapter{Shien システム} +\chapter{これまでの学生向け VM 管理システム} + + 本章では 2015 年現在使用されている、琉球大学情報工学科 (以下本学科) の運用している 2 つの VM 管理システムについて述べる。 + +\section{VMWare ESXi} -本章では教育用の OS 管理システムの要件を挙げ、Shien システムで要件を実装する方法を示す。 +VMWare が無償で配布している Hypervisor であり、計算機に直接インストールし使用することができる。現在本学科では VMWare ESXi を Hypervisor として VM を管理している。 -\section{Multi User Support} +\section{VMWare ESXi による VM 管理システム} + + オンプレミスのブレードサーバで構成されており、VMWare ESXi で動作している VM を VMWare vSphere Client と Web サービスで管理している。図\ref{fig:iesystem} のように、VM の所有者はメールでシステム管理者へ使用 VM を増やす依頼を行い、ユーザは本学科の提供する Web サービスから VM を作成する。資源の制限はシステム管理者が申請を受諾することで行っていた。複数の学生で使用するため、Multi User Support に対応している。またコンテナには対応していない。 -本学科では一学年 60 名、学科全体で 240 名の学生が在籍している。そのすべての学生に対応するため、複数のユーザを管理できる必要がある。そのためには、複数のユーザに同じ権限を容易に配布するシステムでなければならない。 +\begin{figure}[htpb] + \begin{center} + \includegraphics[scale=0.7]{figures/ie_system.pdf} + \caption{本学科のシステム} + \label{fig:iesystem} + \end{center} +\end{figure} -現在の本学科の VM 管理システムでは、複数のユーザに対応するための権限の配布は VMWare vSphere Client で行われている。VMWare vShpere Client は豊富な機能を持っており、権限も細かく配布することができる。しかし多くのユーザに権限を配布するには手間がかかってしまうため、その手間を減らさなければならない。 +\section{本学科の提供する Web サービス} -配布するべき権限は二種類ある。管理者とユーザである。管理者はシステムそのものを管理する。計算機や hypervisor の設定、全ての VM やコンテナの操作をすることができる。 +VM を操作するインターフェイスとして、VMWare の API を使った Web サービスを使用できる。 + +本学科のシステムでは、VM の操作は Web サービス実装を通して行う。VM の作成はメールなどの連絡手段を使って、管理者を通して行う。既成の VM をブレードサーバへアップロードするにも、管理者と連絡し手続きを取る。 + +Web サービスのポータル画面は図\ref{fig:ieportal}のようになる。本学科では IP アドレスもこの画面で配布している。 -ユーザはユーザ自身の資源のみを操作することができる。またシステム全体に関わるネットワークや他ユーザの VM などの操作は行うことができない。 +\begin{figure}[htpb] + \begin{center} + \includegraphics[scale=0.35]{images/ie_sc_portal.png} + \caption{本学科の Web サービス} + \label{fig:ieportal} + \end{center} +\end{figure} -\section{資源の制限} - -計算機の資源は、主にストレージ、CPU 、メモリである。ユーザに提供できる計算機資源は限られている。ユーザ1つに対して多くの資源を与えてしまうと、他のユーザへ資源の配布が困難になる。 +VM を作成するためには、図\ref{fig:ieportal}の VM 新規作成をクリックする。クリックすると図\ref{fig:iemakevm}の画面に移る。図\ref{fig:iemakevm}で必要な情報をすべて入力し、「ok」をクリックすることによって VM を作成することができる。 -また明示的に資源を与えなくても、ユーザが管理者の許可無く大量の資源を確保することを防ぐ必要がある。 +\begin{figure}[htpb] + \begin{center} + \includegraphics[scale=0.35]{images/ie_sc_makevm.png} + \caption{Web サービスの VM 作成画面} + \label{fig:iemakevm} + \end{center} +\end{figure} -現在のシステムではユーザは VM という形で資源を切り出している。 VM を新たに作成するにはメールで申請する。メールを受け取った管理者は VMWare ESXi 上に VM を作成し、VM 内に作成したユーザを申請者にメールで返信する。学生は最大240名いるため、一人ひとりに VM 申請作成を行うのは困難であり、全員に均等に VM を使って学習する機会を与えられない。 +VM 作成後は VM を選択すると、図\ref{fig:ievmop} へ移り、VM を管理することができる。 -Shien システムではユーザが使う資源を管理者が応対すること無く自動的に割り当て、制限できるよう構成する。 +\begin{figure}[htpb] + \begin{center} + \includegraphics[scale=0.35]{images/ie_sc_vmop.png} + \caption{Web サービスの VM 管理画面} + \label{fig:ievmop} + \end{center} +\end{figure} -制限可能な資源は、VM の場合は以下のようになる。 +本学科の Web サービスの管理画面で可能なことは、下記になる。 \begin{itemize} - \item 使用 CPU core 数 - \item メモリ容量 - \item 作成可能な VM の数 -\end{itemize} - -またコンテナの場合は以下のようになる。 - -\begin{itemize} - \item 使用 CPU core 数 - \item メモリ容量 - \item 作成可能なコンテナの数 + \item 起動 + \item 停止 + \item サスペンド + \item 再起動 + \item スタンバイ \end{itemize} -これらを制限することができれば、管理者がユーザの資源を固定できる。 +\section{VMWare vSphere Client} + +GUI で VM を操作することができ、豊富な機能と高度な操作が可能となっている。管理者は VMWare vSphere Client での管理を行っている。VM などの資源に対する操作の権限を細かく扱うことができるため、利用者に対して権限を配布することが可能である。しかし GUI が複雑なため、操作に習熟する必要がある。 + +また使用する OS が限定されており、主に Windows でのみ使用可能なため、Mac OS X を推奨している本学科では使用が困難である。 + +\section{Kernel based Virtual Machine (KVM)} + +Linux 自体を VM の実行基盤として機能させるソフトウエアである。無償で利用可能なオープンソースとなっている。CPU の仮想化支援機能を必要とし、完全仮想化により仮想化環境を提供する Hypervisor である。 +KVM は Linux のカーネルモジュールとして実装されており、OS が持つメモリ管理プロセスやスケジューリング機能を利用している。 +アーキテクチャは図\ref{fig:kvmarch}のようになっている。 + +\begin{figure}[htpb] + \begin{center} + \includegraphics[scale=0.7]{figures/kvmarch.pdf} + \caption{KVM architecture} + \label{fig:kvmarch} + \end{center} +\end{figure} + +Intel-VT や AMD-V などの仮想化支援機能を持つプロセッサや BIOS の載っている PC 上で動作する。 + +本学科のシステムは、KVM と VMWare ESXi の2つの Hypervisor を利用している。本学科全体の VM 管理は、主に VMWare ESXi が使われている。 -\section{iSCSIファイルシステムへ対応} +\section{libvirt} + VM 管理ツールである virsh を含む、 VM の制御を抽象化したライブラリである。 VM の情報を習得・操作することが可能な API 群である。 + +\begin{figure}[htpb] + \begin{center} + \includegraphics[scale=0.7]{figures/libvirt_arch.pdf} + \caption{libvirt architecture} + \label{fig:libvirtarch} + \end{center} +\end{figure} + +図\ref{fig:libvirtarch}のように、アプリケーションから libvirt API を呼び出すと、API に従って内部の VMM API もしくは資源管理 API を呼び出し、制御を行う。libvirt は VM の管理だけではなく、仮想ネットワーク、仮想ストレージも管理することができる。もともとは Xen に対して API を提供していたが、現在は多くの Hypervisor に対応している。 -計算機の外部に大容量の記憶媒体を置くことで、計算機そのものに記憶媒体を搭載しなくても多くのユーザに大きなデータ容量を配布できる。次期システムでは複数の計算機で iSCSI ディスクを共有する。 +\section{virsh} +virsh は libvirt に付属する VM 管理コンソールである。libvirt の API で VM を制御することができる。VM の起動や停止、情報の表示、ゲストが接続しているネットワークやデバイスの管理をすることができる。 + +virsh をそのまま使用して複数のユーザを管理するためには、ユーザやグループの設定が必要である。またユーザやグループの設定を行ったとしても、ネットワークなどの操作をを制限することができない。 -そうすることで複数台の計算機で、iSCSI ディスクを使用して VM イメージやユーザのデータを共有する。またそれによって VM をライブマイグレーション可能にする。計算機がメンテナンスをしなければならなかったり、計算機を止める必要のある際に VM を止めずに他の計算機へ移動することができる。 +\section{ie-virsh} + +virsh はグループの設定を行わない限り、root ユーザの権限でのみ使用可能である。virsh を使う管理者以外のユーザ全てに root ユーザの権限を使わせてしまうと、他のユーザに対しての不正な操作や多量の資源取得、ネットワーク等の管理者がするべき操作を許してしまう。 + +そのため ie-virsh の開発を行った\cite{taira:2014}。ie-virsh は virsh をラップすることで作成された VM 管理用のツールである。ie-virsh を使用することにより、他のアカウントの VM を操作させずに VM 所持者に操作させられる。 + +表\ref{table:ievirshfunc}が ie-virsh の機能である。 -そのため Shien システムでは、iSCSI で複数台の計算機から接続された場合に、高速で整合性を保つことのできるファイルシステムを使用する必要がある。 +\begin{tiny} + \begin{table}[ht] + \begin{center} + \caption{ie-virsh のコマンド} + \label{table:ievirshfunc} + \small + \begin{tabular}[t]{c|l} + \hline + define & XML の template を元に domain を作成 \\ + \hline + undefine & define で作成した domain を削除 \\ + \hline + list & define で作成した domain を一覧表示 \\ + \hline + start & 指定した domain 名の VM を起動 \\ + \hline + destroy & 指定した domain 名の VM を停止 \\ + \hline + dumpxml & domain の XML を参照 \\ + \hline + debug & linux kernel のコードを gdb で読む\\ + \hline + \end{tabular} + \end{center} + \end{table} +\end{tiny} -\section{クラウドへの対応} +virsh ではネットワークやストレージの設定を行うことも可能である。しかし ie-virsh では管理者ではないユーザにはネットワークやストレージの操作・設定ができないよう制限している。 -クラウドサービスとは外部のサービス上でウェブサービスなどのシステムを稼働させる事のできるサービスである。 -現在のシステムでは、クラウドサービスへの対応を行っていない。学生が外部のクラウドサービスを使用するためには、自主的にコストを支払い一から構成する。 +\section{ie-virsh による資源の制限} + +複数のアカウントで計算機資源を共有する場合、管理者による資源の制限が必須である。VM の使用が主な ie-virsh では過剰なディスク容量やメモリ、CPU の確保を防がなければならない。 + +ie-virsh がラップしている virsh は、XMLファイルを使って VM を管理している。XML ファイルには VM のパラメータが記述されている。 + +ie-virsh では学生が使用する VM が使用する資源を制限するために、予めこの XML ファイルのテンプレートを作成し利用している。 + +XML テンプレートで予め制限されている設定は、以下のようになる。 -次期システムではクラウド上の資源を確保する。本学科のシステムのバックアップが行え、クラウドサービスを学生が使えるようになる。 +\begin{itemize} + \item ネットワークの設定 + \item I/O 設定 + \item VM イメージのフォーマット + \item CPU 数 + \item メモリ容量 +\end{itemize} -Shien システムでは次期システム構成へ対応するため、クラウドサービスへ学生の開発したサービスやシステムのデプロイが行え、また管理者の負担を抑えて管理できるようにしなければならない。 +これによって学生が使用する背資源を制限し、過剰なメモリや CPU の確保を防ぐ。 +また学生が VM を多く作成するという形で資源を利用してしまうことを防ぐために、作成し操作できる VM の数を4台に制限した。 + +\section{ie-virsh による OS 管理システム} + +ie-virsh によって複数のユーザの VM 管理を行っている。ユーザに Fibre Channel ストレージに VM をアップロードさせ、本学科のブレードサーバ上で Web サービスの開発や実験のために VM を使用させる。 + +Fibre Channel ストレージにより VM イメージを複数のブレードサーバから参照できる。Fibre Channel ストレージは複数の計算機から読み書きすることのできる Filesystem が使用されている。 + +また本学科では Operating System という授業を提供している。この授業では OS について学ぶ一環として VM について学習し、課題を提出させる。課題では VM の環境を学生が設定し、本学科の持つブレードサーバ上に VM をアップロードし、プログラムの実装や計測を行う。ie-virsh による OS 管理システムを使用し、 VM のアップロードから計測までの課題を行わせた。
--- a/paper/chapter3.tex Thu Feb 12 18:06:37 2015 +0900 +++ b/paper/chapter3.tex Sun Feb 15 14:41:11 2015 +0900 @@ -1,4 +1,4 @@ -\chapter{Shien システムの構成} +\chapter{Shien システム} 本章では Shien システムの構成について述べる。 @@ -6,11 +6,11 @@ \section{Fedora} -Shien システムは本学科の次期システムに合わせて設計する。そのためには最新のソフトウエアを取り入れ、次期システムが稼働する際に安定になっているものを検証する必要がある。 +Shien システムは本学科の次期システムに合わせて設計する。そのためには最新のソフトウエアを取り入れ、次期システムが稼働する頃に安定な構成を検証する必要がある。 -Fedora は最新の技術を積極的に取り込んでおり、その成果を Ret Hat Enterprise Linux に取り込まれるといった検証目的の位置づけになっている。 +Fedora は最新の技術を積極的に取り込んでおり、その成果を Red Hat Enterprise Linux に取り込まれるといった検証目的の位置づけになっている。また本学科の基幹システムでは主に CentOS が使われている。CentOS は Red Hat Enterprise Linux と完全互換を目指した Linux ディストリビューションである。 -最新の Fedora を使用することによって、教育用 OS 管理システムで使われる OS やソフトウエアを予測し、また検証することが可能である。そのため今回のシステムでは Fedora を利用し、次期システムが稼働する際の環境を構築し、検証を行った。 +つまり最新の Fedora を使用することによって、教育用 OS 管理システムで使われる OS やソフトウエアを予測し、また検証することが可能である。そのため今回のシステムでは Fedora を利用し、次期システムが稼働する際の環境を構築し、検証を行った。 \section{Global File System 2 (GFS2)} @@ -22,7 +22,7 @@ \section{Distributed Lock Manager (DLM)} -GFS2 を使用する Red Hat のクラスタでは、ロック機構として DLM が使用される。DLM は GFS2 ファイルシステムへのアクセスなどの、クラスタ内のリソースへのアクセスを制御する。DLM がない場合、共有ストレージへのアクセス制御がなくなり、クラスタ内のノードが相互のデータを破損させる可能性がある。 +GFS2 を使用する Red Hat のクラスタでは、ロック機構として DLM が使用される。DLM は GFS2 ファイルシステムへのアクセスなどの、クラスタ内のリソースへのアクセスを制御する。DLM がない場合、共有ストレージへのアクセス制御がなくなり、クラスタ内のノードが相互のデータを破損させる可能性がある。 DLM は各クラスタノードで実行され、またロック管理はクラスタ内のすべてのノードを対象として行われる。 @@ -78,14 +78,12 @@ iSCSI ディスクに LVM で使用できるパーティションを割り当てる。パーティションを一つにする場合は、Physical Volume と Volume Group、Logical Volume は全て一つである。Logical Volume を GFS2 でフォーマットする。フォーマット時に journaling を指定しなければならない。journaling 数は、GFS2 を参照する計算機の数である。 -GFS2 でフォーマットされた一つの iSCSI ストレージを共有し、iSCSI ストレージに VM のディスクイメージ、Docker のアプリケーションを保存する。これにより複数のブレードサーバ間で VM のイメージの共有や移動、コンテナイメージの移動を簡単に行える。 +GFS2 でフォーマットされた一つの iSCSI ストレージを共有し、iSCSI ストレージに VM のディスクイメージ、コンテナで動かすアプリケーションを保存する。これにより複数のブレードサーバ間で VM のイメージの共有や移動、コンテナイメージの移動を簡単に行える。 \section{ie-virsh debug} -本研究では、ie-virsh の新しい機能として debug コマンドの実装を行った。Linux Kernel のソースコードを読む方法は2つ挙げられる。Linux kernel をダウンロードし、そのソースコードをそのまま読むという手法と、gdb で逐次ソースコード追って読むという手法である。 - -gdb で Linux kernel のソースコードを追う準備には、手間がかかってしまう。また授業で Linux kernel を題材に出す際、gdb で追うことができると課題の幅が広がる。そこで本研究のシステムに、gdb で Linux kernel を追う機能を追加する。 +本研究では、ie-virsh の新しい機能として debug コマンドの実装を行った。 KVM には gdb で接続するための Port を指定し、接続すると gdb から Linux kernel のデバッグへ入ることができる。更に libvirt の XML 設定ファイルに、KVM へ gdb で接続するために開ける VM の Port を記述することで、VM の Port を開くことができる。
--- a/paper/chapter4.tex Thu Feb 12 18:06:37 2015 +0900 +++ b/paper/chapter4.tex Sun Feb 15 14:41:11 2015 +0900 @@ -107,7 +107,7 @@ 任意の Process name を下記のコマンドを使用して割り当て、コンテナを起動する。 \begin{verbatim} -% ie-docker run -it --name [process name] [image name] [exec command] +% ie-docker run -i -t --name [process name] [image name] [exec command] \end{verbatim} Process name は任意に割り当てることができる。同名の Process name は使用できない。また process name はアカウント名が ie-docker によって補完されるため、他のユーザが作成したp Process name と被ることはない。 @@ -118,19 +118,44 @@ % ie-docker start [process name] \end{verbatim} +\section{ie-docker によるコンテナの停止} + +コンテナの停止は下記のコマンドを使用する。 + +\begin{verbatim} +% ie-docker stop [process name] +\end{verbatim} + + \section{Docker からの iSCSI ストレージの使用} -Docker の特徴として、Commit を行なわずにコンテナを止めてしまうと、コンテナ内部に保存していたデータが消える。つまり Commit 前にコンテナ上に追加されたデータを保つためには、コンテナの外部にデータを保存しておかなければならない。 +最初に iSCSI ストレージ上に Repository を作成する。 下記のコマンドを実行することによって管理者が指定した iSCSI ストレージ上のディレクトリに Repository が作成される。また Repository ごとの Port 割り当ても下記のコマンド実行時に行われる。 + +\begin{verbatim} +% ie-docker create [repository name] +\end{verbatim} + +次に Repository name を使用してコンテナを起動する。またコンテナ内部から外へ出す Port を指定する。これによってホストの Port とコンテナの Port を接続し、コンテナの外部と通信することができる。 + +Docker の特徴として、Commit を行なわずにコンテナを止めてしまうと、コンテナ内部に保存していたデータが消える。つまり Commit 前にコンテナに追加されたデータを保つためには、コンテナの外部にデータを保存しておかなければならない。 Shien システムでは、iSCSI で接続されたストレージにコンテナのデータを保存する。そうすることによってデータを保護することができ、またコンテナのイメージ内に動作に必要でないデータを配置しなくてよい。 Docker は、ホストのディレクトリをコンテナ内部のディレクトリにマッピングすることができる。ie-docker もその機能を持つ。-v オプションを使い、下記のように Docker コンテナを実行する。 \begin{verbatim} -% ie-docker run -it -v [directory:container directory] \ +% ie-docker run -i -t -p [port number] -v [directory:container directory] \ --name [process name] fedora:20 /bin/bash \end{verbatim} 実行されたコンテナはホストのディレクトリにマッピングされた、任意の名前のディレクトリを参照することができる。iSCSI ストレージ上にアプリケーションの Repository を配置し、コンテナでその Repository 上のアプリケーションを動作させる。 また ie-docker は指定したディレクトリにまとめてユーザの Repository を作成する。管理者は指定したホストのディレクトリに対して容量の制限をかければよい。 + +起動中のコンテナに対しては、下記のコマンドで接続し操作することができる。 + +\begin{verbatim} +% ie-docker attach [process name] +\end{verbatim} + +attatch 後は Ctrl-p Ctrl-q でコンテナを止めずに切断することができる。
--- a/paper/conclusion.tex Thu Feb 12 18:06:37 2015 +0900 +++ b/paper/conclusion.tex Sun Feb 15 14:41:11 2015 +0900 @@ -20,5 +20,6 @@ 次にコンテナと VM の使い分けを、複数の計算機上でどう行えばよいかを考える必要がある。Shien システムの ie-virsh や ie-docker の構築は、今回一つの計算機上で行った。しかし iSCSI ディスクを共有している計算機は複数あるため、複数の計算機上ではどういった使用が適切か計測し、使用方法を検討する必要がある。 -%\subsection{Treeのバランスの問題} +また複数の計算機で ie-virsh を使用する際に、VM をどの計算機に配置するかを決定する機能が必要である。ie-virsh は現在一つの計算機で動くことを想定している。しかしユーザに配る VM を配置する計算機が複数台ある場合に、計算機のメモリ容量やディスク使用率を見る機能があれば、複数台の計算機に対応することができる。 +ie-docker をクラウドサービスで使わせる場合、継続的インテグレーションに対応すると、ユーザの開発を補助することができる。具体的には Jenkins を各ユーザに使用可能にする。Jenkins は Jenkins ユーザを全ての Build に割り当てるため、ie-docker との協調方法を考えなければならない。
--- a/paper/introduciton.tex Thu Feb 12 18:06:37 2015 +0900 +++ b/paper/introduciton.tex Sun Feb 15 14:41:11 2015 +0900 @@ -1,4 +1,5 @@ -\chapter{序論} +%\chapter{序論} +\chapter{IT 教育向けの計算機管理} IT 技術は VM やコンテナの普及により、より手軽に開発し試せる環境が整ってきている。手元の PC 上で VM やコンテナを立ち上げ、ウェブサービスやシステムの開発を行うことができる。しかし VM やコンテナを使用して IT 技術を学習するためには、高性能 PC の購入や、有料のクラウドサービスを使用しなければならないため、大きなコストがかかる。これらの負担を IT 技術を学ぶ学生に負わせない、新たな仕組みが必要である。