view paper/chapter2.tex @ 1:e117860b3064

add files
author taiki
date Tue, 13 Jan 2015 16:20:34 +0900
parents 7a299eb01565
children f24c74af0ff2
line wrap: on
line source

\chapter{提案する教育用計算機システム}

本研究で提案するシステムは、学生が計算機資源を学習に活用できるよう補助するシステムである。また開発したアプリケーションのデプロイを行える環境を提供する。

学科の資源である blade server 上に提案する計算機システムを作成し、検証を行う。

複数の blade server で、GFS2 でフォーマットされた一つの Fibre Channel ストレージを共有し、Fibre Channel ストレージに VM のディスクイメージ、docker のアプリケーションを保存する。

\section{Fedora}
RedHat が支援するコミュニティ Fedora Project によって開発されている Linux ディストリビューションである。最新の技術を積極的に取り込んでおり、その成果を Ret Hat Enterprise Linux に取り込まれるといった検証目的の位置づけになっている。

最新の Fedora を使用することによって、教育用計算機システムで使われる OS やソフトウエアを予測し、また検証することが可能である。そのため今回のシステムでは Fedora を利用し、次期システムが稼働する際の環境を構築し、検証を行った。

\section{Global File System 2 (GFS2)}

GFS2 は、Linux カーネルファイルシステムインターフェィスに直接的に対応するカーネルファイルシステムである。単独システム内、またはクラスタ設定の一部として使用することができる。GFS2 では、すべてのノードから同じ共有ストレージへアクセスできる。クラスタファイルシステムの一部として使用された場合、GFS2 は分散型メタデータと複数ジャーナルを運用する。

また GFS2 は 64-bit アーキテクチャを土台にしており、理論的に 8EB のファイルシステムを収容することができる。

\section{Distributed Lock Manager (DLM)} 

Red Hat のクラスタでは DLM が使用される。DLM は GFS2 ファイルシステムへのアクセスなどの、クラスタ内のリソースへのアクセスを制御する。DLM がない場合、共有ストレージへのアクセス制御がなくなり、クラスタ内のノードが相互のデータを破損させる可能性がある。

DLM は各クラスタノードで実行され、またロック管理はクラスタ内のすべてのノードを対象として行われる。
 
\section{The corosync Cluster Engine (corosync)} 

corosync は、高可用性を実現するクラスタ基盤ソフトウエアである。 OpenAIS プロジェクトの中で作られたソフトウエアが分離されたものとなっている。

Extended virtual syncrony と呼ばれる形式で、マルチキャストやブロードキャストを使ったノード間のメッセージング機能を提供する。また、クラスタ全体でプロセスグループを管理するための管理機能や、基礎的なアプリケーションの監視などの機能も提供する。

Fedora では過去にクラスタを管理するために使用されていた Cluster Manager (CMAN) が削除されているため、今後使用できない。新システムの設計をするためには CMAN を外す必要がある。

\section{Logical Volume Manager (LVM)} 

LVM とは、複数のハードディスクやパーティションにまたがった記憶領域を一つの論理的なディスクとして扱うことのできるディスク管理機能である。

LVM はハードディスク内に、物理ボリュームと呼ばれる LVM 用のパーティションを用意する。その物理ボリュームを初期化し、物理エクステントと呼ばれる小さな領域に分割する。複数の物理ボリュームをまとめて新たに作られる管理単位が、ボリュームグループになる。そして実際のパーティション同様に利用できるボリューム、論理ボリュームを作成する。

\section{Clustered Logical Volume Manager (cLVM)}

\section{ie-virsh}
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 では管理者ではない使用者にはネットワークやストレージの設定ができないよう実装している。

また ie-virsh には virsh にあるようなネットワークの構成などの、管理者側がするべき操作はなく、管理者でない使用者には操作できないようになっている。

\subsection{資源の制限}

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}

これによって学生が使用する背資源を制限し、過剰なメモリや CPU の確保を防ぐ。
また学生が VM を多く作成するという形で資源を利用してしまうことを防ぐために、作成できる VM の数を4台に制限した。

\subsection{ie-virsh debug}

本研究では、ie-virsh の新しい機能として debug コマンドの実装を行った。Linux Kernel のソースコードを読む方法は2つ挙げられる。Linux kernel をダウンロードし、そのソースコードをそのまま読むという手法と、gdb で逐次ソースコード追って読むという手法である。

gdb で Linux kernel のソースコードを追うには、手間がかかってしまう。また授業で Linux kernel を題材に出す際、gdb で追うことができると課題の幅が広がる。そこで本研究のシステムに、gdb で Linux kernel を追う機能を追加する。

KVM には gdb で接続するための port を指定し、接続すると gdb から Linux kernel のデバッグへ入ることができる。更に libvirt の XML 設定ファイルに、KVM へ gdb で接続するために開ける VM の port を記述することで、VM の port を開くことができる。

今回は port の pool から port 番号を取得し、デバッグ対象の VM を起動し、その VM へ gdb で接続するという方法で実装した。


\section{ie-docker}

\section{LDAP との連携による権限管理}

\newpage