注:此方法为纯命令行安装kvm和虚拟机,没有任何图形化。

(1)cpu支持虚拟化

(2)64位

(3)内存2G以上

CRT远程宿主机,先连接好宿主机网络

(1)安装软件   yum install -y kvm virt-*  libvirt  bridge-utils qemu-img 

/etc/init.d/libvirtd start

(2)设置桥接网络

[root@xuegod63 network-scripts]# vim ifcfg-eth0
DEVICE=eth0
NM_CONTROLLED=yes
ONBOOT=yes
TYPE=Ethernet
BOOTPROTO=none   
IPV6INIT=no
USERCTL=no
PREFIX=24
DEFROUTE=yes
IPV4_FAILURE_FATAL=yes
NAME="eth0"
HWADDR=00:0C:29:12:EC:1E
BRIDGE=br0     添加此项

生成桥设备的配置文件:
[root@xuegod63 network-scripts]# vim ifcfg-br0 #创建 ifcfg-br0 文件,并写入以下内容
DEVICE=br0
NM_CONTROLLED=yes
ONBOOT=yes
TYPE=Bridge

BOOTPROTO=none
IPADDR=192.168.0.#
NETMASK=255.255.255.0
GATEWAY=192.168.0.1
DNS1=192.168.0.1
注:TYPE="Bridge" , B要大写

service network restart      重启网络查看ip    

brctl show   查看桥接状态

(3)创建安装虚拟机

virt-install --name  kvm --ram 512 --disk path=/var/lib/libvirt/images/kvm.img,format=qcow2,size=10,bus=virtio  --vcpus 1 --os-type linux --os-variant rhel6 --network bridge=br0 --graphics none --console pty,target_type=serial --location /mnt/CentOS-7-x86_64-Minimal-1503-01.iso --extra-args 'console=ttyS0,115200n8 serial'       (里面参数需要自己设定)

--name  指定虚拟机的名字

--ram 指定内存分配多少

--disk path 指定虚拟磁盘放到哪里,/var/lib/libvirt/images/(默认存储路径),size=30 指定磁盘大小为30G,这样磁盘文件格式为raw,raw格式不能做快照,后面有说明,需要转换为qcow2格式,如果要使用qcow2格式的虚拟磁盘,需要事先创建qcow2格式的虚拟磁盘。   示例:qemu-img create -f qcow2 -o preallocation=metadata  

/data/kvm/ddb2.qcow2 10G  --disk path=/date/disk.qcow2,format=qcow2,size=7,bus=virtio

想要自定义存储目录需要创建存储池和存储卷 

(1) mkdir -p /date  ----------创建基于文件夹的存储池

(2) virsh pool-define-as vmdisk(自定义存储池名) --type dir --target /data(指定目录)  定义存储池

(3) virsh pool-build vmdisk     创建已定义的存储池

(4) virsh pool-list --all     查看存储池

(5) virsh pool-autostart vmdisk     virsh pool-start vmdisk   激活并自动启动存储池

(6) virsh vol-create-as vmdisk disk.qcow2(自定义卷名) 20G(定义大小)--format qcow2 在存储池中创建存储卷  

(7) virsh pool-destroy vmdisk   取消激活存储池

(8) virsh pool-delete vmdisk    删除存储池定义的目录/date

(9) virsh pool-undefine vmdisk   取消定义的存储池

例如:--disk path=/date/disk.qcow2                                    

--vcpus 指定分配cpu几个

--os-type 指定系统类型为linux

--os-variant 指定系统版本

--network  指定网络类型

--graphics 指定安装通过哪种类型,可以是vnc,也可以没有图形,在这里我们没有使用图形直接使

用文本方式

--console 指定控制台类型

--location 指定安装介质地址,可以是网络地址,也可以是本地的一个绝对路径,如果是绝对路径,

那么后面还需要指定一个安装介质,比如NFS,假如虚拟机设置ip后,不能连外网,那么就会提示让我

们选择安装途径。

 一、调小虚拟机内存

调小虚拟机内存可以动态实现,不用关机

1.查看当前内存大小 

virsh dominfo vm1-clone | grep memory 

2.设置虚拟机内存大小为512MB

virsh setmem vm1-clone 524288  

二、增大虚拟机内存、增加虚拟机CPU个数

增大虚拟机内存、增加虚拟机CPU个数需要首先关机虚拟机

1.关闭虚拟机

2.编辑虚拟机配置文件


修改内存大小、vcpu个数

  1. virsh edit vm1-clone  

<memory unit='KiB'>1048432</memory>  

 <currentMemory unit='KiB'>1048432</currentMemory>  

 <vcpu placement='static'>2</vcpu>  

查看当前CPU个数

cat /pro/cpu

执行完成后会创建虚拟机并进入文本控制台界面,剩下的就是选项基本和正常装机一样

安装完成后重启会直接进入虚拟机,  点击Ctrl+]会退出虚拟机回到宿主机,virsh console name宿主机进入虚拟机。

命令行:

virsh list                                                  #显示本地活动虚拟机

virsh list –all                                           #显示本地所有的虚拟机(活动的+不活动的)

virsh define name.xml                      #通过配置文件定义一个虚拟机(这个虚拟机还不是活动的)

virsh start name                               #启动名字为ubuntu的非活动虚拟机

virsh create name.xml                     # 创建虚拟机(创建后,虚拟机立即执行,成为活动主机)

virsh suspend name                          # 暂停虚拟机

virsh resume name                           # 启动暂停的虚拟机

virsh shutdown name                      # 正常关闭虚拟机

virsh destroy name                         # 强制关闭虚拟机

virsh undefine name        #删除虚拟机

virsh dominfo name                        #显示虚拟机的基本信息

virsh domname 2                                 # 显示id号为2的虚拟机名

virsh domid name                            # 显示虚拟机id

virsh domuuid name                        # 显示虚拟机的uuid

virsh domstate name                     # 显示虚拟机的当前状态

virsh dumpxml name                     # 显示虚拟机的当前配置文件(可能和定义虚拟机时的配置不同,因为当虚拟机启动时,需要给虚拟机分配id号、uuidvnc端口号等等)

virsh setmem name 512000           #给不活动虚拟机设置内存大小

virsh setvcpus name 4                      # 给不活动虚拟机设置cpu个数

virsh edit name                                # 编辑配置文件(一般是在刚定义完虚拟机之后)

virsh autostart name             # 虚拟机随着KVM服务器启动而启动

libvirt还提供了一个shell:virsh,直接执行名virsh即可获得一个特殊的shell:virsh,在这个virsh里面可以执行上面的命令(去掉前面的virsh)与本地libvirt交互,还可以通过命令connect命令连接远程libvirt,与之交互,例如:connect xen+ssh://root@10.4.122.11。另外可以只执行一条远程libvirt命令:virsh –c xen+ssh://root@10.4.122.11 list --all

排错

1、ERROR Format cannot be specified for unmanaged storage.

virt-manager 没有找到存储池,创建储存池即可

2、KVM VNC客户端连接闪退

使用real vnc或者其它vnc客户端连接kvm闪退,把客户端设置中的ColourLevel值设置为rgb222或full即可

3、virsh shutdown 无法关闭虚拟机

使用该命令关闭虚拟机时,KVM是向虚拟机发送一个ACPI的指令,需要虚拟机安装acpid服务:

1
yum -y install acpid && /etc/init .d /acpid start

否则只能使用virsh destroy 强制关闭虚拟机