# HG changeset patch # User taiki # Date 1423188478 -32400 # Node ID bc41d38f98d0e0e3e46ec6566ce3fab98e54cb1c # Parent 9c08c451a8fc09a52557fb5eee437f0c25954c47 update pdf file diff -r 9c08c451a8fc -r bc41d38f98d0 paper/chapter1.tex --- a/paper/chapter1.tex Wed Feb 04 16:41:59 2015 +0900 +++ b/paper/chapter1.tex Fri Feb 06 11:07:58 2015 +0900 @@ -1,29 +1,34 @@ -\chapter{既存のゲスト OS 管理システム} - 本章では、現在使用されている情報工学科の環境について述べる。また、教育用に使用可能な VM やコンテナ等の資源の管理機構とその特徴について触れる。 +\chapter{これまでの学生向け VM 管理システム} + 本章では 2015 年現在使用されている、琉球大学情報工学科 (以下本学科) の運用している 2 つの VM 管理システムについて述べる。 -\section{情報工学科のシステム} - オンプレミスのブレードサーバで構成されており、VMWare ESXi で動作している VM を VMWare vSphere Client で管理している。図\ref{fig:iesystem} のように、VM の所有者はメールでシステム管理者へ VM 作成依頼を行い、学科の提供する Web サービスで VM の起動・停止などの操作を行う。 +\section{VMWare ESXi} +VMWare が無償で配布している Hypervisor であり、計算機に直接インストールし使用することができる。現在本学科では VMWare ESXi を Hypervisor として VM を管理している。 + +\section{VMWare ESXi による VM 管理システム} + オンプレミスのブレードサーバで構成されており、VMWare ESXi で動作している VM を VMWare vSphere Client で管理している。図\ref{fig:iesystem} のように、VM の所有者はメールでシステム管理者へ VM 作成依頼を行い、本学科の提供する Web サービスで VM の起動・停止などの操作を行う。 \begin{figure}[htpb] \begin{center} \includegraphics[scale=0.7]{figures/ie_system.pdf} - \caption{情報工学科のシステム} + \caption{本学科のシステム} \label{fig:iesystem} \end{center} \end{figure} -\section{Web サービス実装} - VM を操作するインターフェイスとして、VMWare の API を使った Web サービスを使用できる。GUI を操作するためにブラウザを起動する必要があり、また新しい GUI の操作に慣れなければならない。 + +\section{本学科の提供する Web サービス} +VM を操作するインターフェイスとして、VMWare の API を使った Web サービスを使用できる。 -情報工学科のシステムでは、VM の操作は Web サービス実装を通して行う。VM の作成はメールなどの連絡手段を使って、管理者を通して行う。既成の VM をブレードサーバへアップロードするにも、管理者と連絡し手続きを取る。 +本学科のシステムでは、VM の操作は Web サービス実装を通して行う。VM の作成はメールなどの連絡手段を使って、管理者を通して行う。既成の VM をブレードサーバへアップロードするにも、管理者と連絡し手続きを取る。 \section{VMWare vSphere Client} - GUI で VM を操作することができ、豊富な機能と高度な操作が可能となっている。VM などの資源に対する操作の権限を細かく扱うことができるため、利用者に対して権限を配布することが可能である。しかし GUI が複雑なため、操作に習熟する必要がある。 - + GUI で VM を操作することができ、豊富な機能と高度な操作が可能となっている。管理者は VMWare vSphere Client での管理を行っている。VM などの資源に対する操作の権限を細かく扱うことができるため、利用者に対して権限を配布することが可能である。しかし GUI が複雑なため、操作に習熟する必要がある。 + + また使用する OS が限定されており、主に Windows でのみ使用可能なため、Mac OS X を推奨している本学科では使用が困難である。 \section{Kernel based Virtual Machine (KVM)} -Linux 自体を VM の実行基盤として機能させるソフトウエアである。無償で利用可能なオープンソースとなっている。CPU の仮想化支援機能を必要とし、完全仮想化により仮想化環境を提供する hypervisor である。 +Linux 自体を VM の実行基盤として機能させるソフトウエアである。無償で利用可能なオープンソースとなっている。CPU の仮想化支援機能を必要とし、完全仮想化により仮想化環境を提供する Hypervisor である。 KVM は Linux のカーネルモジュールとして実装されており、OS が持つメモリ管理プロセスやスケジューリング機能を利用している。 アーキテクチャは図\ref{fig:kvmarch}のようになっている。 @@ -38,8 +43,7 @@ Intel-VT や AMD-V などの仮想化支援機能を持つプロセッサや BIOS の載っている PC 上で動作する。 -情報工学科のシステムは、KVM と VMWare ESXi の2つの hypervisor を利用している。情報工学科全体の VM 管理は、主に VMWare ESXi が使われている。 - +本学科のシステムは、KVM と VMWare ESXi の2つの Hypervisor を利用している。本学科全体の VM 管理は、主に VMWare ESXi が使われている。 \section{libvirt} VM 管理ツールである virsh を含む、 VM の制御を抽象化したライブラリである。 VM の情報を習得・操作することが可能な API 群である。 @@ -52,21 +56,52 @@ \end{center} \end{figure} -図\ref{fig:libvirtarch}のように、アプリケーションから libvirt API を呼び出すと、API に従って内部の VMM API もしくは資源管理 API を呼び出し、制御を行う。libvirt は VM の管理だけではなく、仮想ネットワーク、仮想ストレージも管理することができる。もともとは Xen に対して API を提供していたが、現在は多くの hypervisor に対応している。 +図\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{OpenStack} +\section{ie-virsh} -%OpenStack はオープンソースで開発されているクラウド環境構築用のソフトウエア群である。VM やストレージ、ネットワークといった一番レイヤの低いリソースを提供するクラウド環境を構築することができる。 +virsh はグループの設定を行わない限り、root ユーザでのみ使用可能である。virsh を使う管理者以外のユーザ全てに root ユーザを使わせてしまうと、他のユーザに対しての不正な操作や、多量の資源取得、ネットワーク等の管理者がするべき操作を許してしまう。そのため ie-virsh の開発を行った。ie-virsh は virsh をラップすることで作成された VM 管理用のツールである。ie-virsh を使用することにより、他のアカウントの VM を操作させずに VM 所持者に操作させられる。 -%OpenStack は複数のコンポーネントの組み合わせで成り立っている。コンポーネント間を HTTP ベースの REST API か、AMQP (Advanced Message Queuing Protocol) を使った非同期通信で接続し、分散型の協調動作を行っている。 +表\ref{table:ievirshfunc}が ie-virsh の機能である。 -%中心となるコンポーネントは Nova であり、役割は VM を起動することである。ユーザからの要求に従い必要な VM を起動するための一切を管理する。Nova は各種 hypervisor に対応している。また、LXC や Docker にも対応している。 +\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} -%管理する権限はネットワークを切りわけ、その下に VM を作成するという形になる。 +virsh ではネットワークやストレージの設定を行うことも可能である。しかし ie-virsh では管理者ではない使用者にはネットワークやストレージの設定ができないよう実装している。 + +また ie-virsh には virsh で使用できる、ネットワークの構成の操作などの管理者側がするべき操作はない。管理者でないアカウントでは操作できない。 -%\section{docker} 新しく出た container 使うやつ +\section{ie-virsh による OS 管理システム} + +ie-virsh によって複数のユーザの VM 管理を行っている。 + +また本学科では Operating System という授業を提供している。この授業では OS について学ぶ一環として VM について学習し、課題を提出させる。課題では VM の環境を学生が設定し、本学科の持つブレードサーバ上に VM をアップロードし、プログラムの実装や計測を行う。ie-virsh による OS 管理システムを使用し、 VM のアップロードから計測までの課題を行わせた。 diff -r 9c08c451a8fc -r bc41d38f98d0 paper/chapter2.tex --- a/paper/chapter2.tex Wed Feb 04 16:41:59 2015 +0900 +++ b/paper/chapter2.tex Fri Feb 06 11:07:58 2015 +0900 @@ -22,15 +22,25 @@ Shien システムではユーザが使う資源を管理者が応対すること無く自動的に割り当て、制限できるよう構成する。 -制限するべき資源は、以下のようになる。 +制限可能な資源は、VM の場合は以下のようになる。 \begin{itemize} \item 使用 CPU core 数 \item メモリ容量 \item 作成可能な VM の数 - \item 各ユーザが使用する容量 \end{itemize} +またコンテナの場合は以下のようになる。 + +\begin{itemize} + \item 使用 CPU core 数 + \item メモリ容量 + \item 作成可能なコンテナの数 +\end{itemize} + +これらを制限することができれば、管理者がユーザの資源を固定できる。 + + \section{iSCSIファイルシステムへ対応} 計算機の外部に大容量の記憶媒体を置くことで、計算機そのものに記憶媒体を搭載しなくても多くのユーザに大きなデータ容量を配布できる。次期システムでは iSCSI で複数の計算機と記憶媒体と接続する。 diff -r 9c08c451a8fc -r bc41d38f98d0 paper/chapter3.tex --- a/paper/chapter3.tex Wed Feb 04 16:41:59 2015 +0900 +++ b/paper/chapter3.tex Fri Feb 06 11:07:58 2015 +0900 @@ -18,11 +18,11 @@ GFS2 は、Linux カーネルファイルシステムインターフェィスに直接的に対応するカーネルファイルシステムである。単独システム内、またはクラスタ設定の一部として使用することができる。GFS2 では、すべてのノードから同じ共有ストレージへアクセスできる。クラスタファイルシステムの一部として使用された場合、GFS2 は分散型メタデータと複数ジャーナルを運用する。 -GFS2 を使用するには GFS2 でフォーマットされたディスクへアクセスするノードはクラスタ構成になっていなければならない。 +GFS2 でフォーマットされたディスクへアクセスするノードはクラスタ構成になっていなければならない。 \section{Distributed Lock Manager (DLM)} -Red Hat のクラスタでは DLM が使用される。DLM は GFS2 ファイルシステムへのアクセスなどの、クラスタ内のリソースへのアクセスを制御する。DLM がない場合、共有ストレージへのアクセス制御がなくなり、クラスタ内のノードが相互のデータを破損させる可能性がある。 +GFS2 を使用する Red Hat のクラスタでは、ロック機構として DLM が使用される。DLM は GFS2 ファイルシステムへのアクセスなどの、クラスタ内のリソースへのアクセスを制御する。DLM がない場合、共有ストレージへのアクセス制御がなくなり、クラスタ内のノードが相互のデータを破損させる可能性がある。 DLM は各クラスタノードで実行され、またロック管理はクラスタ内のすべてのノードを対象として行われる。 @@ -36,11 +36,11 @@   \section{The corosync Cluster Engine (corosync)} -corosync は、高可用性を実現するクラスタ基盤ソフトウエアである。 OpenAIS プロジェクトの中で作られたソフトウエアが分離されたものとなっている。 +クラスタを構成するためには、クラスタの基盤が必要である。corosync は、高可用性を実現するクラスタ基盤ソフトウエアである。 Extended virtual syncrony と呼ばれる形式で、マルチキャストやブロードキャストを使ったノード間のメッセージング機能を提供する。また、クラスタ全体でプロセスグループを管理するための管理機能や、基礎的なアプリケーションの監視などの機能も提供する。 -Fedora では過去にクラスタを管理するために使用されていたクラスタManager (CMAN) が削除されているため、今後使用できない。新システムの設計をするためには CMAN を外す必要がある。 +今回使用する Fedora では過去にクラスタを管理するために使用されていた Cluster Manager (CMAN) が削除されているため、今後使用できない。Shien システムの設計をするためには CMAN を外す必要がある。 \section{Logical Volume Manager (LVM)} @@ -70,7 +70,6 @@ 複数のブレードサーバでクラスタを構成する。クラスタの構成には corosync を使う。 -GFS2 でフォーマットされた一つの Fibre Channel ストレージを共有し、Fibre Channel ストレージに VM のディスクイメージ、Docker のアプリケーションを保存する。これにより複数のブレードサーバ間で VM のイメージの共有や移動、コンテナの移動を簡単に行える。 \begin{figure}[htpb] \begin{center} @@ -80,46 +79,9 @@ \end{center} \end{figure} -図\ref{fig:gfs2cluster} がブレードサーバ一台の構成である。 - -\section{ie-virsh} - -ie-virsh は本研究室で開発している、virsh をラップすることで作成された VM 管理用のツールである。ie-virsh を使用することにより、他のアカウントの VM を操作させずに VM 所持者に操作させられる。 - -表\ref{table:ievirshfunc}が ie-virsh の機能である。 +図\ref{fig:gfs2cluster} がブレードサーバ一台の構成である。GFS2 でフォーマットされた一つの iSCSI ストレージを共有し、iSCSI ストレージに VM のディスクイメージ、Docker のアプリケーションを保存する。これにより複数のブレードサーバ間で VM のイメージの共有や移動、コンテナイメージの移動を簡単に行える。 -\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 では管理者ではない使用者にはネットワークやストレージの設定ができないよう実装している。 - -また ie-virsh には virsh で使用できる、ネットワークの構成の操作などの管理者側がするべき操作はない。管理者でないアカウントでは操作できないようになっている。 - -\subsection{資源の制限} +\section{ie-virsh による資源の制限} 複数のアカウントで計算機資源を共有する場合、管理者による資源の制限が必須である。VM の使用が主な ie-virsh では過剰なディスク容量やメモリ、CPU の確保を防がなければならない。 @@ -140,7 +102,7 @@ これによって学生が使用する背資源を制限し、過剰なメモリや CPU の確保を防ぐ。 また学生が VM を多く作成するという形で資源を利用してしまうことを防ぐために、作成し操作できる VM の数を4台に制限した。 -\subsection{ie-virsh debug} +\section{ie-virsh debug} 本研究では、ie-virsh の新しい機能として debug コマンドの実装を行った。Linux Kernel のソースコードを読む方法は2つ挙げられる。Linux kernel をダウンロードし、そのソースコードをそのまま読むという手法と、gdb で逐次ソースコード追って読むという手法である。 @@ -148,7 +110,7 @@ KVM には gdb で接続するための Port を指定し、接続すると gdb から Linux kernel のデバッグへ入ることができる。更に libvirt の XML 設定ファイルに、KVM へ gdb で接続するために開ける VM の Port を記述することで、VM の Port を開くことができる。 -今回は \ref{fig:ievirshdebug} のように、Port の Pool から Port 番号を取得し、デバッグ対象の VM を起動し、その VM へ gdb で接続するという方法で実装した。Port は、libvirt の XML 設定ファイルに Port 番号を書き込み、VM を起動することで割り当てられる。 +今回は図\ref{fig:ievirshdebug} のように、Port の Pool から Port 番号を取得し、デバッグ対象の VM を起動し、その VM へ gdb で接続するという方法で実装した。Port は、libvirt の XML 設定ファイルに Port 番号を書き込み、VM を起動することで割り当てられる。 \begin{figure}[htpb] \begin{center} @@ -209,3 +171,24 @@ \end{center} \end{table} \end{tiny} + +またウェブサービスを ie-docker で動作させる際、複数のコンテナが外部に向けて同一の Port を使用することはできない。そのため図\ref{fig:iedockerport} ie-docker では、docker run を実行すると自動的に Port を取得する。 + +Port を取得後は、リバースプロキシを使用して外部に公開する IP アドレスやドメイン名に Port を割り当て、外部からウェブサービスが参照できるようにする。 + +\begin{figure}[htpb] + \begin{center} + \includegraphics[scale=0.7]{figures/iedockerport.pdf} + \caption{ie-docker による Port の付与} + \label{fig:iedockerport} + \end{center} +\end{figure} + +\section{ie-docker による資源の制限} + +Docker はコンテナごとに使用するメモリの上限を指定することができる。ie-docker では、コンテナのメモリ使用量の制限をユーザ全てに管理者が付与できるよう実装した。 + + +\section{クラウド上での使用} + +クラウドサービスではコンテナをユーザに使用させる。 ie-virsh 、ie-docker は LDAP を参照して資源を制限しているため、クラウド上でも本学科の LDAP を利用する必要がある。 diff -r 9c08c451a8fc -r bc41d38f98d0 paper/chapter4.tex --- a/paper/chapter4.tex Wed Feb 04 16:41:59 2015 +0900 +++ b/paper/chapter4.tex Fri Feb 06 11:07:58 2015 +0900 @@ -1,5 +1,7 @@ \chapter{Shien システムでの管理方法} +本章では、Shien システムを用いたシステム管理の方法と、 VM やコンテナ操作方法を述べる。 + \section{LDAP による権限管理} VMWare vSphere Client では VM やシステムに対する権限を細かく設定できる。しかし各利用者に対して適切な権限を振るのは多くの時間を要するため、自動的に権限を配布する必要がある。 @@ -90,19 +92,39 @@ virsh の機能として、ライブマイグレーション機能がある。GFS2 はライブマイグレーションに対応している。ライブマイグレーション機能を利用することで、他のブレードサーバへ起動中の VM を起動したまま移動させることが可能である。 -\section{kernel debug 方法} +\section{Kernel debug 方法} + +Kernel debug をするためには、下記のコマンドを実行する。 +\begin{verbatim} +% ie-virsh debug +\end{verbatim} + +実行すると Port の Pool から Port を取得する。取得した Port を使用し Kernel debug のための VM が起動する。 VM の起動後に自動的に gdb が立ち上がる。取得した Port を使い、gdb から Kernel debug のための VM に接続する。 \section{Docker の起動} 本研究で新たに実装を行った ie-docker は Docker のラッパーとなっている。任意の Process name を下記のコマンドを使用して割り当てる。 \begin{verbatim} -% ie-docker run -it --name [process name] fedora:20 /bin/bash +% ie-docker run -it --name [process name] [image name] [exec command] \end{verbatim} Process name は任意に割り当てることができる。また process name はアカウント名が ie-docker によって補完されるため、他のアカウントと被ることはない。 -\section{Docker からの Fibre Channel ストレージの使用} +\section{Docker からの iSCSI ストレージの使用} + +Docker の特徴として、Commit を行なわずにコンテナを止めてしまうと、コンテナ内部に保存していたデータが消える。つまり Commit 前にコンテナ上に追加されたデータを保つためには、コンテナの外部にデータを保存しておかなければならない。 + +Shien システムでは、iSCSI で接続されたストレージにコンテナのデータを保存する。そうすることによってデータを保護することができ、またコンテナのイメージ内に動作に必要でないデータを配置しなくてよい。 + +Docker は、ホストのディレクトリをコンテナ内部のディレクトリにマッピングすることができる。ie-docker もその機能を持つ。-v オプションを使い、下記のように Docker コンテナを実行する。 -Docker のコンテナに直接データを置くことは、コンテナ内部にデータを置かない。 +\begin{verbatim} +% ie-docker run -it -v [directory:container directory] \ + --name [process name] fedora:20 /bin/bash +\end{verbatim} + +実行されたコンテナはホストのディレクトリにマッピングされた、任意の名前のディレクトリを参照することができる。iSCSI ストレージ上にアプリケーションのリポジトリを配置し、コンテナでそのリポジトリ上のアプリケーションを動作させる。 + + diff -r 9c08c451a8fc -r bc41d38f98d0 paper/chapter5.tex --- a/paper/chapter5.tex Wed Feb 04 16:41:59 2015 +0900 +++ b/paper/chapter5.tex Fri Feb 06 11:07:58 2015 +0900 @@ -1,31 +1,64 @@ \chapter{Shien システムの評価} + + \section{実験環境} +Shien システムの検証目的の一つは、本学科の次期システムでの使用を検討するものである。評価には現在本学科でのブレードサーバ環境を使用した。ブレードサーバの仕様は表\ref{tab:server_spec}となっている。 + \begin{table}[!htbp] \caption{ブレードサーバの仕様} \label{tab:server_spec} -\begin{center} -\begin{tabular}{|c||c|} \hline -名前 & 概要 \\ \hline \hline -CPU & Intel(R) Xeon(R) CPU X5650@2.67GHz \\ \hline -物理コア数 & 12 \\ \hline -論理コア数 & 24 \\ \hline -Memory & 132GB \\ \hline -OS & Fedora 20 \\ \hline -\end{tabular} -\end{center} + \begin{center} + \begin{tabular}{|c||c|} \hline + 名前 & 概要 \\ \hline \hline + CPU & Intel(R) Xeon(R) CPU X5650@2.67GHz \\ \hline + 物理コア数 & 12 \\ \hline + 論理コア数 & 24 \\ \hline + Memory & 132GB \\ \hline + OS & Fedora 20 \\ \hline + \end{tabular} + \end{center} \end{table} +また現在の、本学科の計算機システムと接続されているストレージは Fibre Channel ストレージである。そのため Fibre Channel ストレージを用いて GFS2 の計測を行った。 + +Benchmark は Filebench というベンチマークツールを用いて行った。Filebench はファイルシステムパフォーマンスの測定と比較のためにファイルシステムのワークロードをフレームワーク化したものである。シンプルなワークロード構築用の言語 .f 言語が搭載されている。 + +Filebench は .f 言語で書かれた基本的なワークロードを持っている。今回はそのワークロードを用いて計測を行った。 + \section{Filesystem の速度比較} +\begin{figure}[htpb] + \begin{center} + \includegraphics[scale=1.0]{gnuplot/filesystem_read_bench.pdf} + \caption{Filesystem ごとの Random read 性能比較} + \label{fig:filesystem_randomread} + \end{center} +\end{figure} + +\begin{figure}[htpb] + \begin{center} + \includegraphics[scale=1.0]{gnuplot/filesystem_write_bench.pdf} + \caption{Filesystem ごとの Random write 性能比較} + \label{fig:filesystem_randomwrite} + \end{center} +\end{figure} + +\subsection{考察} + + + \section{GFS2 上の複数ノードの計測} +\subsection{考察} + \section{GFS2 上の VM イメージを使った複数ノードの計測} -\section{VM とコンテナとの比較} +\subsection{考察} - +\section{VM とコンテナとの比較} +\subsection{考察} \section{授業 Operating System での使用} @@ -37,19 +70,24 @@ \section{外部へ公開} +本学科では学生に向けてグローバル IP アドレスを配布しており、ie-virsh で管理される VM はグローバル IP アドレスを割り当て、公開していた。 + +しかし授業 Operating System での使用の際、全ての VM にグローバル IP アドレスを割り当てていたため、学生に VM のセキュリティ設定が委ねられていた。 + +授業の課題のために起動し放置していた、外部からの攻撃に対して脆弱な VM があった場合は VM の停止を呼びかけるか、VM のPort やユーザ名、パスワードが脆弱でないか調査する仕組みが必要である。 -\subsection{Vagrant} +\section{Vagrant} Vagrant は異なる環境に移行可能な開発環境を構築・管理・配布することができる開発環境作成ツールである。手軽にテスト環境を導入・破棄することができ、変更が加わっても開発環境・本番環境に自動的に適用できる。 VirtaulBox などのプロバイダを使って、VM を Vagrant 経由で立ち上げる。手軽に起動・停止・ssh ログインできるため、Web サービスの開発や開発環境の配布などに利用される。 Vagrant は KVM をプロバイダとするプラグインを持っており、 KVM を VirtualBox のようにプロバイダとして動作させることができる。KVM 上の VM を Vagrant の操作と同じように起動・停止・設定することが可能となっている。 -\subsection{Vagrant Box} +\section{Vagrant Box} Vagrant で VM を利用する際に、VM のベースとなるイメージファイルが Vagrant Box である。 Vagrant で Vagrant Box を VM イメージとして起動し、設定し、開発環境を配布することができる。また配布されている Vagrant Box を取得して起動し、使用することができる。 -\subsection{Vagrant Box について} +\section{Vagrant Box について} 授業 Operating System では、ie-virsh の VM イメージに Vagrant Box を使用した。受講者の PC 上で Vagrant を使って開発環境を作成させ、その VM イメージをブレードサーバにアップロードして変換し、ie-virsh で起動する。そうすることで Vagrant で作成した開発環境を ie-virsh からそのまま使用することができる。 diff -r 9c08c451a8fc -r bc41d38f98d0 paper/figures/ie_system.pdf Binary file paper/figures/ie_system.pdf has changed diff -r 9c08c451a8fc -r bc41d38f98d0 paper/graffle/ie_system.graffle --- a/paper/graffle/ie_system.graffle Wed Feb 04 16:41:59 2015 +0900 +++ b/paper/graffle/ie_system.graffle Fri Feb 06 11:07:58 2015 +0900 @@ -53,7 +53,7 @@ Bounds - {{386, 161.03441047668457}, {127, 18}} + {{389, 156.00000190734863}, {127, 18}} Class ShapedGraphic FitText @@ -87,7 +87,7 @@ Pad 0 Text - {\rtf1\ansi\ansicpg1252\cocoartf1343\cocoasubrtf160 + {\rtf1\ansi\ansicpg1252\cocoartf1344\cocoasubrtf720 \cocoascreenfonts1{\fonttbl\f0\fnil\fcharset128 HiraKakuProN-W3;} {\colortbl;\red255\green255\blue255;} \pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc @@ -111,8 +111,8 @@ 28 Points - {393.19020754347304, 138.41599173258288} - {320.50271424253191, 247.4187619356365} + {393.13422700133799, 138.41551993867338} + {320.18136422328325, 247.41468793350703} Style @@ -136,7 +136,7 @@ Bounds - {{228.47152709960938, 136}, {84, 18}} + {{240.47152709960938, 136}, {60, 18}} Class ShapedGraphic FitText @@ -170,12 +170,12 @@ Pad 0 Text - {\rtf1\ansi\ansicpg1252\cocoartf1343\cocoasubrtf160 + {\rtf1\ansi\ansicpg1252\cocoartf1344\cocoasubrtf720 \cocoascreenfonts1{\fonttbl\f0\fnil\fcharset128 HiraKakuProN-W3;} {\colortbl;\red255\green255\blue255;} \pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc -\f0\fs24 \cf0 \'83\'41\'83\'4a\'83\'45\'83\'93\'83\'67\'94\'7a\'95\'7a} +\f0\fs24 \cf0 \'8d\'ec\'90\'ac\'82\'cc\'8b\'96\'89\'c2} VerticalPad 0 @@ -229,7 +229,7 @@ Text Text - {\rtf1\ansi\ansicpg1252\cocoartf1343\cocoasubrtf160 + {\rtf1\ansi\ansicpg1252\cocoartf1344\cocoasubrtf720 \cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;} {\colortbl;\red255\green255\blue255;} \pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc @@ -239,7 +239,7 @@ Bounds - {{124.17721557617188, 161.0344066619873}, {54, 18}} + {{373.35443115234375, 174}, {54, 18}} Class ShapedGraphic FitText @@ -247,7 +247,7 @@ Flow Resize ID - 22 + 30 Shape Rectangle Style @@ -273,7 +273,7 @@ Pad 0 Text - {\rtf1\ansi\ansicpg1252\cocoartf1343\cocoasubrtf160 + {\rtf1\ansi\ansicpg1252\cocoartf1344\cocoasubrtf720 \cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;\f1\fnil\fcharset128 HiraKakuProN-W3;} {\colortbl;\red255\green255\blue255;} \pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc @@ -287,41 +287,6 @@ NO - Class - LineGraphic - Head - - ID - 23 - - ID - 21 - Points - - {159.82417557564457, 138.32031112804765} - {291.45231418261722, 248.1376441427858} - - Style - - stroke - - HeadArrow - FilledArrow - Legacy - - LineType - 1 - TailArrow - 0 - - - Tail - - ID - 17 - - - Bounds {{258.47152709960938, 84}, {24, 18}} Class @@ -357,7 +322,7 @@ Pad 0 Text - {\rtf1\ansi\ansicpg1252\cocoartf1343\cocoasubrtf160 + {\rtf1\ansi\ansicpg1252\cocoartf1344\cocoasubrtf720 \cocoascreenfonts1{\fonttbl\f0\fnil\fcharset128 HiraKakuProN-W3;} {\colortbl;\red255\green255\blue255;} \pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc @@ -408,7 +373,7 @@ Text Text - {\rtf1\ansi\ansicpg1252\cocoartf1343\cocoasubrtf160 + {\rtf1\ansi\ansicpg1252\cocoartf1344\cocoasubrtf720 \cocoascreenfonts1{\fonttbl\f0\fnil\fcharset128 HiraKakuProN-W3;} {\colortbl;\red255\green255\blue255;} \pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc @@ -428,7 +393,7 @@ Text Text - {\rtf1\ansi\ansicpg1252\cocoartf1343\cocoasubrtf160 + {\rtf1\ansi\ansicpg1252\cocoartf1344\cocoasubrtf720 \cocoascreenfonts1{\fonttbl\f0\fnil\fcharset128 HiraKakuProN-W3;} {\colortbl;\red255\green255\blue255;} \pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc @@ -468,7 +433,7 @@ Pad 0 Text - {\rtf1\ansi\ansicpg1252\cocoartf1343\cocoasubrtf160 + {\rtf1\ansi\ansicpg1252\cocoartf1344\cocoasubrtf720 \cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;} {\colortbl;\red255\green255\blue255;} \pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc @@ -492,7 +457,7 @@ Text Text - {\rtf1\ansi\ansicpg1252\cocoartf1343\cocoasubrtf160 + {\rtf1\ansi\ansicpg1252\cocoartf1344\cocoasubrtf720 \cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;} {\colortbl;\red255\green255\blue255;} \pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc @@ -512,7 +477,7 @@ Text Text - {\rtf1\ansi\ansicpg1252\cocoartf1343\cocoasubrtf160 + {\rtf1\ansi\ansicpg1252\cocoartf1344\cocoasubrtf720 \cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;} {\colortbl;\red255\green255\blue255;} \pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc @@ -532,7 +497,7 @@ Text Text - {\rtf1\ansi\ansicpg1252\cocoartf1343\cocoasubrtf160 + {\rtf1\ansi\ansicpg1252\cocoartf1344\cocoasubrtf720 \cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;} {\colortbl;\red255\green255\blue255;} \pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc @@ -582,7 +547,7 @@ Pad 0 Text - {\rtf1\ansi\ansicpg1252\cocoartf1343\cocoasubrtf160 + {\rtf1\ansi\ansicpg1252\cocoartf1344\cocoasubrtf720 \cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;} {\colortbl;\red255\green255\blue255;} \pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc @@ -616,7 +581,7 @@ Text Text - {\rtf1\ansi\ansicpg1252\cocoartf1343\cocoasubrtf160 + {\rtf1\ansi\ansicpg1252\cocoartf1344\cocoasubrtf720 \cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;} {\colortbl;\red255\green255\blue255;} \pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc @@ -636,7 +601,7 @@ Text Text - {\rtf1\ansi\ansicpg1252\cocoartf1343\cocoasubrtf160 + {\rtf1\ansi\ansicpg1252\cocoartf1344\cocoasubrtf720 \cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;} {\colortbl;\red255\green255\blue255;} \pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc @@ -692,7 +657,7 @@ MasterSheets ModificationDate - 2015-01-07 08:08:40 +0000 + 2015-02-05 01:28:12 +0000 Modifier 平良太貴 NotesVisible diff -r 9c08c451a8fc -r bc41d38f98d0 paper/introduciton.tex --- a/paper/introduciton.tex Wed Feb 04 16:41:59 2015 +0900 +++ b/paper/introduciton.tex Fri Feb 06 11:07:58 2015 +0900 @@ -1,9 +1,9 @@ \chapter{序論} -IT 技術は Virtual Machine (以下 VM) やコンテナの普及により、より手軽に開発し試せる環境が整ってきている。手元の PC 上で VM やコンテナを立ち上げ、ウェブサービスやシステムの開発を行うことができる。しかし IT 技術を学習するためには、高性能 PC の購入や、有料のクラウドサービスの使用する必要があるためコストがかかる。これらの負担を IT 技術を学ぶ学生に負わせない、新たな仕組みが必要になってきている。 +IT 技術は Virtual Machine (以下 VM) やコンテナの普及により、より手軽に開発し試せる環境が整ってきている。手元の PC 上で VM やコンテナを立ち上げ、ウェブサービスやシステムの開発を行うことができる。しかし VM やコンテナを使用して IT 技術を学習するためには、高性能 PC の購入や、有料のクラウドサービスを使用しなければならないためコストがかかる。これらの負担を IT 技術を学ぶ学生に負わせない、新たな仕組みが必要にである。 そのため、学生が IT 技術を学習するための環境を提供したい。また提供した環境を使用させるにあたり、管理者への煩雑な手続きを無くすことで管理者の負担を減らさなければならない。管理者側の負担として、VM の作成や VM イメージのアップロード、VM のセキュリティ管理が挙げられる。 - + 情報工学科では定期的にシステム構成の変更を行う。クラウドサービスと連携し、学生が開発したサービスをオンプレミスの環境から外部のサービスへ移行することで、サービスへの高速なアクセスが可能になる。 そこで当研究室では、学生に VM を提供し、資源を管理するための ie-virsh を開発している。 ie-virsh は複数の hypervisor に対応した virsh のラッパーとなっている。 diff -r 9c08c451a8fc -r bc41d38f98d0 paper/master_paper.pdf Binary file paper/master_paper.pdf has changed diff -r 9c08c451a8fc -r bc41d38f98d0 paper/master_paper.tex --- a/paper/master_paper.tex Wed Feb 04 16:41:59 2015 +0900 +++ b/paper/master_paper.tex Fri Feb 06 11:07:58 2015 +0900 @@ -7,7 +7,8 @@ \usepackage{comment} %\input{dummy.tex} %% font -\jtitle{IT 技術学習のための教育用計算機システムの研究} +\jtitle{IT 技術学習のための + \\教育用計算機システムの研究} %\etitle{} \year{平成26年度} \affiliation{\center%