Mercurial > hg > Papers > 2021 > mk-thesis
view paper/chapter/system_usage.tex @ 30:c4118dd96310
update usage
author | Ken Miyahira <e175733@ie.u-ryukyu.ac.jp> |
---|---|
date | Sat, 06 Feb 2021 13:01:53 +0900 |
parents | 7154e9689864 |
children | 09c722303c60 |
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} また, レジストリに登録されているイメージ一覧を表示することも可能である。 下記の操作でイメージ一覧を表示を行う。 イメージ名を指定することで, イメージのtag一覧の表示も可能である。 \begin{verbatim} $ ie-podman registry search $ ie-podman registry search [IMAGE_NAME] \end{verbatim} \subsection{GPUを利用した演習} 新システムでは, 汎用サーバに搭載されるGPUをコンテナから利用できる。 コンテナからGPUの利用は, PodmanとSingularityの両方から可能である。 だが, プログラムの実行にはSlurmにJobとして投下する必要がある。 そのため, イメージを単一ファイルベースとして扱え, ユーザのホームディレクトリがコンテナにマウントされるSingularityを主に利用する。 %プログラムを実行する環境のみをsifファイルとして構築し, 実行するプログラム, データをホームディレクトリで管理することが可能である。 Singularityのコンテナの実行には, 下記の操作で行える。 また, 実行時に--nvオプションを指定することで, コンテナからGPUを利用することが可能になる。 \begin{verbatim} $ singularity run --nv [SIF_NAME] \end{verbatim} 実行にはrun, exec, shellのサブコマンドがあり, runではsifファイルを作成する際に指定が可能なrunscriptが実行される。 指定されない場合はshellが起動する。また, execではイメージ内にインストールされている任意のコマンドを実行することが可能である。 これらのサブコマンドを利用し, SlurmにJobを投下する際のbatchファイルを作成する。 batchファイルはソース\ref{pg:batch}の2$\sim$8行目ように, Jobに必要なリソースを定義する。 リソースの定義後に, 実行したい処理を記述する。 \lstinputlisting[language=Bash, numbers=left, breaklines=true, basicstyle=\ttfamily\footnotesize, frame=single, caption=batchファイル, label=pg:batch]{file/batch.bash} batchファイルを作成後, 下記の操作でJobを投下することが可能である。 \begin{verbatim} $ sbatch [BATCH_FILENAME] \end{verbatim} また, Jobの各種情報は, 下記の操作で表示することが可能である。 \begin{verbatim} $ squeue \end{verbatim} 投下したJobを停止するには, 下記の操作で行うことができる。 SlurmはユーザごとにJobが管理されるため, 他ユーザのJobを停止するこはできない。 \begin{verbatim} $ scansel [JOB_ID] \end{verbatim}