KVM及其常用命令
来源:互联网 发布:mac high sierra 失败 编辑:程序博客网 时间:2024/06/12 20:26
KVM及其常用命令
1、验证CPU是否支持硬件虚拟化
egrep "svm|vmx" /proc/cpuinfo
2、Ubuntu 下安装KVM
sudo apt-get install qemu-kvm qemu virt-manager virt-viewer libvirt-bin bridge-utils
输入:kvm-ok 检验是否安装成功
3、启动KVM虚拟机管理界面sudo virt-manager
4、virt-manager安装虚拟机无法使用键盘解决
5、常用命令
virsh list --all #查看虚拟机状态virsh edit kvm01 #编辑配置文件virsh autostart kvm01 #设置物理机开机自动启动虚拟机virsh dumpxml kvm01 > kvm01.xml #导出虚拟机配置文件/etc/libvirt/qemu/ #虚拟机配置文件默认目录/var/lib/libvirt/images/ #默认镜像文件位置 virsh start kvm01 #开机virsh shutdown kvm01 #关机(虚拟机需开启acpid服务)virsh destroy kvm01 #强制开机(断电)virsh suspend kvm01 #挂起虚拟机virsh resume kvm01 #恢复挂起的虚拟机virsh snapshot-create kvm01 #建虚拟机快照(建快照镜像格式要为qcow2格式)virsh snapshot-list kvm01 #查看虚拟机快照virsh undefine kvm01 #删除一个虚拟机(会一起删除配置文件,镜像不删除)virsh define /etc/libvirt/qemu/kvm01.xml #重新定义一个虚拟机virt-clone -o kvm01 -n kvm02 -f /var/lib/libvirt/images/kvm02.img #克隆虚拟机qemu-img info kvm01 #查看虚拟机镜像格式qemu-img convert -f raw -O qcow2 kvm01.img kvm01.qcow2 #转换虚拟机镜像格式qemu-img create -f qcow2 /var/lib/libvirt/images/kvm01-1.img 20G #新建虚拟机镜像磁盘virsh attach-disk kvm01 /var/lib/libvirt/images/kvm01-1.img vdb --cache=none --subdriver=qcow2 #在线添加虚拟机镜像硬盘6、命令行打开虚拟机图形界面(VNC)
sudo virsh vncdisplay cmdtestsudo vncviewer 127.0.0.1:0
qcow2 、raw、vmdk镜像格式的基本转换
1)vmdk转qcow2
qemu-img convert -f vmdk -O qcow2 SLES11SP1-single.vmdk SLES11SP1-single.img
2)qcow2转raw
qemu-img convert -O qcow2 image-raw.raw image-raw-converted.qcow
3)raw转qcow2
qemu-img convert -f raw centos.img -O qcow2 centos.qcow2
4)转换完成后
转换完成后修改xml文件中的镜像的type<driver name='qemu' type='raw'/>
7、通过命令行创建虚拟机
sudo virt-install --connect=qemu:///system --name cmdtest --ram 2048 --vcpus=1 --os-type=linux --accelerate --hvm --disk path=/home/mine612/qiuyangjun/ubuntu-16.04/cmd/cmdtest.img,size=8,bus=virtio --cdrom /home/mine612/qiuyangjun/ubuntu-16.04/cmd/ubuntu-16.04-desktop-amd64.iso --network bridge=ovs,model=virtio --graphics vnc
这里解释一下主要的几个参数含义:--name 给虚拟机起个名字--ram 分配给虚拟机的内存,单位MB--vcpus 分配给虚拟机的cpu个数--cdrom 指定安装文件的全路径--disk 指定虚拟机img文件路径,如果虚拟机使用lvm分区,这里就指向到lvm的分区就行 size 虚拟机文件大小,单位GB bus 虚拟机磁盘使用的总线类型,为了使虚拟机达到好的性能,这里使用virtio cache 虚拟机磁盘的cache类型--network bridge 指定桥接网卡 model 网卡模式,这里也是使用性能更好的virtio--graphics 图形参数
8、虚拟机的冷迁移
① 导出虚拟机xml文件(配置文件) # virsh dumpxml vm-name > dump.xml vm-name 为你的虚拟机名称② 拷贝虚拟机磁盘和xml文件(从hostA -> hostB) # scp /path-to-image/vm-image hostB:/root # scp dump.xml hostB:/root vm-image的默认路径为 /var/lib/libvirt/images/ (libvirt管理的虚拟机)③ 登录hostB, 修改dump.xml 根据B的硬件环境,修改dump.xml的文件内容。 比如<interface>中bridge名称,<disk>中<source file>的路径。④ 加载虚拟机 # virsh define dump.xml 切记不能用virsh create。否则虚拟机关闭后,该虚拟机从虚拟机列表删除。 如果你要再次使用该虚拟机的话:则必须重新进行create/define操作。
9、KVM与OVS的连接
1)创建OVS网桥
ovs-vsctl add-br ovsbr0
2)编辑xml文件了,输入下面指令
sudo virsh edit ubuntu // 这里的ubuntu就是VM的name修改内容,如下:
<interface type='bridge'> <mac address='52:54:00:fc:4e:b6'/> <source bridge='ovsbr1'/> <virtualport type='openvswitch'/> <model type='virtio'/> <address type='pci' domain='0x0000' bus='0x00' slot='0x09' function='0x0'/></interface>至此便可启动虚拟机如果不在命令行指定 bridge 为 openvswitch 类型 , libvirt 会尝试 linux 默认的bridge,而virt-install又不支持openvswitch
参考网址:http://www.jianshu.com/p/d26737e40b58
http://sdnhub.cn/index.php/libvirt-openvswitch/
10、错误解决
Error : Unable to add bridge br0 port vnet0: Operation not supported出现这种错误,可能是你安装的libvirt版本太低,不支持openvswitch。建议安装高版本的libvirt,本人测试libvirt-1.1.0不会出现这种错误。
会用到的命令
libvirtd -d #启动libvirt,开机后必须执行这个命令启动virsh –version #查看virsh的版本信息ovs-vsctl –V #查看OVS的版本信息
11、OVS的流表操作(ovs-ofctl)
1)显示bridge的信息,连接到bridge上的interface,tap和端口号(port)
ovs-ofctl show switch-name
2)显示flow entries
ovs-ofctl dump-flows switch-name3)添加flow
ovs-ofctl add-flow ovs-br4 in_port=1,dl_type=0x0800,nw_src=10.108.170.175,nw_dst=10.103.239.97,actions=dropovs-ofctl add-flow ovs-br4 idle_timeout=0,priority=0,in_port=1,actions=output:2in_port: #switch的端口dl_src: #源mac地址dl_dst: #目的mac地址dl_type: #以太网协议类型 0x0806是arp packet 0x0800是ip packetnw_src: #源IPnw_dst: #目的ipnw_proto: #协议类型 ,注意和dl_type区分,同时也需要和dl_type一起使用,比如dl_type是ip(0x0800),那么nw_proto=1就表示icmp packettp_src: #tcp udp源端口tp_dst: #tcp udp目的端口ip Same as dl_type=0x0800.icmp Same as dl_type=0x0800,nw_proto=1.tcp Same as dl_type=0x0800,nw_proto=6.udp Same as dl_type=0x0800,nw_proto=17.arp Same as dl_type=0x0806.rarp Same as dl_type=0x8035.
12、其他(Mininet创建网络及连接控制器)
from mininet.topo import Topoclass MyTopo( Topo ): def __init__( self ): # initilaize topology Topo.__init__( self ) # add hosts and switches host1 = self.addHost( 'h1' ) host2 = self.addHost( 'h2' ) switch1 = self.addSwitch( 's1' ) switch2 = self.addSwitch( 's2' ) # add linksswitch3 = self.addSwitch( 's3' )switch4 = self.addSwitch( 's4' ) self.addLink(host1,switch1,1,1) self.addLink(switch1,switch2,2,1)self.addLink(switch2,switch3,2,1)self.addLink(switch2,switch4,3,1)self.addLink(switch2,switch4,4,2)self.addLink(switch3,host2,3,1)topos = { 'mytopo': ( lambda: MyTopo() ) }
Mininet连接SDN控制器命令如下:
sudo mn --custom ./mytopo.py --topo mytopo --controller=remote,ip=192.168.32.128,port=6633 --mac
阅读全文
0 0
- KVM及其常用命令
- kvm虚拟机的常用命令
- KVM 操作虚拟机常用命令
- IPmitool操作KVM的常用命令
- centos kvm部署和常用命令
- 学习KVM架构及其优点
- KVM 内存虚拟化及其实现
- KVM 内存虚拟化及其实现
- KVM 内存虚拟化及其实现
- KVM 内存虚拟化及其实现
- kvm内存虚拟化及其实现
- VS2005常用命令及其别名
- vi及其常用命令
- MATLAB常用命令及其功能
- ffmpeg常用命令及其使用
- docker安装及其常用命令
- 常用命令及其它经验总结
- D20 Kafka及其常用命令
- UML类图常用的几种类图关系表示
- 第一篇博客
- 树塔狂想曲tower
- Linux下的文件处理命令
- MySQL发生系统错误2 系统无法找到指定文件
- KVM及其常用命令
- Android JobSchedule漫说
- MooFest(数状数组)
- Build web base KVM console with noVNC and SSH Tunnel
- 第十章g2o_custombundle中的common文件夹中的flags文件夹下的command_args.cpp
- Python3文件方法
- 1073. 多选题常见计分法(20)
- 【Luogu1919】 A*B Problem升级版(FFT)
- 构造方法的作用,为什么要写构造方法?