Libvirt说明
Libvirt 库是一种实现 Linux 虚拟化功能的 Linux® API,它支持各种虚拟机监控程序,包括 Xen 和 KVM,以及 QEMU 和用于其他操作系统的一些虚拟产品。
一、安装libvirt环境
yum安装必要包
1
| yum install virt-manager libvirt libvirt-python python-virtinst -y
|
升级
1 2 3 4 5 6 7 8 9
| yum -y install gcc gcc-c++ yum install libxml2-devel gnutls-devel device-mapper-devel python-devel libnl-devel -y wget http://libvirt.org/sources/libvirt-1.1.1.tar.gz tar xzvf libvirt-0.9.4.tar.gz cd libvirt-0.9.4 ./configure make && make install
[root@localhost ~]
|
virsh -version 可能会报错
1、error: Failed to connect socket to ‘/usr/local/var/run/libvirt/libvirt-sock’: No such file or directory
做个链接:
1
| ln -s /var/run/libvirt/libvirt-sock /usr/local/var/run/libvirt/libvirt-sock
|
2、libvirt: Remote error : unable to connect to ‘/usr/local/var/run/libvirt/libvirt-sock-ro’: No such file or directory
再做个链接
1 2 3 4 5 6
| ln -s /var/run/libvirt/libvirt-sock-ro /usr/local/var/run/libvirt/libvirt-sock-ro
[root@localhost ~] 0.10.0 [root@localhost ~] libvirtd (libvirt) 1.1.1
|
重启下电脑
1 2
| [root@localhost ~] 1.1.1
|
二、创建虚拟机
1、demo.xml
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52
| <domain type='kvm'> <name>myvm</name> <!-- 名称 --> <memory>10485760</memory> <!-- 内存 --> <currentMemory>10485760</currentMemory> <vcpu>1</vcpu> <os> <type arch='x86_64' machine='pc'>hvm</type> <!-- 系统 --> <boot dev='hd'/> <!-- 从硬盘启动 --> </os> <features> <acpi/> <apic/> <pae/> </features> <clock offset='localtime'/> <on_poweroff>destroy</on_poweroff> <on_reboot>restart</on_reboot> <on_crash>destroy</on_crash> <devices> <emulator>/usr/libexec/qemu-kvm</emulator> <disk type='file' device='disk'> <source file='/data/instances/myvm/disk.qcow2'/> <target dev='sdb' bus='virtio'/> <!-- 用sdb --> </disk> <disk type='file' device='disk'> <driver name='qemu' type='qcow2'/> <source file='/data/instances/myvm/swap.qcow2'/> <target dev='sdb' bus='virtio'/> </disk> <disk type='file' device='disk'> <driver name='qemu' type='qcow2'/> <source file='/data/instances/myvm/disk2.qcow2'/> <target dev='sdc' bus='virtio'/> </disk> <disk type='file' device='cdrom'> <driver name='qemu' type='raw'/> <source file='/data/instances/myvm/meta.iso'/> <!-- 这里是有作用的,稍后解释 --> <target dev='hda' bus='ide'/> <readonly/> </disk> <interface type='bridge'> <source bridge='virbr0'/> <mac address="00:16:3e:5d:aa:a8"/> <filterref> <parameter name='IP' value='192.168.1.1' /> </filterref> </interface> <input type='mouse' bus='ps2'/> <graphics type='vnc' port='-1' autoport='yes' keymap='en-us' listen='0.0.0.0'/> <!-- ip 端口5900 累计相加 --> </devices> </domain>
|
2、定义KVM
1 2
| [root@localhost ~] Domain myvm defined from demo.xml
|
3、启动KVM
1 2
| [root@localhost ~] Domain myvm started
|
myvm 只的是demo.xml里的虚拟机名称
4、查看vnc信息
1 2
| [root@localhost ~] 127.0.0.1:2
|
5、如何修改
1
| virsh edit <Name of KVM>
|
6、查看运行中的虚拟机
1 2
| [root@localhost ~] [root@localhost ~]
|
创建完一台虚拟机后,要给虚拟机分配IP,挂载磁盘,所以要先把要配置的信息存入一个文件,做成iso,然后挂载上,虚拟机在开机的时候,挂载上文件,读取他,处理他。这个脚本,运维的人会写,很简单的事。格式自己定。
例如meta.js文件转成meta.iso的命令是:mkisofs -r -o meta.iso meta.js
三、用python创建虚拟机
demo.xml 注意,虚拟机名字要换一下
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| import libvirt
uri='qemu:///system' conn =libvirt.open(uri)
with open('demo.xml') as f: xml = f.read()
domain = conn.defineXML(xml) domain.createWithFlags(0) try: dom0 = conn.lookupByName("pyvm") except: print 'Failed to find the main domain' sys.exit(1) print "Domain 0: id %d running %s" % (dom0.ID(), dom0.OSType()) print dom0.info()
|
四、用php创建虚拟机
yum安装依赖包
1
| yum -y install gcc gcc.c++ zlib libxml2 libxml2-devel libmcrypt libcrypt-devel libmhash libjpeg libpng
|
安装PHP APACHE MYSQL
1
| yum -y install httpd httpd-devel mysql-server mysql-devel php php-devel php-gd php-mysql
|
安装libvirt-php
1 2 3 4 5
| wget http://libvirt.org/sources/php/libvirt-php-0.4.8.tar.gz tar -zxvf libvirt-php-0.4.8.tar.gz cd libvirt-php* ./configure make && make install
|
configure的时候如果报错,提示You need libvirt 说明libvirt开发包没有安装好,运行
1
| yum -y install libvirt-devel
|
建一个测试php文件
1
| print_r( libvirt_version() ); // 有结果,就表示,安装成功啦
|
从 https://github.com/xpmozong/libvirt-php-examples 下载例子
[root@localhost examples]# php create.php 创建
[root@localhost examples]# php test.php 列出虚拟机列表
其中libvirt.php 里有很多函数,没写全,要添加的话参考http://libvirt.org/php/api-reference.html
php有执行libvirt的权限,但是apache、nginx没有这个权限,所以要赋予权限。
还有通过web访问,要设置libvirt的认证,vim /etc/libvirt/libvirtd.conf 文件 auth_tcp = “none”
brctl show 查看网桥
跟重要的是,要有VNC啊,推荐 noVNC