view paper/chapter/technology_overview.tex @ 10:044832c47f54

update tex
author Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
date Fri, 08 Jan 2021 17:46:34 +0900
parents a5d22b8e0a10
children 00b7356a0706
line wrap: on
line source

\chapter{技術概要}

本章では, 本研究で使われる技術, 本コースで利用しているサービスについて概要を説明する。

\section{仮想化}
仮想化はコンピュータの CPU やメモリ, ディスクなどハードウェアのリソースを分割又は統合して, 
仮想的なコンピュータやネットワーク環境を生成し提供する技術である。
仮想化技術にはホストのどの部分から仮想化するかによってホスト型, ハイパーバイザー型, コンテナ型に分けることができる。

\subsection{ホスト型}
ホスト型の仮想化は, ホストとなるOS上 (以下, ホストOS) に仮想化ソフトウェアをインストールし, 仮想化ソフトウェア上で別のOS (以下, ゲストOS) を稼働させる手法である (図\ref{fig:host})。
仮想化ソフトウェアをホストOSのアプリケーションの1つとして導入及び管理できるため, 手軽に仮想化を実現することができる。
しかし, ゲストOSの処理はホストOSを経由しなければならないため, オーバーヘッドが大きくなる。
\begin{figure}[H]
    \begin{center}
        \includegraphics[width=120mm]{fig/host.pdf}
    \end{center}
    \caption{ホスト型}
    \label{fig:host}
\end{figure}

\subsection{ハイパーバイザー型}
ハイパーバイザー型の仮想化は, 仮想化システムを直接ハードウェアにインストールし, ハイパーバイザー上で複数のゲストOSを稼働させる手法である (図\ref{fig:hyper})。
ハイパーバイザーが直接ハードウェアを管理するため仮想化によるオーバーヘッドを小さくすることで, リソースを効率的に利用することができる。
\begin{figure}[H]
    \begin{center}
        \includegraphics[width=120mm]{fig/hyper.pdf}
    \end{center}
    \caption{ハイパーバイザー型}
    \label{fig:hyper}
\end{figure}

\subsection{コンテナ型}
コンテナ型の仮想化は,  OS レベルの仮想化技術を利用して複数のコンテナと呼ばれる独立空間を形成し, 独立空間でアプリケーションをそれぞれ構築することができる手法である (図\ref{fig:container})。
各コンテンはオペレーティングシステムカーネルによって独立したプロセスとして実行される。
前述のホスト型やハイパーバイザー型と比べ, コンテナはゲストOSを起動することなくアプリケーションを実行することができるため, リソース効率が良く処理が軽量である。

\begin{figure}[H]
    \begin{center}
        \includegraphics[width=120mm]{fig/container.pdf}
    \end{center}
    \caption{コンテナ型}
    \label{fig:container}
\end{figure}

\section{KVM}
KVM (Kernel-based Virtual Machine)\cite{kvm} は Linux カーネル 2.6.20 以降に標準搭載されているハイパーバイザーである。
KVM は Intel VT 及び AMD-V を含む x86 ハードウェア上の完全仮想化をサポートしている。
KVM はハイパーバイザーと各仮想マシン間のレイヤーとして Virtio API を使用して, 仮想マシンに準仮想化デバイスを提供する。
これにより, 仮想化によるオーバーヘッドを少なくできる。

\section{Docker}
Docker\cite{docker} は Docker 社が開発, 提供する Linux 上で動作する隔離された Linux コンテナをデプロイ, 実行するアプリケーションである。
Docker はコンテナを実行するだけでなく, コンテナイメージの作成や共有する仕組みも提供している。
Docker コマンドを処理するには Docker daemon と呼ばれるデーモンプロセスを実行する必要がある。
この Docker deamon は Docker で行う処理を一箇所で実施する (図\ref{fig:docker})。
\begin{figure}[H]
    \begin{center}
        \includegraphics[width=150mm]{fig/docker.pdf}
    \end{center}
    \caption{Docker}
    \label{fig:docker}
\end{figure}

\subsection{Docker Registry}
Docker Registry は Dcoker イメージを保存, 配布できるサーバサイドアプリケーションである\cite{registry}。
以下の場合に利用される。
\begin{itemize}
  \item イメージの保存場所を厳密に管理する
  \item イメージを配布するパイプラインを全て所有する
  \item イメージの保存と配布を社内や学内の開発ワークフローに密に統合する
\end{itemize}

\section{Podman}
Podman は RedHat 社が開発, 提供する Linux 上でOCIコンテナを開発, 管理, 実行するためのデーモンレスコンテナエンジンである\cite{podman}。
Podman は OCI準拠のコンテナランタイムに依存するため, 前述した Docker など他のコンテナエンジンと互換性を持つ。
また, Podman CLI は Docker CLI と同じ機能を提供する。
Podman はコンテナとイメージストレージ, コンテナランタイムを介してLinxuカーネルと直接対話することで, デーモンレスで実行される (図\ref{fig:podman})。
Podman の制御かにあるコンテナは, 特権ユーザ又は非特権ユーザのいずれかによって実行することができる。
\begin{figure}[H]
    \begin{center}
        \includegraphics[width=120mm]{fig/podman.pdf}
    \end{center}
    \caption{Podman}
    \label{fig:podman}
\end{figure}

\section{Singularity}

\section{Ceph}

\section{Ansible}

\section{Slurm}

\section{GitLab}

\section{rsnapshot}

\section{Akatsuki}

\section{ie-virsh}