kvm
- 安装kvm环境
yum -y install qemu-kvm libvirt python-virtinst bridge-utils policycoreutils-python lrzsz expect
mkdir /home/vhosts/ -p
semanage fcontext -a -t virt_image_t /home/vhosts 设定selinux安全上下文目录
注释:如果没有semanage,那么安装policycoreutils-python
iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 5900:5920 -j ACCEPT
iptables -A INPUT -p udp --dport 161 -j ACCEPT
service iptables save
service iptables restart
sed -i ‘s/192.168.122/10.1.0/g’ /etc/libvirt/qemu/networks/default.xml
service libvirtd start
chkconfig libvirtd on
virsh pool-define-as vmpool --type dir --target /home/vhosts 定义池
virsh pool-start vmpool 开始池
virsh pool-autostart vmpool 自启动
yum install net-snmp -y
sed -i ’s/‘default public'/'0.0.0.0 zhxgsnmp'/g‘ /etc/snmp/snmpd.conf
sed -i '54 aview systemview included .1' /etc/snmp/snmpd.conf
chkconfig snmpd on
service snmpd start
2、或者是多行版本:
yum update -y;\
yum -y install qemu-kvm libvirt python-virtinst bridge-utils policycoreutils-python;\
mkdir /home/vhosts;\
semanage fcontext -a -t virt_image_t /home/vhosts; #添加新规则
iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 5900:5920 -j ACCEPT;\
iptables -A INPUT -p udp --dport 161 -j ACCEPT;
service iptables save;\
service iptables restart;
sed -i s/192.168.122/10.1.0/g /etc/libvirt/qemu/networks/default.xml;
chkconfig libvirtd on;
service libvirtd start;\
virsh pool-define-as vmpool --type dir --target /home/vhosts; #创建存储池vmpool,--type dir类型为目录,--target目标 /home/vhosts
virsh pool-start vmpool;\ #启动存储池
virsh pool-autostart vmpool;\
yum install net-snmp -y;\
sed -i s/'default public'/'0.0.0.0 zhxgsnmp'/g /etc/snmp/snmpd.conf;
sed -i '54 aview systemview included .1' /etc/snmp/snmpd.conf;
chkconfig snmpd on;\
service snmpd start;\
reboot
注意以上脚本有防火墙禁止icmp那样要移到最后去,然后重启iptables并重启libvirtd
chkconfig libvirtd on
service libvirtd start
- 基本命令
virt-install 创建新虚拟机
virsh start 虚拟机名 启动虚拟机
virsh destroy 虚拟机名 强制关机
virsh vncdisplay 虚拟机名 查看虚拟机vnc端口
virt-clone 克隆虚拟机
virsh attach-interface 添加网卡
virsh change-media 更换光驱iso文件
virsh edit 虚拟机名 编辑配置文件
- 新建虚拟机
(1)raw格式:速度最快,但是不能实现内部快照,而且实际占用磁盘空间需要用qemu-img info spider.img查看
virt-install --name spider --ram 4096 --vcpus=2 --disk path=/home/vhosts/spider.img,size=100 --accelerate --arch=x86_64 --os-type=linux --os-variant='rhel6' --cdrom=/home/software/CentOS-6.5-x86_64-minimal.iso --graphics vnc --network bridge=br0
size:为GB
(2)qcow2格式:速度接近raw,但支持内部快照
qemu-img create -f qcow2 /home/vhosts/虚拟机名.qcow2 100G 必须通过
qemu-img创建qcow2格式文件
chown -R qemu:qemu /home/vhosts/虚拟机名.qcow2
virt-install --name 虚拟机名 --ram 16384 --vcpus=2 --arch=x86_64 --disk path=/home/vhosts/openstack.qcow2,size=100,format=qcow2 --os-type=linux --os-variant='rhel6' --accelerate --cdrom=/home/software/CentOS-6.5-x86_64-minimal.iso --graphic type=vnc,port=-1,listen=0.0.0.0,password='cqmygysdss' --network bridge=br0,bridge=br1
注意:逗号,之后不能有空格!
-1是自动获取端口
- 克隆虚拟机
virt-clone -o spider -n spider1 -f /home/vhosts/spider1.qcow2
登录到新克隆虚拟机上去要删除掉:
rm -f /etc/udev/rules.d/70-persistent-net.rules
reboot
- 开机加载虚拟机
virsh list --autostart 查看自动加载的虚拟机
virsh autostart spider 自动加载spider
virsh autostart spider --disable 禁止加载spider
- raw格式转为qcow2
qemu-img convert -O qcow2 test.img test.qcow2
virsh edit scrapy
<disk type='file' device='disk'>
<driver name='qemu' type='qcow2' cache='none'/>
<source file='/home/vhosts/scrapy.qcow2'/>
<target dev='hda' bus='virtio'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x07' function='0x0'/>
</disk>
注意 slot要选一个没用的
- 虚拟机改名
virsh destroy 虚拟机名
cd /etc/libvirt/qemu
mv 虚拟机名.xml 新虚拟机名.xml
vi 新虚拟机名.xml 修改name字段为: 新虚拟机名
virsh undefine 虚拟机名
virsh define /etc/libvirt/qemu/新虚拟机名.xml
virsh start 新的虚拟机名
- 删除虚拟机
virsh destroy 虚拟机名
virsh undefine 虚拟机名
rm -f /home/vhost/虚拟机名.qcow2
- 查看虚拟机文件所占实际空间
qemu-img info cacti.img
image: cacti.img
file format: raw
virtual size: 100G (107374182400 bytes)
disk size: 3.0G
raw格式虽然分配了100G,但是实际只占有了3G,
- 修改VNC绑定地址
virsh destroy centos6.5
vi /etc/libvirt/qemu/centos6.5.xml
<graphics?type='vnc'?port='5901'?autoport='no'?listen='0.0.0.0'?keymap='en-us'/>
在其中加入passwd的属性,更改为如下:
<graphics?type='vnc'?port='5901'?autoport='no'?listen='0.0.0.0'?passwd='12345678' keymap='en-us'/>
其中passwd的位置可以随意.
- 更换光驱ISO
virsh change-media centos6.5 hdc --source /home/software/CentOS-6.5-x86_64-minimal.iso
virsh reset centos6.5
- 修改bios启动顺序
virsh destroy centos6.5
vi /etc/libvirt/qemu/centos6.5.xml
<os>
<type arch='x86_64' machine='rhel6.5.0'>hvm</type>
<boot dev='cdrom'/> #光盘
<boot dev='hd'/>
</os>
添加cdrom为第一启动
virsh define /etc/libvirt/qemu/centos6.5.xml
virsh start centos6.5
- 设置网卡
1) 桥接方式
需要对网卡进行设置一下 创建一个文件 /etc/sysconfig/network-scripts/ifcfg-br0
DEVICE="br0"
ONBOOT=yes
TYPE=Bridge
BOOTPROTO=static
IPADDR=110.249.208.110
NETMASK=255.255.255.0
GATEWAY=10.1.199.1
GATEWAY=110.249.208.126
DNS1=202.106.0.20
修改 /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
TYPE=Ethernet
BOOTPROTO=none
ONBOOT=yes
BRIDGE=br0
DNS1=202.106.0.20
DNS=8.8.8.8
注:DNS必须配置在eth0中
- 存储池
创建存储池
基于目录的:#virsh pool-define-as vmpool --type dir --target /home/vhosts
注意:如果用virsh pool-create-as --name vmpool --type dir --target /home/vhosts,创建出来是临时的没有生成xml文件,重启后会失效
基于文件系统
#virsh pool-create-as --name vmware_pool --type fs --source-dev /dev/vg_target/LogVol02 --source-format ext4 --target /virhost/vmware
查看存储池
#virsh pool-info vmpool
#virsh pool-list --all
启动存储池
#virsh pool-start vmpool
#virsh pool-autostart vmpool
销毁和删除存储池
#virsh pool-destroy vmpool
#virsh pool-undefine vmpool
创建存储卷
#virsh vol-create-as --pool vmware_pool --name node6.img --capacity 10G --allocation 1G --format qcow2
创建虚拟机
#virt-install --connect qemu:///system --name openstack --ram 16384 --vcpus=2 --arch=x86_64 --disk path=/home/vhosts/openstack.qcow2,size=200,format=qcow2 --os-type=linux --os-variant='rhel6' --accelerate --cdrom=/home/software/CentOS-6.5-x86_64-minimal.iso --graphic type=vnc,port=5904,listen=0.0.0.0,password='cqmygysdss' --network bridge=br0,bridge=br1
创建快照
#virsh snapshot-create-as openstack clean
查看快照
#virsh snapshot-list openstack
#virsh snapshot-info openstack clean
恢复到快照
#virsh snapshot-revert openstack clean
删除快照
#virsh snapshot-delete openstack clean
- 电源管理模块
虚拟机上:yum install acpid -y
ACPI(全称 Advanced Configuration and Power Interface)服务是电源管理接口。建议所有的笔记本用户开启它。一些服务器可能不需要 acpi。支持的通用操作有:“电源开关“,”电池监视“,”笔记本 Lid 开关“,“笔记本显示屏亮度“,“休眠”, “挂机”,等等。
- 增加CPU
#virsh vcpuinfo scrapy 查看CPU配置信息
#virsh setvcpus scrapy 4 --maximum --config 配置最大CPU数
#virsh shutdown scrapy 先关闭guest,当前不支持热插拔CPU
#virsh setvcpus scrapy 4 --start 设置当前的CPU数
- 增加网卡
添加一块桥接网卡
virsh attach-interface cacti bridge br1 --config
--config表示写入到xml中,如果不写,virsh destroy cacti之后,此网卡就没了
#virsh reset cacti ch
增加NAT网卡
#virsh attach-interface mysql network default --config
- 常见问题
1) error: Unable to read from monitor: Connection reset by peer #无法读取显示器:连接复位同行
#virsh managedsave-remove scrapy0005
#virsh start scrapy0005
2) error: unknown OS type hvm #未知的操作系统类型
qemu要放到/etc/bin目录下
3) 检查是否CPU开启虚拟化
#grep?-E?-o?'vmx|svm'?/proc/cpuinfo
4) error: Refusing to undefine while domain managed save image exists #拒绝未定义在域管理保存图像存在
解决办法:virsh undefine $domain --managed-save
转载于:https://blog.51cto.com/niming2008/2067742