39
|
1 \chapter{教育情報システムの管理}
|
5
|
2
|
41
|
3 本章では,構築した教育情報システムの管理方法,利用方法について述べる.
|
5
|
4
|
32
|
5 \section{LDAPによる権限管理}
|
41
|
6 教育情報システムは,本コースの学生や教師のユーザアカウントをLDAPで管理している.
|
|
7 また,ユーザの権限も管理される.
|
|
8 VM貸出サービスやコンテナ環境はLDAPからユーザアカウントの情報を取得することで,他の利用者のリソースに対して操作を制限する.
|
32
|
9
|
|
10 \section{VM貸出サービスの利用}
|
41
|
11 ie-virshは旧システムより利用されている.
|
|
12 新システムでも利用を継続し,新たに機能の追加を行った.
|
26
|
13 \par
|
41
|
14 これまでのie-virshではVMを利用するには,手元のPCで作成したVMイメージをサーバにアップロードを行い,ie-virshでドメインの定義が必要であった.
|
|
15 そこで,新たにVMのテンプレートのイメージを用意し,テンプレートから差分でVMを作成できるようにした.
|
|
16 VMのテンプレートから新たにVMを作成するには下記のように行う.
|
|
17 また,--gdbオプションを付与することで,GDBによるLinux KernelのDebugを行える.
|
26
|
18 \begin{verbatim}
|
|
19 $ ie-virsh define --template Ubuntu-20 [VM_NAME]
|
|
20 \end{verbatim}
|
|
21
|
41
|
22 VMの作成で利用できるテンプレートは下記の操作で確認することができる.
|
26
|
23 \begin{verbatim}
|
|
24 $ ie-virsh templates
|
|
25 \end{verbatim}
|
|
26
|
41
|
27 また,作成したVMのデフォルトのリソースは旧システムから変更はなく,CPU1コア,メモリ1GB,ディスク容量10GBとなっている.
|
|
28 これまでは,リソースの変更は申請が必要であったが,下記の操作でVMのリソースを変更が行える.
|
|
29 しかし,ディスク容量の変更には申請が必要となっている.
|
26
|
30 \begin{verbatim}
|
|
31 $ ie-virsh edit [VM_NAME]
|
|
32 \end{verbatim}
|
|
33
|
41
|
34 作成したVMにIPアドレスを割り当てるには,IPアドレス管理サービスにMACアドレスを登録する必要がある.
|
|
35 VMのMACアドレスはie-virshが作成するXMLファイルに定義されており,dumpxmlでXMLを出力し確認できる.
|
|
36 しかし,XMLを出力すると必要とする情報以外も多く表示されるため,下記の操作でVMのインターフェース情報を出力できるようになっている.
|
26
|
37 \begin{verbatim}
|
|
38 $ ie-virsh domiflist [VM_NAME]
|
|
39 \end{verbatim}
|
24
|
40
|
32
|
41 \section{コンテナ環境の利用}
|
41
|
42 新システムではコンテナエンジンであるPodmanとSingularityを導入した.
|
|
43 また,PodmanやSingularityを使用する上での不便な点を補うために作成したie-podmanについて説明を行う.
|
27
|
44
|
24
|
45 \subsection{ie-podman}
|
41
|
46 %Podmanは主にコンテナで実行するプロセスに特権が必要となる場合に利用する.
|
|
47 ie-podmanはPodmanをwrappし複数ユーザで利用することができるコンテナ管理ツールである.
|
|
48 Podmanはマルチユーザに対応しているため,ie-podmanを利用せずともコンテナの作成などを行える.
|
|
49 だが,コンテナへのIPアドレスの割り当てには,root権限が必要となるためrootlessでは実行できない.
|
|
50 そのため,Webなどを実行しアクセスするにはポートフォワードを設定し,SSHポートフォワードを行う必要がある.
|
|
51 そこで,ie-podmanではPodmanのすべての機能をwrappするのではなく,rootlessでは実行できない機能を提供する.
|
|
52 表\ref{tb:ie-podman}はie-podmanで利用できる機能である.
|
27
|
53
|
|
54 \begin{table}[htb]
|
|
55 \begin{center}
|
|
56 \caption{ie-podmanのコマンド}
|
|
57 \begin{tabular}{c|l} \hline
|
|
58 build & Containerfileの指示に従いイメージを作成する \\ \hline
|
|
59 cp & コンテナにファイルを送信する \\ \hline
|
|
60 exec & 起動中のコンテナでプロセスを実行する \\ \hline
|
|
61 images & コンテナイメージの一覧を表示する \\ \hline
|
|
62 info & コンテナの情報を表示する \\ \hline
|
|
63 logs & コンテナのlogを表示する \\ \hline
|
|
64 ps & 起動中のコンテナの一覧を表示する \\ \hline
|
|
65 registry & 学科のレジストリの操作を行う \\ \hline
|
|
66 rm & コンテナを削除する \\ \hline
|
|
67 run & コンテナを作成する \\ \hline
|
|
68 sif & イメージをsifファイルに変換する \\ \hline
|
|
69 start & コンテナを起動する \\ \hline
|
|
70 stop & コンテナを停止する \\ \hline
|
|
71 \end{tabular}
|
|
72 \label{tb:ie-podman}
|
|
73 \end{center}
|
|
74 \end{table}
|
|
75
|
41
|
76 新しいコンテナの作成は,Podmanのrunと同じように実行できる.
|
|
77 しかし,ie-podman独自のオプションを提供する.
|
|
78 run時に--gpuオプションを指定することでコンテナ内にGPUを割り当てる.
|
|
79 また,--ipオプションを指定することで,使用されていないIPアドレスが割り振られる.
|
|
80 コンテナ名は指定することもできるが,ユーザ名で補完されるため,他ユーザと重複することはない.
|
|
81 ie-podmanを使用して,新しいコンテナの作成は下記のように行う.
|
27
|
82 \begin{verbatim}
|
|
83 $ ie-podman run --ip --gpu --name [CONTAINER_NAME] [IMAGE]
|
|
84 \end{verbatim}
|
|
85
|
41
|
86 新システムにインストールされているPodmanはrootlessでコンテナイメージの作成は低速である.
|
|
87 これは,開発段階ということが考えられる.
|
|
88 %新システムのユーザのホームディレクトリはCephFSで提供されているためである.
|
|
89 ie-podmanはrootのPodmanを利用しSSD上に作成されるため,Podmanと比較し高速である.
|
|
90 イメージ名はコンテナ名と同じくユーザ名で補完されることで,他ユーザと重複することはない.
|
|
91 ie-podmanを使用して,新しいイメージの作成は下記のように行う.
|
27
|
92 \begin{verbatim}
|
|
93 $ ie-podman build --tag [IMAGE_NAME] [CONTEXT]
|
|
94 \end{verbatim}
|
|
95
|
41
|
96 また,作成したコンテナイメージは下記の操作で一覧を表示することができる.
|
|
97 一覧で表示されるイメージはie-podmanで作成したイメージのみである.
|
27
|
98 \begin{verbatim}
|
|
99 $ ie-podman images
|
|
100 \end{verbatim}
|
|
101
|
41
|
102 SingularityはDockerで作成したイメージをsifファイルに変換し,Singualrityで利用できる.
|
|
103 sifファイルへの変換はdockerデーモンへリクエストを行う必要があるが,Podmanはデーモンレスで動作する.
|
|
104 そのため,Podmanで作成したイメージをSingularityに変換するには一手間掛かる.
|
|
105 SingularityはDefinitionfileを作成し,ビルドすることで,sifファイルを作成できる.
|
|
106 だが,イメージのビルド中にエラーが発生すると,一からビルドを再開する必要がある.
|
|
107 DockerやPodmanはイメージのビルド時にレイヤーごとにキャッシュされるため,Containerfileに追加や編集を行っても前回のキャッシュが使用されることで,高速にビルドが行われる.
|
|
108 そこで,ie-podmanで作成したイメージをsifファイルへ変換する機能を作成した.
|
|
109 ie-podmanでイメージを作成し,下記の操作を行うことでsifファイルへ変換が行える.
|
27
|
110 \begin{verbatim}
|
|
111 $ ie-podman sif [IMAGE_NAME]
|
|
112 \end{verbatim}
|
|
113
|
41
|
114 新システムではコンテナベースでシステムを構築するため,コンテナレジストリを導入した.
|
|
115 レジストリの利用は学内ネットワークから可能であり,pushやpullが可能である.
|
|
116 ie-podmanからだけでなく,Podmanや手元のPCのDockerからも利用できる.
|
|
117 レジストリへの登録には,登録するイメージにtagを付けpushする必要がある.
|
|
118 ie-podmanでは本コースのレジストリを利用しやすくするため,簡単に操作できる機能を作成した.
|
|
119 ie-podmanでは下記の操作で本コースで利用するレジストリへ登録できる.
|
27
|
120 \begin{verbatim}
|
|
121 $ ie-podman registry push [IMAGE_NAME]
|
|
122 \end{verbatim}
|
|
123
|
41
|
124 また,レジストリに登録されているイメージ一覧を表示することも可能である.
|
|
125 下記の操作でイメージ一覧を表示を行う.
|
|
126 イメージ名を指定することで,イメージのtag一覧の表示も可能である.
|
27
|
127 \begin{verbatim}
|
|
128 $ ie-podman registry search
|
|
129 $ ie-podman registry search [IMAGE_NAME]
|
|
130 \end{verbatim}
|
|
131
|
30
|
132 \subsection{GPUを利用した演習}
|
41
|
133 新システムでは,汎用サーバに搭載されるGPUをコンテナから利用できる.
|
|
134 コンテナからGPUの利用は,PodmanとSingularityの両方から可能である.
|
|
135 だが,プログラムの実行にはSlurmにJobとして投下する必要がある.
|
|
136 そのため,イメージを単一ファイルベースとして扱え,ユーザのホームディレクトリがコンテナにマウントされるSingularityを主に利用する.
|
|
137 %プログラムを実行する環境のみをsifファイルとして構築し,実行するプログラム,データをホームディレクトリで管理することが可能である.
|
|
138 Singularityのコンテナの実行は,下記の操作で行える.
|
|
139 また,実行時に--nvオプションを指定することで,コンテナからGPUを利用することが可能になる.
|
30
|
140 \begin{verbatim}
|
|
141 $ singularity run --nv [SIF_NAME]
|
|
142 \end{verbatim}
|
|
143
|
41
|
144 実行にはrun,exec,shellのサブコマンドがあり,runではsifファイルを作成する際に指定が可能なrunscriptが実行される.
|
|
145 指定されない場合はshellが起動する.また,execではイメージ内にインストールされている任意のコマンドを実行することが可能である.
|
|
146 これらのサブコマンドを利用し,SlurmにJobを投下する際のbatchファイルを作成する.
|
|
147 batchファイルはソース\ref{pg:batch}の2$\sim$8行目ように,Jobに必要なリソースを定義する.
|
|
148 リソースの定義後に,実行したい処理を記述する.
|
30
|
149 \lstinputlisting[language=Bash, numbers=left, breaklines=true, basicstyle=\ttfamily\footnotesize, frame=single, caption=batchファイル, label=pg:batch]{file/batch.bash}
|
|
150
|
41
|
151 batchファイルを作成後,下記の操作でJobを投下することが可能である.
|
30
|
152 \begin{verbatim}
|
|
153 $ sbatch [BATCH_FILENAME]
|
|
154 \end{verbatim}
|
|
155
|
41
|
156 また,Jobの各種情報は,下記の操作で表示することが可能である.
|
30
|
157 \begin{verbatim}
|
|
158 $ squeue
|
|
159 \end{verbatim}
|
|
160
|
41
|
161 投下したJobを停止するには,下記の操作で行うことができる.
|
|
162 SlurmはユーザごとにJobが管理されるため,他ユーザのJobを停止するこはできない.
|
30
|
163 \begin{verbatim}
|
|
164 $ scansel [JOB_ID]
|
|
165 \end{verbatim} |