view slide/slide.md @ 47:25d968349699

update slide
author Ken Miyahira <e175733@ie.u-ryukyu.ac.jp>
date Thu, 11 Feb 2021 23:48:04 +0900
parents ae1309162772
children 47a9b8bf069b
line wrap: on
line source

---
marp: false
title: コンテナ技術を用いた教育情報システムの構築
paginate: true

theme: default
size: 16:9
style: |
  section {
    background-color: #FFFFFF;
    font-size: 28px;
    color: #4b4b4b;
    font-family: "Arial", "Hiragino Maru Gothic ProN";
  }

  section.title {
    font-size: 40px;
    padding: 40px;
  }
  section.title h1 {
    text-align: center;
  }

  section.slide h1 {
    position: absolute;
    left: 50px; top: 35px;
  }

---
<!-- class: title -->
# <!--fit--> コンテナ技術を用いた教育情報システムの構築

- 宮平 賢
    - 琉球大学工学部工学科知能情報コース
- 河野 真治
    - 琉球大学工学部

---
<!-- class: slide -->
# 研究目的

- 情報通信技術の普及に伴い学ぶことが増えている
- その学習環境として、Virtual MachineやContainerがある
    - 高性能なPC
    - クラウドサービス
        - 無料だと制限がある

---
<!-- class: slide -->
# これまでの学生向け学習環境

- VM貸出サービス
    - Akatsuki
        - 申請を行い、Webコントロールパネルから作成
    - ie-virsh
        - 手元のPCで作成したVMイメージのデプロイ

- VM貸出サービスのデフォルトスペック
    - CPU 1コア
    - メモリ 1GB
    - ディスク容量 10GB

---
# これまでの学習環境の問題点

- VM貸出サービスの一部学生は申請の方法が分からなかったり、貸出サービスがあることが周知されていなかったため、旧システムのリソースが余っていた

</br>

- VMのスペックの変更にはシステム管理チームへの申請が必要であり、利用者と管理者とのやり取りなどの手間があった

</br>

- 旧システムにはGPUが搭載されていないため、貸出サービスではなく研究室ごとの機器、クラウドサービスが多く利用された

---
<!-- class: title -->
# 教育情報システムの構築

---
<!-- class: slide -->
# オンプレミス環境

- 汎用サーバ x 4
- ディスクサーバ x 2

|  |  |
| :---: | :---: |
| CPU | Intel Xeon Gold 6238 (2.10GHz/22Core) |
| GPU |  Nvidia Tesla V100S |
| メモリ | 512GB |
| SAS SSD | 5TB |
| NVMe SSD | 1.5TB |

---
# VM貸出サービスの移行

- VM貸出サービスを継続するため、KVMを導入する
- VMからGPUの利用にはPCIパススルーの設定が必要となる
- しかし、VM1つに対し、1つのGPUが必要になる
    - 希望する学生全員に割り当てができない

</br>

- そこで、コンテナ環境を導入する
    - 1つのGPUを複数のコンテナから利用できる

---
# コンテナ環境の導入

- 要件としてマルチユーザであり、GPUが利用できるなどがある
- そこで、Podman、Singularityを導入する
- Podman
    - rootlessで利用できる
    - nvidia-dockerの設定を行えばGPUを利用できる
- Singularity
    - rootlessで利用できる
    - GPUの利用が容易
        - GPUドライバーのインストールのみ

---
# コンテナエンジンの補い

- Podman
    - イメージの作成やコンテナの作成が遅い
        - Podmanがまだ開発段階
    - rootlessでは実行できない機能がある
        - IPアドレスの割り当て
- Singularity
    - イメージの作成に時間がかかる
        - ビルド中にエラーが発生すると、一から再開する必要がある

- そこでPodmanのwrapperであるie-podmanを作成した

---
# ie-podmanの作成

- ユーザのUID、GIDを取得し管理を行う
    - 他のユーザのリソースを操作できない
- SSD上にイメージ等を保存し、高速を図る

---
# ie-podmanの機能 1/2

- Podmanのすべての機能をwrappするのではなく、一部機能のみを提供する

| コマンド | 機能 |
| --- | --- |
| build| Containerfileの指示に従いイメージを作成する | 
| cp | コンテナにファイルを送信する |
| exec | 起動中のコンテナでプロセスを実行する |
| images | コンテナイメージの一覧を表示する |
| info | コンテナの情報を表示する |
| logs | コンテナのlogを表示する |
| ps | 起動中のコンテナの一覧を表示する |

---
# ie-podmanの機能 2/2

- registryやsifなど独自機能を提供する

| コマンド | 機能 |
| --- | --- |
| registry |  学科のレジストリの操作を行う |
| rm | コンテナを削除する |
| run | コンテナを作成する |
| sif | イメージをsifファイルに変換する |
| start | コンテナを起動する |
| stop | コンテナを停止する |

---
# ジョブスケジューラの導入

- 多くのリソースを必要とするプログラムは管理が必要である
- 4台のサーバのリソースを利用できるようにする必要がある
- そこで、ジョブスケジューラのSlurmを採用する
    - フォールトトレラントで拡張性が高い

---
# ジョブスケジューラの構築

利用方針 **「計算リソースの利用効率を上げる」**
- Jobの優先順位
    - 要求するリソースの少ないJobの優先度を高くする
    - 実行時間が短いJobの優先度を高くする
    - これまでのJobの実行履歴で優先度は変化しない

これでは多くのリソースを要求するJobが実行されない可能性がある。
- Jobの実行時間
    - Jobの実行時間の記載がない場合は**1日で強制終了**させる
    - 管理者からJobの優先度を上げる

また、Jobのスケジュールにはバックフィルを採用する。

---

![](images/backfill.png)

---
# ファイルシステムの導入

- Cephを採用
    - 自己修復、自己管理機能を搭載するため信頼性が高い
    - 柔軟なアクセス方法の提供
        - Object Gateway
        - ブロックデバイス
        - POSIX互換のファイルシステム

---
# 教育情報システムの構成

- 汎用サーバ全てにKVM、Podman、Singularityをインストール
- Slurm
    - 汎用サーバ1台をコントローラ/計算ノード
    - 残りを計算ノード
- Ceph
    - ディスクサーバをOSD
    - 汎用サーバ3台をMON, MDS, MGR

---

![bg 80%](images/system.png)

---
<!-- class: title -->
# 教育情報システムの利用と管理

---
<!-- class: slide -->
# VM貸出サービスの利用

---
# ie-podmanの利用

---
# GPUの利用方法

---
<!-- class: title -->
# 教育情報システムの評価

---
<!-- class: slide -->
# ファイルシステムの評価 1/2

- GFS2
    - 旧システムのVMイメージの保存場所
- NFS
    - 旧システムのホームディレクトリ
- CephFS
    - ホームディレクトリ
- CephRBD
    - VMイメージの保存、バックアップ場所

---
# ファイルシステムの評価 2/2

![bg 70%](images/fswrite.png)

---
# ie-podmanの評価 1/3

- イメージ作成速度の比較
    - Docker
    - Podman (rootless)
    - ie-podman

---
# ie-podmanの評価 2/3
```Dockerfile
FROM ubuntu:18.04
RUN apt-get update && \
    apt-get upgrade -y && \
    DEBIAN_FRONTEND=noninteractive \
    apt-get install -y \
	qemu-utils qemu-efi-aarch64 \
	qemu-system-arm qemu-system-x86 \
	build-essential uuid-dev \
	git python iasl wget vim nasm && \
    DEBIAN_FRONTEND=noninteractive \
    apt-get install -y \
	crossbuild-essential-armhf

WORKDIR /workdir
RUN git clone --recursive https://github.com/tianocore/edk2 && \
    wget https://sourceforge.net/projects/gnu-efi/files/gnu-efi-3.0.12.tar.bz2/download && \
    tar xf download
```

---
# ie-podmanの評価 3/3

![bg 70%](images/container.png)

---
# 学習環境の評価

- VM
    - 学生が自由にスペックを変更できる
    - ディスク容量を抑えれる
- コンテナ
    - 気軽に利用できる
    - 高性能な実況環境を利用できる

---
<!-- class: title -->
# まとめ

---
<!-- class: slide -->
# 今後の課題

- 教育情報システムの周知
- ie-podmanのネットワーク構成の見直し
- バックアップの運用