view paper/libvirt.tex @ 19:ccc2b9df6acb

add file
author taiki <taiki@cr.ie.u-ryukyu.ac.jp>
date Tue, 22 Apr 2014 18:13:28 +0900
parents
children
line wrap: on
line source

\section{libvirt}
VM 管理ツールである virsh を含む、仮想マシンの制御を抽象化したライブラリである。VM の情報を習得、操作することが可能な API 群となっている。C 言語の API を持っており、それ以外の言語にもバインディングされている。

図\ref{fig:libvirtarch}は libvirt のアーキテクチャの概要である。アプリケーションから libvirt API を呼び出すと、API に従って内部の VMM API もしくは資源管理 API を呼び出し、制御する。

\begin{figure}[htb]
    \begin{center}
        \includegraphics[scale=0.6]{./images/libvirtarch.pdf}
    \end{center}
    \caption{libvirt architecture}
    \label{fig:libvirtarch}
\end{figure}

libvirt は VM の管理だけでなく、仮想ネットワーク、仮想ストレージも管理することができる。もともとは Xen に対して API を提供していたが、2014 年現在、多くのハイパーバイザに対応している。本研究では KVM をハイパーバイザとした。
libvirt は XML にパラメータを保存することができる。以下が XML に保存できるパラメータである。

\begin{itemize}
\item VM 名(domain 名)
\item 割り当てる CPU・メモリ
\item ディスクの形式
\item 起動オプション
\item ネットワーク設定
\item コンソール設定
\end{itemize}

libvirt でこれらを管理することにより、ハイパーバイザの煩雑なオプションの管理をしなくてすむ。

\section{virsh}
libvirt には virsh というコマンドラインインターフェイスがあり、libvirt の API でできる制御の殆どを virsh で制御できる。VM の起動や停止、情報の表示、ゲストが接続しているネットワークやデバイスの管理をすることができる。また、virsh を使用することでゲストを別のホストへ移行することも可能である。
この virsh をラップし、複数の学生が学生自身の VM のみを操作できるように実装する。