Mercurial > hg > Papers > 2015 > taiki-master
view paper/chapter1.tex @ 1:e117860b3064
add files
author | taiki |
---|---|
date | Tue, 13 Jan 2015 16:20:34 +0900 |
parents | 7a299eb01565 |
children | 93f447ec0e19 |
line wrap: on
line source
\chapter{既存の教育用計算機システム} 本章では、現在使用されている情報工学科の環境について述べる。また、教育用に使用可能な VM や Container 等の資源の管理機構とその特徴について触れる。 \section{情報工学科のシステム} オンプレミスの blade server で構成されており、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{情報工学科のシステム} \label{fig:iesystem} \end{center} \end{figure} \subsection{Web サービス実装} VM を操作するインターフェイスとして、Web サービスを使用することが可能である。GUI を操作するためにブラウザを起動する必要があり、また新しい GUI の操作に慣れなければならない。 VM の作成はメールなどの連絡手段を使って、管理者を通して行う。既成の VM を blade server へアップロードするにも、管理者と連絡し手続きを取る。 \subsection{VMWare vSphere Client} GUI で VM を操作することができ、豊富な機能と高度な操作が可能となっている。VM などの資源に対する操作の権限を細かく扱うことができるため、利用者に対して権限を配布することが可能である。しかし GUI が複雑なため、操作に習熟する必要がある。 \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{Vagrant} Vagrant は異なる環境に移行可能な開発環境を構築・管理・配布することができる開発環境作成ツールである。手軽にテスト環境を導入・破棄することができ、変更が加わっても開発環境・本番環境に自動的に適用できる。 VirtaulBox などのプロバイダを使って、VM を Vagrant 経由で立ち上げる。手軽に起動・停止・ssh ログインできるため、Web サービスの開発や開発環境の配布などに利用される。 Vagrant は KVM をプロバイダとするプラグインを持っており、 KVM を VirtualBox のようにプロバイダとして動作させることができる。KVM 上の VM を Vagrant の操作と同じように起動・停止・設定することが可能となっている。 \subsection{Vagrant Box} Vagrant で VM を利用する際に、VM のベースとなるイメージファイルが Vagrant Box である。 Vagrant で Vagrant Box を VM イメージとして起動し、設定し、開発環境を配布することができる。また配布されている Vagrant Box を取得して起動し、使用することができる。 \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 に対応している。 \subsection{virsh} virsh は libvirt に付属する VM 管理コンソールである。libvirt の API で VM を制御する。VM の起動や停止、情報の表示、ゲストが接続しているネットワークやデバイスの管理をすることができる。 virsh をそのまま使用して複数のユーザを管理するためには、ユーザやグループの設定が必要である。またユーザやグループの設定を行ったとしても、ネットワークなどの操作をを制限することができない。 \section{Docker} Docker とは、Docker 社が開発してるオープンソースのコンテナ型仮想化ソフトウエアである。Linux 上で Linux Container (LXC) を活用し、コンテナ型の仮想環境を作成する。図\ref{fig:container} は Docker のアーキテクチャである。 \begin{figure}[htpb] \begin{center} \includegraphics[scale=0.7]{figures/container.pdf} \caption{Container architecture} \label{fig:container} \end{center} \end{figure} コンテナは OS 環境を複数のグループに区切って別のサーバのように利用する技術である。KVM などの hypervisor 型の仮想化とは異なり、ホスト OS がまとめて管理する。 Docker は、コンテナでアプリケーションを実行するため、コンピュータリソースの隔離・制限や、他のホスト、他のコンテナとのネットワーク構成や、ファイル・ディレクトリの世代と差分の管理などの機能を持つ。また容易に配布して実行することもできる。 Docker では新しい独自技術をほとんど用いていない。しかし新たなサーバ資源の運用方法として注目されており、学生が学ぶのに必須な技術の一つである。 \section{OpenStack} OpenStack はオープンソースで開発されているクラウド環境構築用のソフトウエア群である。VM やストレージ、ネットワークといった一番レイヤの低いリソースを提供するクラウド環境を構築することができる。 OpenStack は複数のコンポーネントの組み合わせで成り立っている。コンポーネント間を HTTP ベースの REST API か、AMQP (Advanced Message Queuing Protocol) を使った非同期通信で接続し、分散型の協調動作を行っている。 中心となるコンポーネントは Nova であり、役割は VM を起動することである。ユーザからの要求に従い必要な VM を起動するための一切を管理する。Nova は各種 hypervisor に対応している。また、LXC や Docker にも対応している。 管理する権限はネットワークを切りわけ、その下に VM を作成するという形になる。 %\section{docker} 新しく出た container 使うやつ