KVM安装(二)

一、环境检查

1、检查系统是否支持:

方法一:

lscpu | grep Virtualization

 

 

 

方法二:

grep -E "vmx|svm" /proc/cpuinfo

 

 

#KVM是基于X86虚拟化扩展(Intel VT或者 AMD-V)技术的虚拟机软件,所以查看CPU是否支持VT技术,就可以判断是否支持KVM。有返回结果,如果结果中vmx(Intel)或svm(AMD)字样,就说明CPU是支持的。

 

2、查看是否加载kvm模板

lsmod | grep kvm

这表明已经加载,如果没有加载则执行以下命令加载kvm:

modprobe kvm

 

3、关闭selinux:

[root@k8s_3 ~]# setenforce 0

[root@k8s_3 ~]# vim /etc/sysconfig/selinux

SELINUX=disabled

 

二、安装kvm

1、安装kvm相关软件包:

yum install qemu-kvm qemu-kvm-tools qemu-img virt-manager libvirt libvirt-python libvirt-client virt-install virt-viewer  bridge-utils libguestfs-tools -y

#qemu-kvm: KVM模块,主要kvm程序包

#virt-manager:虚拟机图形管理工具

# bridge-utils:虚拟机与外界通信的命令管理工具,创建和管理桥接设备的工具。

#virt-install:虚拟机安装工具

# libvirt: 虚拟管理模块,C语言工具包,提供libvirt服务

#python-virtinst:创建虚拟机所需要的命令行工具和程序库

#virt-top:虚拟机统计命令

#virt-viewer:GUI连接程序,连接到已配置好的虚拟机

#libvirt-client:虚拟客户机提供的C语言工具包

#virt-clone:虚机克隆工具

#virt-v2v:虚机格式迁移工具

 

yum -y install libcanberra-gtk2 qemu-kvm.x86_64 qemu-kvm-tools.x86_64  libvirt.x86_64 libvirt-cim.x86_64 libvirt-client.x86_64 libvirt-java.noarch  libvirt-python.x86_64 libiscsi-1.7.0-5.el6.x86_64  dbus-devel  virt-clone tunctl virt-manager libvirt libvirt-python python-virtinst

#libvirt是管理虚拟机的API库,不仅支持KVM虚拟机,也可以管理Xen等方案下的虚拟机。

 

2、重启libvirtd

[root@k8s_3 ~]# systemctl restart libvirtd

[root@k8s_3 ~]# systemctl enable libvirtd

 

3、安装完成后查看状态如下:

[root@k8s_3 ~]# virsh -c qemu:///system list

[root@k8s_3 ~]# virsh --version

 

三、安装Centos虚拟机

1、创建guest所需的磁盘

qemu-img主要用来创建guest所需的磁盘,create表示创建,-f qcow2(raw)表示创建一个格式为qcow2的磁盘,/opt/images/centos7.0.qcow2表示创建的磁盘路径及磁盘文件,20G表示该磁盘可用大小。

#qemu-img create -f qcow2 /opt/images/centos7.0.qcow2 20G      //创建系统磁盘

 

#qemu-img info /opt/images/centos7.0.qcow2               //查看磁盘信息

 

 

2、virsh-install创建虚拟机

  • 输入虚拟机名称
  • 分配内存大小
  • 处理器个数
  • iso的位置或者是url
  • 虚拟机类型为kvm
  • 定义虚拟机磁盘映像位置
  • 磁盘的大小
  • 指定桥或者指定多个桥
  • 额外的控制台和KS文件
  • 链接到系统参数

 

参数说明:

一般选项:

  • --virt-type:指定虚拟机类型(kvm、qemu、xen)
  • -n NAME, --name=NAME:虚拟机名称,需全局惟一;
  • -r MEMORY, --ram=MEMORY:虚拟机内在大小,单位为MB;
  • --vcpus=VCPUS[,maxvcpus=MAX][,sockets=#][,cores=#][,threads=#]:VCPU个数及相关配置;
  •  --cpu=CPU:CPU模式及特性,如coreduo等;可以使用qemu-kvm -cpu ?来获取支持的CPU模式;
  • -c CDROM, --cdrom=CDROM:光盘安装介质;
  •  -l LOCATION, --location=LOCATION:安装源URL,支持FTP、HTTP及NFS等,如ftp://172.16.0.1/pub;
  • --pxe:基于PXE完成安装; --livecd: 把光盘当作LiveCD;
  • --os-type=DISTRO_TYPE:操作系统类型,如Linux、unix或windows等;
  • --disk:指定虚拟机数据存储磁盘qcow2
  • --network:指定虚拟机网络类型, 默认nat,常用bridge
  • --graphics:指定虚拟机可连接⽅方式, 比如VNC
  • --noautoconsole:不连接虚拟机图形界面控制台
  • --livecd: 把光盘当作LiveCD;
  • --os-variant=DISTRO_VARIANT:某类型操作系统的变体,如rhel5、fedora8等,可以查看virt-install --os-variant list;
  • -x EXTRA, --extra-args=EXTRA:根据--location指定的方式安装GuestOS时,用于传递给内核的额外选项,例如指定kickstart文件的位置;例如-x "console=ttyS0";
  • --extra-args "ks=http://172.16.0.1/class.cfg"
  • --boot=BOOTOPTS:指定安装过程完成后的配置选项,如指定引导设备次序、使用指定的而非安装的kernel/initrd来引导系统启动等 ;例如: --boot cdrom,hd,network:指定引导次序;
  • --boot kernel=KERNEL,initrd=INITRD,kernel_args=”console=/dev/ttyS0”:指定启动系统的内核及initrd文件;
磁盘选项:
  • --disk=DISKOPTS :指定存储设备及其属性:格式:--disk /some/storage/path,opt1=val1,opt2=val2等;

常用选项:

device:设备类型,如cdrom、disk或floppy等,默认为disk;

bus:磁盘总结类型,其值可以为ide、scsi、usb、virtio或xen;

perms:访问权限,如rw、ro或sh(共享的可读写),默认为rw;

size:新建磁盘映像的大小,单位为GB;

cache:缓存模型,其值有none、writethrouth(缓存读)及writeback(缓存读写);

format:磁盘映像格式,如raw、qcow2、vmdk等;

sparse:磁盘映像使用稀疏格式,即不立即分配指定大小的空间;

--nodisks:不使用本地磁盘,在LiveCD模式中常用;

网络选项:
  • -w NETWORK, --network=NETWORK,opt1=val1,opt2=val2:将虚拟机连入宿主机的网络中,其中NETWORK可以为:

    bridge=BRIDGE:连接至名为“BRIDEG”的桥设备;

    network=NAME:连接至名为“NAME”的网络;

虚拟化选项:
  • -v, --hvm:当物理机同时支持完全虚拟化和半虚拟化时,指定使用完全虚拟化;
  •  -p, --paravirt:指定使用半虚拟化;
  •  --virt-type:使用的hypervisor,如kvm、qemu、xen等;所有可用值可以使用’virsh capabilities’命令获取;
  • --graphics TYPE,opt1=val1,opt2=val2:指定图形显示相关的配置,此选项不会配置任何显示硬件(如显卡),而是仅指定虚拟机启动后对其进行访问的接口; 例如vnc
    • TYPE:指定显示类型,可以为vnc、sdl、spice或none等,默认为vnc; port:

TYPE为vnc或spice时其监听的端口; listen:TYPE为vnc或spice时所监听的IP地址,默认为127.0.0.1,可以通过修改/etc/libvirt/qemu.conf定义新的默认值; password:TYPE为vnc或spice时,为远程访问监听的服务进指定认证密码;

  • --noautoconsole:禁止自动连接至虚拟机的控制台;

 

3、vitualbox嵌套kvm启用嵌套虚拟化:

cat /sys/module/kvm_intel/parameters/nested               //查看intel内核的嵌套虚拟化,Y表示开启,N表示未开启

 

 

cat /sys/module/kvm_amd/parameters/nested          //查看AMD内核的嵌套虚拟化,Y表示开启,N表示未开启

 

若为N时,表示嵌套虚拟化被禁用:(创建以下文件)

vi /etc/modprobe.d/kvm-nested.conf

options kvm-intel nested=1

options kvm-intel enable_shadow_vmcs=1

options kvm-intel enable_apicv=1

options kvm-intel ept=1

 

移除kvm_intel模块,重新加载,移除时报错“modprobe: FATAL: Module kvm_intel is in use”,表示有kvm虚机是启动的,关机后再移除:

modprobe -r kvm_intel        //移除kvm_intel

modprobe -a kvm_intel        //加载kvm_intel

 

举例一:

qemu-img create -f qcow2 /opt/images/centos7.0.qcow2 20G              //创建磁盘映像

 

virt-install \

--connect qemu:///system \

--virt-type kvm \

--vcpus=1 \

--name centos7.0 \

--ram 1024 \

--cdrom /opt/iso/CentOS-7-x86_64-DVD-2003.iso \

--disk path=/opt/images/centos7.0.qcow2,size=20,format=qcow2,bus=virtio \

--network bridge=br0 \

--os-type=linux \

--check path_in_use=off

//这样创建会自动启动virt-viewer,进入装机页面

 

 

举例二:(通过vnc安装)

qemu-img create -f qcow2 /opt/images/centos7.1.qcow2 20G              //创建磁盘映像

 

virt-install \

--name=centos7.1 \

--virt-type=kvm \

--memory 1024,maxmemory=2048 \

--cdrom=/opt/iso/CentOS-7-x86_64-DVD-2003.iso \

--disk path=/opt/images/centos7.1.qcow2 \

--network bridge=br0 \

--graphics vnc,listen=0.0.0.0,port=5910,password=123456 \

--noautoconsole \

--autostart

 

举例三:(通过console安装)

qemu-img create -f qcow2 /opt/images/centos7.qcow2 20G

 

virt-install \

--name=centos7 \

--virt-type=kvm \

--memory 1024,maxmemory=2048 \

--vcpus=1 \

--location=/opt/iso/CentOS-7-x86_64-DVD-2003.iso \

--disk path=/opt/images/centos7.qcow2 \

--network bridge=br0 \

--graphics vnc,listen=0.0.0.0,port=5910,password=123456 \

--noautoconsole \

--extra-args='console=ttyS0' \

--autostart

 

举例四:(磁盘格式为virtio)(成功案例)

qemu-img create -f qcow2 /opt/images/centos7.qcow2 20G

 

virt-install \

--name=centos7 \

--virt-type=kvm \

--memory 2048,maxmemory=2048 \

--vcpus=1 \

--location=/opt/iso/CentOS-7-x86_64-Everything-1611_7.3.iso \

--disk path=/opt/images/centos7.qcow2,bus=virtio,size=20,format=qcow2 \

--network bridge=br0 \

--graphics vnc,listen=0.0.0.0,port=5910,password=123456 \

--noautoconsole \

--extra-args='console=ttyS0' \

--autostart

 

virsh console 2(virsh list查看虚机编号)      //通过console进入安装页面

 

 

 

 

 

 

 

 

系统安装完成后回车,虚机会自动shut off状态。

virsh edit centos7        通过edit查看虚机xml文件,查看boot启动项为什么, <boot dev='hd'/>仅有hd时算正常。

如果有<boot dev='cdrom'/>需删除。

 

virsh start centos7    启动系统

 

 

启动虚拟机后,通过dhcp获取桥接网卡上的dhcp服务器的ip后ping不通dhcp服务器,但是能ping通宿主机,解决方案如下:

 

 

 

posted @ 2021-12-28 18:14  Day__Day_Up  阅读(38)  评论(0编辑  收藏  举报