Libvirt有两种控制方式,命令行和图形界面
图形界面:
通过执行名virt-manager,启动libvirt的图形界面,在图形界面下可以一步一步的创建虚拟机,管理虚拟机,还可以直接控制虚拟机的桌面。
命令行:
virsh list #显示本地活动虚拟机
virsh list –all #显示本地所有的虚拟机(活动的+不活动的)
virsh define ubuntu.xml #通过配置文件定义一个虚拟机(这个虚拟机还不是活动的)
virsh start ubuntu #启动名字为ubuntu的非活动虚拟机
virsh create ubuntu.xml #创建虚拟机(创建后,虚拟机立即执行,成为活动主机)
virsh suspend ubuntu #暂停虚拟机
virsh resume ubuntu #启动暂停的虚拟机
virsh shutdown ubuntu #正常关闭虚拟机
virsh destroy ubuntu #强制关闭虚拟机
virsh dominfo ubuntu #显示虚拟机的基本信息
virsh domname 2 #显示id号为2的虚拟机名
virsh domid ubuntu #显示虚拟机id号
virsh domuuid ubuntu #显示虚拟机的uuid
virsh domstate ubuntu #显示虚拟机的当前状态
virsh dumpxml ubuntu #显示虚拟机的当前配置文件(可能和定义虚拟机时的配置不同,因为当虚拟机启动时,需要给虚拟机分配id号、uuid、vnc端口号等等)
virsh setmem ubuntu 512000 #给不活动虚拟机设置内存大小
virsh setvcpus ubuntu 4 #给不活动虚拟机设置cpu个数
virsh edit ubuntu #编辑配置文件(一般是在刚定义完虚拟机之后)
表28-5 virsh常用命令一览表
命令 |
说明 |
help |
显示该命令的说明 |
quit |
结束 virsh ,回到 Shell |
connect |
连接到指定的虚拟机服务器 |
create |
启动一个新的虚拟机 |
destroy |
删除一个虚拟机 |
start |
开启(已定义的)非启动的虚拟机 |
define |
从 XML 定义一个虚拟机 |
undefine |
取消定义的虚拟机 |
dumpxml |
转储虚拟机的设置值 |
list |
列出虚拟机 |
reboot |
重新启动虚拟机 |
save |
存储虚拟机的状态 |
restore |
回复虚拟机的状态 |
suspend |
暂停虚拟机的执行 |
resume |
继续执行该虚拟机 |
dump |
将虚拟机的内核转储到指定的文件,以便进行分析与排错 |
shutdown |
关闭虚拟机 |
setmem |
修改内存的大小 |
setmaxmem |
设置内存的最大值 |
setvcpus |
修改虚拟处理器的数量 |
libvirt还提供了一个shell:virsh,直接执行名virsh即可获得一个特殊的shell:virsh,在这个virsh里面可以执行上面的命令(去掉前面的virsh)与本地libvirt交互,还可以通过命令connect命令连接远程libvirt,与之交互,例如:connect xen+ssh://[email protected]。另外可以只执行一条远程libvirt命令:virsh –c xen+ssh://[email protected] list --all
ubuntu.xml配置文件举例:
//指定磁盘上文件的绝对路径
注:
生成一个4G大小的空文件:dd if=/dev/zero of=./disk bs=1024 count=`expr 4 \* 1024 \* 1024`
修改虚拟机的启动设备:
网络参数:
如ubuntu.xml配置文件,kvm虚拟机和xen虚拟机都只需要按照下面的模板进行配置,MAC地址是必须的,bridage的名字可能在不同的主机上是不一样,可能是virbr0,也可能是br0,但类型一定要是桥接模式就可以了
KVM虚拟机迁移:
迁移命令:virsh migrate –live
迁移完之后,本地机器可能仍是定义状态,要执行virsh undefine
注意:/dev/zero是一个输入设备,用来初始化文件。
/dev/null是个无底洞,可以向它输出任何数据,它通吃并且不会撑着。
实例:
1、使用ssh登入服务器:ssh 193.169=8.195.248
2、创建磁盘: qemu-img create -f qcow2 rhel6.5x64.img 15G
3、生成xml: virsh dumpxml rhel6.5x64 > rhelxml
4、编辑xml: vimrhelxml
a\修改name:rhel6.5x64
b\修改type: type=qcow2
c\修改mac地址: 改成不一样的就可以:比如: a1->a2;
d\修改两个source地址: iso img
e\去除uid那一行
5、定义xml:virsh define rhelxml
6、开启rhel6.5x64:virsh start rhel6.5x64
另外一些查看命令:
virsh list --all:查看所有的虚拟机的信息
virsh vncdispaly ID;
vnc viewer address:oprt
三、存储池和存储卷的管理
1.创建 KVM主机存储池
game over!
待续。。。。。
安装虚拟机
从 6 系列开始 RedHat 推荐使用 virt-install/virsh 系列工具操作 kvm,而不是直接使用 qemu-kvm,所以 qemu-kvm 被移到一个不起眼的地方 /usr/libexec/:
# qemu-kvm
-bash: qemu-kvm: command not found
# ls /usr/libexec/qemu-kvm
/usr/libexec/qemu-kvm
VPSee 采用 RedHat 推荐的方式(virt-install)安装虚拟机,这里以安装 Ubuntu-11.10-server-amd64.iso 为例:
# virt-install \
--name ubuntu \
--ram 512 \
--vcpus=1 \
--disk path=/root/ubuntu.img,size=10 \
--accelerate \
--cdrom /root/ubuntu-11.10-server-amd64.iso \
--graphics vnc
开始安装,创建硬盘 ubuntu.img 后就报错,用的是 root 帐号居然还 Permission denied?!
Starting install...
Creating storage file ubuntu.img | 10.0 GB 00:00
ERROR internal error Process exited while reading console log output: char device redirected to /dev/pts/1
qemu-kvm: -drive file=/root/ubuntu.img,if=none,id=drive-ide0-0-0,format=raw,cache=none: could not open disk image /root/ubuntu.img: Permission denied
Domain installation does not appear to have been successful.
If it was, you can restart your domain by running:
virsh --connect qemu:///system start ubuntu
otherwise, please restart your installation.
修改 qemu.conf 配置,把下面几个地方的注释去掉,然后把 dynamic_ownership 的值改成0,禁止 libvirtd 动态修改文件的归属:
# vi /etc/libvirt/qemu.conf
...
user = "root"
group = "root"
dynamic_ownership = 0
...
重启 libvirtd 服务再用上面的 virt-install 命令安装就应该可以了。这个时候 vnc 默认绑定的是本机 127.0.0.1,如果其他机器想用 vnc 客户端访问这台 kvm 服务器正在安装的 ubuntu 的话需要把 vnc 绑定到服务器的 IP 地址或者绑定到全局 0.0.0.0. 修改 qemu.conf 文件取消 vnc_listen 一行前面的注释,记得重启 libvirtd:
# vi /etc/libvirt/qemu.conf
...
vnc_listen = "0.0.0.0"