このブログで分かることとその効果
わかること
- Xenについて
- 仮想化のタイプには3タイプある
効果
ちょっとした知識が手に入ります。ただ一方で、実用的なコマンドとかは出てきません。
Xenとは?
Xen
とは、ハイパーバイザ型
の仮想化ソフトウェアのことです。
Xenのリンク↓
https://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/virtualization_types.html
AWSはこのXen
で動作しています。
ハイパーバイザー型?
仮想化には3パターンあります。
(2パターンという見方もできますが、今回はコンテナ型を一つの仮想化パターンとしてカウントしました。)
では、その3パターンを簡単に説明していきます。
ハイパーバイザー型
- 具体的なソフトウェア: Xen
- これがAWSが動いています。
- ハードウェアレベルでリソースを割り当てます
- リソースを物理的にVM(仮想マシン)に割り当てるので、他のVMからの影響は受けにくいというメリットがあります。
- 全く受けない訳ではありません
- ユーザはハイパーバイザーと呼ばれる上で実行されるVMを使います。
- そのVMがEC2です
一般的なEC2のインスタンスの場合、AWSコンソールからインスタンスの起動や再起動をすることができますが、これはXenのコマンドを実行しています(詳しくはAWSで働かないとわからないですが。)
KVM型
- 具体的なソフトウェア: Vagrant(Virtualbox)
- リソースをOSレベルで割り当てます。
- VMは、アプリとして動作します
- VMからの影響はハイパーバイザー型よりは受けやすい
コンテナ型
- 具体的なソフトウェア: Docker
- アプリ(プロセス)レベルの仮想化です
- これをAWSの物理マシンから見ると、二重に仮想化しているように見えます。
- ネステッド(入れ子)といいます
- このことを
Nested Virtualization
と言ったりします。
- このことを
* Vagrantと同じレイヤの仮想化ですが、コンセプトが違います。
* Vagrantでは、OSを仮想的にのせるのに対して、コンテナではOS(厳密にはkernel)レベルを共有します。
* なので、実行は速いです。
ハイパーバイザー型仮想化のライフサイクル
ハイパーバイザー型仮想化において、VMのプロセスは、実際にVM上で実行されることはありません。
VMのプロセスを実行すると、その実行権限は、その下のハイパーバイザーに渡されます。
ハイパーバイザーがVMのプロセスを代わりに実行して、その結果をVMに返します。
どんな仮想化でも、VMの代わりにその下のレイヤが実行するようになっています。(確か)
- Xen → xend
- vagrant(virtualbox) → virtualbox engine
- Docker → dockerd(docker engine)
おまけ
最近はC5インスタンスはKVMにだそうです。これは知りませんでした。
参考にした記事
- https://blog.kasei-san.com/entry/2018/01/10/003933
- https://dev.classmethod.jp/cloud/ec2-migration-to-hvm/
- https://www.publickey1.jp/blog/17/awskvmc5.html
- https://dev.classmethod.jp/cloud/aws/ec2-instance-detail/
-
https://qiita.com/9en/items/f4eab2f61485a9f3885a
- ほぼまんまのQiitaです。既出でしたか。残念。
AWS歴
ちなみに僕のAWS歴をここに書かせてください。
-
僕自身AWSをさわりはじめたのは、ここ数ヶ月。
-
今まで触ったAWSサービス
- ワークメール
- SES
- ECR
- ECS
- EC2
- Lightsail