0
|
1 \section{ie-virsh}\label{section:ievirsh}
|
10
|
2 ie-virsh は、virsh をラップして作られた VM 管理用のツールである。学生は ssh で学科アカウントを使用してブレードサーバに接続し、ie-virsh を使用して VM を操作することができる。
|
0
|
3 表\ref{table:ievirshfunc}が ie-virsh の機能である。
|
|
4
|
|
5 \begin{tiny}
|
|
6 \begin{table}[ht]
|
|
7 \begin{center}
|
|
8 \caption{ie-virsh のコマンド}
|
|
9 \label{table:ievirshfunc}
|
|
10 \small
|
|
11 \begin{tabular}[t]{c|l}
|
|
12 \hline
|
|
13 define & XML の template を元に domain を作成 \\
|
|
14 \hline
|
|
15 undefine & define で作成した domain を削除 \\
|
|
16 \hline
|
|
17 list & define で作成した domain を一覧表示 \\
|
|
18 \hline
|
|
19 start & 指定した domain 名の VM を起動 \\
|
|
20 \hline
|
|
21 destroy & 指定した domain 名の VM を停止 \\
|
|
22 \hline
|
|
23 dumpxml & domain の XML を参照 \\
|
|
24 \hline
|
|
25 \end{tabular}
|
|
26 \end{center}
|
|
27 \end{table}
|
|
28 \end{tiny}
|
|
29
|
10
|
30 ie-virsh には virsh にあるような、ネットワークの構成などの管理者側がするべき操作はなく、管理者でない学生は操作できないようになっている。また学生は、他の学生の VM を操作することもできない。
|
0
|
31
|
14
|
32 学生が ie-virsh を使用して VM を起動する手順はこうである。まず学生のノートPCで、VMWare や VirtualBox を使って Linux をインストールし、イメージを作成する。作成したイメージをブレードサーバにアップロードする。イメージを VirtualBox の OVF 形式から qcow2 形式に変換して指定のディレクトリに配置し、以下のコマンドを実行する。
|
0
|
33
|
|
34 \begin{verbatim}
|
|
35 % ie-virsh define [domain name]
|
|
36 \end{verbatim}
|
|
37
|
|
38 そうすると、template XML を元に domain が生成される。
|
14
|
39 ie-virsh は XML の template を持ち、その template は学生が VM のイメージをブレードサーバにアップロードして define した際に使用される。template には virsh 上で VM を使用するために必要な設定が記述されている。
|
18
|
40 生成された 設定 XML は KVM の所定の位置に格納される。
|
|
41 設定XMLには、OSFS2上の学生の固有の場所の仮想マシンイメージへのpathが記述されている。学生は、指定の位置にイメージを指定することにより任意のVMを実行することができる。
|
0
|
42 生成された domain は以下のように起動することができる。
|
|
43
|
|
44 \begin{verbatim}
|
|
45 % ie-virsh start [domain name]
|
|
46 \end{verbatim}
|
|
47
|
10
|
48 自身が持っている VM の状態を、下記のコマンドで見ることができる。
|
0
|
49
|
|
50 \begin{verbatim}
|
|
51 % ie-virsh list
|
14
|
52 uid 45273 gid 45273 name taiki
|
|
53 - test/taiki/01 shut off
|
|
54
|
|
55 - test/taiki/02 shut off
|
0
|
56 \end{verbatim}
|
|
57
|
10
|
58 \subsection{ie-virsh の動作環境}
|
|
59
|
|
60 ホストサーバの環境は以下である。
|
|
61
|
|
62 \begin{itemize}
|
|
63 \item OS:debian
|
|
64 \item CPU: Intel(R) Xeon(R) CPU X5650 @ 2.67GHz
|
14
|
65 \item CPU 数: 2
|
|
66 \item Core 数: 6 core (論理 core 24)
|
|
67 \item メモリ: 128GB
|
10
|
68 \end{itemize}
|
|
69
|
|
70 SAN は Oracle Cluster Filesystem(OCFS2) でのフォーマットを行った。OCFS2 は汎用の、共有ディスククラスタファイルシステムである。一つのブロックデバイスを複数の PC から同時に読み書きすることができる。
|
|
71
|
|
72 各計算ノードがそれぞれファイルシステムへの処理を行い、ストレージに対して個別に読み書きをする。一貫性を持った読み書きを実現する機構として Distributed Lock Manager (DLM) が使われる。DLM で他の計算ノードと矛盾しないように調整しながらそれぞれの計算ノードが並行してストレージへの読み書きを行うことで、全体として一貫性のあるファイルシステムを実現している。
|
|
73
|
|
74 標準のファイルシステムインターフェイスを通じてすべてのノードが並行してストレージに読み書きできるため、クラスタにまたがって動作するアプリケーションの管理が容易になる。
|
|
75
|
|
76 OCFS2 との接続は、図\ref{fig:sanstructure}となっている。複数台のブレードサーバから OCFS2 でフォーマットされたファイルシステムへ接続し、書き込みを行う。ブレードに内蔵されている SSD では大量の VM イメージを保存するには足りないため、外部の記憶装置を利用する必要があるためである。
|
14
|
77 また別のブレードサーバ上に KVM をたてた場合に移行が容易になる。
|
10
|
78
|
|
79 \begin{figure}[htb]
|
|
80 \begin{center}
|
|
81 \includegraphics[scale=0.6]{./images/sanstructure.pdf}
|
|
82 \end{center}
|
13
|
83 \caption{San structure}
|
10
|
84 \label{fig:sanstructure}
|
|
85 \end{figure}
|
|
86
|
|
87 情報工学科では、グローバルIPアドレスを取得することができる。学生は取得したIPアドレスを使用して VM へ ssh アクセスする。そのため、virsh が作る仮想ネットワークではなく、情報工学科の DHCP サーバによって学生のIPアドレスが受け取られるように設定する必要がある。それには仮想ブリッジを配置してその問題に対処した。
|
|
88
|
|
89 図\ref{fig:serverstructure}は ie-virsh を使用して学生が VM を配置するホストの構成である。
|
|
90
|
|
91 \begin{figure}[htb]
|
|
92 \begin{center}
|
|
93 \includegraphics[scale=0.6]{./images/serverstructure.pdf}
|
|
94 \end{center}
|
|
95 \caption{Server structure}
|
|
96 \label{fig:serverstructure}
|
|
97 \end{figure}
|
|
98
|
|
99
|
|
100 \subsection{資源の制限}
|
|
101 学生が作成する VM は、XML のテンプレートを元に作成される。テンプレートは VM にしておくべき設定が記述されており、ie-virsh はこのテンプレートを元に学生の XML ファイルを生成する。
|
|
102 XML template にされている設定は以下のようになる。これによって学生が使用するブレードサーバの資源を制限し、過剰なメモリや CPU の確保を防ぐ。
|
5
|
103
|
|
104 \begin{itemize}
|
|
105 \item ネットワークの設定
|
|
106 \item I/O 設定
|
|
107 \item VM イメージのフォーマット
|
|
108 \item CPU 数
|
|
109 \item メモリ容量
|
|
110 \end{itemize}
|
|
111
|
|
112 ie-virsh は XML template を元に以下の設定を追記したファイルを作成する。
|
|
113
|
|
114 \begin{itemize}
|
|
115 \item VM 名
|
|
116 \item UUID
|
|
117 \item VM イメージの配置
|
|
118 \end{itemize}
|
|
119
|
10
|
120 また学生が VM を大量に作成することを防ぐため、作成できる VM の台数を4台に制限した。授業 Operating System を 60 名の学生が受講する場合、最大 240 台作成される。
|
|
121
|
14
|
122 学生の Web サービス構築の学習や、授業 Operating System で複数の学生の使用に対応するため ie-virsh はマルチユーザで動作する必要がある。情報工学科で使用されている LDAP サーバの情報を使用して、学生が学科のアカウントで ssh ログイン可能な状態に設定した。そうすることで、学生一人一人のアカウントを登録する必要がない。またアカウント名は学籍番号になっているため学籍番号で管理することができる。
|
10
|
123
|
14
|
124 複数の学生に VM を貸し出す際に管理しなければならないのは、学生が持つ権限である。ie-virsh で学生が可能なことは、自身の VM の作成・削除と、起動・停止である。すべての VM に関係する仮想ネットワークの設定や、他の学生の VM に対する操作はできないように設定した。
|
10
|
125
|
|
126 \subsection{Vagrant Box の利用}
|
|
127
|
|
128 VM を使用する際は学生の PC で VM を設定し、VM イメージをアップロードさせるという形をとった。授業 Operating System では VM を学ぶ環境として学生の PC で Vagrant を使用させた。
|
|
129
|
|
130 Vagrant は異なる環境に移行可能な開発環境を簡単に構築・管理・配布することが出来る開発環境作成ツールである。手軽にテスト環境を導入することができ、変更が加わっても開発環境・本番環境に自動的に適用される。また、環境を気軽に捨てることも可能である。ホスト環境として、VirtualBox や VMWare などで動かすことができる。表\ref{table:vagrantfunc}は Vagrant で使用することの主な機能である。
|
|
131
|
|
132 \begin{tiny}
|
|
133 \begin{table}
|
|
134 \begin{center}
|
|
135 \caption{vagrant の主なコマンド}
|
|
136 \label{table:vagrantfunc}
|
|
137 \small
|
|
138 \begin{tabular}[t]{c|l}
|
|
139 \hline
|
|
140 up & Vagrant Box を起動 \\
|
|
141 \hline
|
|
142 destroy & 仮想マシンの削除 \\
|
|
143 \hline
|
|
144 halt & 起動している Vagrant Box の停止 \\
|
|
145 \hline
|
|
146 ssh & 起動している Vagrant Box へ ssh 接続 \\
|
|
147 \hline
|
|
148 status & ステータスの確認 \\
|
|
149 \hline
|
|
150 box add & 新しい Vagrant Box の追加 \\
|
|
151 \hline
|
|
152 \end{tabular}
|
|
153 \end{center}
|
|
154 \end{table}
|
|
155 \end{tiny}
|
|
156
|
16
|
157 また Vagrant で仮想マシンを利用する際に、仮想マシンのベースとなるイメージファイルが Vagrant Box である。Vagrant で Vagrant Box を VM イメージとして起動し、開発環境を構築し配布することができる。また配布されている Vagrant Box を取得し、Vagrant で起動し使用することが可能である。
|
10
|
158
|
14
|
159 Vagrant は学生の PC の VirtualBox で使用させたため、Vagrant Box の VM イメージは VirtualBox に対応する OVF 形式となっていた。そのため OVF 形式から、KVM で動作する形式へ変換する必要があった。学生はブレードサーバへ VM イメージをアップロードする際、OVF 形式から KVM で動作する qcow2 形式へ変換する。
|
|
160
|
|
161 しかし Vagrant Box イメージは簡易なパスワードとユーザ名で Vagrant から管理されており、そのままブレードサーバへアップロードしグローバルIPアドレスを割り当ててしまうと、外部からの攻撃を受けてしまう。そのためブレードサーバへアップロードしたイメージを検知し、攻撃されないような設定かどうかを確認する必要がある。
|