44
|
1 ---
|
|
2 marp: false
|
|
3 title: コンテナ技術を用いた教育情報システムの構築
|
|
4 paginate: true
|
|
5
|
|
6 theme: default
|
|
7 size: 16:9
|
|
8 style: |
|
|
9 section {
|
|
10 background-color: #FFFFFF;
|
|
11 font-size: 28px;
|
46
|
12 color: #4b4b4b;
|
|
13 font-family: "Arial", "Hiragino Maru Gothic ProN";
|
|
14 }
|
|
15
|
|
16 section.title {
|
|
17 font-size: 40px;
|
|
18 padding: 40px;
|
|
19 }
|
|
20 section.title h1 {
|
|
21 text-align: center;
|
|
22 }
|
|
23
|
|
24 section.slide h1 {
|
|
25 position: absolute;
|
|
26 left: 50px; top: 35px;
|
44
|
27 }
|
|
28
|
|
29 ---
|
46
|
30 <!-- class: title -->
|
44
|
31 # <!--fit--> コンテナ技術を用いた教育情報システムの構築
|
|
32
|
|
33 - 宮平 賢
|
|
34 - 琉球大学工学部工学科知能情報コース
|
|
35 - 河野 真治
|
|
36 - 琉球大学工学部
|
|
37
|
|
38 ---
|
46
|
39 <!-- class: slide -->
|
44
|
40 # 研究目的
|
|
41
|
46
|
42 - 情報通信技術の普及に伴い学ぶことが増えている
|
|
43 - その学習環境として、Virtual MachineやContainerがある
|
49
|
44 - 実行には高性能なPCが必要な場合がある
|
|
45 - クラウドサービスもあるが、無料だと制限がある
|
|
46 - 学生の学習環境として、コストを支払う必要のない環境を提供したい
|
|
47 - 今年度はシステム更新があり、新しくSSDとGPUが搭載される
|
|
48 - リソースを最大限利用できる教育情報システムが必要となる
|
46
|
49
|
|
50 ---
|
47
|
51 <!-- class: slide -->
|
|
52 # これまでの学生向け学習環境
|
|
53
|
|
54 - VM貸出サービス
|
|
55 - Akatsuki
|
|
56 - 申請を行い、Webコントロールパネルから作成
|
|
57 - ie-virsh
|
|
58 - 手元のPCで作成したVMイメージのデプロイ
|
|
59
|
|
60 - VM貸出サービスのデフォルトスペック
|
|
61 - CPU 1コア
|
|
62 - メモリ 1GB
|
|
63 - ディスク容量 10GB
|
46
|
64
|
|
65 ---
|
47
|
66 # これまでの学習環境の問題点
|
|
67
|
|
68 - VM貸出サービスの一部学生は申請の方法が分からなかったり、貸出サービスがあることが周知されていなかったため、旧システムのリソースが余っていた
|
|
69
|
|
70 </br>
|
46
|
71
|
47
|
72 - VMのスペックの変更にはシステム管理チームへの申請が必要であり、利用者と管理者とのやり取りなどの手間があった
|
|
73
|
|
74 </br>
|
|
75
|
|
76 - 旧システムにはGPUが搭載されていないため、貸出サービスではなく研究室ごとの機器、クラウドサービスが多く利用された
|
46
|
77
|
|
78 ---
|
|
79 <!-- class: title -->
|
|
80 # 教育情報システムの構築
|
|
81
|
|
82 ---
|
|
83 <!-- class: slide -->
|
49
|
84 # 教育情報システムの要件
|
|
85
|
|
86 - マルチユーザに対応
|
|
87 - 本コースの学生、教員に対応する必要がある
|
|
88 - 学生がサーバのリソースを利用できる環境
|
|
89 - 手間が少なく利用できる環境
|
|
90 - 信頼性の高いファイルシステム
|
|
91
|
|
92 <!-- ---
|
47
|
93 # オンプレミス環境
|
|
94
|
|
95 - 汎用サーバ x 4
|
|
96 - ディスクサーバ x 2
|
|
97
|
|
98 | | |
|
|
99 | :---: | :---: |
|
|
100 | CPU | Intel Xeon Gold 6238 (2.10GHz/22Core) |
|
|
101 | GPU | Nvidia Tesla V100S |
|
|
102 | メモリ | 512GB |
|
|
103 | SAS SSD | 5TB |
|
|
104 | NVMe SSD | 1.5TB |
|
49
|
105 -->
|
47
|
106 ---
|
|
107 # VM貸出サービスの移行
|
|
108
|
|
109 - VM貸出サービスを継続するため、KVMを導入する
|
|
110 - VMからGPUの利用にはPCIパススルーの設定が必要となる
|
|
111 - しかし、VM1つに対し、1つのGPUが必要になる
|
|
112 - 希望する学生全員に割り当てができない
|
|
113
|
|
114 </br>
|
|
115
|
|
116 - そこで、コンテナ環境を導入する
|
|
117 - 1つのGPUを複数のコンテナから利用できる
|
46
|
118
|
|
119 ---
|
|
120 # コンテナ環境の導入
|
|
121
|
49
|
122 - マルチユーザで利用できるPodman、Singularityを導入する
|
46
|
123 - Podman
|
47
|
124 - rootlessで利用できる
|
|
125 - nvidia-dockerの設定を行えばGPUを利用できる
|
46
|
126 - Singularity
|
47
|
127 - rootlessで利用できる
|
|
128 - GPUの利用が容易
|
|
129 - GPUドライバーのインストールのみ
|
46
|
130
|
|
131 ---
|
47
|
132 # コンテナエンジンの補い
|
46
|
133
|
47
|
134 - Podman
|
|
135 - イメージの作成やコンテナの作成が遅い
|
|
136 - rootlessでは実行できない機能がある
|
|
137 - IPアドレスの割り当て
|
|
138 - Singularity
|
|
139 - イメージの作成に時間がかかる
|
|
140 - ビルド中にエラーが発生すると、一から再開する必要がある
|
|
141
|
46
|
142 - そこでPodmanのwrapperであるie-podmanを作成した
|
|
143
|
|
144 ---
|
47
|
145 # ie-podmanの作成
|
|
146
|
|
147 - ユーザのUID、GIDを取得し管理を行う
|
|
148 - 他のユーザのリソースを操作できない
|
|
149 - SSD上にイメージ等を保存し、高速を図る
|
|
150
|
|
151 ---
|
46
|
152 # ie-podmanの機能 1/2
|
|
153
|
47
|
154 - Podmanのすべての機能をwrappするのではなく、一部機能のみを提供する
|
|
155
|
46
|
156 | コマンド | 機能 |
|
|
157 | --- | --- |
|
|
158 | build| Containerfileの指示に従いイメージを作成する |
|
|
159 | cp | コンテナにファイルを送信する |
|
|
160 | exec | 起動中のコンテナでプロセスを実行する |
|
|
161 | images | コンテナイメージの一覧を表示する |
|
|
162 | info | コンテナの情報を表示する |
|
|
163 | logs | コンテナのlogを表示する |
|
|
164 | ps | 起動中のコンテナの一覧を表示する |
|
|
165
|
|
166 ---
|
|
167 # ie-podmanの機能 2/2
|
|
168
|
47
|
169 - registryやsifなど独自機能を提供する
|
|
170
|
46
|
171 | コマンド | 機能 |
|
|
172 | --- | --- |
|
|
173 | registry | 学科のレジストリの操作を行う |
|
|
174 | rm | コンテナを削除する |
|
|
175 | run | コンテナを作成する |
|
|
176 | sif | イメージをsifファイルに変換する |
|
|
177 | start | コンテナを起動する |
|
|
178 | stop | コンテナを停止する |
|
|
179
|
|
180 ---
|
47
|
181 # ジョブスケジューラの導入
|
46
|
182
|
47
|
183 - 多くのリソースを必要とするプログラムは管理が必要である
|
|
184 - 4台のサーバのリソースを利用できるようにする必要がある
|
|
185 - そこで、ジョブスケジューラのSlurmを採用する
|
|
186 - フォールトトレラントで拡張性が高い
|
46
|
187
|
|
188 ---
|
|
189 # ジョブスケジューラの構築
|
|
190
|
47
|
191 利用方針 **「計算リソースの利用効率を上げる」**
|
46
|
192 - Jobの優先順位
|
|
193 - 要求するリソースの少ないJobの優先度を高くする
|
|
194 - 実行時間が短いJobの優先度を高くする
|
|
195 - これまでのJobの実行履歴で優先度は変化しない
|
|
196
|
|
197 これでは多くのリソースを要求するJobが実行されない可能性がある。
|
|
198 - Jobの実行時間
|
|
199 - Jobの実行時間の記載がない場合は**1日で強制終了**させる
|
|
200 - 管理者からJobの優先度を上げる
|
|
201
|
|
202 また、Jobのスケジュールにはバックフィルを採用する。
|
|
203
|
|
204 ---
|
|
205
|
|
206 ![](images/backfill.png)
|
44
|
207
|
|
208 ---
|
47
|
209 # ファイルシステムの導入
|
46
|
210
|
|
211 - Cephを採用
|
47
|
212 - 自己修復、自己管理機能を搭載するため信頼性が高い
|
46
|
213 - 柔軟なアクセス方法の提供
|
|
214 - Object Gateway
|
|
215 - ブロックデバイス
|
|
216 - POSIX互換のファイルシステム
|
|
217
|
|
218 ---
|
|
219 # 教育情報システムの構成
|
|
220
|
47
|
221 - 汎用サーバ全てにKVM、Podman、Singularityをインストール
|
46
|
222 - Slurm
|
|
223 - 汎用サーバ1台をコントローラ/計算ノード
|
|
224 - 残りを計算ノード
|
|
225 - Ceph
|
|
226 - ディスクサーバをOSD
|
|
227 - 汎用サーバ3台をMON, MDS, MGR
|
|
228
|
|
229 ---
|
|
230
|
|
231 ![bg 80%](images/system.png)
|
|
232
|
|
233 ---
|
|
234 <!-- class: title -->
|
|
235 # 教育情報システムの利用と管理
|
|
236
|
|
237 ---
|
|
238 <!-- class: slide -->
|
47
|
239 # VM貸出サービスの利用
|
46
|
240
|
48
|
241 - VMの作成、スペックの変更で申請が必要なくなった
|
|
242 - VMの作成
|
|
243 - `ie-virsh define --template Ubuntu-20 VM_NAME`
|
|
244 - スペックの変更
|
|
245 - `ie-virsh edit VM_NAME`
|
|
246
|
46
|
247 ---
|
48
|
248 # ie-podmanの使用方法
|
|
249
|
|
250 - PodmanはDockerと同じCLIを提供している
|
|
251 - IPアドレス、GPUをコンテナへ割り当てられる
|
|
252 - `ie-podman run --ip --gpu [IMAGE_NAME]`
|
|
253 - 作成したイメージをsifファイルへの変換に対応
|
|
254 - `ie-podman sif [IMAGE_NAME]`
|
46
|
255
|
|
256 ---
|
|
257 # GPUの利用方法
|
|
258
|
48
|
259 - Singularityでは容易にGPUを利用できる
|
|
260 - `singularity run --nv [SIF_NAME]`
|
|
261 - ホームディレクトリ、/tmpなどがコンテナにマウントされる
|
|
262 - プログラムの実行に便利
|
|
263 - SlurmによるJob管理
|
|
264 - 必要なリソースを記述し投下する
|
|
265 - CPU数、GPU数
|
|
266
|
|
267 ---
|
|
268 # batchファイルの例
|
|
269
|
|
270 - Jobに必要とするリソース
|
|
271 - CPU 8コア、GPU 1つ
|
|
272 - Jobの実行時間
|
|
273 - 1分
|
|
274
|
|
275 ```bash
|
|
276 #!/bin/bash
|
|
277 #SBATCH --job-name sample
|
|
278 #SBATCH --output logs/%x-%j.log
|
|
279 #SBATCH --error logs/%x-%j.err
|
|
280 #SBATCH --nodes 1
|
|
281 #SBATCH --cpus-per-task 8
|
|
282 #SBATCH --gpus tesla:1
|
|
283 #SBATCH --time 01:00
|
|
284
|
|
285 singularity exec --nv [SIF_NAME] [COMMANDS]
|
|
286 ```
|
|
287
|
46
|
288 ---
|
|
289 <!-- class: title -->
|
|
290 # 教育情報システムの評価
|
|
291
|
|
292 ---
|
|
293 <!-- class: slide -->
|
|
294 # ファイルシステムの評価 1/2
|
|
295
|
48
|
296 - 実験概要
|
|
297 - `dd`コマンドを使用し書き込み速度を比較する
|
|
298
|
|
299 - 書き込み速度の比較
|
|
300 - GFS2
|
|
301 - NFS
|
|
302 - CephFS
|
|
303 - CephRBD
|
46
|
304
|
|
305 ---
|
|
306 # ファイルシステムの評価 2/2
|
|
307
|
|
308 ![bg 70%](images/fswrite.png)
|
|
309
|
|
310 ---
|
|
311 # ie-podmanの評価 1/3
|
|
312
|
48
|
313 - 実験環境
|
|
314 - 新システムの汎用サーバで実施
|
|
315
|
|
316 - 実験概要
|
|
317 - イメージのBuild速度を比較する
|
|
318
|
49
|
319 ```Dockerfile
|
|
320 FROM ubuntu:20.04
|
|
321 RUN apt-get update && \
|
|
322 apt-get upgrade -y
|
|
323 ```
|
|
324
|
48
|
325 - Build速度の比較
|
46
|
326 - Docker
|
|
327 - Podman (rootless)
|
|
328 - ie-podman
|
|
329
|
|
330 ---
|
|
331 # ie-podmanの評価 2/3
|
|
332
|
49
|
333 ![bg 70%](images/container2.png)
|
46
|
334
|
|
335 ---
|
|
336 # ie-podmanの評価 3/3
|
|
337
|
49
|
338 - Rootlessは`syscall`が複数呼ばれている
|
|
339 - そのため、イメージの作成が遅いのではないか
|
|
340 - 左がrootless、右がrootfull
|
|
341
|
|
342 ![height:325](images/syscall.png)
|
46
|
343
|
|
344 ---
|
|
345 # 学習環境の評価
|
|
346
|
|
347 - VM
|
|
348 - 学生が自由にスペックを変更できる
|
|
349 - ディスク容量を抑えれる
|
|
350 - コンテナ
|
|
351 - 気軽に利用できる
|
|
352 - 高性能な実況環境を利用できる
|
|
353
|
|
354 ---
|
|
355 <!-- class: title -->
|
|
356 # まとめ
|
|
357
|
|
358 ---
|
|
359 <!-- class: slide -->
|
|
360 # 今後の課題
|
|
361
|
|
362 - 教育情報システムの周知
|
48
|
363 - Jobの投下やリソースの要求方法
|
|
364 - ie-virsh、ie-podmanの使用方法
|
|
365 - 定期的な周知が必要
|
46
|
366 - ie-podmanのネットワーク構成の見直し
|
48
|
367 - プレフィックス長が24のため、最大254個のIPアドレス
|
|
368 - コンテナを停止で使用されない場合は削除する必要がある
|
|
369 - バックアップの運用
|
|
370 - Cephと専用サーバ以外のバックアップ先を用意する必要がある |