20190315-仮想マシンってなんだっけ?(再演)

参考URL: https://docs.google.com/presentation/d/12xCafjhvenIcPk-fSTPqeQ1fv8F2X4Cj-2rB5r6NZ2s/ 

自己紹介

  • グローバルで認定を受けたトレーナー

    • つよつよ
    • 参照
    • インフラ全部
  • 機械系

    • 1~6(すげぇ)
    • ボイラー技士(すげぇ)
  • 今日はインフラ勉強会!!

内容

  • 立場上、色んな資料が権利関係で使えない
  • 普通は50, 60毎ぐらい作る
  • Discordでは見えない
  • 質問はQ.を付けてね

内容

  • 仮想マシンってなんだっけ?

1. VMで構築したことない方向けの説明

  • どんな環境でも、システムを稼働させるにはハードウェアのリソースが必要

HW

  • 4種のリソースに分けられる
    • CPU
    • memory
    • disk
    • network
  • 秋葉原に行ってメモリとかハードウェア買うよね。
  • これらが「OS」からアクセスできるリソース

OS(Supervisor)

  • 昔はSupervisorと呼ばれていた
    • IBMの陰謀がどうこう
  • HWを"抽象化する"
    • 世の中にはたくさんのハードウェアが存在
    • ハードウェアごとにアプリケーションを作るのは大変
    • Driverがあれば
  • OSは、プール(資源?)をプロセスに割り当て、動作させることができる
    • e.g. top
      • 上部欄: ハードウェアの資源全体
      • COMMAND: どのコマンド/プログラムで実行されているか

プロセス

  • 最終的に実行されるなにがし。プログラム

2.仮想マシンの仕組み

  • 仮想マシンでもハードウェアが必要
  • Oracle VirtualBox, VMware Player, Hyper-V, Xen, KVM

仮想マシン(ホスト型)

  • HW -> OS(Supervisor) -> Hypervisor -> VMM -> vHW -> OS -> Process
  • Hyper > Superダヨ
  • EmulatorやSimulator
    • vHW
      • あたかもハードウェアがあるように見せかける技術
      • vHWはHWと見せかけることができる->OSを乗っけることができる
      • vHWは複数作ることができる->複数のOSを乗っけることができる
    • VMM ... Virtual Machine Monitor
      • vHW上のOS「HWを100%使えるぜ」「メモリ使いたいぜ」と思い込む
        • これらのリソース呼び出しを「システムコール」という
      • 仮想マシンから発行されるシステムコールを仲介してくれる
      • 会社によって考え方は異なる

仮想マシン(ベアメタル型)

  • HW -> Hypervisor -> VMM -> vHW -> OS -> Process
  • 必ずハードウェアは居る
    • 「クラウド環境でプログラムを動かす」といっても、必ずどこかのハード上で動かされる
      • 物理故障を想定した動きが必要
      • キーワード「Design for failure」
  • HW上にOS(Supervisor)ではなく、Hypervisor
  • プロセスから見た呼び出しの流れ
    • Process -> OS -> HW
    • Process -> OS -> vHW -> VMM -> Hypervisor -> OS(Supervisor) -> HW
    • Process -> OS -> vHW -> VMM -> Hypervisor -> HW
  • HWでこれらの呼び出しの流れを簡略化、パススルーする仕組みも作られている
    • Intel VT-x
    • SR-IOV

コンテナ(Docker)

  • 注意事項: 使うものによって仕組みが違ったりするので、今回はDockerに限って話をする

  • HW -> OS(Linux Kernel) -> DockerEngine -> Container -> Process

  • 注目すべきはvHWが出ない

    • CPUをいくつ、メモリをいくらといった定義、要求が不要になる
    • 様々な技術で、コンテナ同士を独立させる
      • cgroup, docker-network, namespace, ...
    • コンテナは"プロセス"
  • 可搬性が高くなった

    • 「Docker Hub」というレジストリから好きなコンテナイメージをダウンロードができる
      • OSやソフトウェアの"カタログ化"ができるようになった
        • 開発が用意に

実演

実演: Ubuntu上でWindowsを動かす

  • 仮想マシンマネージャー
    • KVM上に作成
    • インストール用ISOを準備
    • CPU, メモリ割り当て
    • Windowsが動かす
      • エミュレートとシミュレートはバイナリを変換するかどうかとか。
      • 知りたい人はググってね☆

実演: Nutanix(インフラ勉強会で使用)

  • 全て仮想マシンを動かすためのソフトウェアになっている
  • 興味がある人は来週月曜日バージョンアップ作業するので要チェック!!
  • 数十台(つよい)
  • ライブマイグレーション
    • 仮想マシンを動かしたまま別の物理マシンへ引っ越しさせる

実演: Docker

  • dockerhubから持ってくる
    • docker image ls: ダウンロードした一覧が見れる
      • docker imagesでも可
    • docker search: dockerhubから検索する
      • ex: docker search nginx
      • なるべくofficialのものを使う
        • セキュリティ検査や軽量化ちゃんとされてます
    • docker image pull
      • ex: docker image pull nginx
    • docker image ls
    • docker container run -p 80:80 nginx
    • http://localhost:80/  にアクセス→表示される
    • docker container run -p 80:80 httpd
      • docker imagesにないものは自動的にDLしてくれる

実演: Firecracker

  • HW -> Hypervisor -> VMM -> vHW -> OS -> Process

  • Kata Containerなど、違うアーキテクチャのものが出てきている

  • 基本はベアメタル型なので、コンテナに比べてパフォーマンスが出ないはず

  • vHWを軽量・最適化を行っている

  • 準備はgithubを参照

  • 今日はちょっと調子が悪いw

    • 皆手元で試してみてねっ!

質問タイム

Q. ちなみに Parallels も「ホスト型の仮想マシン」という認識でOKでしょうか?

  • その通り

仮想化のメリットはでっかいハードウェア一つあればいい分物理の管理が減ることでいいのかな

  • OSがHWを牛耳ってしまうので、
    • 20,30コア積まれてたりする
  • 小さいスペックは4コアからしか買えない
    • DHCP, ActiveDirectory動かしたい・・・けど高いのしかない・・・
      • CPUは10%しか使ってない
      • 残り90%が無駄
  • リソース集約できる!
    • 無駄の削減
  • スケーリング
    • 需要によってサーバー増やしたり減らしたりできる

Q.コンテナのLinuxkernelは物理のOSとは違うという認識でいいですか?

  • 物理OSと一緒でいいです
    • Windowsは作りづらい
    • Macも作りづらい
      • とは

Q.仮想マシン(ベアメタル型)とコンテナに比べて、仮想マシン(ホスト型)の方が向いているユースケースってどんなのでしょうか?

  • ホスト型はOSがHWを管理すればいい

    • Windowsではほぼ全てのデバイスドライバが提供されている
      • Windows 7でもインストールisoは3.1G
    • Linuxにドライバのないものもほとんどない
  • HypervisorがHWを管理しないといけない

    • 提供できていないドライバがある
      • ESXiのインストールisoは300M
        • そんなに詰め込まれてない
        • 対応しているハードウェア数が少ない
  • ホスト型とコンテナの比較

    • 物理マシンにUbuntu入れてるのにWindowsが動く
    • コンテナは基本同じOSしか行けない
  • Hypervisor自体はLinux動いてる

    • 実は仮想マシンもプロセス
      • 物理のHWを抽象化しているとこも含めて
      • 仮想マシンはvHW用のアレ

メモリは

Q.今操作しているPCのメモリはいくつ積んでいますか?

  • (聞き逃した)

Q. 結婚してくれませんか?

  • 結婚はまだ早い

Q. HWもハイパーバイザ型を想定した設計しているとかってことになるんでしょうか

  • Xeonの例

    • 仮想化支援技術を入れている
      • これだったら早いとかある
  • SSDの例

    • シーケンシャルアクセスになる
      • Trimいっぱいかけたりね
    • シーケンシャル=早くアクセスできる
      • HDDの例: 回転体なので、シーケンシャルで行く
      • SSH:
  • 録画は1週間

飲みすぎないようにね!!!