SlideShare a Scribd company logo
1 of 35
Download to read offline
1/35第 15 回 CloudStack ユーザ会
CloudStack on KVM での
PCI&USB パススルー
電気通信大学
中島 拓真
@penguin2716
2/35第 15 回 CloudStack ユーザ会
今日は PCI パススルーのお話をします
( USB …パススルーは準備できませんでした )
3/35第 15 回 CloudStack ユーザ会
もし CloudStack の KVM ホストで
PCI パススルーできるようになったら
電気通信大学
中島 拓真
@penguin2716
4/35第 15 回 CloudStack ユーザ会
自己紹介
■ 所属:電気通信大学
   情報システム学研究科( M1 )
■ 研究:クラウド上の VM での GPU 利用,
    OpenFlow 関連(予定)
■ 開発: mikutter プラグイン,
    CloudStack 3 行スクリプト
■ Twitter :ぺんぎんさん
     @penguin2716
5/35第 15 回 CloudStack ユーザ会
Agenda
■ PCI/USB パススルーのお話
■ CloudStack の VM で PCI パススルーするには
■ ソースの書き換え
■ ビルドと認識テスト
6/35第 15 回 CloudStack ユーザ会
{PCI,USB} パススルーのイメージ
■ 通常:リソースプールのリソースを利用
■ パススルー:仮想マシンがデバイスに
直接アクセスする
Hypervisor
Device
Resource Pool
Device Device Device
VM VM VM VM
7/35第 15 回 CloudStack ユーザ会
パススルーする利点 / 欠点
■ 利点
– デバイスを占有できる
– オーバーヘッドが小さくパフォーマンスが良い
■ 欠点
– デバイスに関連付けられるので
VM のマイグレーションができなくなる
– クラウドの利点であるはずのリソース共有が
できなくなる
– 動かないデバイスもある気がする
8/35第 15 回 CloudStack ユーザ会
どんなときに利用するの?
■ GPU を VM から利用したい
– NVIDIA GRID みたいな感じ
■ NIC を占有させたい
– 高速なネットワークを分離して提供
■ FPGA ボードが使いたい
– 研究用途とか
■ USB メモリ使いたい
– USB-IP とか使えよ
9/35第 15 回 CloudStack ユーザ会
CloudStack で PCI パススルーするには
■ CloudStack の VM はどうやって作られるか
– ユーザが WebUI から操作
– Libvirt に VM を作る命令が飛ぶ
– qemu-kvm で VM を作る
CloudStack WebUI
Libvirt
KVM Xen ESXi
Libvirt で指定できれば
パススルーできそう
10/35第 15 回 CloudStack ユーザ会
Libvirt による VM 生成
■ ハイパーバイザによって異なる
コマンドや API を抽象化
– どのハイパーバイザでも同じコマンドが利用可能
– CloudStack からは Libvirt のコマンドが叩かれる
■ CloudStack では VM が起動する度に
VM の設定ファイルが再生成される
– 起動中の VM の設定ファイルを書き換えても
あまり意味がない
11/35第 15 回 CloudStack ユーザ会
Libvirt の設定ファイル
■ XML 形式で保持
<domain type='kvm'>
<name>s-1-VM</name>
<uuid>e08414ee-b237-3ef4-adcc-c1799cebe134</uuid>
<description>Debian GNU/Linux 5.0 (32-bit)</description>
<memory unit='KiB'>262144</memory>
<currentMemory unit='KiB'>262144</currentMemory>
<vcpu placement='static'>1</vcpu>
<cputune>
<shares>500</shares>
</cputune>
<os>
<type arch='x86_64' machine='rhel6.4.0'>hvm</type>
<boot dev='cdrom'/>
<boot dev='hd'/>
</os>
<features>
12/35第 15 回 CloudStack ユーザ会
Libvirt の設定ファイル
■ PCI パススルーするには
<hostdev mode='subsystem' type='pci' managed='yes'>
<source>
<address domain='0x0000' bus='0x00' slot='0x1b' function='0x0'/>
</source>
<address type='pci' domain='0x0000' bus='0x00' slot='0x05' function='0x0'/>
</hostdev>
# lspci
00:00.0 Host bridge: Intel Corporation Xeon E3-1200 v2/3rd Gen ...
00:01.0 PCI bridge: Intel Corporation Xeon E3-1200 v2/3rd Gen ...
00:14.0 USB controller: Intel Corporation 7 Series/C210 Series ...
00:16.0 Communication controller: Intel Corporation 7 Series/C...
00:1a.0 USB controller: Intel Corporation 7 Series/C210 Series C...
00:1b.0 Audio device: Intel Corporation 7 Series/C210 Series Chip...
13/35第 15 回 CloudStack ユーザ会
virsh(1)
■ Libvirt の API を叩くシェル
– VM の電源管理
– VM の設定変更
– デバイスのアタッチ / デタッチ
# virsh list
Id Name State
----------------------------------------------------
1 s-1-VM running
2 v-2-VM running
3 r-4-VM running
# virsh vncdisplay 2
:1
14/35第 15 回 CloudStack ユーザ会
PCI デバイスを使う大まかな流れ
■ ホストからデバイスを detach
■ VM で利用
■ VM を終了
■ ホストにデバイスを reattach
← この間はホストで利用不可
15/35第 15 回 CloudStack ユーザ会
CloudStack で管理された VM で
PCI パススルー使いたい!
16/35第 15 回 CloudStack ユーザ会
ヒント: CloudStack は OSS です
17/35第 15 回 CloudStack ユーザ会
ないなら書けばいいじゃない
18/35第 15 回 CloudStack ユーザ会
もし OSS が大好きな大学院生が
CloudStack のソースを書き換えて
PCI パススルーの初期実装をしたら
19/35第 15 回 CloudStack ユーザ会
構築環境
■ 物理マシン 1 台で作ります
■ IP アドレス 30-50 個くらい
– なければ OpenBlockS とかで LAN を作ろう
■ Proxy を通過しなくて良いネットワーク
20/35第 15 回 CloudStack ユーザ会
物理リソースの準備
■ 物理マシン 1 台で作ります
■ IP アドレス 30-50 個くらい
– OpenBlockS 等で LAN を作る
■ Proxy を通過しなくて良いネットワーク
☑ Core i7 3770
☑ 32GB RAM
☑ 2 x 2TB HDD
☑ Intel VT-x
☑ Intel VT-d
192.168.1.20 10.10.0.0/16
・ 4 スレッド以上
・ 8GB 以上
・ 500GB 以上
・ VT-x 必須
・ VT-d も多分必要
21/35第 15 回 CloudStack ユーザ会
構築手順
■ CentOS のインストール
■ IOMMU の有効化
■ CloudStack のソース書き換え
■ CloudStack のビルドとインストール
■ PCI パススルーのテスト
22/35第 15 回 CloudStack ユーザ会
CentOS のインストール
■ 何も難しいことはありません
23/35第 15 回 CloudStack ユーザ会
IOMMU の有効化
■ /boot/grub/grub.conf
title CentOS (2.6.32-358.18.1.el6.x86_64)
root (hd0,0)
kernel /vmlinuz-2.6.32-358.18.1.el6.x86_64 ro
root=/dev/mapper/vg_mami-lv_root nomodeset rd_NO_LUKS
rd_LVM_LV=vg_mami/lv_root LANG=en_US.UTF-8 rd_NO_MD
SYSFONT=latarcyrheb-sun16 crashkernel=auto
rd_LVM_LV=vg_mami/lv_swap KEYBOARDTYPE=pc
KEYTABLE=us rd_NO_DM rhgb quiet intel_iommu=on
initrd /initramfs-2.6.32-358.18.1.el6.x86_64.img
24/35第 15 回 CloudStack ユーザ会
IOMMU の有効化
■ 再起動後 dmesg で確認します
# dmesg | grep IOMMU
Intel-IOMMU: enabled
dmar: IOMMU 0: reg_base_addr fed90000 ver 1:0 cap c9008020660262 ecap
f0105a
IOMMU 0xfed90000: using Queued invalidation
IOMMU: Setting RMRR:
IOMMU: Setting identity map for device 0000:00:1d.0 [0xdeb11000 - 0xdeb2d000]
IOMMU: Setting identity map for device 0000:00:1a.0 [0xdeb11000 - 0xdeb2d000]
IOMMU: Setting identity map for device 0000:00:14.0 [0xdeb11000 - 0xdeb2d000]
IOMMU: Prepare 0-16MiB unity mapping for LPC
IOMMU: Setting identity map for device 0000:00:1f.0 [0x0 - 0x1000000]
25/35第 15 回 CloudStack ユーザ会
CloudStack のビルド
■ ビルドに必要なソフトウェアのインストール
# yum groupinstall "Development Tools"
# yum install java-1.6.0-openjdk-devel.x86_64 genisoimage mysql mysql-
server ws-commons-util MySQL-python tomcat6 createrepo
# yum install git wget -y
# wget http://ftp.meisei-u.ac.jp/mirror/apache/dist/maven/maven-
3/3.1.0/binaries/apache-maven-3.1.0-bin.tar.gz
# tar xf apache-maven-3.1.0-bin.tar.gz
# mv apache-maven-3.1.0 /usr/local/
# echo 'export PATH=/usr/local/apache-maven-3.1.0/bin:$PATH' >>
~/.bashrc
# echo 'export JAVA_HOME=/usr/lib/jvm/jre-1.6.0-openjdk.x86_64/' >>
~/.bashrc
# source ~/.bashrc
26/35第 15 回 CloudStack ユーザ会
CloudStack のビルド
■ パッチを当ててビルドする
https://gist.github.com/penguin2716/6547798
# patch -p0 < ../patches/LibvirtComputingResource.java.patch
patching file
plugins/hypervisors/kvm/src/com/cloud/hypervisor/kvm/resource/LibvirtComputing
Resource.java
# patch -p0 < ../patches/LibvirtVMDef.java.patch
patching file
plugins/hypervisors/kvm/src/com/cloud/hypervisor/kvm/resource/LibvirtVMDef.java
# cd packaging/centos63
Generating RPMs is done using the package.sh script:
# ./package.sh
27/35第 15 回 CloudStack ユーザ会
CloudStack のビルド
■ 失敗しました
[ERROR] error: error reading
/root/.m2/repository/org/apache/axis2/mex/1.5.4/mex-1.5.4-impl.jar; error
in opening zip file
[ERROR] error: error reading /root/.m2/repository/org/apache/axis2/axis2-
mtompolicy/1.5.4/axis2-mtompolicy-1.5.4.jar; error in opening zip file
[ERROR] error: error reading
/root/.m2/repository/org/apache/ws/commons/axiom/axiom-dom/1.2.10/axiom-
dom-1.2.10.jar; error in opening zip file
[ERROR] error: error reading
/root/.m2/repository/org/opensaml/opensaml1/1.1/opensaml1-1.1.jar; error in
opening zip file
[ERROR] error: error reading /root/.m2/repository/commons-lang/commons-
lang/2.3/commons-lang-2.3.jar; error in opening zip file
28/35第 15 回 CloudStack ユーザ会
CloudStack のビルド
■ なぜか jar ファイルのはずなのに HTML…
■ 別のサーバから wget して対応
# file /root/.m2/repository/org/apache/axis2/mex/1.5.4/mex-
1.5.4-impl.jar
/root/.m2/repository/org/apache/axis2/mex/1.5.4/mex-1.5.4-impl.jar:
HTML document text
# cd /root/.m2/repository/org/apache/axis2/mex/1.5.4/
# mv mex-1.5.4-impl.jar mex-1.5.4-impl.jar.html
# wget http://mirrors.ibiblio.org/maven2/org/apache/axis2/mex/1.5.4/mex-1.5.4-
impl.jar
# file mex-1.5.4-impl.jar
mex-1.5.4-impl.jar: Zip archive data, at least v1.0 to extract
29/35第 15 回 CloudStack ユーザ会
CloudStack のビルド
■ 再ビルドします
error って出てますが動作します
# cd /root/apache-cloudstack-4.1.1-src/packaging/centos63/
# ./package.sh
Wrote: /root/apache-cloudstack-4.1.1-src/dist/rpmbuild/RPMS/x86_64/cloudstack-
awsapi-4.1.1-0.el6.x86_64.rpm
Executing(%clean): /bin/sh -e /var/tmp/rpm-tmp.SPN9Hm
+ umask 022
+ cd /root/apache-cloudstack-4.1.1-
src/packaging/centos63/../../dist/rpmbuild/BUILD
+ cd cloudstack-4.1.1
+ '[' /root/apache-cloudstack-4.1.1-src/dist/rpmbuild/BUILDROOT/cloudstack-
4.1.1-0.el6.x86_64 '!=' / ']'
+ rm -rf /root/apache-cloudstack-4.1.1-src/dist/rpmbuild/BUILDROOT/cloudstack-
4.1.1-0.el6.x86_64
+ exit 0
error: File /root/apache-cloudstack-4.1.1-src/dist/rpmbuild/ is not a regular file.
30/35第 15 回 CloudStack ユーザ会
CloudStack のビルド
■ createrepo コマンドでリポジトリ作成
# cd /root/apache-cloudstack-4.1.1-src/dist/rpmbuild/RPMS/x86_64
# createrepo .
Spawning worker 0 with 6 pkgs
Workers Finished
Gathering worker results
Saving Primary metadata
Saving file lists metadata
Saving other metadata
Generating sqlite DBs
Sqlite DBs complete
31/35第 15 回 CloudStack ユーザ会
CloudStack のビルド
■ /etc/yum.repos.d/cloudstack.repo
[apache-cloudstack-4.1]
name=Apache CloudStack 4.1 with PCI Pass-through support
baseurl=file:///root/apache-cloudstack-4.1.1-
src/dist/rpmbuild/RPMS/x86_64
enabled=1
gpgcheck=0
32/35第 15 回 CloudStack ユーザ会
/var/local/pci-attach-list
■ ここに VM のインスタンス名と
アタッチする PCI デバイスのアドレスを記述
– デバイスのアドレスは lspci で確認
# lspci | grep -i audio
00:1b.0 Audio device: Intel Corporation 7 Se
ries/C210 Series Chipset Family High Definition Audio
Controller (rev 04)
01:00.1 Audio device: NVIDIA Corporation Device 0e1b (rev a1)
# cat /var/local/pci-attach-list
i-2-3-VM 00:0b.0
33/35第 15 回 CloudStack ユーザ会
仮想マシンを起動して確認
■ Intel High Definition Autio
$ lspci
00:00.0 Host bridge: Intel Corporation 440FX - 82441FX PMC [Natoma] (rev 02)
00:01.0 ISA bridge: Intel Corporation 82371SB PIIX3 ISA [Natoma/Triton II]
00:01.1 IDE interface: Intel Corporation 82371SB PIIX3 IDE [Natoma/Triton II]
00:01.2 USB controller: Intel Corporation 82371SB PIIX3 USB [Natoma/Triton II]
(rev 01)
00:01.3 Bridge: Intel Corporation 82371AB/EB/MB PIIX4 ACPI (rev 03)
00:02.0 VGA compatible controller: Cirrus Logic GD 5446
00:03.0 Ethernet controller: Red Hat, Inc Virtio network device
00:04.0 SCSI storage controller: Red Hat, Inc Virtio block device
00:05.0 Audio device: Intel Corporation Panther Point High Definition Audio
Controller (rev 04)
00:06.0 RAM memory: Red Hat, Inc Virtio memory balloon
34/35第 15 回 CloudStack ユーザ会
仮想マシンを起動して確認
■ NVIDIA GeForce GT 640
35/35第 15 回 CloudStack ユーザ会
まとめ
■ CloudStack 上の VM で PCI パススルーしたい
■ Libvirt の設定ファイルを書き換えれば良い
■ CloudStack のソースを書き換えて実現
■ VM 上で NVIDIA GeForce GT 640 を認識
■ パッチはここにあります
https://gist.github.com/penguin2716/6547798

More Related Content

What's hot

物理マシンをケチる技術
物理マシンをケチる技術物理マシンをケチる技術
物理マシンをケチる技術Satoshi KOBAYASHI
 
「おうちクラウド」が今熱い!
「おうちクラウド」が今熱い!「おうちクラウド」が今熱い!
「おうちクラウド」が今熱い!Hirotaka Sato
 
サーバ脆弱性スキャナ Vuls を OpenStack 環境で使ってみた
サーバ脆弱性スキャナ Vuls を OpenStack 環境で使ってみたサーバ脆弱性スキャナ Vuls を OpenStack 環境で使ってみた
サーバ脆弱性スキャナ Vuls を OpenStack 環境で使ってみたVirtualTech Japan Inc.
 
CODT2021 CyberAgentでの サーバ選定手法の紹介
CODT2021 CyberAgentでの サーバ選定手法の紹介CODT2021 CyberAgentでの サーバ選定手法の紹介
CODT2021 CyberAgentでの サーバ選定手法の紹介Hiroki Chinen
 
OSSで実現するハイブリッドクラウド4ノードクラスタ ~Pacemakerのチケット機能で災害対策~
OSSで実現するハイブリッドクラウド4ノードクラスタ ~Pacemakerのチケット機能で災害対策~OSSで実現するハイブリッドクラウド4ノードクラスタ ~Pacemakerのチケット機能で災害対策~
OSSで実現するハイブリッドクラウド4ノードクラスタ ~Pacemakerのチケット機能で災害対策~tkomachi
 
プライベートクラウドを支えるAMD EPYCサーバ
プライベートクラウドを支えるAMD EPYCサーバプライベートクラウドを支えるAMD EPYCサーバ
プライベートクラウドを支えるAMD EPYCサーバTomohiro Hirano
 
サポート エンジニアが Azure Networking をじっくりたっぷり語りつくす会
サポート エンジニアが Azure Networking をじっくりたっぷり語りつくす会サポート エンジニアが Azure Networking をじっくりたっぷり語りつくす会
サポート エンジニアが Azure Networking をじっくりたっぷり語りつくす会ShuheiUda
 
エンジニアなら知っておきたい「仮想マシン」のしくみ (BPStudy38)
エンジニアなら知っておきたい「仮想マシン」のしくみ (BPStudy38)エンジニアなら知っておきたい「仮想マシン」のしくみ (BPStudy38)
エンジニアなら知っておきたい「仮想マシン」のしくみ (BPStudy38)Takeshi HASEGAWA
 
OpenStackをコマンドで攻める! 構築・運用とトラブル解決 - OpenStack最新情報セミナー 2014年6月
OpenStackをコマンドで攻める! 構築・運用とトラブル解決 - OpenStack最新情報セミナー 2014年6月OpenStackをコマンドで攻める! 構築・運用とトラブル解決 - OpenStack最新情報セミナー 2014年6月
OpenStackをコマンドで攻める! 構築・運用とトラブル解決 - OpenStack最新情報セミナー 2014年6月VirtualTech Japan Inc.
 
KVM環境におけるネットワーク速度ベンチマーク
KVM環境におけるネットワーク速度ベンチマークKVM環境におけるネットワーク速度ベンチマーク
KVM環境におけるネットワーク速度ベンチマークVirtualTech Japan Inc.
 
RDOを使ったOpenStack Havana - Neutron 構築編
RDOを使ったOpenStack Havana - Neutron 構築編RDOを使ったOpenStack Havana - Neutron 構築編
RDOを使ったOpenStack Havana - Neutron 構築編VirtualTech Japan Inc.
 
Interact2019 ws2019 s2d_IN05
Interact2019 ws2019 s2d_IN05Interact2019 ws2019 s2d_IN05
Interact2019 ws2019 s2d_IN05Hiroshi Matsumoto
 
Openstackを200%活用するSDSの挑戦
Openstackを200%活用するSDSの挑戦Openstackを200%活用するSDSの挑戦
Openstackを200%活用するSDSの挑戦Tomohiro Hirano
 
CyberAgentのPrivateCloudeを支えるStorage基盤
CyberAgentのPrivateCloudeを支えるStorage基盤CyberAgentのPrivateCloudeを支えるStorage基盤
CyberAgentのPrivateCloudeを支えるStorage基盤Hiroki Chinen
 
Pgcon2012 ori-20120224
Pgcon2012 ori-20120224Pgcon2012 ori-20120224
Pgcon2012 ori-20120224Manabu Ori
 
10GbE時代のネットワークI/O高速化
10GbE時代のネットワークI/O高速化10GbE時代のネットワークI/O高速化
10GbE時代のネットワークI/O高速化Takuya ASADA
 
Raspberry pi で始める v sphere 7 超入門
Raspberry pi で始める v sphere 7 超入門Raspberry pi で始める v sphere 7 超入門
Raspberry pi で始める v sphere 7 超入門Satoshi Imai
 
GPU仮想化最前線 - KVMGTとvirtio-gpu -
GPU仮想化最前線 - KVMGTとvirtio-gpu -GPU仮想化最前線 - KVMGTとvirtio-gpu -
GPU仮想化最前線 - KVMGTとvirtio-gpu -zgock
 

What's hot (19)

物理マシンをケチる技術
物理マシンをケチる技術物理マシンをケチる技術
物理マシンをケチる技術
 
「おうちクラウド」が今熱い!
「おうちクラウド」が今熱い!「おうちクラウド」が今熱い!
「おうちクラウド」が今熱い!
 
サーバ脆弱性スキャナ Vuls を OpenStack 環境で使ってみた
サーバ脆弱性スキャナ Vuls を OpenStack 環境で使ってみたサーバ脆弱性スキャナ Vuls を OpenStack 環境で使ってみた
サーバ脆弱性スキャナ Vuls を OpenStack 環境で使ってみた
 
CODT2021 CyberAgentでの サーバ選定手法の紹介
CODT2021 CyberAgentでの サーバ選定手法の紹介CODT2021 CyberAgentでの サーバ選定手法の紹介
CODT2021 CyberAgentでの サーバ選定手法の紹介
 
OSSで実現するハイブリッドクラウド4ノードクラスタ ~Pacemakerのチケット機能で災害対策~
OSSで実現するハイブリッドクラウド4ノードクラスタ ~Pacemakerのチケット機能で災害対策~OSSで実現するハイブリッドクラウド4ノードクラスタ ~Pacemakerのチケット機能で災害対策~
OSSで実現するハイブリッドクラウド4ノードクラスタ ~Pacemakerのチケット機能で災害対策~
 
プライベートクラウドを支えるAMD EPYCサーバ
プライベートクラウドを支えるAMD EPYCサーバプライベートクラウドを支えるAMD EPYCサーバ
プライベートクラウドを支えるAMD EPYCサーバ
 
サポート エンジニアが Azure Networking をじっくりたっぷり語りつくす会
サポート エンジニアが Azure Networking をじっくりたっぷり語りつくす会サポート エンジニアが Azure Networking をじっくりたっぷり語りつくす会
サポート エンジニアが Azure Networking をじっくりたっぷり語りつくす会
 
エンジニアなら知っておきたい「仮想マシン」のしくみ (BPStudy38)
エンジニアなら知っておきたい「仮想マシン」のしくみ (BPStudy38)エンジニアなら知っておきたい「仮想マシン」のしくみ (BPStudy38)
エンジニアなら知っておきたい「仮想マシン」のしくみ (BPStudy38)
 
OpenStackをコマンドで攻める! 構築・運用とトラブル解決 - OpenStack最新情報セミナー 2014年6月
OpenStackをコマンドで攻める! 構築・運用とトラブル解決 - OpenStack最新情報セミナー 2014年6月OpenStackをコマンドで攻める! 構築・運用とトラブル解決 - OpenStack最新情報セミナー 2014年6月
OpenStackをコマンドで攻める! 構築・運用とトラブル解決 - OpenStack最新情報セミナー 2014年6月
 
KVM環境におけるネットワーク速度ベンチマーク
KVM環境におけるネットワーク速度ベンチマークKVM環境におけるネットワーク速度ベンチマーク
KVM環境におけるネットワーク速度ベンチマーク
 
RDOを使ったOpenStack Havana - Neutron 構築編
RDOを使ったOpenStack Havana - Neutron 構築編RDOを使ったOpenStack Havana - Neutron 構築編
RDOを使ったOpenStack Havana - Neutron 構築編
 
Interact2019 ws2019 s2d_IN05
Interact2019 ws2019 s2d_IN05Interact2019 ws2019 s2d_IN05
Interact2019 ws2019 s2d_IN05
 
Openstackを200%活用するSDSの挑戦
Openstackを200%活用するSDSの挑戦Openstackを200%活用するSDSの挑戦
Openstackを200%活用するSDSの挑戦
 
CyberAgentのPrivateCloudeを支えるStorage基盤
CyberAgentのPrivateCloudeを支えるStorage基盤CyberAgentのPrivateCloudeを支えるStorage基盤
CyberAgentのPrivateCloudeを支えるStorage基盤
 
今さら聞けない人のための仮想化技術超入門
今さら聞けない人のための仮想化技術超入門今さら聞けない人のための仮想化技術超入門
今さら聞けない人のための仮想化技術超入門
 
Pgcon2012 ori-20120224
Pgcon2012 ori-20120224Pgcon2012 ori-20120224
Pgcon2012 ori-20120224
 
10GbE時代のネットワークI/O高速化
10GbE時代のネットワークI/O高速化10GbE時代のネットワークI/O高速化
10GbE時代のネットワークI/O高速化
 
Raspberry pi で始める v sphere 7 超入門
Raspberry pi で始める v sphere 7 超入門Raspberry pi で始める v sphere 7 超入門
Raspberry pi で始める v sphere 7 超入門
 
GPU仮想化最前線 - KVMGTとvirtio-gpu -
GPU仮想化最前線 - KVMGTとvirtio-gpu -GPU仮想化最前線 - KVMGTとvirtio-gpu -
GPU仮想化最前線 - KVMGTとvirtio-gpu -
 

Similar to もしCloudStackのKVMホストでPCIパススルーできるようになったら

Cloud stack徹底入門7章 20130514
Cloud stack徹底入門7章 20130514Cloud stack徹底入門7章 20130514
Cloud stack徹底入門7章 20130514samemoon
 
OpenStack with SR-IOV
OpenStack with SR-IOVOpenStack with SR-IOV
OpenStack with SR-IOVHideki Saito
 
Apache cloudstack4.0インストール
Apache cloudstack4.0インストールApache cloudstack4.0インストール
Apache cloudstack4.0インストールYasuhiro Arai
 
Apache CloudStack 4.0 インストール(ver0.5)
Apache CloudStack 4.0 インストール(ver0.5)Apache CloudStack 4.0 インストール(ver0.5)
Apache CloudStack 4.0 インストール(ver0.5)Yasuhiro Arai
 
Microsoft Tunnel 概要
Microsoft Tunnel 概要Microsoft Tunnel 概要
Microsoft Tunnel 概要Yutaro Tamai
 
201312 scalr[oss] installation_idcf
201312 scalr[oss] installation_idcf201312 scalr[oss] installation_idcf
201312 scalr[oss] installation_idcfIDC Frontier
 
SCALR OSS版のインストール手順のご紹介 20131204 01
SCALR OSS版のインストール手順のご紹介 20131204 01SCALR OSS版のインストール手順のご紹介 20131204 01
SCALR OSS版のインストール手順のご紹介 20131204 01Haruhiko KAJIKAWA
 
OSC 2011 Hokkaido 自宅SAN友の会(後半)
OSC 2011 Hokkaido 自宅SAN友の会(後半)OSC 2011 Hokkaido 自宅SAN友の会(後半)
OSC 2011 Hokkaido 自宅SAN友の会(後半)Satoshi Shimazaki
 
IaaSクラウドを支える基礎技術 演習編_v1_0
IaaSクラウドを支える基礎技術 演習編_v1_0IaaSクラウドを支える基礎技術 演習編_v1_0
IaaSクラウドを支える基礎技術 演習編_v1_0Etsuji Nakai
 
20130714 July Tech Festa 日本CloudStackユーザー会
20130714 July Tech Festa 日本CloudStackユーザー会20130714 July Tech Festa 日本CloudStackユーザー会
20130714 July Tech Festa 日本CloudStackユーザー会samemoon
 
Docker ComposeでMastodonが必要なものを梱包する話
Docker ComposeでMastodonが必要なものを梱包する話Docker ComposeでMastodonが必要なものを梱包する話
Docker ComposeでMastodonが必要なものを梱包する話Masahito Zembutsu
 
NetBSD on Google Compute Engine
NetBSD on Google Compute EngineNetBSD on Google Compute Engine
NetBSD on Google Compute EngineRyo ONODERA
 
SCUGJ第18回勉強会:よろしい、ならばVMMだ
SCUGJ第18回勉強会:よろしい、ならばVMMだSCUGJ第18回勉強会:よろしい、ならばVMMだ
SCUGJ第18回勉強会:よろしい、ならばVMMだwind06106
 
Cisco Modeling Labs (CML)を使ってネットワークを学ぼう!(応用編)
Cisco Modeling Labs (CML)を使ってネットワークを学ぼう!(応用編)Cisco Modeling Labs (CML)を使ってネットワークを学ぼう!(応用編)
Cisco Modeling Labs (CML)を使ってネットワークを学ぼう!(応用編)シスコシステムズ合同会社
 
20140612_Docker上でCloudStackを動かしてみる!!
20140612_Docker上でCloudStackを動かしてみる!!20140612_Docker上でCloudStackを動かしてみる!!
20140612_Docker上でCloudStackを動かしてみる!!Midori Oge
 
OpenStackクラウド基盤構築ハンズオンセミナー 第1日:ハンズオンNo1
OpenStackクラウド基盤構築ハンズオンセミナー 第1日:ハンズオンNo1OpenStackクラウド基盤構築ハンズオンセミナー 第1日:ハンズオンNo1
OpenStackクラウド基盤構築ハンズオンセミナー 第1日:ハンズオンNo1Etsuji Nakai
 
CloudStackユーザ会 OSC.cloud
CloudStackユーザ会 OSC.cloudCloudStackユーザ会 OSC.cloud
CloudStackユーザ会 OSC.cloudsamemoon
 
MINCS – containers in the shell script
MINCS – containers in the shell scriptMINCS – containers in the shell script
MINCS – containers in the shell scriptMasami Hiramatsu
 
Fabricによるcloud stackインストール自動化
Fabricによるcloud stackインストール自動化Fabricによるcloud stackインストール自動化
Fabricによるcloud stackインストール自動化hiroyuki nakajima
 
2017年05月27日 AITCシニア技術者勉強会 第6回「OpenCV入門」
2017年05月27日 AITCシニア技術者勉強会 第6回「OpenCV入門」2017年05月27日 AITCシニア技術者勉強会 第6回「OpenCV入門」
2017年05月27日 AITCシニア技術者勉強会 第6回「OpenCV入門」aitc_jp
 

Similar to もしCloudStackのKVMホストでPCIパススルーできるようになったら (20)

Cloud stack徹底入門7章 20130514
Cloud stack徹底入門7章 20130514Cloud stack徹底入門7章 20130514
Cloud stack徹底入門7章 20130514
 
OpenStack with SR-IOV
OpenStack with SR-IOVOpenStack with SR-IOV
OpenStack with SR-IOV
 
Apache cloudstack4.0インストール
Apache cloudstack4.0インストールApache cloudstack4.0インストール
Apache cloudstack4.0インストール
 
Apache CloudStack 4.0 インストール(ver0.5)
Apache CloudStack 4.0 インストール(ver0.5)Apache CloudStack 4.0 インストール(ver0.5)
Apache CloudStack 4.0 インストール(ver0.5)
 
Microsoft Tunnel 概要
Microsoft Tunnel 概要Microsoft Tunnel 概要
Microsoft Tunnel 概要
 
201312 scalr[oss] installation_idcf
201312 scalr[oss] installation_idcf201312 scalr[oss] installation_idcf
201312 scalr[oss] installation_idcf
 
SCALR OSS版のインストール手順のご紹介 20131204 01
SCALR OSS版のインストール手順のご紹介 20131204 01SCALR OSS版のインストール手順のご紹介 20131204 01
SCALR OSS版のインストール手順のご紹介 20131204 01
 
OSC 2011 Hokkaido 自宅SAN友の会(後半)
OSC 2011 Hokkaido 自宅SAN友の会(後半)OSC 2011 Hokkaido 自宅SAN友の会(後半)
OSC 2011 Hokkaido 自宅SAN友の会(後半)
 
IaaSクラウドを支える基礎技術 演習編_v1_0
IaaSクラウドを支える基礎技術 演習編_v1_0IaaSクラウドを支える基礎技術 演習編_v1_0
IaaSクラウドを支える基礎技術 演習編_v1_0
 
20130714 July Tech Festa 日本CloudStackユーザー会
20130714 July Tech Festa 日本CloudStackユーザー会20130714 July Tech Festa 日本CloudStackユーザー会
20130714 July Tech Festa 日本CloudStackユーザー会
 
Docker ComposeでMastodonが必要なものを梱包する話
Docker ComposeでMastodonが必要なものを梱包する話Docker ComposeでMastodonが必要なものを梱包する話
Docker ComposeでMastodonが必要なものを梱包する話
 
NetBSD on Google Compute Engine
NetBSD on Google Compute EngineNetBSD on Google Compute Engine
NetBSD on Google Compute Engine
 
SCUGJ第18回勉強会:よろしい、ならばVMMだ
SCUGJ第18回勉強会:よろしい、ならばVMMだSCUGJ第18回勉強会:よろしい、ならばVMMだ
SCUGJ第18回勉強会:よろしい、ならばVMMだ
 
Cisco Modeling Labs (CML)を使ってネットワークを学ぼう!(応用編)
Cisco Modeling Labs (CML)を使ってネットワークを学ぼう!(応用編)Cisco Modeling Labs (CML)を使ってネットワークを学ぼう!(応用編)
Cisco Modeling Labs (CML)を使ってネットワークを学ぼう!(応用編)
 
20140612_Docker上でCloudStackを動かしてみる!!
20140612_Docker上でCloudStackを動かしてみる!!20140612_Docker上でCloudStackを動かしてみる!!
20140612_Docker上でCloudStackを動かしてみる!!
 
OpenStackクラウド基盤構築ハンズオンセミナー 第1日:ハンズオンNo1
OpenStackクラウド基盤構築ハンズオンセミナー 第1日:ハンズオンNo1OpenStackクラウド基盤構築ハンズオンセミナー 第1日:ハンズオンNo1
OpenStackクラウド基盤構築ハンズオンセミナー 第1日:ハンズオンNo1
 
CloudStackユーザ会 OSC.cloud
CloudStackユーザ会 OSC.cloudCloudStackユーザ会 OSC.cloud
CloudStackユーザ会 OSC.cloud
 
MINCS – containers in the shell script
MINCS – containers in the shell scriptMINCS – containers in the shell script
MINCS – containers in the shell script
 
Fabricによるcloud stackインストール自動化
Fabricによるcloud stackインストール自動化Fabricによるcloud stackインストール自動化
Fabricによるcloud stackインストール自動化
 
2017年05月27日 AITCシニア技術者勉強会 第6回「OpenCV入門」
2017年05月27日 AITCシニア技術者勉強会 第6回「OpenCV入門」2017年05月27日 AITCシニア技術者勉強会 第6回「OpenCV入門」
2017年05月27日 AITCシニア技術者勉強会 第6回「OpenCV入門」
 

More from Takuma Nakajima

4K/8K動画やVRなどの大容量コンテンツ配信を支える新しいキャッシュ技術のご紹介
4K/8K動画やVRなどの大容量コンテンツ配信を支える新しいキャッシュ技術のご紹介4K/8K動画やVRなどの大容量コンテンツ配信を支える新しいキャッシュ技術のご紹介
4K/8K動画やVRなどの大容量コンテンツ配信を支える新しいキャッシュ技術のご紹介Takuma Nakajima
 
博士学生が語る、4K/8K/VR配信基盤の最先端とコンテンツ配信の未来
博士学生が語る、4K/8K/VR配信基盤の最先端とコンテンツ配信の未来博士学生が語る、4K/8K/VR配信基盤の最先端とコンテンツ配信の未来
博士学生が語る、4K/8K/VR配信基盤の最先端とコンテンツ配信の未来Takuma Nakajima
 
新幹線とCMOSイメージセンサ
新幹線とCMOSイメージセンサ新幹線とCMOSイメージセンサ
新幹線とCMOSイメージセンサTakuma Nakajima
 
Amazonテロの話(ゼミ合宿)
Amazonテロの話(ゼミ合宿)Amazonテロの話(ゼミ合宿)
Amazonテロの話(ゼミ合宿)Takuma Nakajima
 
CloudStack4.4でGlusterFS環境を構築してみた
CloudStack4.4でGlusterFS環境を構築してみたCloudStack4.4でGlusterFS環境を構築してみた
CloudStack4.4でGlusterFS環境を構築してみたTakuma Nakajima
 
CloudStackアカウントの登録/削除Web アプリを作った
CloudStackアカウントの登録/削除Web アプリを作ったCloudStackアカウントの登録/削除Web アプリを作った
CloudStackアカウントの登録/削除Web アプリを作ったTakuma Nakajima
 
RubyistのためのCloudStack APIコンソール
RubyistのためのCloudStack APIコンソールRubyistのためのCloudStack APIコンソール
RubyistのためのCloudStack APIコンソールTakuma Nakajima
 
私がCloudStackを使う4つの理由
私がCloudStackを使う4つの理由私がCloudStackを使う4つの理由
私がCloudStackを使う4つの理由Takuma Nakajima
 
電通大でgentooinstallbattleをやろう
電通大でgentooinstallbattleをやろう電通大でgentooinstallbattleをやろう
電通大でgentooinstallbattleをやろうTakuma Nakajima
 
Slide osc2013tokyo spring
Slide osc2013tokyo springSlide osc2013tokyo spring
Slide osc2013tokyo springTakuma Nakajima
 
意外に作れる!?はじめての研究室内プライベートクラウド
意外に作れる!?はじめての研究室内プライベートクラウド意外に作れる!?はじめての研究室内プライベートクラウド
意外に作れる!?はじめての研究室内プライベートクラウドTakuma Nakajima
 

More from Takuma Nakajima (12)

4K/8K動画やVRなどの大容量コンテンツ配信を支える新しいキャッシュ技術のご紹介
4K/8K動画やVRなどの大容量コンテンツ配信を支える新しいキャッシュ技術のご紹介4K/8K動画やVRなどの大容量コンテンツ配信を支える新しいキャッシュ技術のご紹介
4K/8K動画やVRなどの大容量コンテンツ配信を支える新しいキャッシュ技術のご紹介
 
博士学生が語る、4K/8K/VR配信基盤の最先端とコンテンツ配信の未来
博士学生が語る、4K/8K/VR配信基盤の最先端とコンテンツ配信の未来博士学生が語る、4K/8K/VR配信基盤の最先端とコンテンツ配信の未来
博士学生が語る、4K/8K/VR配信基盤の最先端とコンテンツ配信の未来
 
新幹線とCMOSイメージセンサ
新幹線とCMOSイメージセンサ新幹線とCMOSイメージセンサ
新幹線とCMOSイメージセンサ
 
Amazonテロの話(ゼミ合宿)
Amazonテロの話(ゼミ合宿)Amazonテロの話(ゼミ合宿)
Amazonテロの話(ゼミ合宿)
 
CloudStack4.4でGlusterFS環境を構築してみた
CloudStack4.4でGlusterFS環境を構築してみたCloudStack4.4でGlusterFS環境を構築してみた
CloudStack4.4でGlusterFS環境を構築してみた
 
CloudStackアカウントの登録/削除Web アプリを作った
CloudStackアカウントの登録/削除Web アプリを作ったCloudStackアカウントの登録/削除Web アプリを作った
CloudStackアカウントの登録/削除Web アプリを作った
 
RubyistのためのCloudStack APIコンソール
RubyistのためのCloudStack APIコンソールRubyistのためのCloudStack APIコンソール
RubyistのためのCloudStack APIコンソール
 
私がCloudStackを使う4つの理由
私がCloudStackを使う4つの理由私がCloudStackを使う4つの理由
私がCloudStackを使う4つの理由
 
電通大でgentooinstallbattleをやろう
電通大でgentooinstallbattleをやろう電通大でgentooinstallbattleをやろう
電通大でgentooinstallbattleをやろう
 
Kernelvm8
Kernelvm8Kernelvm8
Kernelvm8
 
Slide osc2013tokyo spring
Slide osc2013tokyo springSlide osc2013tokyo spring
Slide osc2013tokyo spring
 
意外に作れる!?はじめての研究室内プライベートクラウド
意外に作れる!?はじめての研究室内プライベートクラウド意外に作れる!?はじめての研究室内プライベートクラウド
意外に作れる!?はじめての研究室内プライベートクラウド
 

Recently uploaded

TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdfTSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdftaisei2219
 
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する       2024/04/19 の勉強会で発表されたものですSOPを理解する       2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものですiPride Co., Ltd.
 
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムスマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムsugiuralab
 
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略Ryo Sasaki
 
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A surveyToru Tamaki
 
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNetToru Tamaki
 
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)Hiroki Ichikura
 
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...Toru Tamaki
 
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Yuma Ohgami
 

Recently uploaded (9)

TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdfTSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdf
 
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する       2024/04/19 の勉強会で発表されたものですSOPを理解する       2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものです
 
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムスマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システム
 
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
 
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey
 
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet
 
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
 
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
 
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
 

もしCloudStackのKVMホストでPCIパススルーできるようになったら

  • 1. 1/35第 15 回 CloudStack ユーザ会 CloudStack on KVM での PCI&USB パススルー 電気通信大学 中島 拓真 @penguin2716
  • 2. 2/35第 15 回 CloudStack ユーザ会 今日は PCI パススルーのお話をします ( USB …パススルーは準備できませんでした )
  • 3. 3/35第 15 回 CloudStack ユーザ会 もし CloudStack の KVM ホストで PCI パススルーできるようになったら 電気通信大学 中島 拓真 @penguin2716
  • 4. 4/35第 15 回 CloudStack ユーザ会 自己紹介 ■ 所属:電気通信大学    情報システム学研究科( M1 ) ■ 研究:クラウド上の VM での GPU 利用,     OpenFlow 関連(予定) ■ 開発: mikutter プラグイン,     CloudStack 3 行スクリプト ■ Twitter :ぺんぎんさん      @penguin2716
  • 5. 5/35第 15 回 CloudStack ユーザ会 Agenda ■ PCI/USB パススルーのお話 ■ CloudStack の VM で PCI パススルーするには ■ ソースの書き換え ■ ビルドと認識テスト
  • 6. 6/35第 15 回 CloudStack ユーザ会 {PCI,USB} パススルーのイメージ ■ 通常:リソースプールのリソースを利用 ■ パススルー:仮想マシンがデバイスに 直接アクセスする Hypervisor Device Resource Pool Device Device Device VM VM VM VM
  • 7. 7/35第 15 回 CloudStack ユーザ会 パススルーする利点 / 欠点 ■ 利点 – デバイスを占有できる – オーバーヘッドが小さくパフォーマンスが良い ■ 欠点 – デバイスに関連付けられるので VM のマイグレーションができなくなる – クラウドの利点であるはずのリソース共有が できなくなる – 動かないデバイスもある気がする
  • 8. 8/35第 15 回 CloudStack ユーザ会 どんなときに利用するの? ■ GPU を VM から利用したい – NVIDIA GRID みたいな感じ ■ NIC を占有させたい – 高速なネットワークを分離して提供 ■ FPGA ボードが使いたい – 研究用途とか ■ USB メモリ使いたい – USB-IP とか使えよ
  • 9. 9/35第 15 回 CloudStack ユーザ会 CloudStack で PCI パススルーするには ■ CloudStack の VM はどうやって作られるか – ユーザが WebUI から操作 – Libvirt に VM を作る命令が飛ぶ – qemu-kvm で VM を作る CloudStack WebUI Libvirt KVM Xen ESXi Libvirt で指定できれば パススルーできそう
  • 10. 10/35第 15 回 CloudStack ユーザ会 Libvirt による VM 生成 ■ ハイパーバイザによって異なる コマンドや API を抽象化 – どのハイパーバイザでも同じコマンドが利用可能 – CloudStack からは Libvirt のコマンドが叩かれる ■ CloudStack では VM が起動する度に VM の設定ファイルが再生成される – 起動中の VM の設定ファイルを書き換えても あまり意味がない
  • 11. 11/35第 15 回 CloudStack ユーザ会 Libvirt の設定ファイル ■ XML 形式で保持 <domain type='kvm'> <name>s-1-VM</name> <uuid>e08414ee-b237-3ef4-adcc-c1799cebe134</uuid> <description>Debian GNU/Linux 5.0 (32-bit)</description> <memory unit='KiB'>262144</memory> <currentMemory unit='KiB'>262144</currentMemory> <vcpu placement='static'>1</vcpu> <cputune> <shares>500</shares> </cputune> <os> <type arch='x86_64' machine='rhel6.4.0'>hvm</type> <boot dev='cdrom'/> <boot dev='hd'/> </os> <features>
  • 12. 12/35第 15 回 CloudStack ユーザ会 Libvirt の設定ファイル ■ PCI パススルーするには <hostdev mode='subsystem' type='pci' managed='yes'> <source> <address domain='0x0000' bus='0x00' slot='0x1b' function='0x0'/> </source> <address type='pci' domain='0x0000' bus='0x00' slot='0x05' function='0x0'/> </hostdev> # lspci 00:00.0 Host bridge: Intel Corporation Xeon E3-1200 v2/3rd Gen ... 00:01.0 PCI bridge: Intel Corporation Xeon E3-1200 v2/3rd Gen ... 00:14.0 USB controller: Intel Corporation 7 Series/C210 Series ... 00:16.0 Communication controller: Intel Corporation 7 Series/C... 00:1a.0 USB controller: Intel Corporation 7 Series/C210 Series C... 00:1b.0 Audio device: Intel Corporation 7 Series/C210 Series Chip...
  • 13. 13/35第 15 回 CloudStack ユーザ会 virsh(1) ■ Libvirt の API を叩くシェル – VM の電源管理 – VM の設定変更 – デバイスのアタッチ / デタッチ # virsh list Id Name State ---------------------------------------------------- 1 s-1-VM running 2 v-2-VM running 3 r-4-VM running # virsh vncdisplay 2 :1
  • 14. 14/35第 15 回 CloudStack ユーザ会 PCI デバイスを使う大まかな流れ ■ ホストからデバイスを detach ■ VM で利用 ■ VM を終了 ■ ホストにデバイスを reattach ← この間はホストで利用不可
  • 15. 15/35第 15 回 CloudStack ユーザ会 CloudStack で管理された VM で PCI パススルー使いたい!
  • 16. 16/35第 15 回 CloudStack ユーザ会 ヒント: CloudStack は OSS です
  • 17. 17/35第 15 回 CloudStack ユーザ会 ないなら書けばいいじゃない
  • 18. 18/35第 15 回 CloudStack ユーザ会 もし OSS が大好きな大学院生が CloudStack のソースを書き換えて PCI パススルーの初期実装をしたら
  • 19. 19/35第 15 回 CloudStack ユーザ会 構築環境 ■ 物理マシン 1 台で作ります ■ IP アドレス 30-50 個くらい – なければ OpenBlockS とかで LAN を作ろう ■ Proxy を通過しなくて良いネットワーク
  • 20. 20/35第 15 回 CloudStack ユーザ会 物理リソースの準備 ■ 物理マシン 1 台で作ります ■ IP アドレス 30-50 個くらい – OpenBlockS 等で LAN を作る ■ Proxy を通過しなくて良いネットワーク ☑ Core i7 3770 ☑ 32GB RAM ☑ 2 x 2TB HDD ☑ Intel VT-x ☑ Intel VT-d 192.168.1.20 10.10.0.0/16 ・ 4 スレッド以上 ・ 8GB 以上 ・ 500GB 以上 ・ VT-x 必須 ・ VT-d も多分必要
  • 21. 21/35第 15 回 CloudStack ユーザ会 構築手順 ■ CentOS のインストール ■ IOMMU の有効化 ■ CloudStack のソース書き換え ■ CloudStack のビルドとインストール ■ PCI パススルーのテスト
  • 22. 22/35第 15 回 CloudStack ユーザ会 CentOS のインストール ■ 何も難しいことはありません
  • 23. 23/35第 15 回 CloudStack ユーザ会 IOMMU の有効化 ■ /boot/grub/grub.conf title CentOS (2.6.32-358.18.1.el6.x86_64) root (hd0,0) kernel /vmlinuz-2.6.32-358.18.1.el6.x86_64 ro root=/dev/mapper/vg_mami-lv_root nomodeset rd_NO_LUKS rd_LVM_LV=vg_mami/lv_root LANG=en_US.UTF-8 rd_NO_MD SYSFONT=latarcyrheb-sun16 crashkernel=auto rd_LVM_LV=vg_mami/lv_swap KEYBOARDTYPE=pc KEYTABLE=us rd_NO_DM rhgb quiet intel_iommu=on initrd /initramfs-2.6.32-358.18.1.el6.x86_64.img
  • 24. 24/35第 15 回 CloudStack ユーザ会 IOMMU の有効化 ■ 再起動後 dmesg で確認します # dmesg | grep IOMMU Intel-IOMMU: enabled dmar: IOMMU 0: reg_base_addr fed90000 ver 1:0 cap c9008020660262 ecap f0105a IOMMU 0xfed90000: using Queued invalidation IOMMU: Setting RMRR: IOMMU: Setting identity map for device 0000:00:1d.0 [0xdeb11000 - 0xdeb2d000] IOMMU: Setting identity map for device 0000:00:1a.0 [0xdeb11000 - 0xdeb2d000] IOMMU: Setting identity map for device 0000:00:14.0 [0xdeb11000 - 0xdeb2d000] IOMMU: Prepare 0-16MiB unity mapping for LPC IOMMU: Setting identity map for device 0000:00:1f.0 [0x0 - 0x1000000]
  • 25. 25/35第 15 回 CloudStack ユーザ会 CloudStack のビルド ■ ビルドに必要なソフトウェアのインストール # yum groupinstall "Development Tools" # yum install java-1.6.0-openjdk-devel.x86_64 genisoimage mysql mysql- server ws-commons-util MySQL-python tomcat6 createrepo # yum install git wget -y # wget http://ftp.meisei-u.ac.jp/mirror/apache/dist/maven/maven- 3/3.1.0/binaries/apache-maven-3.1.0-bin.tar.gz # tar xf apache-maven-3.1.0-bin.tar.gz # mv apache-maven-3.1.0 /usr/local/ # echo 'export PATH=/usr/local/apache-maven-3.1.0/bin:$PATH' >> ~/.bashrc # echo 'export JAVA_HOME=/usr/lib/jvm/jre-1.6.0-openjdk.x86_64/' >> ~/.bashrc # source ~/.bashrc
  • 26. 26/35第 15 回 CloudStack ユーザ会 CloudStack のビルド ■ パッチを当ててビルドする https://gist.github.com/penguin2716/6547798 # patch -p0 < ../patches/LibvirtComputingResource.java.patch patching file plugins/hypervisors/kvm/src/com/cloud/hypervisor/kvm/resource/LibvirtComputing Resource.java # patch -p0 < ../patches/LibvirtVMDef.java.patch patching file plugins/hypervisors/kvm/src/com/cloud/hypervisor/kvm/resource/LibvirtVMDef.java # cd packaging/centos63 Generating RPMs is done using the package.sh script: # ./package.sh
  • 27. 27/35第 15 回 CloudStack ユーザ会 CloudStack のビルド ■ 失敗しました [ERROR] error: error reading /root/.m2/repository/org/apache/axis2/mex/1.5.4/mex-1.5.4-impl.jar; error in opening zip file [ERROR] error: error reading /root/.m2/repository/org/apache/axis2/axis2- mtompolicy/1.5.4/axis2-mtompolicy-1.5.4.jar; error in opening zip file [ERROR] error: error reading /root/.m2/repository/org/apache/ws/commons/axiom/axiom-dom/1.2.10/axiom- dom-1.2.10.jar; error in opening zip file [ERROR] error: error reading /root/.m2/repository/org/opensaml/opensaml1/1.1/opensaml1-1.1.jar; error in opening zip file [ERROR] error: error reading /root/.m2/repository/commons-lang/commons- lang/2.3/commons-lang-2.3.jar; error in opening zip file
  • 28. 28/35第 15 回 CloudStack ユーザ会 CloudStack のビルド ■ なぜか jar ファイルのはずなのに HTML… ■ 別のサーバから wget して対応 # file /root/.m2/repository/org/apache/axis2/mex/1.5.4/mex- 1.5.4-impl.jar /root/.m2/repository/org/apache/axis2/mex/1.5.4/mex-1.5.4-impl.jar: HTML document text # cd /root/.m2/repository/org/apache/axis2/mex/1.5.4/ # mv mex-1.5.4-impl.jar mex-1.5.4-impl.jar.html # wget http://mirrors.ibiblio.org/maven2/org/apache/axis2/mex/1.5.4/mex-1.5.4- impl.jar # file mex-1.5.4-impl.jar mex-1.5.4-impl.jar: Zip archive data, at least v1.0 to extract
  • 29. 29/35第 15 回 CloudStack ユーザ会 CloudStack のビルド ■ 再ビルドします error って出てますが動作します # cd /root/apache-cloudstack-4.1.1-src/packaging/centos63/ # ./package.sh Wrote: /root/apache-cloudstack-4.1.1-src/dist/rpmbuild/RPMS/x86_64/cloudstack- awsapi-4.1.1-0.el6.x86_64.rpm Executing(%clean): /bin/sh -e /var/tmp/rpm-tmp.SPN9Hm + umask 022 + cd /root/apache-cloudstack-4.1.1- src/packaging/centos63/../../dist/rpmbuild/BUILD + cd cloudstack-4.1.1 + '[' /root/apache-cloudstack-4.1.1-src/dist/rpmbuild/BUILDROOT/cloudstack- 4.1.1-0.el6.x86_64 '!=' / ']' + rm -rf /root/apache-cloudstack-4.1.1-src/dist/rpmbuild/BUILDROOT/cloudstack- 4.1.1-0.el6.x86_64 + exit 0 error: File /root/apache-cloudstack-4.1.1-src/dist/rpmbuild/ is not a regular file.
  • 30. 30/35第 15 回 CloudStack ユーザ会 CloudStack のビルド ■ createrepo コマンドでリポジトリ作成 # cd /root/apache-cloudstack-4.1.1-src/dist/rpmbuild/RPMS/x86_64 # createrepo . Spawning worker 0 with 6 pkgs Workers Finished Gathering worker results Saving Primary metadata Saving file lists metadata Saving other metadata Generating sqlite DBs Sqlite DBs complete
  • 31. 31/35第 15 回 CloudStack ユーザ会 CloudStack のビルド ■ /etc/yum.repos.d/cloudstack.repo [apache-cloudstack-4.1] name=Apache CloudStack 4.1 with PCI Pass-through support baseurl=file:///root/apache-cloudstack-4.1.1- src/dist/rpmbuild/RPMS/x86_64 enabled=1 gpgcheck=0
  • 32. 32/35第 15 回 CloudStack ユーザ会 /var/local/pci-attach-list ■ ここに VM のインスタンス名と アタッチする PCI デバイスのアドレスを記述 – デバイスのアドレスは lspci で確認 # lspci | grep -i audio 00:1b.0 Audio device: Intel Corporation 7 Se ries/C210 Series Chipset Family High Definition Audio Controller (rev 04) 01:00.1 Audio device: NVIDIA Corporation Device 0e1b (rev a1) # cat /var/local/pci-attach-list i-2-3-VM 00:0b.0
  • 33. 33/35第 15 回 CloudStack ユーザ会 仮想マシンを起動して確認 ■ Intel High Definition Autio $ lspci 00:00.0 Host bridge: Intel Corporation 440FX - 82441FX PMC [Natoma] (rev 02) 00:01.0 ISA bridge: Intel Corporation 82371SB PIIX3 ISA [Natoma/Triton II] 00:01.1 IDE interface: Intel Corporation 82371SB PIIX3 IDE [Natoma/Triton II] 00:01.2 USB controller: Intel Corporation 82371SB PIIX3 USB [Natoma/Triton II] (rev 01) 00:01.3 Bridge: Intel Corporation 82371AB/EB/MB PIIX4 ACPI (rev 03) 00:02.0 VGA compatible controller: Cirrus Logic GD 5446 00:03.0 Ethernet controller: Red Hat, Inc Virtio network device 00:04.0 SCSI storage controller: Red Hat, Inc Virtio block device 00:05.0 Audio device: Intel Corporation Panther Point High Definition Audio Controller (rev 04) 00:06.0 RAM memory: Red Hat, Inc Virtio memory balloon
  • 34. 34/35第 15 回 CloudStack ユーザ会 仮想マシンを起動して確認 ■ NVIDIA GeForce GT 640
  • 35. 35/35第 15 回 CloudStack ユーザ会 まとめ ■ CloudStack 上の VM で PCI パススルーしたい ■ Libvirt の設定ファイルを書き換えれば良い ■ CloudStack のソースを書き換えて実現 ■ VM 上で NVIDIA GeForce GT 640 を認識 ■ パッチはここにあります https://gist.github.com/penguin2716/6547798