view paper/chapter/system_usage.tex @ 27:39b63490ba16

update usage
author Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
date Tue, 02 Feb 2021 20:06:43 +0900
parents ee9ebfb6b381
children 7154e9689864
line wrap: on
line source

\chapter{教育計算機システムの管理}

本章では, 構築した教育計算機システムの管理の方法, 利用方法について述べる。

\section{Virtual Machineの利用と管理}
ie-virshは旧システムより利用されている。
新システムでも利用を継続し, 新たに機能の追加を行った。
\par
これまでのie-virshではVMを利用するには, 手元のPCで作成したVMイメージをサーバにアップロードを行い, ie-virshでドメインの定義が必要であった。
そこで, 新たにVMのテンプレートのイメージを用意し, テンプレートから差分でVMを作成できるようにした。
VMのテンプレートから新たにVMを作成するには下記のように行う。
また, --gdbオプションを付与することで, GDBによるLinux KernelのDebugを行える。
\begin{verbatim}
$ ie-virsh define --template Ubuntu-20 [VM_NAME]
\end{verbatim}

VMの作成で利用できるテンプレートは下記の操作で確認することができる。
\begin{verbatim}
$ ie-virsh templates
\end{verbatim}

また, 作成したVMのデフォルトのリソースは旧システムから変更はなく, CPU1コア, メモリ1GB, ディスク容量10GBとなっている。
これまでは, リソースの変更は申請が必要であったが, 下記の操作でVMのリソースを変更が行える。
しかし, ディスク容量の変更には申請が必要となっている。
\begin{verbatim}
$ ie-virsh edit [VM_NAME]
\end{verbatim}

作成したVMにIPアドレスを割り当てるには, IPアドレス管理サービスにMacアドレスを登録する必要がある。
VMのMacアドレスはie-virshが作成するXMLファイルに定義されており, dumpxmlでXMLを出力し確認できる。
しかし, XMLを出力すると必要とする情報以外も多く表示されるため, 下記の操作でVMのインターフェース情報を出力できるようになっている。
\begin{verbatim}
$ ie-virsh domiflist [VM_NAME]
\end{verbatim}

\section{Containerの利用と管理}
新システムではコンテナエンジンであるPodmanとSingularityを導入した。
また, PodmanやSingularityを使用する上での不便な点を補うために作成したie-podmanについて説明を行う。

\subsection{ie-podman}
%Podmanは主にコンテナで実行するプロセスに特権が必要となる場合に利用する。
ie-podmanはPodmanをwrappし複数ユーザで利用することができるコンテナ管理ツールである。
Podmanはマルチユーザに対応しているため, ie-podmanを利用せずともコンテナの作成などを行える。
だが, コンテナへのIPアドレスの割り当てには, root権限が必要となるためrootlessでは実行できない。
そのため, Webなどを実行しアクセするにはポートフォワードを設定し, SSHポートフォワードを行う必要がある。
そこで, ie-podmanではPodmanのすべての機能をwrappするのではなく, rootlessでは実行できない機能を提供する。
表\ref{tb:ie-podman}はie-podmanで利用できる機能である。

\begin{table}[htb]
  \begin{center}
  \caption{ie-podmanのコマンド}
  \begin{tabular}{c|l} \hline
    build & Containerfileの指示に従いイメージを作成する \\ \hline
    cp & コンテナにファイルを送信する \\ \hline
    exec & 起動中のコンテナでプロセスを実行する \\ \hline
    images  & コンテナイメージの一覧を表示する \\ \hline
    info & コンテナの情報を表示する \\ \hline
    logs & コンテナのlogを表示する \\ \hline
    ps  & 起動中のコンテナの一覧を表示する \\ \hline
    registry & 学科のレジストリの操作を行う \\ \hline
    rm & コンテナを削除する \\ \hline
    run & コンテナを作成する \\ \hline
    sif & イメージをsifファイルに変換する \\ \hline
    start & コンテナを起動する \\ \hline
    stop & コンテナを停止する \\ \hline
    \end{tabular}
  \label{tb:ie-podman}
  \end{center}
\end{table}

新しいコンテナの作成は, Podmanのrunと同じように実行できる。
しかし, ie-podman独自のオプションを提供する。
run時に--gpuオプションを指定することでコンテナ内でGPUを使用できる。
また, --ipオプションを指定することで, 使用されていないIPアドレスが割り振られる。
コンテナ名は指定することもきるが, ユーザ名で補完されるため, 他ユーザと重複することはない。
ie-podmanを使用して, 新しいコンテナの作成は下記のように行う。
\begin{verbatim}
$ ie-podman run --ip --gpu --name [CONTAINER_NAME] [IMAGE]
\end{verbatim}

現在のPodmanはrootlessでコンテナイメージの作成は低速である。
これは, 開発段階ということ, 新システムのユーザのホームディレクトリはCephFSで提供されているためである。
ie-podmanはrootのPodmanを利用しSSD上に作成されるため, Podmanと比較し高速である。
イメージ名はコンテナ名と同じくユーザ名で補完されることで, 他ユーザと重複することはない。
ie-podmanを使用して, 新しいイメージの作成は下記のように行う。
\begin{verbatim}
$ ie-podman build --tag [IMAGE_NAME] [CONTEXT]
\end{verbatim}

作成したコンテナイメージは下記の操作で一覧を表示することができる。
一覧で表示されるイメージはie-podmanで作成したイメージのみである。
\begin{verbatim}
$ ie-podman images
\end{verbatim}

SingularityはDockerで作成したイメージをsifファイルに変換し, Singualrityで利用できる。
sifファイルへの変換はdockerデーモンへリクエストを行う必要があるが, Podmanはデーモンレスで動作する。
そのため, Podmanで作成したイメージをSingularityに変換するには一手間掛かる。
SingularityはDefinitionfileを作成し, ビルドすることで, sifファイルを作成できる。
だが, イメージのビルド中にエラーが発生すると, 一からビルドを行う必要がある。
DockerやPodmanはイメージのビルド時にレイヤーごとにキャッシュされるため, Containerfileに追加や編集を行っても前回のキャッシュが使用されることで, 高速にビルドが行われる。
そこで, ie-podmanで作成したイメージをsifファイルへ変換する機能を作成した。
ie-podmanでイメージを作成し, 下記の操作を行うことでsifファイルへ変換を行う。
\begin{verbatim}
$ ie-podman sif [IMAGE_NAME]
\end{verbatim}

本コースではコンテナレジストリを導入し利用している。
レジストリの利用は学内ネットワークから可能であり, pushやpullが可能である。
ie-podmanからだけでなく, Podmanや手元のPCのDockerからも利用できる。
レジストリへの登録には, 登録するイメージにtagを付けpushする必要がある。
ie-podmanでは本コースのレジストリを利用しやすくするため, 簡単に操作できる機能を作成した。
ie-podmanでは下記の操作で本コースで利用するレジストリへ登録できる。
\begin{verbatim}
$ ie-podman registry push [IMAGE_NAME]
\end{verbatim}

また, registry searchでレジストリに登録されているイメージ一覧を表示することも可能である。
下記の操作でイメージ一覧を表示を行う。
イメージ名を指定することで, イメージのtag一覧の表示も可能である。
\begin{verbatim}
$ ie-podman registry search
$ ie-podman registry search [IMAGE_NAME]
\end{verbatim}

\subsection{SingularityとSlurm}