Download - RHEL6 KVMによる仮想化
![Page 1: RHEL6 KVMによる仮想化](https://reader035.vdocuments.pub/reader035/viewer/2022081717/55615132d8b42adb6b8b5267/html5/thumbnails/1.jpg)
Red Hat K.K. All rights reserved. この資料はレッドハット保有の既存資料であり、御社との契約で定義されている成果物には該当いたしません。
Red Hat Enterprise Linux 6KVMによる仮想化
Red Hat K.K. Solution Architect: Kazuo Moriwaka <[email protected]>V2.3: 29th Jul. 2013
![Page 2: RHEL6 KVMによる仮想化](https://reader035.vdocuments.pub/reader035/viewer/2022081717/55615132d8b42adb6b8b5267/html5/thumbnails/2.jpg)
Red Hat K.K. All rights reserved. この資料はレッドハット保有の既存資料であり、御社との契約で定義されている成果物には該当いたしません。2
この資料の位置づけと宣伝
この資料はRHEL6に同梱されるKVMによる仮想化について解説しています。KVMを活用するために必要な知識をまとめて提供しています。● 基本的な利用方法● 設定ファイルやログファイルなどの配置● 設定可能な項目の紹介● 適切な設定項目を選択するために必要な背景知識● KVMの実装の簡単な紹介
レッドハットでは「KVMスタートアップ」という一社研修を開催しています。本資料はその研修で利用する資料です。
この資料を利用した一社研修サービスを提供していますご興味のある方はお問いあわせください● 問い合わせ先は次ページにてご案内しております
![Page 3: RHEL6 KVMによる仮想化](https://reader035.vdocuments.pub/reader035/viewer/2022081717/55615132d8b42adb6b8b5267/html5/thumbnails/3.jpg)
Red Hat K.K. All rights reserved. この資料はレッドハット保有の既存資料であり、御社との契約で定義されている成果物には該当いたしません。3
お客様からのお問い合わせ先
レッドハットの製品、サービスに関するご購入前の一般的なお問い合わせ
<サービス時間> 平日9:00〜18:00
セールスオペレーションセンター(SOC)
Tel. 0120-266-086 (携帯電話からは03-5798-8510)
e-mail: [email protected]
![Page 4: RHEL6 KVMによる仮想化](https://reader035.vdocuments.pub/reader035/viewer/2022081717/55615132d8b42adb6b8b5267/html5/thumbnails/4.jpg)
Red Hat K.K. All rights reserved. この資料はレッドハット保有の既存資料であり、御社との契約で定義されている成果物には該当いたしません。4
アジェンダ
KVMって何? RHELでのKVM利用 仮想マシンのインストール 仮想マシン構成変更 KVMのモデルとバックエンド
● CPU● ディスク● ネットワーク● メモリ● その他● virtio
メモリ管理の仮想化のしくみ KVMによるCPUの仮想化のしくみ セキュリティの改善 KVMユーザ事例
![Page 5: RHEL6 KVMによる仮想化](https://reader035.vdocuments.pub/reader035/viewer/2022081717/55615132d8b42adb6b8b5267/html5/thumbnails/5.jpg)
5Red Hat K.K. All rights reserved. この資料はレッドハット保有の既存資料であり、御社との契約で定義されている成果物には該当いたしません。
KVMって何?
![Page 6: RHEL6 KVMによる仮想化](https://reader035.vdocuments.pub/reader035/viewer/2022081717/55615132d8b42adb6b8b5267/html5/thumbnails/6.jpg)
Red Hat K.K. All rights reserved. この資料はレッドハット保有の既存資料であり、御社との契約で定義されている成果物には該当いたしません。6
KVMって何?
KVM は何の略?● Kernel-based Virtual Machine
Kernel?● Linuxカーネル● Linuxカーネルに仮想マシン管理機能を追加● Linuxのスケジューラ、メモリ管理、ドライバ、省電力対応な
どをそのまま利用する
CPUの仮想化支援機構を利用する I/Oのエミュレートにユーザランドのプログラム(QEMU)を利用
する
![Page 7: RHEL6 KVMによる仮想化](https://reader035.vdocuments.pub/reader035/viewer/2022081717/55615132d8b42adb6b8b5267/html5/thumbnails/7.jpg)
Red Hat K.K. All rights reserved. この資料はレッドハット保有の既存資料であり、御社との契約で定義されている成果物には該当いたしません。7
QEMUQEMU
KVM模式図
KVM
QEMU
VMふつうのプロセス
Linux kernel
Hardware
VMVM
![Page 8: RHEL6 KVMによる仮想化](https://reader035.vdocuments.pub/reader035/viewer/2022081717/55615132d8b42adb6b8b5267/html5/thumbnails/8.jpg)
Red Hat K.K. All rights reserved. この資料はレッドハット保有の既存資料であり、御社との契約で定義されている成果物には該当いたしません。8
Xen 模式図
Hardware
Hypervisor
dom0
Device Driver
Backend driver
domU
Frontend driver
domU
Frontend driver
Virtual CPU & Memory
![Page 9: RHEL6 KVMによる仮想化](https://reader035.vdocuments.pub/reader035/viewer/2022081717/55615132d8b42adb6b8b5267/html5/thumbnails/9.jpg)
Red Hat K.K. All rights reserved. この資料はレッドハット保有の既存資料であり、御社との契約で定義されている成果物には該当いたしません。9
Xen/KVM historical chart
2003
Xen
2004 2005 2006 2007 2008 2009 2010
citrixxensourceケンブリッジ
Xen登場Xen開発活発化
FedoraへXen取り込み
linuxへのXenマージ活動
KVM登場&マージ
FedoraへのKVM取り込み
linuxマージまで統合見送り
RHEL5.4 w/ KVM & Xen
RHEL5.0 w/ Xen
KVM
intel, AMD仮想化支援機能開発
qumranet red hat
2011
![Page 10: RHEL6 KVMによる仮想化](https://reader035.vdocuments.pub/reader035/viewer/2022081717/55615132d8b42adb6b8b5267/html5/thumbnails/10.jpg)
Red Hat K.K. All rights reserved. この資料はレッドハット保有の既存資料であり、御社との契約で定義されている成果物には該当いたしません。10
KVMとXenの比較
KVM
QEMU
VM
Hypervisor
dom0
Driver
Back
domU
Front
KVM Xen
スケジューラ linuxを転用 Xen hypervisor独自実装
資源管理 linuxのcgroupsで対応 CPUはXenスケジューラで対応
pvSCSI あり(6.4から) あり
dump あり あり
live migration あり あり
実装の特徴 HWの仮想化対応を活用 HWが対応しない時にSWで工夫
旧CPU活用 仮想化対応機能が必須 PVであれば古いCPUでも対応
新ハード対応 linuxの対応をそのまま利用 新機能への追従は遅れがち
![Page 11: RHEL6 KVMによる仮想化](https://reader035.vdocuments.pub/reader035/viewer/2022081717/55615132d8b42adb6b8b5267/html5/thumbnails/11.jpg)
Red Hat K.K. All rights reserved. この資料はレッドハット保有の既存資料であり、御社との契約で定義されている成果物には該当いたしません。11
RHEL KVM動作環境
RHEL 5.4以降 x86_64アーキテクチャでハードウェア仮想化技術が有効な
CPU (AMD-V/Intel VT-x)● BIOSで仮想化支援技術が有効になっていること
●BIOSでdisableされるとOSで再度有効にすることができません
メモリ量●最低 2GB●推奨 2GB+VMに割り当てるメモリ総計
サーバ上のトータルVCPU数●推奨 実CPUのスレッド数-1●最大 実CPUのスレット数*10
![Page 12: RHEL6 KVMによる仮想化](https://reader035.vdocuments.pub/reader035/viewer/2022081717/55615132d8b42adb6b8b5267/html5/thumbnails/12.jpg)
Red Hat K.K. All rights reserved. この資料はレッドハット保有の既存資料であり、御社との契約で定義されている成果物には該当いたしません。12
RHEL KVM VMリソース上限
VCPU● 最大 64(〜6.2), 160(6.3〜)● 実際に同時実行できるスレッド数以上の割りあては無駄
メモリ● 最大 256GB(〜6.1), 512GB(6.2), 2TB(6.3〜)
仮想IDEデバイス● 最大 4
仮想NIC● 無制限(ただし下記のPCIデバイス数の制限あり)
virtio ブロックデバイス, 仮想NICなど、仮想PCIバス経由で接続するデバイス● 合計して最大28● 仮想マシン上で利用できるPCIデバイス数の上限が32、ただし4つは
利用済みで利用できないため28 virtio-scsi経由のブロックデバイス
● 数百(明確な上限は設定されていない)最新状況は http://jp.redhat.com/rhel/compare/
![Page 13: RHEL6 KVMによる仮想化](https://reader035.vdocuments.pub/reader035/viewer/2022081717/55615132d8b42adb6b8b5267/html5/thumbnails/13.jpg)
Red Hat K.K. All rights reserved. この資料はレッドハット保有の既存資料であり、御社との契約で定義されている成果物には該当いたしません。13
RHEL6.4でサポートされるゲストOS
Operating system virtioドライバ
Red Hat Enterprise Linux 3 x86 あり
Red Hat Enterprise Linux 4 x86, x86_64 あり
Red Hat Enterprise Linux 5 x86, x86_64 あり
Red Hat Enterprise Linux 6 x86, x86_64 あり
Windows Server 2003 R2 32-Bit, 64-Bit あり
Windows Server 2003 Service Pack 2 32-Bit, 64-Bit あり
Windows XP SP3 32-Bit あり
Windows Vista 32-Bit, 64-Bit なし
Windows Server 2008 32-Bit あり
Windows Server 2008 (and R2) 64-Bit あり
Windows 7 32-Bit, 64-Bit あり
最新状況はhttp://www.redhat.com/resourcelibrary/articles/enterprise-linux-virtualization-support
![Page 14: RHEL6 KVMによる仮想化](https://reader035.vdocuments.pub/reader035/viewer/2022081717/55615132d8b42adb6b8b5267/html5/thumbnails/14.jpg)
Red Hat K.K. All rights reserved. この資料はレッドハット保有の既存資料であり、御社との契約で定義されている成果物には該当いたしません。14
ドキュメント
製品ドキュメント● Virtualization Administration Guide● Virtualization Getting Started Guide● Virtualization Host Configuration and Guest Installation GuideKVMの設定やゲストのインストールを詳細に記述http://docs.redhat.com/docs/en-US/Red_Hat_Enterprise_Linux/index.html
Red Hat Reference Architecture Series仮想化に限らず各種設定例、ベンチマーク結果などを公開https://access.redhat.com/knowledge/refarch
● カスタマポータル内●→ナレッジ●→リファレンスアーキテクチャ
![Page 15: RHEL6 KVMによる仮想化](https://reader035.vdocuments.pub/reader035/viewer/2022081717/55615132d8b42adb6b8b5267/html5/thumbnails/15.jpg)
15Red Hat K.K. All rights reserved. この資料はレッドハット保有の既存資料であり、御社との契約で定義されている成果物には該当いたしません。
RHELでのKVM利用
![Page 16: RHEL6 KVMによる仮想化](https://reader035.vdocuments.pub/reader035/viewer/2022081717/55615132d8b42adb6b8b5267/html5/thumbnails/16.jpg)
Red Hat K.K. All rights reserved. この資料はレッドハット保有の既存資料であり、御社との契約で定義されている成果物には該当いたしません。16
KVMのインストール
インストーラでVirtual Hostを選択
![Page 17: RHEL6 KVMによる仮想化](https://reader035.vdocuments.pub/reader035/viewer/2022081717/55615132d8b42adb6b8b5267/html5/thumbnails/17.jpg)
Red Hat K.K. All rights reserved. この資料はレッドハット保有の既存資料であり、御社との契約で定義されている成果物には該当いたしません。17
関連パッケージ(1/2)
qemu-kvm● qemu-kvmを提供
●KVMのユーザスペース(QEMU)●管理インタフェース 兼 I/Oエミュレーション
kernel● kvm.ko、kvm-intel.ko、kvm-amd.koを含む
●KVMの中心●kvm.koはハードウェア非依存部分●kvm-intel.ko、kvm-amd.koはCPU特有の部分
qemu-img● ディスクイメージ作成・変換ツール
libvirt●抽象化ライブラリ、他のハイパーバイザーもサポート
qemu-kvm-tools● KVMの資源使用量表示など
![Page 18: RHEL6 KVMによる仮想化](https://reader035.vdocuments.pub/reader035/viewer/2022081717/55615132d8b42adb6b8b5267/html5/thumbnails/18.jpg)
Red Hat K.K. All rights reserved. この資料はレッドハット保有の既存資料であり、御社との契約で定義されている成果物には該当いたしません。18
関連コマンド
virsh● CUIでのインタフェース●起動/終了/構成変更/VNCコンソール接続先確認
virt-install● CUIでのインストール● PXE boot + kickstart を併用して自動インストール
qemu-img● ディスクイメージの作成/変換/スナップショット管理
virt-manager●GUIによる管理ツール● インストール/起動/構成変更/VNC接続 etc.
virt-viewer● 仮想マシンのコンソールにVNC接続する単機能のビューア
![Page 19: RHEL6 KVMによる仮想化](https://reader035.vdocuments.pub/reader035/viewer/2022081717/55615132d8b42adb6b8b5267/html5/thumbnails/19.jpg)
Red Hat K.K. All rights reserved. この資料はレッドハット保有の既存資料であり、御社との契約で定義されている成果物には該当いたしません。19
関連パッケージ(2/2)
python-virtinst● インストール用ツールvirt-install
virt-v2v● VM変換ツール
virt-top● 仮想化ホストの状態表示
libguestfs libguestfs-tools guestfish
● 仮想ディスクイメージの操作 spice-*
● リモートデスクトッププロトコル SPICE関連ソフトウェア
![Page 20: RHEL6 KVMによる仮想化](https://reader035.vdocuments.pub/reader035/viewer/2022081717/55615132d8b42adb6b8b5267/html5/thumbnails/20.jpg)
Red Hat K.K. All rights reserved. この資料はレッドハット保有の既存資料であり、御社との契約で定義されている成果物には該当いたしません。20
virsh コマンド
コマンド一覧● virsh help
動作していないものも含めた仮想マシン一覧● virsh list --all
仮想マシンの起動● virsh start rhel6
仮想マシンの情報● virsh dominfo rhel6
仮想マシン定義の出力● virsh dumpxml rhel6
仮想マシンのシリアルコンソールへ接続● virsh console rhel6
仮想マシンのダンプを取得● virsh dump rhel6
リモートホスト上のlibvirtdへssh経由で接続● virsh --connect qemu+ssh://[email protected]/system
![Page 21: RHEL6 KVMによる仮想化](https://reader035.vdocuments.pub/reader035/viewer/2022081717/55615132d8b42adb6b8b5267/html5/thumbnails/21.jpg)
Red Hat K.K. All rights reserved. この資料はレッドハット保有の既存資料であり、御社との契約で定義されている成果物には該当いたしません。21
libvirt
複数の仮想化環境に対応した管理用ライブラリ RHELの仮想化環境ではこのライブラリを利用してXenとKVM
の両方に対応しています libvirtを利用するソフト
● virsh● virt-manager● virt-install● virt-viewer● libguestfs
詳しくは● http://www.libvirt.org/● http://wiki.libvirt.org/page/FAQ
KVM
QEMU VM
virt-managervirsh
libvirt
Linux kernel
virt-install
![Page 22: RHEL6 KVMによる仮想化](https://reader035.vdocuments.pub/reader035/viewer/2022081717/55615132d8b42adb6b8b5267/html5/thumbnails/22.jpg)
Red Hat K.K. All rights reserved. この資料はレッドハット保有の既存資料であり、御社との契約で定義されている成果物には該当いたしません。22
libvirt の “URI”
driver[+transport]://[username@][hostname][:port]/[path][?extraparameters] 例
リモートKVM: qemu+ssh://[email protected]/systemローカルKVM: qemu:///systemローカルXen: xen:///
driver● KVMであれば qemu ●Xenであれば xen
transport ● ローカルホスト: なし● libvirtdに直接接続: tcpまたはtls● ssh経由で接続: ssh
path● qemuであればsystem, xenであればなし
参考情報:●http://libvirt.org/uri.html●Virtualization Guide: Chapter 19. Remote management of virtualized guests
![Page 23: RHEL6 KVMによる仮想化](https://reader035.vdocuments.pub/reader035/viewer/2022081717/55615132d8b42adb6b8b5267/html5/thumbnails/23.jpg)
Red Hat K.K. All rights reserved. この資料はレッドハット保有の既存資料であり、御社との契約で定義されている成果物には該当いたしません。23
qemu-imgによるディスクイメージ管理
仮想ディスクイメージ作成● qemu-img create -f <フォーマット> <ファイル名> <サイズ>● qemu-img create -f qcow2 myimagefile.img 10G
差分イメージ作成(qcow2のみ)● qemu-img create -F <ベースイメージのフォーマット> -b <ベー
スイメージファイル名> -f qcow2 <ファイル名>● qemu-img create -F raw -b mybase.img -f qcow2 mydiff.img
フォーマットの変換(または再作成)● qemu-img convert -f <元フォーマット> -O <出力フォーマット>
<元ファイル名> <出力ファイル名>● qemu-img convert -f raw -O qcow2 orig.img out.img● qemu-img convert -f qcow2 -O qcow2 orig.img out.img
イメージファイルの情報取得● qemu-img info -f <フォーマット名> <イメージファイル名>
![Page 24: RHEL6 KVMによる仮想化](https://reader035.vdocuments.pub/reader035/viewer/2022081717/55615132d8b42adb6b8b5267/html5/thumbnails/24.jpg)
Red Hat K.K. All rights reserved. この資料はレッドハット保有の既存資料であり、御社との契約で定義されている成果物には該当いたしません。24
virt-top(RHEL6.0〜)
top風の統計情報表示 同情報のCSV形式での出力 表示情報
● CPU使用量● block I/Oのリクエスト数、転送バイト数● network I/Oのパケット数、転送バイト数
![Page 25: RHEL6 KVMによる仮想化](https://reader035.vdocuments.pub/reader035/viewer/2022081717/55615132d8b42adb6b8b5267/html5/thumbnails/25.jpg)
Red Hat K.K. All rights reserved. この資料はレッドハット保有の既存資料であり、御社との契約で定義されている成果物には該当いたしません。25
仮想ディスクイメージ操作ツール(RHEL6.0〜)
guestfish● シェル風のインタフェースで仮想ディスクイメージを操作● --ro, --rw のオプションにより書き込みの有無を指定● /usr/share/doc/guestfish-1.2.7/recipes に利用例
virt-v2v● RHEL5のXen, KVMやVMware ESXの仮想マシンをKVM環境へ移行
● 対象ゲストOSはRHEL4/5/6, Windows XP/Vista/7, Windows Server 2003/2008
● ドキュメント 「V2V Guide」 を参照 !操作対象の仮想マシンは停止しておく!
● 同時に書き換えをおこなうとファイルシステムが壊れます http://virt-tools.org/ http://libguestfs.org/
![Page 26: RHEL6 KVMによる仮想化](https://reader035.vdocuments.pub/reader035/viewer/2022081717/55615132d8b42adb6b8b5267/html5/thumbnails/26.jpg)
Red Hat K.K. All rights reserved. この資料はレッドハット保有の既存資料であり、御社との契約で定義されている成果物には該当いたしません。26
libguestfs-tools(RHEL6.0〜)
libguestfsによるファイルシステム等の操作の内、典型的なものをコマンドとして提供
読み込みのみ(対象VM動作中でも利用可能)● virt-cat, virt-df, virt-inspector,
virt-list-filesystems, virt-list-partitions, virt-ls オプションにより書き込みあり
● virt-tar, virt-win-reg 書き込みあり
● virt-edit, virt-rescue, virt-resize
![Page 27: RHEL6 KVMによる仮想化](https://reader035.vdocuments.pub/reader035/viewer/2022081717/55615132d8b42adb6b8b5267/html5/thumbnails/27.jpg)
Red Hat K.K. All rights reserved. この資料はレッドハット保有の既存資料であり、御社との契約で定義されている成果物には該当いたしません。27
ファイル・ディレクトリ
libvirt関連ディレクトリ● /var/lib/libvirt/
●ゲストのイメージなどが格納される● /etc/libvirt/
●設定ファイルなどが格納される● /var/log/libvirt/
●VMごとのログが格納される kvm関連ファイル
● /usr/libexec/qemu-kvm● bin、sbinの下ではなくlibexecなのは、直接実行せずに
libvirt経由で操作することを意図しています(直接実行はサポート対象外)
● Fedoraなど他のKVM+libvirt環境から移行する場合には設定ファイル中のemulator指定でこのファイルを指定する
![Page 28: RHEL6 KVMによる仮想化](https://reader035.vdocuments.pub/reader035/viewer/2022081717/55615132d8b42adb6b8b5267/html5/thumbnails/28.jpg)
Red Hat K.K. All rights reserved. この資料はレッドハット保有の既存資料であり、御社との契約で定義されている成果物には該当いたしません。28
ログファイル
/var/log/messages● libvirtdのログが格納される
/var/log/libvirt/● 仮想マシン毎のログが格納される● qemu/KVMであれば、/var/log/libvirt/qemu/<VM名>.log● qemu-kvmの標準出力、標準エラー出力が記録される
/var/log/dmesg● カーネルのログが格納される● kvmのカーネルモジュールはほとんどログを出さないが、初期化時にCPUの仮想化支援機能が利用できない場合などはここに記録される
(ユーザのhomeディレクトリ)/.virt-manager/virt-manager.log● virt-managerのログが出力される● libvirtdと対応するがDEBUGモードで出力されているので詳細
![Page 29: RHEL6 KVMによる仮想化](https://reader035.vdocuments.pub/reader035/viewer/2022081717/55615132d8b42adb6b8b5267/html5/thumbnails/29.jpg)
29Red Hat K.K. All rights reserved. この資料はレッドハット保有の既存資料であり、御社との契約で定義されている成果物には該当いたしません。
仮想マシンのインストール
![Page 30: RHEL6 KVMによる仮想化](https://reader035.vdocuments.pub/reader035/viewer/2022081717/55615132d8b42adb6b8b5267/html5/thumbnails/30.jpg)
Red Hat K.K. All rights reserved. この資料はレッドハット保有の既存資料であり、御社との契約で定義されている成果物には該当いたしません。30
virt-managerによるゲストOSのインストール
複雑な構成は組めないが典型的なケースを簡便に実行できる
仮想マシンの作成● システム名称を設定● 仮想化の方法を選択
●KVMでは完全仮想化のみ● インストール方法を選択● インストール元を選択
●ISO,http,ftp,NFS等を選択可
![Page 31: RHEL6 KVMによる仮想化](https://reader035.vdocuments.pub/reader035/viewer/2022081717/55615132d8b42adb6b8b5267/html5/thumbnails/31.jpg)
Red Hat K.K. All rights reserved. この資料はレッドハット保有の既存資料であり、御社との契約で定義されている成果物には該当いたしません。31
virt-managerによるゲストOSのインストール(続き)
仮想マシンの作成(続き)● ストレージの設定● ネットワークの設定● メモリとCPUの設定● 仮想マシンが起動●通常のハードウェアと同様に
インストール
![Page 32: RHEL6 KVMによる仮想化](https://reader035.vdocuments.pub/reader035/viewer/2022081717/55615132d8b42adb6b8b5267/html5/thumbnails/32.jpg)
Red Hat K.K. All rights reserved. この資料はレッドハット保有の既存資料であり、御社との契約で定義されている成果物には該当いたしません。32
virt-install によるゲストOSインストール
virt-installは仮想マシンの作成とゲストOSのインストールを行うコマンドラインツール●典型的なケースについてはコマンドラインが短くなるよう工夫されている
●複雑な構成もオプションで指定可能
ウィンドウで仮想画面を表示してGUIインストールする場合virt-install -n <仮想マシン名> -r <メモリ量(MB)> --file=<ファイル名> --file-size=<ディスク量(GB)> -c <ISOイメージ名>
例virt-install -n newvm -r 1024 --file=/var/lib/libvirt/images/newvm.img --file-size=10-c /path/to/rhel-server-5.5-x86_64-dvd.iso
![Page 33: RHEL6 KVMによる仮想化](https://reader035.vdocuments.pub/reader035/viewer/2022081717/55615132d8b42adb6b8b5267/html5/thumbnails/33.jpg)
Red Hat K.K. All rights reserved. この資料はレッドハット保有の既存資料であり、御社との契約で定義されている成果物には該当いたしません。33
対話的なテキストベースのインストール
virt-installで仮想マシンのシリアルコンソールを利用したインストール● virt-install -n <仮想マシン名> -r <メモリ量(MB)>
--disk=path=<ファイル名>,size=<ディスク量(GB)>--location <インストール元> --nographics --extra-args=<カーネルに追加する引数>--disk=path=<isoファイル名>,device=cdrom
● --extra-args利用には--locationによるインストール元指定が必要●シリアルコンソールを利用するので console=ttyS0 を指定●--cdromは使えないので--diskを利用
● --nographicsでVNCを設定せずシリアルコンソールへ接続する 例
● あらかじめ /mnt/RHEL5DVD にRHEL5のDVDをマウント● virt-install -n hoge -r 1024 --disk=path=/path/to/hoge.img,size=10
--location /mnt/RHEL5DVD --nographics --extra-args=”console=tty0 console=ttyS0,115200n8”--disk=path=/path/to/rhel-dvd.iso,device=cdrom
![Page 34: RHEL6 KVMによる仮想化](https://reader035.vdocuments.pub/reader035/viewer/2022081717/55615132d8b42adb6b8b5267/html5/thumbnails/34.jpg)
Red Hat K.K. All rights reserved. この資料はレッドハット保有の既存資料であり、御社との契約で定義されている成果物には該当いたしません。34
kickstartによる非対話的インストール
非対話的なインストール● 利用するvirt-installのコマンドラインオプションはテキスト
の対話的インストールと同じ● --extra-argsで
●ks= を指定してkickstart設定を行う●kickstartの詳細についてはInstallation Guideを参照●ネットワーク経由の場合「ゲストOSから見たIPアドレス」
を入力することに注意 例
● あらかじめ /mnt/RHEL5DVD にRHEL5のDVDをマウント● virt-install -n newvm -r 1024 --file=newvm.img --file-
size=10 --location /mnt/RHEL5DVD --nographics --extra-args=”ks=http://192.168.122.1/anaconda-ks.cfg ip=dhcp console=tty0 console=ttyS0,115200n8”
![Page 35: RHEL6 KVMによる仮想化](https://reader035.vdocuments.pub/reader035/viewer/2022081717/55615132d8b42adb6b8b5267/html5/thumbnails/35.jpg)
Red Hat K.K. All rights reserved. この資料はレッドハット保有の既存資料であり、御社との契約で定義されている成果物には該当いたしません。35
インストール後の設定
ゲスト側: qemu-guest-agentのインストール(6.3〜)● ホストとやりとりしてファイルシステムのsyncなどをおこな
うqemu-guest-agentをインストールする● RHELであればqemu-guest-agentパッケージの導入● Windowsであればqemu-ga.exeの導入
ゲスト側: tuned-admでのチューニング(6.3〜)● tuned-adm profile virtual-guest とコマンド入力して仮想マ
シン用のプロファイルを設定する ホスト側: tuned-admでのチューニング(6.3〜)
● tuned-adm profile virtual-host とコマンド入力して仮想化環境のプロファイルを設定する
![Page 36: RHEL6 KVMによる仮想化](https://reader035.vdocuments.pub/reader035/viewer/2022081717/55615132d8b42adb6b8b5267/html5/thumbnails/36.jpg)
36Red Hat K.K. All rights reserved. この資料はレッドハット保有の既存資料であり、御社との契約で定義されている成果物には該当いたしません。
仮想マシン構成変更
![Page 37: RHEL6 KVMによる仮想化](https://reader035.vdocuments.pub/reader035/viewer/2022081717/55615132d8b42adb6b8b5267/html5/thumbnails/37.jpg)
Red Hat K.K. All rights reserved. この資料はレッドハット保有の既存資料であり、御社との契約で定義されている成果物には該当いたしません。37
virt-managerによる仮想ハードウェア構成変更
各仮想マシンの「詳細」タブで設定● 変更内容は次の起動時から反映
CPU メモリ ディスク(HDD, CD/DVD) NIC マウス ディスプレイ シリアル
![Page 38: RHEL6 KVMによる仮想化](https://reader035.vdocuments.pub/reader035/viewer/2022081717/55615132d8b42adb6b8b5267/html5/thumbnails/38.jpg)
Red Hat K.K. All rights reserved. この資料はレッドハット保有の既存資料であり、御社との契約で定義されている成果物には該当いたしません。38
virshによる仮想ハードウェア構成変更
virsh edit <仮想マシン名>● 仮想マシン定義ファイルを読みこんだエディタが起動● 内容変更●保存終了●確認後問題がなければlibvirtdが読み込み
設定ファイルを直接変更しても自動的に反映されない点に注意● 変更後に virsh define による定義読み込みで反映可能
![Page 39: RHEL6 KVMによる仮想化](https://reader035.vdocuments.pub/reader035/viewer/2022081717/55615132d8b42adb6b8b5267/html5/thumbnails/39.jpg)
Red Hat K.K. All rights reserved. この資料はレッドハット保有の既存資料であり、御社との契約で定義されている成果物には該当いたしません。39
libvirtの設定管理
libvirtdが実際に参照する設定はメモリ上にあるもの
/etc/libvirt以下の設定は起動時に読み込み、変更時に書き出される
「仮想マシンの起動」「設定の読み込み」など一部の操作によりlibvirtdは設定の一部を自動生成し、設定に反映する● addressタグ, uuidタグ,
consoleタグなど
libvirtd
xml
/etc/libvirt/
起動時に読み込み
メモリ中の設定
変更時に書き出し
define
dumpxml/edit
自動書換え
![Page 40: RHEL6 KVMによる仮想化](https://reader035.vdocuments.pub/reader035/viewer/2022081717/55615132d8b42adb6b8b5267/html5/thumbnails/40.jpg)
Red Hat K.K. All rights reserved. この資料はレッドハット保有の既存資料であり、御社との契約で定義されている成果物には該当いたしません。40
設定ファイル群
/etc/libvirt/以下にまとまっている autostart にあるものは起動時に実行
/etc/libvirt/|-- libvirtd.conf|-- qemu| |-- networks| | |-- autostart| | | `-- default.xml -> ../default.xml| | `-- default.xml| |-- newvm.xml| |-- redhat52.xml| |-- rhel3.xml| |-- rhel4.xml| `-- rhel5.xml|-- qemu.conf`-- storage |-- autostart | `-- default.xml -> /etc/libvirt/storage/default.xml `-- default.xml
libvirtdへの外部からの接続設定
仮想ネットワーク設定
仮想マシン設定 1台1ファイル
VNCのデフォルトパスワード等の設定
ストレージ設定
![Page 41: RHEL6 KVMによる仮想化](https://reader035.vdocuments.pub/reader035/viewer/2022081717/55615132d8b42adb6b8b5267/html5/thumbnails/41.jpg)
Red Hat K.K. All rights reserved. この資料はレッドハット保有の既存資料であり、御社との契約で定義されている成果物には該当いたしません。41
ドメイン全体<domain type='kvm'> <name>newvm</name> <uuid>a040090d-79fe-3bca-7e2f-65c32a6f0318</uuid> <memory>1048576</memory> <currentMemory>1048576</currentMemory> <vcpu>2</vcpu> <os> <type arch='x86_64' machine='rhel6.1.0'>hvm</type> <boot dev='hd'/> </os> <features> <acpi/> <apic/> <pae/> </features> <clock offset='utc'/> <on_poweroff>destroy</on_poweroff> <on_reboot>restart</on_reboot> <on_crash>restart</on_crash>
仮想マシン定義ファイル例
仮想マシン名
uuid
VMで扱えるメモリ(kB)
balloonをひいたメモリ
VCPUアーキテクチャとマシンタイプ
KVMを使う
完全仮想化
RTCはUTCかlocalか?
![Page 42: RHEL6 KVMによる仮想化](https://reader035.vdocuments.pub/reader035/viewer/2022081717/55615132d8b42adb6b8b5267/html5/thumbnails/42.jpg)
Red Hat K.K. All rights reserved. この資料はレッドハット保有の既存資料であり、御社との契約で定義されている成果物には該当いたしません。42
<devices> <emulator>/usr/libexec/qemu-kvm</emulator> <disk type='file' device='disk'> <driver name='qemu' type='raw' cache='none' io='threads'/> <source file='/var/lib/libvirt/images/newvm.img'/> <target dev='vda' bus='virtio'/> <address type='pci' domain='0x0000' bus='0x00' slot='0x05' function='0x0'/> </disk> <disk type='block' device='cdrom'> <driver name='qemu' type='raw'/> <target dev='hdc' bus='ide'/> <readonly/> <address type='drive' controller='0' bus='1' unit='0'/> </disk> <controller type='ide' index='0'> <address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x1'/> </controller> <interface type='network'> <mac address='52:54:00:92:d9:4f'/> <source network='default'/> <model type='virtio'/> <address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/> </interface>
周辺装置(1/2)
ディスクデバイスファイル or デバイス元ファイルのパス
何デバイスに見えるか
仮想NICMACアドレス接続先ブリッジ
何デバイスに見えるか
PCIバスのスロット番号等VM内で割り当てられたアドレスを維持する
![Page 43: RHEL6 KVMによる仮想化](https://reader035.vdocuments.pub/reader035/viewer/2022081717/55615132d8b42adb6b8b5267/html5/thumbnails/43.jpg)
Red Hat K.K. All rights reserved. この資料はレッドハット保有の既存資料であり、御社との契約で定義されている成果物には該当いたしません。43
周辺装置(2/2)
<serial type='pty'> <target port='0'/> </serial> <console type='pty'> <target type='serial' port='0'/> </console> <input type='tablet' bus='usb'/> <input type='mouse' bus='ps2'/> <graphics type='vnc' port='-1' autoport='yes'/> <video> <model type='cirrus' vram='9216' heads='1'/> <address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x0'/> </video> <memballoon model='virtio'> <address type='pci' domain='0x0000' bus='0x00' slot='0x06' function='0x0'/> </memballoon> </devices></domain>
シリアルポート
VNCによるグラフィカルコンソール
![Page 44: RHEL6 KVMによる仮想化](https://reader035.vdocuments.pub/reader035/viewer/2022081717/55615132d8b42adb6b8b5267/html5/thumbnails/44.jpg)
Red Hat K.K. All rights reserved. この資料はレッドハット保有の既存資料であり、御社との契約で定義されている成果物には該当いたしません。44
qemu-kvmのコマンドラインオプション例(1/2)
/usr/libexec/qemu-kvm -S -M rhel6.1.0 → マシンタイプ-enable-kvm → KVMを利用したハードウェアアクセラレーションを有効にする-m 1024 → メモリ 1024MB-smp 2,sockets=2,cores=1,threads=1 → 2VCPU、2ソケット1コア1 スレッド-name newvm → VMの名前-uuid a040090d-79fe-3bca-7e2f-65c32a6f0318 → VMのuuid-nodefconfig -nodefaults → QEMUのデフォルトは使わない
管理用モニタの設定。libvirtがQEMUと通信するためのソケットを定義している。-chardev socket,id=charmonitor,path=/var/lib/libvirt/qemu/newvm.monitor,server,nowait -mon chardev=charmonitor,id=monitor,mode=control
-rtc base=utc → 時計はUTCベース。-no-reboot → 再起動禁止、-boot dc → 起動デバイス順 フロッピー(a), HDD(c), CD-ROM(d), network(n)
![Page 45: RHEL6 KVMによる仮想化](https://reader035.vdocuments.pub/reader035/viewer/2022081717/55615132d8b42adb6b8b5267/html5/thumbnails/45.jpg)
Red Hat K.K. All rights reserved. この資料はレッドハット保有の既存資料であり、御社との契約で定義されている成果物には該当いたしません。45
qemu-kvmのコマンドラインオプション例(2/2)
HDDの設定。-driveではホスト側でのデバイス定義、-deviceではVM側でのデバイス定義をおこない、driveのidを指定して対応関係を定義する。-drive file=/var/lib/libvirt/images/newvm.img,if=none,id=drive-virtio-disk0,format=raw,cache=none,aio=threads -device virtio-blk-pci,bus=pci.0,addr=0x5,drive=drive-virtio-disk0,id=virtio-disk0
CD-ROMドライブの設定。HDDとほぼ同じ。
-drive file=/var/lib/libvirt/images/rhel-server-6.0-x86_64-dvd.iso,if=none,media=cdrom,id=drive-ide0-1-0,readonly=on,format=raw,aio=threads -device ide-drive,bus=ide.1,unit=0,drive=drive-ide0-1-0,id=ide0-1-0
NICの設定。ホスト側が-driveではなく-netdevになっている。
-netdev tap,fd=30,id=hostnet0,vhost=on,vhostfd=31 -device virtio-net-pci,netdev=hostnet0,id=net0,mac=52:54:00:92:d9:4f,bus=pci.0,addr=0x3
シリアルデバイスの設定-chardev pty,id=charserial0 -device isa-serial,chardev=charserial0,id=serial0
-usb -device usb-tablet,id=input0 → USBタブレットの設定
-vnc 127.0.0.1:2 → VNCによるグラフィカルコンソール、listenするIPとディスプレイ番号
-vga cirrus → ビデオカードの設定
-device virtio-balloon-pci,id=balloon0,bus=pci.0,addr=0x6 → バルーンデバイスの設定
このデバイスは何か?
どう接続するか 元になるdriveはどれか?
![Page 46: RHEL6 KVMによる仮想化](https://reader035.vdocuments.pub/reader035/viewer/2022081717/55615132d8b42adb6b8b5267/html5/thumbnails/46.jpg)
Red Hat K.K. All rights reserved. この資料はレッドハット保有の既存資料であり、御社との契約で定義されている成果物には該当いたしません。46
デバイスのhot add/remove(RHEL6〜)
VM実行中にPCIバスへのデバイスの追加・削除が可能です virshのコマンド
● ディスク: attach-disk, detach-disk● NIC: attach-interface, detach-interface● その他: attach-device, detach-device
コマンド例: virsh attach-disk <VM名> <ファイル名> <ターゲット名>virsh attach-disk rhel6_64 /var/lib/libvirt/images/foo.img vdb
注意: ● IDEデバイスは追加・削除できません●ゲストOSがデバイスの追加・削除に対応している必要がありま
す
![Page 47: RHEL6 KVMによる仮想化](https://reader035.vdocuments.pub/reader035/viewer/2022081717/55615132d8b42adb6b8b5267/html5/thumbnails/47.jpg)
47Red Hat K.K. All rights reserved. この資料はレッドハット保有の既存資料であり、御社との契約で定義されている成果物には該当いたしません。
KVMのモデルとバックエンド
![Page 48: RHEL6 KVMによる仮想化](https://reader035.vdocuments.pub/reader035/viewer/2022081717/55615132d8b42adb6b8b5267/html5/thumbnails/48.jpg)
Red Hat K.K. All rights reserved. この資料はレッドハット保有の既存資料であり、御社との契約で定義されている成果物には該当いたしません。48
KVMのモデルとバックエンド
CPU ディスク ネットワーク メモリと応用技術 その他のデバイス virtio
![Page 49: RHEL6 KVMによる仮想化](https://reader035.vdocuments.pub/reader035/viewer/2022081717/55615132d8b42adb6b8b5267/html5/thumbnails/49.jpg)
Red Hat K.K. All rights reserved. この資料はレッドハット保有の既存資料であり、御社との契約で定義されている成果物には該当いたしません。49
KVM
Virtual Machineと物理サーバ
仮想マシン上のゲストOSは物理サーバのリソースをいきなり扱えません
仮想マシン上の「仮想ハードウェア」に見せかせる必要があります
いくつか手法がありますが一長一短● PCIデバイスをゲストOSへ割り当て
●デバイスの全機能を高速に利用●デバイスが占有され、migrationもできない
● 実際のデバイスをエミュレート●ゲストOSの対応が期待できる●エミュレートは高負荷
● 仮想化専用のインタフェース●エミュレートのオーバーヘッドが低
いようにプロトコルを設計●未対応OSでは利用不可
ゲストOS
仮想ハードウェア(モデル)
バックエンド
QEMU
Linux
バックエンド処理
ハードウェア
![Page 50: RHEL6 KVMによる仮想化](https://reader035.vdocuments.pub/reader035/viewer/2022081717/55615132d8b42adb6b8b5267/html5/thumbnails/50.jpg)
Red Hat K.K. All rights reserved. この資料はレッドハット保有の既存資料であり、御社との契約で定義されている成果物には該当いたしません。50
マシンタイプ
互換性維持のためにマシンタイプの指定が可能● 現在提供されているマシンタイプ例
● rhel6.1.0 RHEL 6.1.0 PC● rhel6.0.0 RHEL 6.0.0 PC ● rhel5.5.0 RHEL 5.5.0 PC● rhel5.4.4 RHEL 5.4.4 PC● rhel5.4.0 RHEL 5.4.0 PC
● 通常手動で設定することはなく、最初に起動した環境のマシンタイプがlibvirtdにより自動的に記述される
設定ファイル中の domain/os/type/@machine に自動保存●ホストをアップデートしてもVMのマシンタイプは維持される
マシンタイプによる動作の違い●現状ではCPUモデル以外はほとんど大きな違いはない● バグ修正による細かな動作の違いを補正
![Page 51: RHEL6 KVMによる仮想化](https://reader035.vdocuments.pub/reader035/viewer/2022081717/55615132d8b42adb6b8b5267/html5/thumbnails/51.jpg)
51Red Hat K.K. All rights reserved. この資料はレッドハット保有の既存資料であり、御社との契約で定義されている成果物には該当いたしません。
CPU
![Page 52: RHEL6 KVMによる仮想化](https://reader035.vdocuments.pub/reader035/viewer/2022081717/55615132d8b42adb6b8b5267/html5/thumbnails/52.jpg)
Red Hat K.K. All rights reserved. この資料はレッドハット保有の既存資料であり、御社との契約で定義されている成果物には該当いたしません。52
CPUのモデル
CPUモデルの選択(RHEL6.1から)● 486, Conroe, Nehalem, Opteron_G1,Opteron_G2,
Opteron_G3, Penryn, Westmere, athlon, core2duo, coreduo, n270, pentium, pentium2, pentium3, pentiumpro, phenom, qemu32, qemu64
● 実際のCPUの機能フラグに対応させている
実際のCPUでない"qemu32", "qemu64"モデル● qemu32, qemu64は特に指定しない場合のデフォルト
●qemu32は32bit、qemu64は64bit● 実際のCPUに一対一で対応していない● “QEMU Virtual CPU version (cpu64-rhel6)” のような名前
になります● マシンタイプがrhel5.* の場合は“QEMU Virtual CPU
version (cpu64-rhel5)” のようになります。
![Page 53: RHEL6 KVMによる仮想化](https://reader035.vdocuments.pub/reader035/viewer/2022081717/55615132d8b42adb6b8b5267/html5/thumbnails/53.jpg)
Red Hat K.K. All rights reserved. この資料はレッドハット保有の既存資料であり、御社との契約で定義されている成果物には該当いたしません。53
CPUの機能セット(CPUIDの機能フラグ)
物理的なCPUの機能がそのまま利用できるとは限らない● QEMUでの対応が必要
仮想CPUの機能セット←QEMUで対応 and 物理CPUが機能提供
サポート機能セットをオプションで指定可能 機能セットを再現できることがマイグレーションの必要条件
● Intel/AMD間のマイグレーションはサポート対象外
fpuvmepse486detscmsrmcecx8
mmxpentiumpaesepmtrr...
pentium2
fpuvmepsedetscmsrmcecx8
mmxpaesepmtrr...
実ハードのCPUIDfpuvmepsedetscmsrmcecx8
mmx
VCPUのCPUIDQEMUの指定
& =
![Page 54: RHEL6 KVMによる仮想化](https://reader035.vdocuments.pub/reader035/viewer/2022081717/55615132d8b42adb6b8b5267/html5/thumbnails/54.jpg)
Red Hat K.K. All rights reserved. この資料はレッドハット保有の既存資料であり、御社との契約で定義されている成果物には該当いたしません。54
cgroups(RHEL6.0〜)
linuxに新しく登場したリソース管理の仕組み タスクのグループごとに資源を与える グループに参加するタスクは任意に指定可能 サブプロセスもデフォルトで同一グループ 利用方法:
● /cgroup/* をマウント(libcgroupによる)● blkio, cpu, cpuacct, cpuset, devices, freezer, memory,
net_cls● この下にディレクトリを作成するとグループを作成
![Page 55: RHEL6 KVMによる仮想化](https://reader035.vdocuments.pub/reader035/viewer/2022081717/55615132d8b42adb6b8b5267/html5/thumbnails/55.jpg)
Red Hat K.K. All rights reserved. この資料はレッドハット保有の既存資料であり、御社との契約で定義されている成果物には該当いたしません。55
libvirtとcgroups
libvirtが仮想マシン毎にタスクグループを作成● /cgroup/*/libvirt/qemu/<domain名>/* ● cpu, cpuacct, cpuset, devices, freezer, memory● blkioとnet_cls以下への作成は未実装
libvirtと統合済みなのはcpuとdevice● CPUは使用量の割合を指定可● deviceは指定されたデバイスの利用を許可
memoryはLXC(Tech Preview)でのみ利用
![Page 56: RHEL6 KVMによる仮想化](https://reader035.vdocuments.pub/reader035/viewer/2022081717/55615132d8b42adb6b8b5267/html5/thumbnails/56.jpg)
Red Hat K.K. All rights reserved. この資料はレッドハット保有の既存資料であり、御社との契約で定義されている成果物には該当いたしません。56
cgroups - CPU
virsh schedinfoコマンドでCPUの比率を取得virsh # schedinfo rhel6_64Scheduler : posixcpu_shares : 1024
schedinfo --set で比率変更virsh # schedinfo rhel6_64 --set cpu_shares=100 1Scheduler : posixcpu_shares : 100
rhel6_64100
その他1024(デフォルト)
VM-11024(デフォルト) : :
![Page 57: RHEL6 KVMによる仮想化](https://reader035.vdocuments.pub/reader035/viewer/2022081717/55615132d8b42adb6b8b5267/html5/thumbnails/57.jpg)
Red Hat K.K. All rights reserved. この資料はレッドハット保有の既存資料であり、御社との契約で定義されている成果物には該当いたしません。57
VCPUのpinning
VCPUがどの実CPU上で動作できるかを固定する 実サーバの規模が大きく、NUMA構成である場合には同一ノードで動作するようにpinningすると性能に好影響●最近の2ソケット以上のサーバはNUMA構成●NUMAノードとcpuの番号の対応を確認するにはnumactl
--hardware コマンドが便利 自動的にnumaノードにプロセスを寄せるnumadを提供(6.4〜)
cpu8 cpu10
cpu4 cpu6
cpu0 cpu2
cpu9 cpu11
cpu5 cpu7
cpu1 cpu3同じノード内だけで動作するようにpinningする
メモリ メモリ
![Page 58: RHEL6 KVMによる仮想化](https://reader035.vdocuments.pub/reader035/viewer/2022081717/55615132d8b42adb6b8b5267/html5/thumbnails/58.jpg)
Red Hat K.K. All rights reserved. この資料はレッドハット保有の既存資料であり、御社との契約で定義されている成果物には該当いたしません。58
VCPUのトポロジ(RHEL6.0〜)
VCPUを、どのような構成としてVMに見せるかを設定する● Sockets: ソケット数● Cores: ソケットあたりのコア数● Threads: コアあたりのスレッド数
通常は Sockets * Cores * Threads == VCPU数 デフォルトではソケットあたり1コア、1コアあたり1スレッドの
CPUがVCPU数分ならんでいるように見える 一部アプリケーションソフトウェアのライセンス費用はSocket数に影響されるため有用
![Page 59: RHEL6 KVMによる仮想化](https://reader035.vdocuments.pub/reader035/viewer/2022081717/55615132d8b42adb6b8b5267/html5/thumbnails/59.jpg)
59Red Hat K.K. All rights reserved. この資料はレッドハット保有の既存資料であり、御社との契約で定義されている成果物には該当いたしません。
ディスク
![Page 60: RHEL6 KVMによる仮想化](https://reader035.vdocuments.pub/reader035/viewer/2022081717/55615132d8b42adb6b8b5267/html5/thumbnails/60.jpg)
Red Hat K.K. All rights reserved. この資料はレッドハット保有の既存資料であり、御社との契約で定義されている成果物には該当いたしません。60
仮想ディスクのモデル
ゲストからどう見えるかを選択可能 ide
● IDE接続のディスク 最大4台まで(CD/DVDが有効だと3台まで)
● I/O速度は遅くないがCPU消費が多い virtio
● virtioで通信する。● ゼロコピー実装のためCPU消費が少ない
virtio-scsi● virtioで通信する。● SCSI命令を送受信できる● multipath, テープ, DVDドライブ等を
利用可
ゲストOS
IDE or virtio
バックエンド
QEMU
Linux
フォーマット処理
![Page 61: RHEL6 KVMによる仮想化](https://reader035.vdocuments.pub/reader035/viewer/2022081717/55615132d8b42adb6b8b5267/html5/thumbnails/61.jpg)
Red Hat K.K. All rights reserved. この資料はレッドハット保有の既存資料であり、御社との契約で定義されている成果物には該当いたしません。61
仮想ディスクのバックエンド
ホスト側で対応するバックエンドを選択可能 デバイス(LUN、パーティション、LVMのLV)を割り当てる raw形式のファイル
● ファイルをデバイスとして見せる● sparceファイルにするとフラグメントが多発する●最初に全部確保するとフラグメント発生率が減る
qcow2形式のファイル● スナップショット機能、差分機能を提供
●差分ファイルの作成はvirt-mangerで未対応●qemu-imgで作成する
● ディスクサイズ<ファイルサイズになりうる●qemu-imgによる作り直しで無駄な領域を捨てる
速度の目安● sparceなraw < qcow2 < sparceでないraw << デバイス
![Page 62: RHEL6 KVMによる仮想化](https://reader035.vdocuments.pub/reader035/viewer/2022081717/55615132d8b42adb6b8b5267/html5/thumbnails/62.jpg)
Red Hat K.K. All rights reserved. この資料はレッドハット保有の既存資料であり、御社との契約で定義されている成果物には該当いたしません。62
バックエンドをファイルにする場合の注意
● linuxのファイルシステムは事実上4kB単位でファイルを読み書きします●読み書きをする論理的なブロックと実際のアクセスをお
こなうブロックがずれるとI/Oの効率が落ちます● セクタサイズが4kBのHDDを利用する場合と同様の条件に
なりますが、仮想マシン上ではセクタサイズが512バイトに見えます
●パーティションの開始位置に注意が必要です
ゲストOSのFS ← 4kB →
ホストOSのFS ← 4kB →
![Page 63: RHEL6 KVMによる仮想化](https://reader035.vdocuments.pub/reader035/viewer/2022081717/55615132d8b42adb6b8b5267/html5/thumbnails/63.jpg)
Red Hat K.K. All rights reserved. この資料はレッドハット保有の既存資料であり、御社との契約で定義されている成果物には該当いたしません。63
1ディスクへの並列した負荷の問題
1ディスク上に複数の仮想ディスクを作成する場合に発生するパフォーマンス問題の例
VM1とVM2を同一ディスク上にパーティションで切り分けて利用
以下のケースを考える VM1だけでシーケンシャルread → ほぼnativeと同じ速度
VM2だけでシーケンシャルread → VM1の1/2〜1/3の速度
VM1とVM2で同時にシーケンシャルread → 非常に遅い
VM1
VM2
ディスクの内周と外周のI/Oスループットの違いによる
ディスク上で離れた2系統のreadが混在するためシーク動作が多く発生し、待ち時間が長くなる
![Page 64: RHEL6 KVMによる仮想化](https://reader035.vdocuments.pub/reader035/viewer/2022081717/55615132d8b42adb6b8b5267/html5/thumbnails/64.jpg)
Red Hat K.K. All rights reserved. この資料はレッドハット保有の既存資料であり、御社との契約で定義されている成果物には該当いたしません。64
ブロックデバイスのcache設定
RHEL6のlibvirtではキャッシュ指定ができます none
●ホストではキャッシュしない● RHEL5と同等。デフォルト設定。サポート対象
writethrough●ホスト側とゲスト側で重複してキャッシュする
●メモリが逼迫するとキャッシュしない方が速い● サポート対象
writeback● サポート対象外●ホストのキャッシュへ書きだして書き込み完了とする●高速だがディスク上の整合性を保証できない
![Page 65: RHEL6 KVMによる仮想化](https://reader035.vdocuments.pub/reader035/viewer/2022081717/55615132d8b42adb6b8b5267/html5/thumbnails/65.jpg)
Red Hat K.K. All rights reserved. この資料はレッドハット保有の既存資料であり、御社との契約で定義されている成果物には該当いたしません。65
![Page 66: RHEL6 KVMによる仮想化](https://reader035.vdocuments.pub/reader035/viewer/2022081717/55615132d8b42adb6b8b5267/html5/thumbnails/66.jpg)
Red Hat K.K. All rights reserved. この資料はレッドハット保有の既存資料であり、御社との契約で定義されている成果物には該当いたしません。66
差分イメージファイル
ベースとなるディスクイメージからの差分だけを保持する● qcow2フォーマットの機能
読み込み:●差分イメージにあれば差分イメージから読み込む● なければベースイメージから読み込む
書き込み: 差分イメージにディスク領域を確保してベースイメージからコピーしたのち書き込み
差分イメージベースイメージ
read
read
write
write
?
copy
![Page 67: RHEL6 KVMによる仮想化](https://reader035.vdocuments.pub/reader035/viewer/2022081717/55615132d8b42adb6b8b5267/html5/thumbnails/67.jpg)
Red Hat K.K. All rights reserved. この資料はレッドハット保有の既存資料であり、御社との契約で定義されている成果物には該当いたしません。67
qcow2パフォーマンス改善
RHEL5からRHEL6で以下のような改善が行われています 最大クラスタサイズ拡大
● 64kB→ 2MBに● オプション cluster_size=2M
メタデータの事前確保● オプション preallocation=metadata
作成コマンド例: qemu-img create -f qcow2 -o cluster_size=2M,preallocation=metadata foobar.img 10G
![Page 68: RHEL6 KVMによる仮想化](https://reader035.vdocuments.pub/reader035/viewer/2022081717/55615132d8b42adb6b8b5267/html5/thumbnails/68.jpg)
Red Hat K.K. All rights reserved. この資料はレッドハット保有の既存資料であり、御社との契約で定義されている成果物には該当いたしません。68
仮想ディスクの注意点
IDEモデルを利用する場合のタイムアウト● linuxでIDEドライブにタイムアウト(10sec)が発生するとPIO
モードになり、非常に遅くなります● バックエンドのマルチパスフェイルオーバなどで発生します
I/Oスケジューラ● どのスケジューラが適切かは負荷によりますが、ホスト側ゲスト側ともにdeadlineとすることでベンチマーク結果が改善することが知られています
qcow2の既知の問題● RHEL5.5のqcow2の実装には既知のデータ破壊問題があ
ります● RHEL5.6以降またはRHEL6.0以降を利用
![Page 69: RHEL6 KVMによる仮想化](https://reader035.vdocuments.pub/reader035/viewer/2022081717/55615132d8b42adb6b8b5267/html5/thumbnails/69.jpg)
Red Hat K.K. All rights reserved. この資料はレッドハット保有の既存資料であり、御社との契約で定義されている成果物には該当いたしません。69
パフォーマンス:仮想化ストレージ
RHEL5 VM on RHEL5
RHEL5 VM on RHEL6
RHEL6 VM on RHEL6
RHEL5 VM on RHEL5
RHEL5 VM on RHEL6
RHEL6 VM on RHEL6
0 5000 10000 15000 20000 25000 30000 35000 40000
SAS multi-stream workload in KVM guestIntel Nahelem 8core, 48GB, 2FC
Guest (8x44GB virtio, nocache) SAS-systime
TOTAL-SAStime (HOSTS: red=R5 blue=R6)
time in seconds (lower is better)
EXT3 File System
XFS File System
![Page 70: RHEL6 KVMによる仮想化](https://reader035.vdocuments.pub/reader035/viewer/2022081717/55615132d8b42adb6b8b5267/html5/thumbnails/70.jpg)
Red Hat K.K. All rights reserved. この資料はレッドハット保有の既存資料であり、御社との契約で定義されている成果物には該当いたしません。70
![Page 71: RHEL6 KVMによる仮想化](https://reader035.vdocuments.pub/reader035/viewer/2022081717/55615132d8b42adb6b8b5267/html5/thumbnails/71.jpg)
Red Hat K.K. All rights reserved. この資料はレッドハット保有の既存資料であり、御社との契約で定義されている成果物には該当いたしません。71
![Page 72: RHEL6 KVMによる仮想化](https://reader035.vdocuments.pub/reader035/viewer/2022081717/55615132d8b42adb6b8b5267/html5/thumbnails/72.jpg)
Red Hat K.K. All rights reserved. この資料はレッドハット保有の既存資料であり、御社との契約で定義されている成果物には該当いたしません。72
![Page 73: RHEL6 KVMによる仮想化](https://reader035.vdocuments.pub/reader035/viewer/2022081717/55615132d8b42adb6b8b5267/html5/thumbnails/73.jpg)
73Red Hat K.K. All rights reserved. この資料はレッドハット保有の既存資料であり、御社との契約で定義されている成果物には該当いたしません。
ネットワーク
![Page 74: RHEL6 KVMによる仮想化](https://reader035.vdocuments.pub/reader035/viewer/2022081717/55615132d8b42adb6b8b5267/html5/thumbnails/74.jpg)
Red Hat K.K. All rights reserved. この資料はレッドハット保有の既存資料であり、御社との契約で定義されている成果物には該当いたしません。74
仮想ネットワーク
モデル● 実際にあるNICのエミュレーション
●e1000 -- virtioドライバがない場合e1000が最も軽い●ne2k_pci●pcnet●rtl8139 -- デフォルトのNICはRTL8139。非常に遅いの
で避けるべき● 仮想的なネットワークデバイス
●virtio -- virtio-net ドライバが必要、最も速い
モデルは実際のNICの正確な反映ではないので、帯域制御などには利用できません● たとえばe1000のエミュレーションを利用しても1Gbpsに帯域が制限されるようなことはありません
![Page 75: RHEL6 KVMによる仮想化](https://reader035.vdocuments.pub/reader035/viewer/2022081717/55615132d8b42adb6b8b5267/html5/thumbnails/75.jpg)
Red Hat K.K. All rights reserved. この資料はレッドハット保有の既存資料であり、御社との契約で定義されている成果物には該当いたしません。75
仮想ネットワークのバックエンド
TAPデバイス● VLANやbondingデバイスのような論理的なNIC● 対応するファイルへのwrite/readをEthernet frameの送受信に変換
libvirtが仮想マシン設定に従って作成し、qemu-kvmに接続する
vnet0 /dev/net/tap0
Network←→Filesystem
linux kernel
QEMU
![Page 76: RHEL6 KVMによる仮想化](https://reader035.vdocuments.pub/reader035/viewer/2022081717/55615132d8b42adb6b8b5267/html5/thumbnails/76.jpg)
Red Hat K.K. All rights reserved. この資料はレッドハット保有の既存資料であり、御社との契約で定義されている成果物には該当いたしません。76
前提知識: linuxのソフトウェアブリッジ
linuxカーネルにはブリッジ(802.1d)実装が含まれています●ポート学習、STPといった基本的な機能を実装
ブリッジの直接的な管理はbrctl コマンドで行います● brctl show● brctl showmacs● brctl delif <bridge> <interface>; brcrl addif <bridge>
<interface>● brctl addbr <bridge> ; brctl delbr <bridge>
http://www.linuxfoundation.org/collaborate/workgroups/networking/bridge
br0 vnet0br0eth0
vnet20vnet10
![Page 77: RHEL6 KVMによる仮想化](https://reader035.vdocuments.pub/reader035/viewer/2022081717/55615132d8b42adb6b8b5267/html5/thumbnails/77.jpg)
Red Hat K.K. All rights reserved. この資料はレッドハット保有の既存資料であり、御社との契約で定義されている成果物には該当いたしません。77
仮想ネットワークと物理ネットワークの接続
仮想マシンに割り当てた仮想NICはQEMUが作成する仮想インタフェース(vnet0 のような名前)に対応づけられる
「仮想インタフェースをどの仮想ブリッジに接続するか?」 をlibvirtで設定
仮想ブリッジの設定次第で様々な利用が可能
br0
vnet1
vnet0
vnet2
br0
br1
virbr0eth1
eth0
eth2
eth0
iptables
仮想マシンホストLinux
![Page 78: RHEL6 KVMによる仮想化](https://reader035.vdocuments.pub/reader035/viewer/2022081717/55615132d8b42adb6b8b5267/html5/thumbnails/78.jpg)
Red Hat K.K. All rights reserved. この資料はレッドハット保有の既存資料であり、御社との契約で定義されている成果物には該当いたしません。78
外から仮想NICが見える設定 - bridge
/etc/sysconfig/network-scripts/ifcfg-eth0、/etc/sysconfig/network-scripts/ifcfg-br0による設定
使用例: ● 仮想マシンによるサーバ構築●共有テスト環境 etc.
br0 vnet0br0eth0
eth0
仮想マシンホストLinux
BRIDGE=br0 を ifcfg-eth0に追加
DEVICE=br0TYPE=BridgeBOOTPROTO=dhcp ONBOOT=yesDELAY=0
を ifcfg-br0 に設定
<interface type='bridge'> <mac address='52:54:00:37:7c:16'/> <source bridge='br0'/></interface>
を VM設定ファイルに追加
![Page 79: RHEL6 KVMによる仮想化](https://reader035.vdocuments.pub/reader035/viewer/2022081717/55615132d8b42adb6b8b5267/html5/thumbnails/79.jpg)
Red Hat K.K. All rights reserved. この資料はレッドハット保有の既存資料であり、御社との契約で定義されている成果物には該当いたしません。79
NATの中に仮想マシンを閉じこめる設定 - NAT
libvirtによる自動設定 デフォルトで提供: /etc/libvirt/qemu/networks/default.xml iptablesのNAT+
dnsmasqのDHCP 使用例:
マシンローカルの実験環境 etc.
vnet1virbr0
eth1
eth0
iptables仮想マシンホストLinux
<network> <name>default</name> <uuid>48d17f30-1d19-4957-8a3b-0af70d3cd5a3</uuid> <forward mode='nat'/> <bridge name='virbr0' stp='on' forwardDelay='0' /> <ip address='192.168.122.1' netmask='255.255.255.0'> <dhcp> <range start='192.168.122.2' end='192.168.122.128' /> </dhcp> </ip></network>
![Page 80: RHEL6 KVMによる仮想化](https://reader035.vdocuments.pub/reader035/viewer/2022081717/55615132d8b42adb6b8b5267/html5/thumbnails/80.jpg)
Red Hat K.K. All rights reserved. この資料はレッドハット保有の既存資料であり、御社との契約で定義されている成果物には該当いたしません。80
仮想マシン間だけでの通信を行う設定 - local
/etc/sysconfig/network-scripts/ifcfg-br1 等で仮想ブリッジを作成するだけ
使用例: 同一マシン上で仮想マシン同士を接続する● 仮想サーバと仮想クライアントの接続→一台で検証環境
● クラスタの検証環境●ハートビート●クラスタ間通信etc.
vnet2
br1
eth2
仮想マシンホストLinux
<source bridge='br1'>
を VM設定ファイルに追加
![Page 81: RHEL6 KVMによる仮想化](https://reader035.vdocuments.pub/reader035/viewer/2022081717/55615132d8b42adb6b8b5267/html5/thumbnails/81.jpg)
Red Hat K.K. All rights reserved. この資料はレッドハット保有の既存資料であり、御社との契約で定義されている成果物には該当いたしません。81
ホスト起動時: sysconfigの設定によりeth0, br0を作成して接続
仮想マシン作成時、libvirtがトンネルデバイスvnet0作成、接続
QEMUがlibvirtから実行されて仮想インタフェース作成
ネットワーク設定が反映されるタイミング
br0
vnet0
br0
eth0
eth0
仮想マシンホストLinux
br0br0eth0
vnet0
br0br0eth0
![Page 82: RHEL6 KVMによる仮想化](https://reader035.vdocuments.pub/reader035/viewer/2022081717/55615132d8b42adb6b8b5267/html5/thumbnails/82.jpg)
Red Hat K.K. All rights reserved. この資料はレッドハット保有の既存資料であり、御社との契約で定義されている成果物には該当いたしません。82
ちょっと未来のネットワーク接続
ソフトウェアブリッジの弱点●ソフトウェアブリッジは帯域制御やACLなどの管理機能が使えない
● CPU消費も無視できない●特に接続インタフェースが多い時
ソフトウェアブリッジではなくスイッチで管理する手法● VN-Link(Cisco)● VEPA(Virtual Ethernet Port Aggregator, IEEE802.1Qbg)
●どちらもスイッチに仮想的なポートを作成する技術●VMの仮想NICは非常に多くなりうる(実サーバ1台に100ポートなど)のでこのような技術が必要
●スイッチがこれらの規格に対応している必要があるためまだどこでも利用できる状態ではない
![Page 83: RHEL6 KVMによる仮想化](https://reader035.vdocuments.pub/reader035/viewer/2022081717/55615132d8b42adb6b8b5267/html5/thumbnails/83.jpg)
Red Hat K.K. All rights reserved. この資料はレッドハット保有の既存資料であり、御社との契約で定義されている成果物には該当いたしません。83
VEPAによる論理的なポート拡張
ether frameにVLANタグとポート識別用のタグを付与 一旦全てのフレームを実NICから外部へ送り出す スイッチはACL, QoS制御などの処理をした上で送信先ポー
トを判定 スイッチは同じポートに対応している場合、そのポートへパ
ケットを送り返す(ヘアピンモード)
VMVM VM
switch
VEPAVEPAによる論理的なポート拡張
![Page 84: RHEL6 KVMによる仮想化](https://reader035.vdocuments.pub/reader035/viewer/2022081717/55615132d8b42adb6b8b5267/html5/thumbnails/84.jpg)
Red Hat K.K. All rights reserved. この資料はレッドハット保有の既存資料であり、御社との契約で定義されている成果物には該当いたしません。84
macvtapによる接続
実NICに対応づけられたtapデバイス● macvtapの動作モードにVEPAモードを選択することで
VEPAを実装する 作成例:# ip link add link eth0 name macvtap0 type macvtap
libvirtでの設定例:
<devices> ... <interface type='direct'> <source dev='eth0' mode='vepa'/> </interface> ... </devices>
macvtap
実NIC
macvtap macvtapmacvtap
VMVM VM
switch
![Page 85: RHEL6 KVMによる仮想化](https://reader035.vdocuments.pub/reader035/viewer/2022081717/55615132d8b42adb6b8b5267/html5/thumbnails/85.jpg)
Red Hat K.K. All rights reserved. この資料はレッドハット保有の既存資料であり、御社との契約で定義されている成果物には該当いたしません。85
macvtapのモード
VEPA(Virtual Ethernet Port Aggrigator)●外部スイッチのポートを論理的に増やす技術● VEPA対応スイッチが必要(多くのスイッチは非対応)●全てのフレームを一旦外部のスイッチへ転送してスイッチ
に処理させる● ネットワーク機器の管理機能利用、ホストCPU負荷削減
Private● VEPAと同じだが同一ポートに必ず戻ってくる
Bridge● 同一マシン上のMACであればソフトウェアで転送●ブリッジはVEPAに対応していなくてもよい●通常のソフトウェアブリッジによる実装と同等
![Page 86: RHEL6 KVMによる仮想化](https://reader035.vdocuments.pub/reader035/viewer/2022081717/55615132d8b42adb6b8b5267/html5/thumbnails/86.jpg)
Red Hat K.K. All rights reserved. この資料はレッドハット保有の既存資料であり、御社との契約で定義されている成果物には該当いたしません。86
nwfilter
仮想マシンのネットワーク送受信について、L2, L3でのフィルタを行うlibvirtの機能
汎用のフィルタ定義とパラメータの組み合わせで利用●パラメータ「IP」と「MAC」が予約されている
MAC, ARP, IPv4, IPv6, TCP, ICMPなどのプロトコルに対応 典型的なフィルタについてはデフォルトで定義あり
● 例: 仮想NICに割り当てたMACアドレス以外をsrcとする外向きのフレームをdropする
詳しい仕様は http://libvirt.org/formatnwfilter.html <devices> <interface type='bridge'> <mac address='00:16:3e:5d:c7:9e'/> <filterref filter='clean-traffic'> <parameter name='IP' value='10.0.0.1'/> </filterref> </interface> </devices>
フィルタ名
フィルタのパラメータ
![Page 87: RHEL6 KVMによる仮想化](https://reader035.vdocuments.pub/reader035/viewer/2022081717/55615132d8b42adb6b8b5267/html5/thumbnails/87.jpg)
87Red Hat K.K. All rights reserved. この資料はレッドハット保有の既存資料であり、御社との契約で定義されている成果物には該当いたしません。
ネットワーク構成例
![Page 88: RHEL6 KVMによる仮想化](https://reader035.vdocuments.pub/reader035/viewer/2022081717/55615132d8b42adb6b8b5267/html5/thumbnails/88.jpg)
Red Hat K.K. All rights reserved. この資料はレッドハット保有の既存資料であり、御社との契約で定義されている成果物には該当いたしません。88
基本のシンプルな構成
ホスト 環境
eth0
eth1
iSCSI target
管理ソフトや他の仮想化ホスト
live migration
サービス用ネットワーク
blockdevices
eth2
仮想マシンA
仮想マシンD
仮想マシンB
仮想マシンC
vnet0 - eth0
vnet1 - eth0
vnet2 - eth0
vnet3 - eth0
blockdevicesblock
devicesblock
devicesblock
devices
br0
![Page 89: RHEL6 KVMによる仮想化](https://reader035.vdocuments.pub/reader035/viewer/2022081717/55615132d8b42adb6b8b5267/html5/thumbnails/89.jpg)
Red Hat K.K. All rights reserved. この資料はレッドハット保有の既存資料であり、御社との契約で定義されている成果物には該当いたしません。89
基本のシンプルな構成 w/VLAN
ホスト 環境
eth0
eth1
iSCSI target
管理ソフトや他の仮想化ホスト
live migration
サービス用ネットワーク
blockdevices
eth2
仮想マシンA
仮想マシンD
仮想マシンB
仮想マシンC
vnet0 - eth0
vnet1 - eth0
vnet2 - eth0
vnet3 - eth0blockdevicesblock
devicesblock
devicesblock
devices
br0.10
br0.20
eth0.10
eth0.20
仮想マシンからVLANタグつきのパケットを送信すると、VLANのネスト(QinQ)が起きるので注意
![Page 90: RHEL6 KVMによる仮想化](https://reader035.vdocuments.pub/reader035/viewer/2022081717/55615132d8b42adb6b8b5267/html5/thumbnails/90.jpg)
Red Hat K.K. All rights reserved. この資料はレッドハット保有の既存資料であり、御社との契約で定義されている成果物には該当いたしません。90
web
internet
web
app app
db db
仮想化で3層サーバ
net1
net2
net3
何の変哲もない3tier構成
仮想化で1台or2台に集約するとどうなるのか?
![Page 91: RHEL6 KVMによる仮想化](https://reader035.vdocuments.pub/reader035/viewer/2022081717/55615132d8b42adb6b8b5267/html5/thumbnails/91.jpg)
Red Hat K.K. All rights reserved. この資料はレッドハット保有の既存資料であり、御社との契約で定義されている成果物には該当いたしません。91
web
internet
web
app app
db db
1台で3層(web, app, db)サーバ
実ハードウェア1台の場合 ブリッジをネットワークに1対1
対応させる 各層のVMを2つに分ける意
味があまりないような……??● 可用性?→△
●アプリケーションの不具合には対応可
● パフォーマンス?→×●アプリがあまり並列度
を活かせない場合には速くなる可能性あり
br1
br2
br3
web
eth0
![Page 92: RHEL6 KVMによる仮想化](https://reader035.vdocuments.pub/reader035/viewer/2022081717/55615132d8b42adb6b8b5267/html5/thumbnails/92.jpg)
Red Hat K.K. All rights reserved. この資料はレッドハット保有の既存資料であり、御社との契約で定義されている成果物には該当いたしません。92
web
internet
web
app app
db db
2台で3層(web, app, db)サーバ
実ハードウェア2台の場合 各ホスト中でネットワークをブリッジに一対一対応させる
同一ネットワークを実NICで接続
サーバが全ノードで動作していなくても、ネットワーク的に対称に構築しておく● live migrationなどでVMを移動するときに便利なのでお勧めです
br1
br2
br3
web
br1
br2
br3
eth0 eth1eth1
eth2eth2
eth0eth0
![Page 93: RHEL6 KVMによる仮想化](https://reader035.vdocuments.pub/reader035/viewer/2022081717/55615132d8b42adb6b8b5267/html5/thumbnails/93.jpg)
Red Hat K.K. All rights reserved. この資料はレッドハット保有の既存資料であり、御社との契約で定義されている成果物には該当いたしません。93
2台で3層(web, app, db)サーバ w/VLAN
VLANを使いネットワークを分割 実NICのVLANエイリアスを作成してブリッジを接続
SW
eth0
eth0.2001
eth0.2003
eth0.2002
br0
br1
br2
app
db
web
eth0
eth0.2001
eth0.2003
eth0.2002
br0
br1
br2
app
db
web2001
2003
2002
internet
![Page 94: RHEL6 KVMによる仮想化](https://reader035.vdocuments.pub/reader035/viewer/2022081717/55615132d8b42adb6b8b5267/html5/thumbnails/94.jpg)
Red Hat K.K. All rights reserved. この資料はレッドハット保有の既存資料であり、御社との契約で定義されている成果物には該当いたしません。94
web
internet
web
app app
db db
2台で3層(web, app, db)サーバ w/普通のスイッチ
ブリッジを利用せずネットワークをスイッチで管理したい場合
VLAN設定はスイッチ内のみ
仮想マシンそれぞれからネットワークへの接続分だけポートが必要
web
SW
eth1
eth2
eth3
eth4
eth1
eth2
eth3
eth4
eth0eth02001
2003
2002
![Page 95: RHEL6 KVMによる仮想化](https://reader035.vdocuments.pub/reader035/viewer/2022081717/55615132d8b42adb6b8b5267/html5/thumbnails/95.jpg)
Red Hat K.K. All rights reserved. この資料はレッドハット保有の既存資料であり、御社との契約で定義されている成果物には該当いたしません。95
internet
web
app app
db db
2台で3層(web, app, db)サーバ w/VEPAスイッチ
スイッチでVLANを使いネットワークを分割
VEPAを利用し、NICを経由してスイッチのポートを拡張●物理的なポート数を削減
web
SW
vnic
vnic
vnic
vnic
vnic
vnic
vnic
vnic
vnicvnic
eth0 eth0
2001
2003
2002
![Page 96: RHEL6 KVMによる仮想化](https://reader035.vdocuments.pub/reader035/viewer/2022081717/55615132d8b42adb6b8b5267/html5/thumbnails/96.jpg)
Red Hat K.K. All rights reserved. この資料はレッドハット保有の既存資料であり、御社との契約で定義されている成果物には該当いたしません。96
その他仮想ネットワークの注意点
ブリッジを共有している仮想マシンにはパケットが到達します● tcpdumpすると他VMの通信が見えます
1つのブリッジに多数のインタフェースを接続するとCPU使用量が増えます
ブリッジにIPアドレスを設定するとIPを使ったホスト-ゲスト間通信が可能です
仮想インタフェースのMACアドレスは任意に設定できますが 01 ではじまるMACアドレスについてはbridgeが転送しません● マルチキャストアドレスと見做されます● デフォルトでは 52:54:00:(以下ランダム) というMACアドレ
スが生成されます NAT構成のネットワークと、nwfilterの設定はiptables,
ip6tables, ebtablesにより実装されています。サーバ全体の設定との競合に注意が必要です。
![Page 97: RHEL6 KVMによる仮想化](https://reader035.vdocuments.pub/reader035/viewer/2022081717/55615132d8b42adb6b8b5267/html5/thumbnails/97.jpg)
Red Hat K.K. All rights reserved. この資料はレッドハット保有の既存資料であり、御社との契約で定義されている成果物には該当いたしません。97
bondingの利用と注意点
ホスト環境
eth0 VMvnet0 - eth0
br0
eth1
bond0
SW
SW
target
bondingを利用する場合 bonding deviceをBridgeへ接続します● Active-backup(mode=1)のbonding時、Standby側のスイッチがゲスト
OSのMACへの経路が変更されたことを学習するチャンスがないためにフェイルオーバ時に通信が途切れることがあります
対策● ゲストOSからゲートウェイへ継続的にpingを投げて学習させる● br0に直接eth0, eth1を接続してSTPを利用する● bondingをbroadcast(mode=3)で行う(同一パケットが複数流れます)
?
![Page 98: RHEL6 KVMによる仮想化](https://reader035.vdocuments.pub/reader035/viewer/2022081717/55615132d8b42adb6b8b5267/html5/thumbnails/98.jpg)
Red Hat K.K. All rights reserved. この資料はレッドハット保有の既存資料であり、御社との契約で定義されている成果物には該当いたしません。98
ブリッジとSTPによるactive-backup
eth0とeth1の両方をブリッジに接続する STPを無効にしているとループが発生してしまいます
● br0と関係するスイッチでSTPが有効になっていることを確認する
STPによりどちらか片方の経路だけが有効になります
ホスト環境
eth0 VMvnet0 - eth0
br0eth1
SW
SW
target
![Page 99: RHEL6 KVMによる仮想化](https://reader035.vdocuments.pub/reader035/viewer/2022081717/55615132d8b42adb6b8b5267/html5/thumbnails/99.jpg)
99Red Hat K.K. All rights reserved. この資料はレッドハット保有の既存資料であり、御社との契約で定義されている成果物には該当いたしません。
KVMでのメモリの取り扱いと応用技術
![Page 100: RHEL6 KVMによる仮想化](https://reader035.vdocuments.pub/reader035/viewer/2022081717/55615132d8b42adb6b8b5267/html5/thumbnails/100.jpg)
Red Hat K.K. All rights reserved. この資料はレッドハット保有の既存資料であり、御社との契約で定義されている成果物には該当いたしません。100
KVMのメモリ・イメージ
ユーザプロセスで確保したメモリを仮想マシンの物理メモリとして利用→ x86 32bitだとプロセスが最大3GBしかメモリを扱えないため、仮想マシンにたかだか2GBくらいしか割り当てられない
Linux
確保したメモリ
QEMUプロセス仮想マシンの物理アドレス空間
mapping
![Page 101: RHEL6 KVMによる仮想化](https://reader035.vdocuments.pub/reader035/viewer/2022081717/55615132d8b42adb6b8b5267/html5/thumbnails/101.jpg)
Red Hat K.K. All rights reserved. この資料はレッドハット保有の既存資料であり、御社との契約で定義されている成果物には該当いたしません。101
メモリの有効活用
通常のlinuxプロセスと同じ技術● over commit
●実際に割りあてるメモリをあらかじめ確定していなくても割り当てる仕組み
●実際にページが逼迫するとキャッシュの破棄や暇なページのswap outにより対応
●過剰なover commitはOOM-Killerが発生するため危険● swap
●KVMに割り当てたページであってもswap outできる KVMに特有または仮想化にマッチする技術
● Kernel Samepage Merging (KSM)●同一内容のページを1つの物理ページに集約
● memory ballooning●balloon driverによりゲストOSからメモリを開放
![Page 102: RHEL6 KVMによる仮想化](https://reader035.vdocuments.pub/reader035/viewer/2022081717/55615132d8b42adb6b8b5267/html5/thumbnails/102.jpg)
Red Hat K.K. All rights reserved. この資料はレッドハット保有の既存資料であり、御社との契約で定義されている成果物には該当いたしません。102
Kernel Samepage Merging
複数VMをまたいで同一内容のページを1物理ページに集約
asdlkajsdfasdfjflkajasdlkjsdfalakpsjdflaasdkjasdlfasdfkajsdfadspfadfweasdfffasdfasdfffasdfasdfffasdfmmmmasdfeefffffggfff
sdflkajsdffalksflkajaalkjswdfalajghbdflaasdflasdlfasdlfkjsdfagggdsfaweasdfffasdfasdfasdfddasdfasdddfmmmmasdfeeffffffffff
asdfkajsdfasdfallkajasdfakjdfalaksjdfhlaasdfjasdlfasdfkajsdfadfadfbbwebbasdfbbccbbasdffbbcasdfffasdfmmmmasdfeeffbbffffff
aflnkajsdfasdfjflkajakjsfffdfalaksjdfgelaflakjasdlfqmmmmasdfeedsfadvbfweasdfffasdfasdfffasdfasdfffasdfasdfeeeeeefffffaafff
ハードウェアの物理メモリ
VM1 VM4VM3VM2
![Page 103: RHEL6 KVMによる仮想化](https://reader035.vdocuments.pub/reader035/viewer/2022081717/55615132d8b42adb6b8b5267/html5/thumbnails/103.jpg)
Red Hat K.K. All rights reserved. この資料はレッドハット保有の既存資料であり、御社との契約で定義されている成果物には該当いたしません。103
memory ballooning
RHEL5.5より対応 ホストOSが効率良く管理できるようにゲストOSからヒントを出
す balloon driverによりゲストOS内でメモリの一部を確保 サイズの自動調整は未実装
●手動で明示的にサイズを指示する必要がある
VM1 VM4VM3VM2
balloonballoon
balloon
balloon
balloon
![Page 104: RHEL6 KVMによる仮想化](https://reader035.vdocuments.pub/reader035/viewer/2022081717/55615132d8b42adb6b8b5267/html5/thumbnails/104.jpg)
Red Hat K.K. All rights reserved. この資料はレッドハット保有の既存資料であり、御社との契約で定義されている成果物には該当いたしません。104
HugePageとは?
4kBのページ512個を2MBのページ1個で代替 DB, Java VM, KVMなど多量のメモリを消費する場合に有効
なチューニング。RHEL5でも利用可能 何が起きるの?
● TLBの消費量減少● TLBのミスヒット率減少
何が嬉しいの?● ミスヒットが減ることでメモリアクセスの性能が向上
何故常に使われていないの?●起動時にあらかじめメモリを確保する必要がある● HugePageでない通常の4kBメモリとして利用できない
![Page 105: RHEL6 KVMによる仮想化](https://reader035.vdocuments.pub/reader035/viewer/2022081717/55615132d8b42adb6b8b5267/html5/thumbnails/105.jpg)
Red Hat K.K. All rights reserved. この資料はレッドハット保有の既存資料であり、御社との契約で定義されている成果物には該当いたしません。105
Transparent Huge Page
利点: 事前の準備や設定なしにHugePage を利用できる● カーネルが自動的に普通のページをHugePageにまとめる
VMごとの個別設定は不要● デフォルトで有効● /sys/kernel/mm/redhat_transparent_hugepage以下で設定
可能● /proc/meminfo 内の AnonHugePages の欄で現在の利用量を確認可
# grep AnonHugePages /proc/meminfo AnonHugePages: 632832 kB
欠点● 2MB連続のページを確保するためにページ移動が行われる
●CPU時間のオーバヘッド●全てHugePageを利用する保証はない
![Page 106: RHEL6 KVMによる仮想化](https://reader035.vdocuments.pub/reader035/viewer/2022081717/55615132d8b42adb6b8b5267/html5/thumbnails/106.jpg)
Red Hat K.K. All rights reserved. この資料はレッドハット保有の既存資料であり、御社との契約で定義されている成果物には該当いたしません。106
Performance – RHEL6 B2 Linux Intel EXSpecjbb Java – Huge/Transparent Huge Pages
4cpu 8cpu 16cpu0
50
100
150
200
250
300
350
100.0%
105.0%
110.0%
115.0%
120.0%
RHEL5.5 /6 SPECjbb Scaling Intel EX
RHEL5.4
RHEL6 B2
RHEL5 Huge
RHEL6 Huge
R6 vs R5
bops
(k)
![Page 107: RHEL6 KVMによる仮想化](https://reader035.vdocuments.pub/reader035/viewer/2022081717/55615132d8b42adb6b8b5267/html5/thumbnails/107.jpg)
Red Hat K.K. All rights reserved. この資料はレッドハット保有の既存資料であり、御社との契約で定義されている成果物には該当いたしません。107
ライブマイグレーション
仮想マシンを物理的なマシン間で移動するには?● メモリ状態、I/O状態、VCPU状態を転送する● メモリが一番大きいため、メモリコピー時間が支配的
サービス停止時間を短くするための工夫1. メモリをコピー中に変更されたメモリを追跡2. 変更された差分だけをまたコピーする3. 1, 2 を予想転送時間が十分短くなるまで繰り返す
Linux Linux
QEMU
VM
QEMU
VMコピー
移動元 移動先
![Page 108: RHEL6 KVMによる仮想化](https://reader035.vdocuments.pub/reader035/viewer/2022081717/55615132d8b42adb6b8b5267/html5/thumbnails/108.jpg)
Red Hat K.K. All rights reserved. この資料はレッドハット保有の既存資料であり、御社との契約で定義されている成果物には該当いたしません。108
ライブマイグレーションのしくみ
Linux Linux
QEMU
VM
QEMU
VM
1: 移動先でQEMU起動、メモリ確保
Linux Linux
QEMU
VM
QEMU
VM
2: メモリをコピー(予想転送時間≦30msまで)
Linux Linux
QEMU
VM
QEMU
VM
3: 移動元を止めてメモリとI/O状態をコピー
Linux Linux
QEMU
VM
QEMU
VM
4: 移動先で動作開始、移動元を破棄
![Page 109: RHEL6 KVMによる仮想化](https://reader035.vdocuments.pub/reader035/viewer/2022081717/55615132d8b42adb6b8b5267/html5/thumbnails/109.jpg)
Red Hat K.K. All rights reserved. この資料はレッドハット保有の既存資料であり、御社との契約で定義されている成果物には該当いたしません。109
ライブマイグレーションの注意点
メモリ転送がいつまでも終了しない可能性があります● メモリへの書き込みが多い作業
●古典的なCGI(たくさんのforkにともなうコピー)●データ更新の多いデータベース
● ワークアラウンド●許容される転送時間を長く設定する●キャンセルして「ライブでない」マイグレーションを行う
メモリの書き換え状況によるためライブマイグレーションの振る舞いの予測は困難です● 必要な時間は負荷や転送速度により変わります● トータルの転送量がダイナミックに決まります● いつ終了するかの予想は基本的におこなえません
![Page 110: RHEL6 KVMによる仮想化](https://reader035.vdocuments.pub/reader035/viewer/2022081717/55615132d8b42adb6b8b5267/html5/thumbnails/110.jpg)
110Red Hat K.K. All rights reserved. この資料はレッドハット保有の既存資料であり、御社との契約で定義されている成果物には該当いたしません。
その他のデバイス
![Page 111: RHEL6 KVMによる仮想化](https://reader035.vdocuments.pub/reader035/viewer/2022081717/55615132d8b42adb6b8b5267/html5/thumbnails/111.jpg)
Red Hat K.K. All rights reserved. この資料はレッドハット保有の既存資料であり、御社との契約で定義されている成果物には該当いたしません。111
ディスプレイ、キーボード、マウス
モデル● VESA BIOS● PS/2キーボード● PS/2マウス● USB接続のタブレット
バックエンド● VNCによる接続● SPICEによる接続● SPICEはVNCに比較すると以下の点がよい
●消費するネットワーク帯域が少ない●複数ディスプレイの取扱いが可能●キーボードマップの事前指定が不要●画面表示だけでなくUSBや音声入出力を転送可能
![Page 112: RHEL6 KVMによる仮想化](https://reader035.vdocuments.pub/reader035/viewer/2022081717/55615132d8b42adb6b8b5267/html5/thumbnails/112.jpg)
Red Hat K.K. All rights reserved. この資料はレッドハット保有の既存資料であり、御社との契約で定義されている成果物には該当いたしません。112
時計
ゲストOSとしてRHEL5.4以降を使うとpvclockを利用できる● 設定は不要(TSCを利用しているように見える)●ホスト側のTSCとオフセットを利用して安定した時計を提供
pvclockの制限●ホストのTSCが安定していることに依存している
ホストTSC安定の確認● /proc/cpuinfo内で constant_tsc フラグを確認
pvclock使用不可時のワークアラウンド● ”notsc” のようなカーネルオプションをつける
●Virtualization Guide内にバージョン毎のオプションあり● “lpj=n” というオプションはnにホストのdmesg中に出力され
る値を設定する● 例: "Calibrating delay loop (skipped), value calculated using timer frequency.. 3191.60 BogoMIPS (lpj=1595803)"
![Page 113: RHEL6 KVMによる仮想化](https://reader035.vdocuments.pub/reader035/viewer/2022081717/55615132d8b42adb6b8b5267/html5/thumbnails/113.jpg)
113Red Hat K.K. All rights reserved. この資料はレッドハット保有の既存資料であり、御社との契約で定義されている成果物には該当いたしません。
virtio
![Page 114: RHEL6 KVMによる仮想化](https://reader035.vdocuments.pub/reader035/viewer/2022081717/55615132d8b42adb6b8b5267/html5/thumbnails/114.jpg)
Red Hat K.K. All rights reserved. この資料はレッドハット保有の既存資料であり、御社との契約で定義されている成果物には該当いたしません。114
virtio
仮想化環境でゼロ・コピーI/Oを実装するためのフレームワーク● KVMだけでなくlguest, VirtualBoxなどでも利用される● OASISで標準化へ向けてとりくみ中
仮想化環境がVMのメモリを参照できる前提● オペレーションの共有
●I/O命令によるトラップをなくすことで高速化● 実際のデータの共有
●オペレーションに対応するデータも共有● データ本体のコピーが発生しない
![Page 115: RHEL6 KVMによる仮想化](https://reader035.vdocuments.pub/reader035/viewer/2022081717/55615132d8b42adb6b8b5267/html5/thumbnails/115.jpg)
Red Hat K.K. All rights reserved. この資料はレッドハット保有の既存資料であり、御社との契約で定義されている成果物には該当いたしません。115
KVMのメモリ・イメージ(virtio使用時)
linux
I/Oリクエストバッファ
DMA転送
入出力データ
QEMUプロセス
デバイスドライバ
read/write
仮想マシンの物理アドレス空間
I/Oリクエストバッファ入出力データ
![Page 116: RHEL6 KVMによる仮想化](https://reader035.vdocuments.pub/reader035/viewer/2022081717/55615132d8b42adb6b8b5267/html5/thumbnails/116.jpg)
Red Hat K.K. All rights reserved. この資料はレッドハット保有の既存資料であり、御社との契約で定義されている成果物には該当いたしません。116
vhost-net
virtio-netをホストLinuxカーネル内で実装● qemu-kvmのスレッドではなくカーネルスレッドが処理● I/O毎にシステムコール呼出を削減
●レイテンシの低下●CPU消費の低下
RHEL6.1から有効 /etc/sysconfig/modules/kvm.modules で起動時にvhost_net
カーネルモジュール読み込み●→/dev/vhost-net デバイス作成
libvirtdが起動時に/dev/vhost-net の存在を検出●ゲストのNICモデルがvirtioの場合は自動的に利用
![Page 117: RHEL6 KVMによる仮想化](https://reader035.vdocuments.pub/reader035/viewer/2022081717/55615132d8b42adb6b8b5267/html5/thumbnails/117.jpg)
Red Hat K.K. All rights reserved. この資料はレッドハット保有の既存資料であり、御社との契約で定義されている成果物には該当いたしません。117
![Page 118: RHEL6 KVMによる仮想化](https://reader035.vdocuments.pub/reader035/viewer/2022081717/55615132d8b42adb6b8b5267/html5/thumbnails/118.jpg)
Red Hat K.K. All rights reserved. この資料はレッドハット保有の既存資料であり、御社との契約で定義されている成果物には該当いたしません。118
![Page 119: RHEL6 KVMによる仮想化](https://reader035.vdocuments.pub/reader035/viewer/2022081717/55615132d8b42adb6b8b5267/html5/thumbnails/119.jpg)
Red Hat K.K. All rights reserved. この資料はレッドハット保有の既存資料であり、御社との契約で定義されている成果物には該当いたしません。119
virtio-serial
シリアルデバイスもvirtio対応になっています 最悪でバイト毎にio命令が発行されるので仮想化環境では高負荷になりうる● 例: 115200bpsのシリアルポート→14400バイト/s→1バイト〜16バイト毎に割り込みが入るので→毎秒900+回の割り込み処理
virtio-serialでは共有メモリ上のリングバッファを利用
qemu guest agentはこのvirtio-serial経由をホスト-ゲスト間通信路として用いる
![Page 120: RHEL6 KVMによる仮想化](https://reader035.vdocuments.pub/reader035/viewer/2022081717/55615132d8b42adb6b8b5267/html5/thumbnails/120.jpg)
120Red Hat K.K. All rights reserved. この資料はレッドハット保有の既存資料であり、御社との契約で定義されている成果物には該当いたしません。
メモリ管理の仮想化のしくみ
![Page 121: RHEL6 KVMによる仮想化](https://reader035.vdocuments.pub/reader035/viewer/2022081717/55615132d8b42adb6b8b5267/html5/thumbnails/121.jpg)
Red Hat K.K. All rights reserved. この資料はレッドハット保有の既存資料であり、御社との契約で定義されている成果物には該当いたしません。121
OSのメモリ管理
プロセスそれぞれの仮想アドレスと物理アドレスを対応づける
変換表
変換表
変換表
変換表
プロセスA プロセスB プロセスC プロセスD
物理メモリ
![Page 122: RHEL6 KVMによる仮想化](https://reader035.vdocuments.pub/reader035/viewer/2022081717/55615132d8b42adb6b8b5267/html5/thumbnails/122.jpg)
Red Hat K.K. All rights reserved. この資料はレッドハット保有の既存資料であり、御社との契約で定義されている成果物には該当いたしません。122
メモリ管理の仮想化対応
「仮想アドレス」とは?● プロセスごとに持つ固有のアドレス空間
●プロセス同士が同じアドレスを使っても競合しない●実際のハードウェアで搭載されるメモリ量に制約されな
い 「OSのメモリ管理」は何をやっているか?
● プロセスに見せるアドレス(仮想アドレス)から物理的なメモリのアドレス(物理アドレス)への変換
OSは何を管理するか?● 「仮想アドレス→物理アドレス」の変換表を管理している
●プロセス作成・終了時の変換表作成・削除●メモリ割り当て・解放時の変換表書き換え
● CPUが変換表を自動的に参照してアドレス変換をおこなう 仮想化環境ではゲストOSは真の物理アドレスがわからない
● ハイパーバイザでの対応が必要
![Page 123: RHEL6 KVMによる仮想化](https://reader035.vdocuments.pub/reader035/viewer/2022081717/55615132d8b42adb6b8b5267/html5/thumbnails/123.jpg)
Red Hat K.K. All rights reserved. この資料はレッドハット保有の既存資料であり、御社との契約で定義されている成果物には該当いたしません。123
普通のハードウェア&OSでは……
プロセス毎にOSが変換表を管理 x86ではページテーブルとよばれるデータ構造が変換表とな
る CPUが仮想アドレスを参照するたびにページテーブルを参照
して物理アドレスに変換する
CR3
Page Table仮想アドレス 物理アドレス
![Page 124: RHEL6 KVMによる仮想化](https://reader035.vdocuments.pub/reader035/viewer/2022081717/55615132d8b42adb6b8b5267/html5/thumbnails/124.jpg)
Red Hat K.K. All rights reserved. この資料はレッドハット保有の既存資料であり、御社との契約で定義されている成果物には該当いたしません。124
CR3
EPT以前(shadow page table)
ゲストOSが管理するページテーブルをそのまま利用できない●ゲストOSは「仮想物理アドレス」しか把握していない
KVMがゲストOSのページテーブルを元にシャドウページテーブルを作成● シャドウページテーブルは「仮想アドレス→物理アドレス」の表
CR3
仮想アドレス(OSが仮想化で騙されているので)仮想物理アドレス
shadowPage Table
物理アドレス
KVMがページテーブルの更新を監視・変換・反映してメンテナンス
Page TableVM
hypervisor
![Page 125: RHEL6 KVMによる仮想化](https://reader035.vdocuments.pub/reader035/viewer/2022081717/55615132d8b42adb6b8b5267/html5/thumbnails/125.jpg)
Red Hat K.K. All rights reserved. この資料はレッドハット保有の既存資料であり、御社との契約で定義されている成果物には該当いたしません。125
EPT/NPTを利用したアドレス変換
仮想物理アドレスを物理アドレスに変換するページテーブル(EPT/NPT)を導入● ハイパーバイザが管理● 仮想マシン1台に1セットあればよいのでshadow PTより省
メモリ ゲストOSが管理するページテーブルをそのまま利用
CR3
Page Table仮想アドレス (OSが仮想化で騙されているので)仮想物理アドレス
EPTPage Table
EPT base pointer
物理アドレス
VM
hypervisor
![Page 126: RHEL6 KVMによる仮想化](https://reader035.vdocuments.pub/reader035/viewer/2022081717/55615132d8b42adb6b8b5267/html5/thumbnails/126.jpg)
126Red Hat K.K. All rights reserved. この資料はレッドハット保有の既存資料であり、御社との契約で定義されている成果物には該当いたしません。
KVMによるCPUの仮想化のしくみ
![Page 127: RHEL6 KVMによる仮想化](https://reader035.vdocuments.pub/reader035/viewer/2022081717/55615132d8b42adb6b8b5267/html5/thumbnails/127.jpg)
Red Hat K.K. All rights reserved. この資料はレッドハット保有の既存資料であり、御社との契約で定義されている成果物には該当いたしません。127
QEMU
PCをはじめとした各種ハードウェアのエミュレータ 2003年から開発 多種のOS、ハードウェアで動作 各種H/Wのエミュレーションを実行
●命令を動的に変換することで他CPUの動作をエミュレーション
● x86、x86_64、IA64、ARM、SPARC、PPC、MIPS
● CPU, PCIコントローラ, NIC, IDEコントローラ, シリアル, USB, ビデオカード etc.
通常のユーザプロセスとして動作 仮想マシンは基本的に1命令ごとに処理
ハードウェア
QEMU
仮想マシン
Linux / *BSD / Mac / Win etc.
![Page 128: RHEL6 KVMによる仮想化](https://reader035.vdocuments.pub/reader035/viewer/2022081717/55615132d8b42adb6b8b5267/html5/thumbnails/128.jpg)
Red Hat K.K. All rights reserved. この資料はレッドハット保有の既存資料であり、御社との契約で定義されている成果物には該当いたしません。128
センシティブ命令
実行したり実行前後の状況を調べると「普通のハードと違う!」と気付けてしまう命令全般● 仮想マシン内でのセンシティブ命令を"うまくごまかす"こと
で仮想化環境を実装する x86系CPUではセンシティブ命令が特権命令のサブセットで
はない
センシティブ命令をフックするためのCPUの拡張機能● Intel VT-x, AMD AMD-V
特権命令 センシティブ命令
命令全体
特権命令
センシティブ命令
命令全体
こうだと簡単なのに…… x86アーキテクチャは特権保護だけでは不足
![Page 129: RHEL6 KVMによる仮想化](https://reader035.vdocuments.pub/reader035/viewer/2022081717/55615132d8b42adb6b8b5267/html5/thumbnails/129.jpg)
Red Hat K.K. All rights reserved. この資料はレッドハット保有の既存資料であり、御社との契約で定義されている成果物には該当いたしません。129
VMX non-rootオペレーションモードVMX rootオペレーションモード
VT-x / AMD-Vとリングプロテクション
従来のリングプロテクションとVMXによる保護は直交する
リング3リング3
リング2リング2
リング1リング1
リング0リング0
プロセスプロセス プロセスプロセスプロセスプロセス プロセスプロセス プロセスプロセスプロセスプロセス
ゲストOSゲストOS
システム・コール システム・コール
LinuxカーネルLinuxカーネル
センシティブ命令の実行
![Page 130: RHEL6 KVMによる仮想化](https://reader035.vdocuments.pub/reader035/viewer/2022081717/55615132d8b42adb6b8b5267/html5/thumbnails/130.jpg)
Red Hat K.K. All rights reserved. この資料はレッドハット保有の既存資料であり、御社との契約で定義されている成果物には該当いたしません。130
ハードウェア
KVMによるQEMUの高速化
ハードウェア
QEMU
仮想マシン
linux
handler
linux
KVM
仮想マシンqemu-kvm
handler
命令全般 通常命令 センシティブ命令
システムコール等
![Page 131: RHEL6 KVMによる仮想化](https://reader035.vdocuments.pub/reader035/viewer/2022081717/55615132d8b42adb6b8b5267/html5/thumbnails/131.jpg)
Red Hat K.K. All rights reserved. この資料はレッドハット保有の既存資料であり、御社との契約で定義されている成果物には該当いたしません。131
高速なQEMUとしてのKVM環境
ゲストの制限● CPUが直接実行できるアーキテクチャだけに対応
実行を管理するのはLinuxカーネル 事前の命令スキャンは不要
●通常の命令は直接実行●特殊な命令はQEMU/KVMへ
制御はQEMUから行う
仮想マシン割り当て用メモリ
ハードウェア
QEMU
仮想マシン
Linux
KVM
![Page 132: RHEL6 KVMによる仮想化](https://reader035.vdocuments.pub/reader035/viewer/2022081717/55615132d8b42adb6b8b5267/html5/thumbnails/132.jpg)
Red Hat K.K. All rights reserved. この資料はレッドハット保有の既存資料であり、御社との契約で定義されている成果物には該当いたしません。132
/dev/kvm
KVMへのインタフェースになる特殊デバイス● ioctl()で様々な機能提供→KVMのためだけの新しいシステムコールは不要→マージされやすい
●新しい仮想マシンの作成● 仮想マシンへのメモリ割り当てのリクエスト● 仮想CPUのレジスタの読み書き● 仮想CPUへの割り込み挿入● 仮想CPU実行開始● I/Oハンドラの登録
QEMUがKVMを呼ぶ時にはこのファイルを利用
仮想マシン割り当て用メモリ
ハードウェア
QEMU
仮想マシン
LinuxKVM
![Page 133: RHEL6 KVMによる仮想化](https://reader035.vdocuments.pub/reader035/viewer/2022081717/55615132d8b42adb6b8b5267/html5/thumbnails/133.jpg)
Red Hat K.K. All rights reserved. この資料はレッドハット保有の既存資料であり、御社との契約で定義されている成果物には該当いたしません。133
kvmのVM実行はuser時間として計算される
仮想マシンで計算負荷を発生させる●yes > /dev/null 等
ホスト上のtopで実行時間を見ると → user時間が大きい VM実行時間はホスト側ではどう見えるか?
● RHEL5ではsystem時間としてカウント● RHEL6ではuser時間としてカウント
QEMU
kernel
VM
user時間 user時間
ioctlでvcpu実行を依頼
KVMがVMのコンテキストに切り替え
時間VM実行中
user時間(RHEL6) / sys時間(RHEL5)
sys sys
![Page 134: RHEL6 KVMによる仮想化](https://reader035.vdocuments.pub/reader035/viewer/2022081717/55615132d8b42adb6b8b5267/html5/thumbnails/134.jpg)
Red Hat K.K. All rights reserved. この資料はレッドハット保有の既存資料であり、御社との契約で定義されている成果物には該当いたしません。134
Linuxの動作モード
ユーザ・モード●特権命令は実行不可能●特権命令を実行した場合
●CPUがトラップしてカーネルへジャンプ●使用例
●不正な命令を実行●システム・コール呼び出し●割り込み処理
カーネル・モード● あらゆる命令を実行可能
プロセス
Linux kernel
user
kernel
jump
![Page 135: RHEL6 KVMによる仮想化](https://reader035.vdocuments.pub/reader035/viewer/2022081717/55615132d8b42adb6b8b5267/html5/thumbnails/135.jpg)
Red Hat K.K. All rights reserved. この資料はレッドハット保有の既存資料であり、御社との契約で定義されている成果物には該当いたしません。135
KVMが追加する動作モード
ゲスト・モード● センシティブ命令は実行不可能● センシティブ命令を実行した場合
●CPUがトラップしてカーネルへジャンプ
●CPUのIntel VT-x、AMD AMD-V機能を利用してトラップ
●使用例●ゲストOSがセンシティブ命令を
実行しようとした場合●I/O、特権命令等
●割り込み処理●VM実行中に他のVMやプロ
セスへの割り込みがくるかもしれない
VM
Linux kernel
guest
kerneljump
![Page 136: RHEL6 KVMによる仮想化](https://reader035.vdocuments.pub/reader035/viewer/2022081717/55615132d8b42adb6b8b5267/html5/thumbnails/136.jpg)
Red Hat K.K. All rights reserved. この資料はレッドハット保有の既存資料であり、御社との契約で定義されている成果物には該当いたしません。136
KVMの動作
qemu-kvm● /dev/kvmを利用
●ゲストOSを初期化●各種ハンドラの登録●ゲストOSを実行
ゲストOSの遷移● ユーザ・モード、カーネ
ル・モード、ゲスト・モードの間で遷移
出典:『kvm: the Linux Virtual Machine Monitor』
![Page 137: RHEL6 KVMによる仮想化](https://reader035.vdocuments.pub/reader035/viewer/2022081717/55615132d8b42adb6b8b5267/html5/thumbnails/137.jpg)
Red Hat K.K. All rights reserved. この資料はレッドハット保有の既存資料であり、御社との契約で定義されている成果物には該当いたしません。137
KVMの動作(続き)
出典:『kvm: the Linux Virtual Machine Monitor』
QEMUによるデバイス・エミュレーション
「何も知らない」ゲストOSの
世界
センシティブ命令の実行や割り込み(I/O実行終了)など
I/O終了後、ゲストに制御を
戻す
QEMUと仮想マシンの間の切り替えをKVMが行っています
![Page 138: RHEL6 KVMによる仮想化](https://reader035.vdocuments.pub/reader035/viewer/2022081717/55615132d8b42adb6b8b5267/html5/thumbnails/138.jpg)
138Red Hat K.K. All rights reserved. この資料はレッドハット保有の既存資料であり、御社との契約で定義されている成果物には該当いたしません。
セキュリティの改善
![Page 139: RHEL6 KVMによる仮想化](https://reader035.vdocuments.pub/reader035/viewer/2022081717/55615132d8b42adb6b8b5267/html5/thumbnails/139.jpg)
Red Hat K.K. All rights reserved. この資料はレッドハット保有の既存資料であり、御社との契約で定義されている成果物には該当いたしません。139
sVirt
qemu-kvmはqemuユーザで実行されている●全てのVMで同じユーザ● QEMU/KVMに脆弱性がある場合VM間の分離がない
sVirt: VM同士をSELinuxで分離● qemu-kvm(qemuユーザ)の権限で任意コマンド実行可能に
なっても他VMへの影響を防ぐ● libvirtが自動設定するので追加設定は最小限
実装: libvirtがVM起動時にSELinuxのラベルを自動設定● qemu-kvm プロセス● 仮想ディスクイメージのバックエンド
設定方法: SELinuxをenforcingで有効にしておくだけ
![Page 140: RHEL6 KVMによる仮想化](https://reader035.vdocuments.pub/reader035/viewer/2022081717/55615132d8b42adb6b8b5267/html5/thumbnails/140.jpg)
Red Hat K.K. All rights reserved. この資料はレッドハット保有の既存資料であり、御社との契約で定義されている成果物には該当いたしません。140
sVirtで何を守るのか?
仮想ディスクのバックエンド
仮想ディスクのバックエンド
QEMU QEMU
VM VM
qemu/kvmに未知の脆弱性
qemu権限で任意コード
実行
他のQEMUプロセスへ攻撃
他VMの仮想ディスク読み書き
SELinuxで攻撃を予防
![Page 141: RHEL6 KVMによる仮想化](https://reader035.vdocuments.pub/reader035/viewer/2022081717/55615132d8b42adb6b8b5267/html5/thumbnails/141.jpg)
141Red Hat K.K. All rights reserved. この資料はレッドハット保有の既存資料であり、御社との契約で定義されている成果物には該当いたしません。
KVMユーザ事例
![Page 142: RHEL6 KVMによる仮想化](https://reader035.vdocuments.pub/reader035/viewer/2022081717/55615132d8b42adb6b8b5267/html5/thumbnails/142.jpg)
Red Hat K.K. All rights reserved. この資料はレッドハット保有の既存資料であり、御社との契約で定義されている成果物には該当いたしません。142
InternetInternet
クラウド型サービスとして、お客さまはロケーションを意識することなく、サーバーリソースをネットワーク経由で利用可能
リソース補完収容変更
VPNVPN
社内LAN
■オンデマンド ・必要な時に必要な量の サーバーリソースを利用可 ・柔軟なリソース変更も可能
■複数ロケーションによるクラウド型サービス提供・NWバックボーンに直結したクラウド基盤
KVMKVM KVMKVM
KVMKVM
NTTコミュニケーションズ様 クラウドコンピューティングサービス
Bizホスティング ベーシック
![Page 143: RHEL6 KVMによる仮想化](https://reader035.vdocuments.pub/reader035/viewer/2022081717/55615132d8b42adb6b8b5267/html5/thumbnails/143.jpg)
Red Hat K.K. All rights reserved. この資料はレッドハット保有の既存資料であり、御社との契約で定義されている成果物には該当いたしません。143
IBMクラウドサービスのプラットフォームとしてRHEV採用
![Page 144: RHEL6 KVMによる仮想化](https://reader035.vdocuments.pub/reader035/viewer/2022081717/55615132d8b42adb6b8b5267/html5/thumbnails/144.jpg)
Red Hat K.K. All rights reserved. この資料はレッドハット保有の既存資料であり、御社との契約で定義されている成果物には該当いたしません。144
KVM 利用事例
パブリッククラウド基盤●NTTコミュニケーションズ Bizホスティングベーシック●大手テレコムベンダ● IBM Smart Business Cloud
プライベートクラウド基盤● US Defense Information System Agency(国防総省の後方
支援組織)● DreamWorks●自治体クラウド実証環境●大手警備保障会社●大手精密機器メーカ●大手通信機器メーカ●大手ソーシャルネットワークプロバイダ●大手携帯コンテンツプロバイダ
![Page 145: RHEL6 KVMによる仮想化](https://reader035.vdocuments.pub/reader035/viewer/2022081717/55615132d8b42adb6b8b5267/html5/thumbnails/145.jpg)
145Red Hat K.K. All rights reserved. この資料はレッドハット保有の既存資料であり、御社との契約で定義されている成果物には該当いたしません。
関連サービスのご案内
![Page 146: RHEL6 KVMによる仮想化](https://reader035.vdocuments.pub/reader035/viewer/2022081717/55615132d8b42adb6b8b5267/html5/thumbnails/146.jpg)
Red Hat K.K. All rights reserved. この資料はレッドハット保有の既存資料であり、御社との契約で定義されている成果物には該当いたしません。146
Red Hat Training
KVM Workshop ● Red Hat Enterprise Linux上での基本的な仮想化に対する
理解を深めます。● Red Hat Enterprise Linux上で各種ツールを使用して仮想
マシンの作成・管理・マイグレーションの方法を学習します。
RH318 RedHat Enterprise Virtualization● KVMを利用した統合仮想化管理ソフトであるRedHat
Enterprise Virtualizationの技術を導入、管理するために必要な知識とスキルを身につけます。
![Page 147: RHEL6 KVMによる仮想化](https://reader035.vdocuments.pub/reader035/viewer/2022081717/55615132d8b42adb6b8b5267/html5/thumbnails/147.jpg)
Red Hat K.K. All rights reserved. この資料はレッドハット保有の既存資料であり、御社との契約で定義されている成果物には該当いたしません。147
Red Hat Consulting
Remote Technical Assistance● OSSの専門家によるスピーディなQ&A対応●コードリーディングによる実装確認やトラブル原因解析● タイム&マテリアルによる時間ベース契約
カスタムトレーニング「KVMスタートアップ」● 本資料を用いた座学形式のKVMについてのトレーニング
カスタムトレーニング「カーネルエッセンシャル」● KVMのベースとなっているlinuxカーネルの概要を運用管
理者向けにトレーニング