# HG changeset patch # User Ken Miyahira # Date 1613287746 -32400 # Node ID a822207b796f131368306390f6977f12a671df05 # Parent aaced29a65f3d5b7b0ac87329786c561a0bd2351 update paper diff -r aaced29a65f3 -r a822207b796f paper/chapter/introduction.tex --- a/paper/chapter/introduction.tex Sun Feb 14 15:00:32 2021 +0900 +++ b/paper/chapter/introduction.tex Sun Feb 14 16:29:06 2021 +0900 @@ -1,7 +1,7 @@ \chapter{教育向けの情報システム} \pagenumbering{arabic} %ページ番号の表記方法 -情報通信技術の普及に伴い学生が学ぶ学習環境が必要となる.その学習環境としてVMやコンテナにより,手軽に開発し試せる技術が普及している. +情報通信技術の普及に伴い様々な学習環境が学生にとって必要となる.その学習環境としてVMやコンテナにより,手軽に開発し試せる技術が普及している. だが,手元のPC上でVMやコンテナを立ち上げ,開発を行うことはできるが,VMやコンテナの使用には高性能PCや有料のクラウドサービスが必要になる場合がある. これらの負担をIT技術を学ぶ学生に負わせない新たな仕組みが必要である. \par diff -r aaced29a65f3 -r a822207b796f paper/chapter/system_review.tex --- a/paper/chapter/system_review.tex Sun Feb 14 15:00:32 2021 +0900 +++ b/paper/chapter/system_review.tex Sun Feb 14 16:29:06 2021 +0900 @@ -73,7 +73,7 @@ \par RootlessのPodman,Singularityの不便な点を補うため,Podmanのwrapperであるie-podmanを作成した. iepodmanにより特権が必要な機能も,利用者に特別な権限を与えることなく利用できるようになる. -また,ie-podmanはrootfullのPodmanをwrappすることにより,コンテナやイメージがSSD上に保存される. +また,ie-podmanはrootfullのPodmanをwrapperすることにより,コンテナやイメージがSSD上に保存される. そのため,rootlessのPodmanより高速化を図ることが可能になる. \par そこで,ie-podmanでのイメージのBuild速度の比較を行う. diff -r aaced29a65f3 -r a822207b796f paper/chapter/system_usage.tex --- a/paper/chapter/system_usage.tex Sun Feb 14 15:00:32 2021 +0900 +++ b/paper/chapter/system_usage.tex Sun Feb 14 16:29:06 2021 +0900 @@ -43,18 +43,17 @@ また,PodmanやSingularityを使用する上での不便な点を補うために作成したie-podmanについて説明を行う. \subsection{ie-podman} -%Podmanは主にコンテナで実行するプロセスに特権が必要となる場合に利用する. -ie-podmanはPodmanをwrappし複数ユーザで利用することができるコンテナ管理ツールである. +ie-podmanはPodmanをwrapperし複数ユーザで利用することができるコンテナ管理ツールである. Podmanはマルチユーザに対応しているため,ie-podmanを利用せずともコンテナの作成などを行える. だが,コンテナへのIPアドレスの割り当てには,root権限が必要となるためrootlessでは実行できない. そのため,Webなどを実行しアクセスするにはポートフォワードを設定し,SSHポートフォワードを行う必要がある. -そこで,ie-podmanではPodmanのすべての機能をwrappするのではなく,rootlessでは実行できない機能を提供する. +そこで,ie-podmanではPodmanのすべての機能をwrapperするのではなく,rootlessでは実行できない機能を提供する. 表\ref{tb:ie-podman}はie-podmanで利用できる機能である. \begin{table}[htb] \begin{center} \caption{ie-podmanのコマンド} - \begin{tabular}{c|l} \hline + \begin{tabular}{|c|l|} \hline build & Containerfileの指示に従いイメージを作成する \\ \hline cp & コンテナにファイルを送信する \\ \hline exec & 起動中のコンテナでプロセスを実行する \\ \hline diff -r aaced29a65f3 -r a822207b796f paper/chapter/technology_overview.tex --- a/paper/chapter/technology_overview.tex Sun Feb 14 15:00:32 2021 +0900 +++ b/paper/chapter/technology_overview.tex Sun Feb 14 16:29:06 2021 +0900 @@ -32,7 +32,7 @@ \subsection{コンテナ型} コンテナ型の仮想化は,OSレベルの仮想化技術を利用して複数のコンテナと呼ばれる独立空間を形成し,独立空間でアプリケーションをそれぞれ構築することができる手法である(図\ref{fig:container}). -各コンテンはKernelによって独立したプロセスとして実行される. +各コンテナはKernelによって独立したプロセスとして実行される. 前述のホスト型やハイパーバイザー型と比べ,コンテナはゲストOSを起動することなくアプリケーションを実行することができるため,リソース効率が良く処理が軽量である. \begin{figure}[H] \begin{center} @@ -212,7 +212,7 @@ \begin{table}[htb] \begin{center} \caption{ie-virsh のコマンド} - \begin{tabular}{c|l} \hline + \begin{tabular}{|c|l|} \hline define & XML の template を下に domain を作成 \\ \hline undefine & define で作成した domain を削除 \\ \hline list & define で作成した domain の一覧表示 \\ \hline @@ -233,7 +233,7 @@ \begin{table}[htb] \begin{center} \caption{ie-docker のコマンド} - \begin{tabular}{c|l} \hline + \begin{tabular}{|c|l|} \hline ps & 起動中のコンテナの一覧を表示する \\ \hline run & コンテナを作成する \\ \hline start & コンテナを起動する \\ \hline diff -r aaced29a65f3 -r a822207b796f paper/final_thesis.pdf Binary file paper/final_thesis.pdf has changed diff -r aaced29a65f3 -r a822207b796f prepaper/pre.pdf Binary file prepaper/pre.pdf has changed diff -r aaced29a65f3 -r a822207b796f prepaper/pre.tex --- a/prepaper/pre.tex Sun Feb 14 15:00:32 2021 +0900 +++ b/prepaper/pre.tex Sun Feb 14 16:29:06 2021 +0900 @@ -23,27 +23,119 @@ \renewcommand{\abstractname}{Abstract} \begin{document} -\title{タイトル} -\author{175733E 氏名 {宮平 賢}\\ 指導教員 : {河野 真治} } +\title{コンテナ技術を用いた\\教育情報システムの構築} +\author{175733E {宮平 賢}\\ 指導教員 : {河野 真治} } \date{} \twocolumn [ \maketitle \begin{onecolabstract} -abstract +ab,ab,ab,ab, abstract \end{onecolabstract}] \thispagestyle{fancy} -\section{はじめ} +\section{教育向けの情報システム} +情報通信技術の普及に伴い学生が学ぶ学習環境が必要となる.その学習環境としてVMやコンテナにより,手軽に開発し試せる技術が普及している. +だが,手元のPC上でVMやコンテナを立ち上げ,開発を行うことはできるが,VMやコンテナの使用には高性能PCや有料のクラウドサービスが必要になる場合がある. +これらの負担をIT技術を学ぶ学生に負わせない新たな仕組みが必要である. +\par +本コースでは希望する学生に学科の汎用サーバから仮想環境を貸出するサービスを行っている. +貸出をするVMの基本スペックとしてCPU1コア,メモリ1GB,ストレージ10GBである. +基本スペックでは不足する場合は要望に応じてスペックの変更を行っている. +しかし,機械学習などの演習ではCPUよりGPUが求められる場合がある. +VM上でGPUを共有するにはPCIパススルーを利用することで可能である. +だが,PCIパススルーではGPUとVMは1対1の関係となり,GPUを希望する利用者すべてに割り当てることはできない. +\par +本研究では,学生が貸出VMだけでなく,学科の汎用サーバのリソースを効率的に利用できる教育情報システムを提案する. +教育情報システムには複数の汎用サーバと大容量ストレージサーバが存在する. +複数のサーバを利用するにあたり,分散ストレージが必要となる. +また,学習環境として利用されることから,複数の並列なアクセスに耐えられ,信頼性の高いファイルシステムが必要である. +この用件を満たすストレージソフトウェアとしてCephを採用した. +汎用サーバのリソースを効率的に利用するために,コンテナエンジンであるPodman,Singularity,ジョブスケジューラであるSlurmを採用した. +これらのソフトウェアを合わせ教育情報システムの構築を行った. + +\section{Podman} +PodmanはRedHat社が開発,提供するLinux上でOCIコンテナを開発,管理,実行するためのデーモンレスコンテナエンジンである\cite{podman}. +PodmanはOCI準拠のコンテナランタイムに依存するため,前述したDockerなど他のコンテナエンジンと互換性を持つ. +また,Podman CLIはDocker CLIと同じ機能を提供する. +Podmanはコンテナとイメージストレージ,コンテナランタイムを介してLinxuカーネルと直接対話することで,デーモンレスで実行される. +Podmanの制御下にあるコンテナは,特権ユーザ又は非特権ユーザのいずれかによって実行することができる. + +\section{Singularity} +Singularity\cite{singularity} とは,HPC環境向けに設計されたコンテナプラットフォームである. +Singularityはマルチユーザに対応しており,コンテナ内での権限は実行ユーザの権限を引き継ぐため,ユーザに特別な権限の設定が必要ない. +またデフォルトで,\$HOME,/tmp,/proc,/sys,/dev がコンテナにマウントされ,サーバ上のGPUを簡単に利用できる. +コンテナイメージはSingularity Image Format(以下,sif)と呼ばれる単一ファイルベースのため,アーカイブや共有が容易である. +\section{Slurm} +Slurm\cite{slurm}はLinuxクラスタ向けのフォールトトレラント設計のジョブスケジューリングシステムである. +ジョブスケジューラではサーバ上で実行される処理を「Job」という単位で管理する. +ユーザはプログラムの実行手順,実行に必要とするリソースを記したbatchファイルを作成し,ジョブスケジューラにJobの実行を依頼する. +ジョブスケジューラは要求するリソース,実行時間を考慮し,複数の計算ノードからJobを実行するノードを決定する. +このようにサーバ上でのプログラム等の実行,サーバのリソースを管理するのがジョブスケジューラである。 +Slurmには以下の3つの主要機能を提供する. +\begin{itemize} + \item 計算を実行するユーザに対してリソースへの排他的,非排他的なアクセスを割り当てる + \item 割り当てられたノード上のジョブの開始,実行,モニタリングを行う + \item 待機中のジョブキューを管理することにより,リソースの競合を解決する +\end{itemize} + +\section{Ceph} +Cephは,RedHat社が開発,提供する分散ファイルシステムである. +Cephは分散オブジェクトストレージであるRADOS(Reliable Autonomic Distributred Object Storage)がベースとなっている. +RAODSでは,Object Storage Daemonにデータ格納する. +オブジェクトの配置には,クラスタマップを元にControlled Replication Under Scalable Hashing(以下,CRUSH)アルゴリズムによりオブジェクトの格納先を選択する. +配置の計算に必要とする情報はごくわずかであるため,Cephクラスタ内のすべてのノードは保存されている位置を計算できる. +そのため,データの読み書きが効率化される.また,CRUSHはデータをクラスタ内のすべてのノードに均等に分散しようとする. +\par +RODOSはクラスタに保存されるデータの管理を待ち受け,保存オブジェクトへのアクセス方法としてObject Gateway,RADOS Block Device(以下,RBD),CephFS がある. +Object GatewayはHTTP REST経由でクラスタに保存されるオブジェクトへ直接アクセスが可能である. +RBD はブロックデバイスとしてアクセスが可能で,libvirt を組み合わせてVMのディスクとして使用できる. +また,RBDドライバを搭載したOSにマップし ext4 や XFS などでフォーマットして利用できる. +CephFS は POSIX互換のファイルシステムである. +複数のアクセス方法を提供することで,用途に合わせ柔軟に変更することができる. + +\section{教育情報システムの構築} +旧システムでは,学生が演習などで利用できる環境として貸出VMのみであった.そのため以下のような問題が生じた. + +\begin{itemize} + \item 仮想環境の貸出サービスにおいて,新しく仮想環境を作成するにはシステム管理チームへ申請が必要であった. + そのため,一部学生は申請の方法が分からなかったり,貸出サービスがあることが周知されていなかったため,旧システムのリソースが余っていた. + \item 機械学習の演習ではGPUが求められる.だが,旧システムにはGPUが搭載されていないため,要求されるリソースを提供できない. + そのため,貸出サービスではなく研究室ごとの機器が多く利用された. + \item 旧システムのクラスタファイルシステムであるGFS2のロックマネージャーを担当するサーバが停止すると,ファイルシステムにアクセスができなくなっった. + そのため,学科のサービスを提供できなくなった. +\end{itemize} + + +\section{教育情報システムの利用} +\subsection{ie-podmanの利用} +ie-podmanはPodmanをwrappし複数ユーザで利用することができるコンテナ管理ツールである. +Podmanはマルチユーザに対応しているため,ie-podmanを利用せずともコンテナの作成などを行える. +だが,コンテナへのIPアドレスの割り当てには,root権限が必要となるためrootlessでは実行できない. +そのため,Webなどを実行しアクセスするにはポートフォワードを設定し,SSHポートフォワードを行う必要がある. +そこで,ie-podmanではPodmanのすべての機能をwrappするのではなく,rootlessでは実行できない機能を提供する. + +\section{教育情報システムの評価} +\subsection{ie-podmanの評価} +\subsection{ファイルシステムの評価} + +\section{まとめ} + +\section{今後の課題} \begin{thebibliography}{9} - \bibitem{sanko} 参考 + +\bibitem{podman} Podman,https://podman.io/,2021/1/4. +\bibitem{singularity} Singularity,https://sylabs.io/singularity/,2021/1/8. +\bibitem{slurm} Slurm, https://slurm.schedmd.com/overview.html, 2021/1/14. +\bibitem{ceph} Ceph,https://docs.ceph.com/en/latest/,2021/1/12. +\bibitem{ie-virsh} 平良 太貴 and 河野 真治,OS 授業向けマルチユーザ VM 環境の構築,研究報告システムソフトウェアとオペレーティング・システム(OS)(2014). +\bibitem{kido} 城戸翔太,安里悠矢,城間政司,長田智和,谷口祐治,"情報系学科における教育情報システムの構築及び運用管理に関する取り組み",研究報告インターネットと運用技術(IOT)(2016). + \end{thebibliography} - - \nocite{*} \bibliographystyle{junsrt} \bibliography{reference}