• 検索結果がありません。

資料 Linux女子部 ljstudy01 vm

N/A
N/A
Protected

Academic year: 2018

シェア "資料 Linux女子部 ljstudy01 vm"

Copied!
39
0
0

読み込み中.... (全文を見る)

全文

(1)

Linux

Linux 女子部 第一回勉強会 女子部 第一回勉強会

KVM KVM 入門および仮想化らくらく仕事術! 入門および仮想化らくらく仕事術!

(2)

自己紹介

レッドハット株式会社 グローバルサービス本部 ソリューションアーキテクト

平 初 (たいら はじめ)

レッドハット株式会社でLinuxの標準仮想化技術Linux KVMの普及、啓蒙活動に従 事。最近では、レッドハットのクラウド・仮想化ビジネスの立ち上げを行ってい る。

The Fedora Project で日本語翻訳チームに所属。Anacondaやsystem-config-*、 virt-manager、Rhythmbox、Brasero、Solang、Pinoなどのアプリケーション や、Fedoraのリリースノート、テクニカルガイド、電力管理ガイドなどのドキュメ ント翻訳などを行う。最近ではfedoraproject.orgのウェブを翻訳中。

著書:インプレス「PS3 Linux 完全攻略ガイド」、技術評論社「Fedora Core Expert」、翔泳社「KVM徹底入門」、「Xen徹底入門」など。

趣味:カメラ、グルメ、カフェめぐり、翻訳作業

(3)

アジェンダ

KVMとは

誕生と進化

KVMと他の仮想化技術との違い

OSの一部であることの優位性

KVMがエミュレーションする環境

KVMの高速化ドライバー

KVMの各種リソースの制御

RHELでのKVM利用方法 <デモ>

KVM&QEMU技術詳細

仮想化らくらく仕事術

(4)

4

KVM KVM とは とは

(5)

KVM(Kernel Based Virtual Machine)

Linuxカーネルに取り込まれた標準の仮想化機能

KVMは 2006 年に Avi Kivity (現在Red Hat社員) により開始

Linuxカーネルのソースコードに取り込まれているため、

Linuxのコア開発者が長期に渡って開発・修正・改良を加えていく

Red Hat Enterprise Linuxの対応ソフトウェア、対応ハードウェアを そのまま利用可能

ゲストOSとしてRHEL、Windowsを正式サポート

(6)

x86アーキテクチャでの仮想化の進化

(7)

KVM KVM と他の仮想化技術との違い と他の仮想化技術との違い

(8)

QEMU QEMU

KVMのモデル

KVM QEMU

VM ふつうの

プロセス

Linux kernel

Hardware

VM VM

Apache, MySQL, Firefoxなどのアプリ

(9)

Xenのモデル

Hardware

Hypervisor

dom0

Device Driver

Back End driver

domU

Frontend driver

domU

Frontend driver

Virtual CPU & Memory

(10)

OSの一部であることの優位性

各種認定プロセスの簡素化

サーバー、ストレージ、アプリ...

Linux標準実装機能の流用

デバイスドライバー、スケジューラー、NUMA対応、

cgroups、Hugepage、KSM、Multiqueueなど...。

人類の開発リソースの有効活用

一生のうちに1人あたりが書けるコードは限られている。

ちなみにデメリットとしては

既存製品が好きな技術者から反発を食らうこと。

(いつの時代もあることですが... Linuxもそうでしたね)

(11)

RHEL5/RHEL6 KVM動作環境

64-bit CPU でハードウェア仮想化技術が有効なもの (AMD-

V/Intel VT-x)

BIOSで仮想化支援技術が有効になっていること

VTが有効なAtom Zは64bitモードをサポートしないので注意

ホストとなるRHEL自体に 512MB 以上のメモリ、それぞれの

ゲストに512MB以上のメモリ

※RHEL6の場合、ホストとゲストに1GB以上を推奨

(12)

KVMのゲストOSサポート

サポート

RHEL3 x86、RHEL4 x86/x86_64 、

RHEL5 x86/x86_64、RHEL6 x86/x86_64

Windows Server 2003 32/64 bit

Windows Server 2008 32/64 bit

Windows 7 32bit/64bit、Windows XP 32 bit

virtio ドライバの提供

RHEL3.9以上 x86/x86_64、RHEL4.7以上 x86/x86_64

RHEL5.3以上 x86/x86_64、RHEL6.0以上 x86/x86_64

Windows Server 2003 32/64 bit

Windows Server 2008 32/64 bit

Windows 7 32bit/64bit

Windows XP 32 bit (ネットワークドライバのみ)

(13)

KVM KVM がエミュレーションする環境 がエミュレーションする環境

(14)

仮想ディスクのモデル

ゲストOSから次のようなデバイスで見えます。

ide

IDE接続のディスク 最大4台まで

(仮想CD/DVDドライブを利用する場合、ディスク3台まで)

virtio

virtioで通信する。専用ドライバで高速化

※特に理由のない限り virtio を利用すること

その他

KVMではUSB, SCSI もエミュレーションできるが

RHELではサポート外

(15)

仮想ディスクのバックエンド

ホストOS側で対応するストレージを選択可能

デバイス(LUN、パーティション、LVM)を直接割り当てる

LVMを割り当てるのが一番無難な方法です。

rawファイル

ディスクイメージファイルを仮想ディスクデバイスとして見せる

最初に全部確保するとフラグメントしない

※ext4ファイルシステムだとfallocateで高速に作成可能

sparceファイル(必要に応じて確保)にすると遅い

qcow2形式のファイル

スナップショット機能、差分機能を提供

差分ファイルの作成はvirt-mangerで未対応なのでqemu-imgで作成

ディスクサイズ<ファイルサイズになりうる

(16)

仮想ネットワークのモデル

低オーバーヘッドでのネットワーク

virtio – virtioドライバが必要、最も速い

実在するデバイスのエミュレーション

e1000 - Intel(R) PRO/1000 Network Connection

※virtioドライバが存在しないOSの場合e1000を推奨

ne2k_pci - NE2000 PCI Ethernet Adapter

pcnet - AMD Lance Am7990 Network Adapter

rtl8139 - Realtek 8139 Network Adapter

※ほとんどのOSで認識する一般的なカード

(17)

仮想ネットワークのバックエンド

QEMUで仮想NICのエミュレーションを行い

Libvirtが仮想マシン設定に従ってtapデバイスを

仮想ブリッジに接続します。

NAT接続(NAPT)

libvirtdによって作成されたNATブリッジ(virbr0)に

接続します。通信はホストOSでNATされて外に出ます。

ブリッジ接続

外部ネットワークに直接接続された仮想ブリッジに

接続します。通信は直接外に出ます。

(18)

ディスプレイ、キーボード、マウス

モデル

VESA BIOSのエミュレーション

PS/2キーボード

PS/2マウス

USBキーボード

USBマウス

USB接続のタブレット

バックエンド

VNCによる接続

SDLによる接続(ローカルマシン上でのみ利用可)

SPICEによる接続(RHEV for Desktopsのみ利用可)

(19)

QXL

Linuxは追加ドライバーなしで高速化できます

追加ドライバーが不要という安心感

RHEVおよびRHELに含まれるKVM機能上で、RHELやFedoraを動作させる

場合、メモリー管理、ディスクI/O、ネットワークI/O、ビデオカード な

どを高速化するデバイスドライバーはOS内にすでに含まれています。

弊社サポートに来る仮想化がらみのトラブルは、VMware vSphereの仕様

により引き起こされるものや、VMware Toolsによって引き起こされる問

題点に関するものがほとんどです。

弊社はVMware Tools自体の質問はお答えできません。

ビデオカード

virtio-balloon virtio-blk virtio-net

メモリー管理 ディスクI/O ネットワークI/O

RHELやFedoraで提供されるゲストOS添付の高速化デバイスドライバー

※一部の古いLinuxはデバイスドライバーがバックポートされたものがRPMパッケージで提供されます。

(20)

20

RHEL RHEL での での KVM KVM 利用方法 利用方法

デモ デモ

(21)

KVM & QEMU

KVM & QEMU

技術詳細 技術詳細

(22)

KVM&QEMU技術解説

QEMUとKVMの関係

/dev/kvm

KVMにより追加される「ゲストモード」とセンシティブ命令

KVMによる仮想マシンの基本的な動作

KVMでのvirtio実装

EPT/NPT

ライブマイグレーション

(23)

QEMU

KVM以前から開発・利用

多種のOSで動作

命令を動的に変換することで

多種の環境をエミュレーション

x86、x86_64、ia64、ARM、

SPARC、PPC、MIPS

各種H/Wのエミュレーションを提供

ユーザプロセスとして動作

ハードウェア QEMU 仮想マシン

Linux / *BSD / Mac / Win etc.

(24)

高速なQEMUとしてのKVM環境

ゲストの制限

CPUが直接実行できるアーキテク

チャのみ対応

通常の命令は直接実行

特殊な命令はQEMU/ KVMへ

実行を管理するのはLinuxカーネル

制御はユーザプロセスから行う

事前の命令スキャンは不要

仮想マシン 割り当て用

メモリ

ハードウェア QEMU

仮想マシン

Linux KVM

(25)

/dev/kvm

KVMへのインタフェースになる特殊デバイス

ioctl()で様々な機能提供

→KVMに新しいシステムコールは不要

新しい仮想マシンの作成

仮想マシンへのメモリ割り当てのリクエスト

仮想CPUのレジスタの読み書き

仮想CPUへの割り込み挿入

仮想CPU実行開始

I/Oハンドラの登録

QEMUがKVMを呼ぶ時にはこのファイルを利用

(26)

virtio

ゼロ・コピーI/Oを実装するためのフレームワーク

共有メモリを利用

オペレーションの共有

I/O命令によるトラップをなくすことで高速化

実際のデータの共有

オペレーションに対応するデータも共有

データ本体のコピーが発生しない

現在は仮想マシンとQEMUの間で共有している

RHEL6 では

ホスト側のLinuxカーネル内でvirtioを実装するvhostを搭載

1回のI/O毎にシステムコール呼出を4回削減→さらに高速化

(27)

KVMのメモリ・イメージ(virtio使用時)

カーネル

ユーザアドレス空間

I/O命令バッファ ゲストの物理アドレス空間 I/O命令バッファ

入出力データ

DMA転送 I/Oリクエスト

入出力データ QEMUプロセス

仮想マシン

デバイスドライバ

(28)

KVM徹底入門 好評発売中!

ISBN: 4798121406

価格: 3280円(予定価格)

B5変 304ページ

著者: 平 初・森若 和雄・鶴野龍一郎・ まえだこうへい

URL: http://tinyurl.com/kvmbook-amazon

レッドハット株式会社のKVMを追いかける第 一線のエンジニアたちが中心となって書き起 こした日本初のKVMの解説書

KVMを徹底的に技術解説しています。普通に セミナーで聞くと眠くなるようなディープな 話も満載!

Libvirtによる仮想化プログラミングや、 virshコマンドリファレンス付き

仮想化の入門者から、KVMエキスパートまで 幅広くすべての方が楽しめる一冊です。

(29)

仮想化らくらく仕事術

仮想化らくらく仕事術

〜 〜 virt-v2v virt-v2v libguestfs libguestfs guestfish guestfish

(30)

virt-v2v

仮想マシン移行ツール

サポートされたLinuxとWindowsを異なる仮想マシンソフトウェア間をデータ

移行するツールです。

移行元を改変せずに、仮想マシンの移行先にデバイスドライバーの差し替え

など、変更を加えた上で移行することができます。

※RHELの移行を行う際は契約サブスクリプションの種類を統一してください。

(技術的な問題ではないため、仮想マシン上のOSは動作します。)

OEM出荷のWindowsはライセンスの都合で移行できない/動かないことがあります。

ネットワーク経由で 停止中の仮想マシンの ディスクイメージを転送

デバイスドライバーの 差し替えなどを行う

(31)

virt-v2v

実行例:

RHEL5のXenからRHEL6のQEMU/KVMへSSH経由にて

仮想マシンを移行する場合の実行例

[newhost]# virt-v2v -f virt-v2v.conf

-ic xen+ssh://root@xen-dom0.test.redhat.com/

-op default rhel6

VMware ESX/ESXiからRHEL6のQEMU/KVMへHTTPにて

仮想マシンを移行する場合の実行例

[newhost]# virt-v2v -f virt-v2v.conf -ic esx://esx.test.redhat.com/ -o rhev

-osd rhev-nfs.test.redhat.com:/srv/nfs/export --network rhevm rhel6esx

(32)

virt-v2v

内部の動作

まず、コマンドラインオプションのパースを行う。

その後、-f で指定されたvirt-v2v.confファイルをパースする。

ネットワークの構成をマッピングする。

出力先をセットする。

メソッドがlibvirtだった場合、出力先プールをセット。

メソッドがrhevだった場合、出力先ストレージドメインをセット。

移行元に接続を行う。

メソッドがlibvirtxmlだった場合、正しいファイルのパスを指定。

メソッドがlibvirtだった場合、URIに沿って接続を行ない仮想マシンを指定。

仮想マシンの情報、ストレージの情報、転送ISOの情報を確認する。

移行先の仮想マシンのディスクを移行元の設定にて作成し、コンバートを始める。

(33)

libguestfs

 仮想マシンのディスクイメージを制御するライブラリー

C言語、Java、Perl、Python、Ruby、Haskell、OCaml環境に対する 仮想マシンのディスクイメージに対する制御APIを提供します。

・主な操作

 ・パーティション、LVMの作成、削除、変更  ・ファイルシステム使用量の確認

 ・ファイルおよびディレクトリーの作成、削除、変更、移動、編集  ・ホストマシンからのファイルのアップロード、ダウンロード

 ・仮想マシン内でのコマンドの実行 ※限定的

(34)

libguestfs-toolsの収録コマンド

 libguestfsのAPIを発行する便利なコマンド群

● virt-cat, virt-df, virt-edit, virt-inspector

● virt-list-partitions, virt-list-filesystems

● virt-ls, virt-rescue, virt-resize

● virt-tar, virt-win-reg (※アルファベット順)

 これらのコマンドはguestfishでも実行できますが、

表示形式が人間が見やすい形式となっています。

(35)

guestfishを使った仕事術

 仮想マシンのディスクイメージを制御するフレームワーク

コマンドライン引数やヒアドキュメントによるコマンドの列挙により、 停止状態のディスクイメージ内の操作をホストマシンからバッチ処理化 することもできます。

・主な操作

 ・パーティション、LVMの作成、削除、変更  ・ファイルシステム使用量の確認

 ・ファイルおよびディレクトリーの作成、削除、変更、移動、編集  ・ホストマシンからのファイルのアップロード、ダウンロード

 ・仮想マシン内でのコマンドの実行 ※限定的

(36)

guestfishを使った仕事術

仕事術 その1:

ローカルリポジトリーを参照する設定を停止中の仮想マシンに

組 み込んで欲しい。そんな無茶ぶり guestfish だとできます。

guestfishのプロンプトを起動します。

# guestfish -i rhel6

><fs> rm /etc/yum.repos.d/internal.repo

><fs> upload ./internal.repo /etc/yum.repos.d/internal.repo

><fs> umount-all

><fs> quit

(37)

guestfishを使った仕事術

仕事術 その2:

仮想マシンを1台1台起動して、ゲストOS内のhttpdサービスを

自動起動設定を行っておいて欲しい。今日中に30台!そんな午後17時。

ただし、18時から飲み会の予定が入っている!ピンチ!

# guestfish -i www1

><fs> command "chkconfig --list httpd"

httpd 0:off 1:off 2:off 3:off 4:off 5:off 6:off

><fs> command "chkconfig httpd on"

><fs> command "chkconfig --list httpd"

httpd 0:off 1:on 2:on 3:on 4:on 5:on 6:on

><fs> umount-all

><fs> quit

(38)

guestfishを使った仕事術

自動化した場合

for i in $(seq 30)

do

guestfish -i www$i << EOT

command "chkconfig httpd on"

umount-all

quit

EOT

done

30台分をたった15分で完了!

ちなみに上記のコマンドは仮想マシン1台あたり30秒程度で完了します。

1台ずつ起動して再起動を繰り替えると1台あたり最低3分かかります。

つまり合計で90分必要だったわけです。

(39)

参照

関連したドキュメント

といったAMr*&#34;&#34;&#34;erⅣfg&#34;'sDreα

[Publications] M.Tsuchiya: &#34;Some analytical aspecl of diflusion processes with obligue reflection&#34; Japan-Russion Symposium on Probability Theory and.

&#34;A matroid generalization of the stable matching polytope.&#34; International Conference on Integer Programming and Combinatorial Optimization (IPCO 2001). &#34;An extension of

OPTIMAL PROBLEMS WITH DISCONTINUOUS INITIAL CONDITION.. systems governed by quasi-linear neutral differential equations with dis- continuous initial condition is considered.

The derivation of these estimates is essentially based on our previously obtained stochastic a priori estimates for Snell en- velopes and on the connection between the optimal

本資料は Linux サーバー OS 向けプログラム「 ESET Server Security for Linux V8.1 」の機能を紹介した資料です。.. ・ESET File Security

[r]

Rumsey, Jr, &#34;Alternating sign matrices and descending plane partitions,&#34; J. Rumsey, Jr, &#34;Self-complementary totally symmetric plane