Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
hbstyle 2017-1 仮想化技術のあれこれ
Search
h-otter
January 12, 2017
Technology
0
130
hbstyle 2017-1 仮想化技術のあれこれ
仮想化とはというところから、サーバー仮想化のCPU周りの技術を中心に話しました。
h-otter
January 12, 2017
Tweet
Share
More Decks by h-otter
See All by h-otter
CLIに自動更新機能を実装することで、 開発速度を爆上げした話
otter
0
140
Kubernetesのワーカーノードを自動修復するために必要だったこと
otter
0
120
透過 L2 BRIDGE NAT
otter
0
68
Other Decks in Technology
See All in Technology
QA経験のないエンジニアリング マネージャーがQAのカジュアル面談に出て 苦労していること・気づいたこと / scrum fest niigata 2024
yoshikiiida
2
630
Domain-driven Design: A Complete Example
ewolff
2
230
「知的単純作業」を自動化する、地に足の着いた大規模言語モデル (LLM) の活用
nrryuya
8
8.1k
エンジニアゼロの組織から内製開発の DX をどう実現したのか / How did we achieve DX in in-house development in an organization with zero engineers?
genkiogasawara
2
1k
#phpconkagawa レガシーコードにもオブザーバビリティを 〜少しずつ始めるサービス監視〜
yamato_sorariku
0
510
拓展QA日常工作的邊界
line_developers_tw
PRO
0
340
TypeScript の抽象構文木を用いた、数百を超える API の大規模リファクタリング戦略
yanaemon
6
1.2k
CockroachDB はどのくらい「しぶとい」のか? / How tough is CockroachDB?
kota2and3kan
13
4.8k
QAエンジニアが伝えたい品質保証の羅針盤 / Compass for Quality Assurance
mii3king
1
320
Taking Flight with Tailwind CSS
opdavies
0
4.3k
サイボウズ 開発本部採用ピッチ / Cybozu Engineer Recruit
cybozuinsideout
PRO
9
37k
Google Cloud Next '24 Recap in ZOZO AIにより変わる開発 運用/Development and operation changed by AI
gachimuchiengineer
0
170
Featured
See All Featured
The Art of Programming - Codeland 2020
erikaheidi
43
12k
Writing Fast Ruby
sferik
622
60k
The Pragmatic Product Professional
lauravandoore
26
5.9k
Docker and Python
trallard
35
2.7k
Code Reviewing Like a Champion
maltzj
515
39k
Building Adaptive Systems
keathley
32
1.9k
It's Worth the Effort
3n
180
27k
Building an army of robots
kneath
300
41k
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
188
16k
Atom: Resistance is Futile
akmur
260
25k
Statistics for Hackers
jakevdp
790
220k
Rails Girls Zürich Keynote
gr2m
91
13k
Transcript
仮想化技術のあれこれ H-OTTER HBSTYLE
自己紹介
自己紹介 Twitter: @_h_otter_ MMA CTF 難しい… Heartbeatsでバイトしてます
資格 セキュリティスペシャリスト ネットワークスペシャリスト → 午後Ⅱで名前を書き忘れたらしい… 点数的には合格のはず (負け惜しみ)
• 競プロ • 自宅サーバ • CTF 高校時代は…
先日、成人しました
None
みんなリア充じゃん…
ICTSC トラコン 運営がわざと起こしたトラブルを直す 馬場さんや門馬さん、伊藤さんも参加 openstackなどの仮想化基盤を使うことも (つらい…)
ここから本題
仮想化ってなに? 『仮想化とは、サーバなどのハードウェアリソース(CPU、メモリ、HDD)を、物理的な構成にとら われずに、論理的に統合や分割することができる技術のこと。』 (ネットワークエンジニアとして, http://www.infraexpert.com/study/virtual.html) HDD: 2TB HDD: 1TB HDD:
5TB 容量を 仮想化 HDD: 2TB HDD: 1TB HDD: 5TB 仮想的なHDD: 8TB
仮想化ってなに? 『仮想化とは、サーバなどのハードウェアリソース(CPU、メモリ、HDD)を、物理的な構成にとら われずに、論理的に統合や分割することができる技術のこと。』 (ネットワークエンジニアとして, http://www.infraexpert.com/study/virtual.html) 帯域、 グローバルIPを 仮想化 仮想的なネットワーク グローバルIP:
/24 + /27 NTTコミュ IIJ RT01 RT03 RT02 100mbps GIP: /28 1gbps GIP: /24 100mbps GIP: /28 internet 1200mbps ※ 通信料がなるべく安価になるように流量を調整したりもする
仮想化ってなに? 『仮想化とは、サーバなどのハードウェアリソース(CPU、メモリ、HDD)を、物理的な構成にとら われずに、論理的に統合や分割することができる技術のこと。』 (ネットワークエンジニアとして, http://www.infraexpert.com/study/virtual.html) CPU, memoryを 仮想化 memory: 32GB
CPU: 3GHz * 8 core SRV01 memory: 32GB CPU: 3GHz * 8 core SRV02 memory: 64GB CPU: 3GHz * 16 core = 48GHz 仮想的なサーバ
今回はサーバ仮想化
今日のために調べたのでガバガバかも… (心が折れない程度に)修正をお願いします :BOW:
user land ring3 最近のOS user modeとkernel modeが分かれている kernelはHDDなど外部I/Oの制御をうけもつ modeによって実行やアクセスできる領域は 決まっており、ring
[0-3]で表される I/O入力があった場合、kernel modeに移って 処理をする 利点は以下の通り アクセス権限を明確に分けることでセキュアに user landのアプリは細かい制御を気にせずに 開発を行える kernel land ring0 I/O 割り込み proc 1 proc2
サーバ仮想化の種類 準仮想化 完全仮想化 Type 1(「ネイティブ」または「ベアメタル」)ハイパーバイザ KVM Xen Hyper-V Type 2(「ホスト」)ハイパーバイザ
QEMU (KVM) Vmware workstation virtualbox
完全仮想化 (Xen) VMのkernelは物理ホスト上にインストールす るものと完全に同じものを使うことが可能 実はこの説明では不完全 (後述) VMM kernel land ring0
user land ring3 命令 VM Kernel Xen 参考: http://www.itmedia.co.jp/enterprise/articles/0701/12/news010.html Xen
準仮想化 (Xen) VMのkernelはXenのためににカスタマイズさ れたものをインストール 命令セットをいい具合に変えたもの Xenはring 1にVMのkernelを置き、その下に ハイパーバイザー(仮想化を管理するもの)を 置くことで実現 スーパーバイザー(kernel)の上位にいるからハ
イパーバイザー VMM kernel land ring0 user land ring3 VM kernel land ring1 命令 参考: http://www.itmedia.co.jp/enterprise/articles/0701/12/news010.html
仮想化の問題点 VMの命令がシステム全体を操作してしまう 例えばメモリはアドレスが同じところを書き換 えてしまったり… 違うOSなのに同じディスクを参照したり… 参考: http://www.fujitsu.com/downloads/JP/archive/imgjp/jmag/vol62-1/paper18.pdf VM1 VM2 memory
0xffff40a1を書き換えて! 0xffff40a1を書き換えて! 同じとこ書き換えるの?
user land ring3 QEMU それらの問題点を何とか潜り抜けて開発さ れたエミュレータ 全体を書き換えるような命令を正しく動くよう な命令に変換する もともと別のアーキテクチャを動かすための エミュレータだからできた技
VMM kernel land ring0 VM kernel QEMU Proc 命令セットの変換 命令 欠点: 遅い!!
VMX root operation mode VMX non-root operation mode VT-x 完全仮想化
(Xen) Intelの変態テクノロジー システム全体に影響がある命令を実行した 場合、VMX root operation mode に自動で切 り替わる ハイパーバイザーをVMX root operation mode に待たせておけば期待通りの処理がで きる VMM kernel land ring0 user land ring3 命令 VM Kernel Xen 参考: http://www.itmedia.co.jp/enterprise/articles/0701/12/news010.html Xen
VMX root operation mode VMX non-root operation mode KVM VT-xを前提に作られたハイパーバイザー
QEMUと一緒に使う 全体に影響を与えない命令はそのまま実行、 与える影響は/dev/kvmに書き込み、kvm module がいい感じに実行 構造がシンプルで、開発するのがkvm module のみなので神 kernelがハイパーバイザーになる VMM kernel land ring0 user land ring3 /dev/kvm kvm module 参考: http://www.fujitsu.com/downloads/JP/archive/imgjp/jmag/vol62-1/paper18.pdf QEMU linux kernel
ネイティブ型とホスト型 ネイティブ型 ハイパーバイザーがring 0にいる (Ex. Xen) ホスト型 ハイパーバイザーがring 3にいる (Ex.
QEMU) user land ring3 VMM kernel land ring0 VM kernel QEMU Proc 命令セットの変換 命令 VMM kernel land ring0 user land ring3 命令 VM Kernel Xen Xen
仮想化技術的なあれ H-OTTER MMA TECH:TALK 2017 #1