# 20220325_CAの3daysインターンに参加しました (例:20210901_LT会を開催しました) ###### tags: `ブログ記事` - [ ] 公開(ブログ公開担当者がいじるやつ) 太字斜体で書いてある内容を埋めて行ってください. 文章,画像は太字斜体の下の行に入れてください. 最初に書く時はREADMEを読んだら読むといいと思います. <br> ## 表示されない情報 ***書いた人の名前(自己紹介文と同じ名前)*** { つさば } ***記事の簡単な説明(検索した時にタイトルの下に出てくる文章)*** { 今回は2021年3月に参加させていただい た、サイバーエージェントさん「3days インフラエンジニア向け クラウド技術体験型インターンシップ ~仮想マシン編~」についてお話させていただきます! } <br> ## 表示される部分 ***サムネイル画像*** {  } ***カテゴリ*** 以下の中から該当しそうなカテゴリを選択してください ※一つだけ選択してください - [x] 対外活動 - [ ] 活動の様子 - [ ] メンバーの趣味 ***タグ*** 以下の中から該当しそうなカテゴリを選択してください.当てはまる物がない場合は適宜追加してください. 言語 - [ ] HTML - [ ] CSS - [ ] Python - [ ] Go - [ ] Ruby - [ ] JavaScript - [ ] TypeScript - [ ] Dart - [ ] Rust - [ ] Kotlin - [ ] Swift フレームワーク・ライブラリ - [ ] Ruby on rails - [ ] Vue.js - [ ] Nuxt.js - [ ] React.js - [ ] Next.js - [ ] Gin - [ ] Flluter ツール - [ ] GitHub - [ ] ターミナル - [ ] WSL - [x] Ubuntu - [ ] Docker - [ ] Raspberry Pi - [ ] Figma - [x] QEMU/KVM 分野 - [ ] Web-design - [x] Webインフラ --- ***以下に本文を記載してください*** こんにちは。 NUTMEGでNUTMEGクラウドの開発・運用を行っている大浦です。 今回は2021年3月に参加させていただいた、サイバーエージェントさんの「3days インフラエンジニア向け クラウド技術体験型インターンシップ ~仮想マシン編~」についてお話させていただきます! # クラウド技術体験型インターンシップとは クラウド技術体験型インターンシップは、インフラエンジニアを志望する学生向けに、座学とハンズオンを通してクラウドを構成する要素技術について体験できるインターンシップです。 インターンでは、まず、CPUやメモリの仮想化についての座学を行い、その後`QEMU/KVM`、`libvirt`、`virtio`の技術を用いて仮想マシンを構成するハンズオンを行いました。 ハンズオンでは現場のエンジニアの方がメンターについてくださりました! 当日はオンラインでしたが、Gatherというゲーム感覚でミーティングを行えるツールを使用していたため、わからないことを聞きやすい環境が整っていました! # 参加した経緯 私は大学の学祭実行委員会に所属しており、学祭を円滑に進めるためのアプリケーション開発や、そのインフラ運用を行うNUTMEGというチームで活動をしています。 特に私はインフラ担当で、WEBアプリケーション用にサーバーを構築・運用しています。NUTMEGではVMの運用経験がなく、WEBアプリの数だけサーバーを用意し手間やお金がかかっていました。 インターンを通して、VMの構築・運用技術を学び、NUTMEGのインフラをより良いものにしたいと言う思いから本インターンへの参加を決意しました。 # インターンで学んだポイント ## 座学 座学ではCPUとメモリの仮想化について学びました。仮想化支援機構を使った仮想化とそうでない仮想化の仕組みを知ることで、パフォーマンスに差が出る理由が学べました! ### CPUの仮想化について 仮想化支援機構を使わず、ソフトウェア的にCPUを仮想化するためには、CPUをエミュレートする必要がありパフォーマンスがかなり悪くなります。 仮想化支援機構には、`VMX non-Root Mode`(ゲストマシンモード)があり,仮想マシンが非特権センシティブ命令を実行しようとすると `VMX non-Root Mode` から `VMX Root Mode`(ハイパーバイザモード) へ切り替えて実行します。 そのため,ゲストOSはハイパーバイザのレイヤを意識せず,より実機に近い性能を得られます。 ### メモリの仮想化について 仮想マシンは仮想メモリアドレスを物理メモリアドレスとして認識するためアドレスの仲介が必要です。 仮想化支援を使わない方法では、シャドーページテーブルを用います。ホストカーネルでページテーブルを複製することで、ゲストOSが仮想メモリにアクセスするとき,パイパーバイザーが物理メモリのアドレスを参照してCPUに伝えます。この方式では、同期回数が多くパフォーマンスが悪いのが欠点です。 仮想化支援を使う方法では、EPT等のメモリ仮想化をCPUで支援する機能を用います。これにより、ゲストOSから仮想メモリへアクセスしたとき,EPTテーブルを参照し,ゲスト物理アドレスから物理メモリアドレスへ変換を行うことができ、効率がよくパフォーマンスが高くなります。 ## インターン課題 インターン課題では`libvert`、`virtio`を使用した、仮想マシン作成を行いました! 普段は絶対にさわれないプライベートクラウドのテスト環境を使って仮想マシン作成を行いました。 課題は3人チームで行いました!分からないことがあれば相談でき、それでもわからないときはメンターに聞けたので終始安心でした! ## 成果発表 成果発表では、3日間で学んだことをついて発表を行いました! 座学で学んだ、仮想化支援機構を使ったものと使わなかったもののパフォーマンスを比較するスライド発表を行い、ありがたいことに最優秀賞をいただくことができました! こちらは頂いた景品  # 最後に 3日間という短い期間ですが、メンター、運営の方々ありがとうございました。 メンターの方々には、技術的な質問以外にも、趣味の話や、これからやっておいたほうがいいこと、サイバーエージェントのいいところ悪いところなど、インターンではないと聞くことのできないことを色々とお聞き出来ました。 本当にありがとうございます! これから、このインターンで学んだ技術をNUTMEGで応用しより良いインフラを構築・運用していきたいと思います!
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up