KVM

起動中のKVMゲストを一括でシャットダウンするスクリプト

あるのかな〜て探してたら日本語のブログで見つかった。 forで回さずxargs使えばいいんじゃね?ってことで 紹介します。   /usr/local/bin とかにおけば shutdown-vmsで全てのVMが落とせる。 地味に便利。

激安10G NIC – Mellanox ConnectX-2 on CentOS 7でSR-IOVを使う

覚書っていうのと、ConnectX/ConnectX-2でのSR-IOV有効化の情報が少なすぎるのでまとめてみます。 ドライバーのインストール方法などはMellanoxの公式サイトからダウンロードすれば何となく分かると思います。     Canon IXY 430F (4.3mm, f/2.7, 1/20 sec, ISO1000) ちょっと前に10G NICを買いまいた。Mellanox ConnectX-2 EN というやつです。 中古で1枚3,000円ぐらいで買えます。安い! Single-Port 10G(SFP+)が使えます。 他にも仮想支援と言う名のSR-IOVという機能、その他諸々あります。 今回はSR-IOVの有効化を覚書で書き残します?     SR-IOV とは IIJさんが詳しく解説しています。 OpenStack環境でのSR-IOV活用法 – IIJ hypervisor(VMM)が処理していた要求を、NICに直接やらせて ネイティブに近いパフォーマンスを出そうといった感じです。     SR-IOV の利用条件 ・VT-x 対応のCPUとマザーボード ・SR-IOV 対応のNIC の2つが絶対条件     SR-IOVの有効化 ドライバーはCentOS7(多分CentOS5も)で標準で入ってますが このままではSR-IOVが有効化できない(Mellanoxのツール郡が入ってない)ので OFED版をインストールしてください。 [crayon-5b4efd5d1caaf555799852/] [crayon-5b4efd5d1cac3868486481/] [crayon-5b4efd5d1cac6306708631/] [crayon-5b4efd5d1cac8208638687/] [crayon-5b4efd5d1caca288698274/] [crayon-5b4efd5d1cacc902510146/] [crayon-5b4efd5d1cace590661406/] total_vfs NICで作成可能な最大VF数 ファームウェアのバージョンによって最大数が変わる。 ConnectX/ConnectX-2の最新ファームウェアでは63が最大 実際に作成するVF数に関わらずここで設定したVF数分のMMIO領域が確保される。 BIOSによっては最大が6ぐらいだったりする。(今回使用したPCが6 GA-X58-UD3R) MMIO領域が足りないと not enough MMIO resources for SR-IOV とdmesgに吐き出されてSR-IOVが無効になります。   port_type_array 1= InfiniBand, 2 = Ethernet   num_vfs 実際に作成するVF数 もちろん total_vfs > num_vfs じゃないとエラーになります。   probe_vf 良くわかってない…。 Mellanoxフォーラムには probe_vf – is the number of VF to be probed in the hypervisor. Probed in the hypervisor means that the VF will also have interface in the hypervisor (e.g. can be seen using the…

【覚書】KVM / Proxmox で PCIパススルー がうまく動かない時に試すこと

仮想サーバーで録画鯖を建てるなら必ず必須なパススルー。 前回の記事でPCIパススルーに必要なことを書いたので覚書として方法でも書いてみる。   [bash] # /etc/default/grub を弄る。 vim /etc/default/grub GRUB_CMDLINE_LINUX_DEFAULT="intel_iommu=on"   # grubの変更を適用する update-grub   # 再起動する reboot   # 下記コマンドでIOMMUが有効になってるか確認する dmesg | grep -e DMAR -e IOMMU Intel-IOMMU: enabled # ↑のように表示されればおk   # パススルーしたいPCIデバイスの識別番号を確認する lspci 08:00.0 Multimedia controller: Xilinx Corporation Device 222a (rev 01)   #VM設定ファイルにパススルーの記述をする vim /etc/pve/nodes/proxmox/qemu-server/100.conf hostpci0: 08:00.0   # 起動してみる [/bash]   もしこれでassign出来ませんとか、パーミッションがないよとか言われたら [bash] # 新規にファイルを作成する vim /etc/modprobe.d/kvm.conf options kvm allow_unsafe_assigned_interrupts=1 [/bash] これでダメだったら知りません。諦めてください。   allow_unsafe_assigned_interrputs が何か調べてもよく分からない KVMのPCIパススルーではPCIデバイスの再マッピングを必要としているけど、ハードウェア(プラットフォーム)がサポートしない場合は KVMが必要としている再マッピングチェック機能を無視出来る的な・・・(?) 調べてみるとVT(VT-d)の中の一つの機能でサポートされてるっぽいんだけどなぁ・・・よく分からないです!

「GIGABYTE GA-X58A-UD3R」にGIGABYTE作成非公式(?)BIOSを焼いてVT-dを有効にする

GIGABYTEさんからもらったマザーボードでKVMを建てて仮想録画鯖作ろう!ってなったときに PCIパススルーが絶対必要になってくる。 Intel環境で必要なのは VT-d(IOMMU) AMD環境だと AMD I/O VT-dに必要なのはCPUとチップセットが対応しているか。 今回のGA-X58A-UD3RのX58で対応していて、CPUはXeon E5606でこちらもVT-d対応 ということでKVMを建ててPCIパススルーを行うもうまく動作せず 新しいBIOSがあったので焼いてみようと思いました。     特定のBIOSを焼くにはWindows環境が必須 1MサイズのBIOSを焼いたマザーボードから、2MサイズなBIOSを焼くには @BIOSとかいうWindowsでしか起動出来ないソフトを使って焼く必要がある糞みたいなメーカーがあるんですよね。 そうです!GIGABYTE GA-X58A-UD3Rです! と、まぁWindowsをインストールしてBIOSを焼く SONY SLT-A65V (28mm, f/4.5, 1/80 sec, ISO800) 最新BIOSになったしこれでPCIパススルー出来るでしょ!と思った。 甘かった。     チップセットが対応していても、マザーボードが機能を殺してる場合がある CPU、チップセットが対応していてもBIOSで無効にしてる糞みたいなマザーボードがあるんですよね。 それがGIGABYTEのGA-X58A-UD3R! 幸いなことに海外フォーラムで問い合わせた人が居たらしく、GIGABYTE公式で非公開なVT-d対応BIOSが アップロードされていました。 GA-X58A-UD3R 1.0 VT-d option? – bios-mods.com SONY SLT-A65V (55mm, f/5.6, 1/80 sec, ISO1600)ということで焼いてみた。 公開されてる最新BIOSは「F8A」ですが、非公開なMOD BIOSは「F8A US」     SONY SLT-A65V (35mm, f/5, 1/80 sec, ISO1600)メインメニューで「Ctrl + F1」を押すと新しいメニューが出てきて     SONY SLT-A65V (35mm, f/5, 1/80 sec, ISO1600)VT-d項目が選べるようになります。 めでたし      

【覚書】Ubuntu 14.04 に「KVM」とWeb管理が出来る「WebVirtmgr」を入れてみる

[bash] $ apt-get install git python-pip python-libvirt python-libxml2 novnc supervisor nginx $ apt-get install kvm libvirt-bin bridge-utils virt-manager $ mkdir ~/src $ cd ~/src $ git clone git://github.com/retspen/webvirtmgr.git $ cd webvirtmgr $ sudo pip install -r requirements.txt $ ./manage.py syncdb #ログインユーザーを作る $ ./manage.py collectstatic $ ./manage.py createsuperuser #ルートユーザーを作る ユーザー名はrootとかに $ cd .. $ mv webvirtmgr /var/www/ $ vim /etc/nginx/sites-enabled/default の中を全部コメントアウト [/bash] [bash] $ vim /etc/nginx/conf.d/webvirtmgr.conf server { listen 80 default_server; server_name $hostname; #access_log /var/log/nginx/webvirtmgr_access_log; location /static/ { root /var/www/webvirtmgr/webvirtmgr; # or /srv instead of /var expires max; } location / { proxy_pass http://127.0.0.1:8000; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-for $proxy_add_x_forwarded_for; proxy_set_header Host $host:$server_port; proxy_set_header X-Forwarded-Proto $remote_addr; proxy_connect_timeout 600; proxy_read_timeout 600; proxy_send_timeout 600; client_max_body_size 1024M; # Set higher depending on your needs…