注:此方法为纯命令行安装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个数
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号、uuid、vnc端口号等等)
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 强制关闭虚拟机
转载于:https://blog.51cto.com/kmt1994/1941023