虚拟化技术-KVM的安装及管理

1、宿主机环境准备

KVM需要宿主机CPU必须支持虚拟化功能,因此如果是在vmware workstation上使用虚拟机做宿主机,那么必须要在虚拟机配置界面的处理器选项中开启虚拟机化功能。

(1)CPU开启虚拟化

硬件–处理器(2核)–勾选虚拟化inter VT-x/EPT

(2)确认CPU指令集
[root@s1 ~]# grep -E "vmx|svm" /proc/cpuinfo | wc -l 
(3)安装KVM工具包
[root@s1 ~]# yum install qemu-kvm qemu-kvm-tools libvirt virt-manager virt-install
[root@s1 ~]# systemctl start libvirtd 
[root@s1 ~]# systemctl enable libvirtd 
[root@s1 ~]# ifconfig virbr0 #生成NAT网卡 
[root@s1 ~]# grep "192.168.122.1" /etc/lib 
[root@s1 ~]# grep "192.168.122.1" /etc/libvirt/ -R 

2、创建NAT网络虚拟机

(1)创建磁盘:
[root@s1 ~]# ll /var/lib/libvirt/images/ #默认保存虚拟机磁盘的路径 total 0 
[root@s1 ~]# qemu-img create -f raw /var/lib/libvirt/images/CentOS-7-x86_64.raw 10G #创建一个格式为raw大小为10G的裸磁盘
[root@s1 ~]# ll -h /var/lib/libvirt/images/CentOS-7-x86_64.raw 
-rw-r--r-- 1 root root 10G Jun 15 2019 /var/lib/libvirt/images/CentOS-7-x86_64.raw 
[root@s1 ~]# qemu-img create -f qcow2 /var/lib/libvirt/images/centos.qcow2 10G
 [root@s1 ~]# ll -h /var/lib/libvirt/images/centos.qcow2 
-rw-r--r-- 1 root root 193K Jun 14 16:36 /var/lib/libvirt/images/centos.qcow2 12345678910
(2)virt-install命令使用帮助:
[root@linux-node1 ~]# virt-install --help
--name NAME --ram RAM STORAGE INSTALL [options] 
使用指定安装介质新建虚拟机。 
optional arguments: 
-h, --help show this help message and exit 
--version show program’s version number and exit 
--connect URI 使用 libvirt URI 连接到 hypervisor

通用选项: 
-n NAME, --name NAME 客户端事件名称 
--memory MEMORY 配置虚拟机内存分配。例如: 
		--memory 1024 (in MiB) 
		--memory 512,maxmemory=1024 
--vcpus VCPUS 为虚拟机配置的 vcpus 数。例如: 
		--vcpus 5 
		--vcpus 5,maxcpus=10,cpuset=1-4,6,8 
		--vcpus sockets=2,cores=4,threads=2, 
--cpu CPU CPU 型号及功能。例如: 
		--cpu coreduo,+x2apic 
		--cpu host 
--metadata METADATA 配置虚拟机元数据。例如: 
		--metadata name=foo,title="My pretty title",uuid=... 
		--metadata description="My nice long description"
		
安装方法选项: 
--cdrom CDROM 光驱安装介质 
-l LOCATION, --location LOCATION 
		安装源(例如:nfs:host:/path、http://host/path ftp://host/path) 
--pxe 使用 PXE 协议从网络引导 
--import 在磁盘映像中构建虚拟机 
--livecd 将光驱介质视为 Live CD -x EXTRA_ARGS, 
--extra-args EXTRA_ARGS 
		附加到使用 --location 引导的内核的参数 
--initrd-inject INITRD_INJECT 
		使用 --location 为 initrd 的 root 添加给定文件 
--os-variant DISTRO_VARIANT 
		在其中安装 OS 变体的虚拟机,比如 'fedora18''rhel6''winxp' 等等。 
--boot BOOT 配置虚拟机引导设置。例如: 
		--boot hd,cdrom,menu=on 
		--boot init=/sbin/init (for containers) 
--idmap IDMAP 为 LXC 容器启用用户名称空间。例如: 
		--idmap uid_start=0,uid_target=1000,uid_count=10
		
设备选项: 
--disk DISK 使用不同选项指定存储。例如: 
		--disk size=10 (new 10GiB image in default location) 
		--disk /my/existing/disk,cache=none 
		--disk device=cdrom,bus=scsi 
		--disk=? 
-w NETWORK, --network NETWORK 
		配置虚拟机网络接口。例如: 
		--network bridge=mybr0 
		--network network=my_libvirt_virtual_net 
		--network network=mynet,model=virtio,mac=00:11... 
		--network none 
		--network help 
--graphics GRAPHICS 配置虚拟机显示设置。例如: 
		--graphics vnc
		--graphics spice,port=5901,tlsport=5902 
		--graphics none 
		--graphics vnc,password=foobar,port=5910,keymap=ja 
--controller CONTROLLER配置虚拟机控制程序设备。例如: 
		--controller type=usb,model=ich9-ehci1 
--input INPUT 配置虚拟机输入设备。例如: 
		--input tablet 
		--input keyboard,bus=usb 
--serial SERIAL 配置虚拟机串口设备 
--parallel PARALLEL 配置虚拟机并口设备 
--channel CHANNEL 配置虚拟机沟通频道 
--console CONSOLE 配置虚拟机与主机之间的文本控制台连接 
--hostdev HOSTDEV 将物理 USB/PCI/etc 主机设备配置为与虚拟机共享 
--filesystem FILESYSTEM将主机目录传递给虚拟机。例如: 
		--filesystem /my/source/dir,/dir/in/guest 
		--filesystem template_name,/,type=template 
--sound [SOUND] 配置虚拟机声音设备模拟 
--watchdog WATCHDOG 配置虚拟机 watchdog 设备 
--video VIDEO 配置虚拟机视频硬件。 
--smartcard SMARTCARD 配置虚拟机智能卡设备。例如: 
		--smartcard mode=passthrough 
--redirdev REDIRDEV 配置虚拟机重定向设备。例如: 
	--redirdev usb,type=tcp,server=192.168.1.1:4000 
--memballoon MEMBALLOON配置虚拟机 memballoon 设备。例如: 
		--memballoon model=virtio 
--tpm TPM 配置虚拟机 TPM 设备。例如: 
--tpm /dev/tpm --rng RNG 配置虚拟机 RNG 设备。例如: 
		--rng /dev/random 
--panic PANIC 配置虚拟机 panic 设备。例如: 
		--panic default
		
虚拟机配置选项: 
--security SECURITY 设定域安全驱动器配置。 
--numatune NUMATUNE 为域进程调整 NUMA 策略。 
--memtune MEMTUNE 为域进程调整内粗策略。 
--blkiotune BLKIOTUNE 为域进程调整 blkio 策略。 
--memorybacking MEMORYBACKING 为域进程设置内存后备策略。例如: 
		--memorybacking hugepages=on 
--features FEATURES 设置域 <features> XML。例如: 
		--features acpi=off 
		--features apic=on,eoi=on 
--clock CLOCK 设置域 <clock> XML。例如: 
		--clock offset=localtime,rtc_tickpolicy=catchup 
--pm PM 配置 VM 电源管理功能 
--events EVENTS 配置 VM 生命周期管理策略
--resource RESOURCE 配置 VM 资源分区(cgroups)
 
虚拟化平台选项: 
-v, --hvm 客户端应该是一个全虚拟客户端 
-p, --paravirt 这个客户端一个是一个半虚拟客户端 
--container 这台虚拟机需要一个容器客户端 
--virt-type HV_TYPE 要使用的管理程序名称(kvm、qemu、xen 等等) 
--arch ARCH 模拟的 CPU 构架 
--machine MACHINE 要模拟的机器类型 

其它选项: 
--autostart 引导主机时自动启动域。 
--wait WAIT 等待安装完成的分钟数。 
--noautoconsole 不要自动尝试连接到客户端控制台 
--noreboot 完成安装后不要引导虚拟机。 
--print-xml [XMLONLY] 输出所生成域 XML,而不是创建虚拟机。 
--dry-run 完成安装步骤,但不要创建设备或者定义 虚拟机。 
--check CHECK 启用或禁用验证检查。例如: 
		--check path_in_use=off 
		--check all=off 
-q, --quiet 禁止无错误输出 
-d, --debug 输入故障排除信息 

使用 '--option=?' 或者 '--option help' 查看可用子选项 
有关示例及完整选项语法,请查看 man page。
(3)创建NAT网络虚拟机:
#1、上传镜像并安装虚拟机:
[root@s1 src]#ll /usr/local/src/CentOS-7-x86_64-Minimal-1810.iso #提前上传镜像 
-rw-r--r-- 1 root root 962592768 Jan 1 13:33 /usr/local/src/CentOS-7-x86_64- Minimal-1810.iso 
[root@s1 ~]#qemu-img create -f qcow2 /var/lib/libvirt/images/centos.qcow2 10G #创建磁盘
#创建默认网络虚拟机 
[root@s1 ~]# virt-install --virt-type kvm --name centos7 --ram 1024 --vcpus 2 -- cdrom=/usr/local/src/CentOS-7-x86_64-Minimal-1810.iso --disk path=/var/lib/libvirt/images/centos.qcow2 --network network=default --graphics vnc,listen=0.0.0.0 --noautoconsole
#创建windows 虚拟机: 
# qemu-img create -f qcow2 /var/lib/libvirt/images/Windows-2008_r2-x86_64.qcow2 200G
# virt-install --virt-type kvm --name Win_2008_r2-x86_64 --ram 3072 --vcpus=2 -- os-type=windows --cdrom=/usr/local/src/windows_server_2008_r2.iso --disk path=/var/lib/libvirt/images/Windows-2008_r2-x86_64.qcow2,format=qcow2,bus=virtio --disk path=/usr/local/src/virtio-win-0.1.141_amd64.vfd,device=floppy --network bridge=br0,model=virtio --graphics vnc,listen=0.0.0.0 --noautoconsole

#2、通过VNC客户端连并安装虚拟机:

#3、开始安装:安装完后重启再用
[root@s1 ~]# virsh list --all #第一次需要手动开启虚拟机 
Id   Name    State 
---------------------------------------------------- 
-   centos7  shut off 
[root@s1 ~]# virsh start centos7 
Domain centos7 started

#4、登录到虚拟机:

#5、通过virt-manager管理虚拟机:
[root@s1 ~]# virt-manager #双击虚拟机进入要管理的界面

#6、虚拟机查看详情:view--选中detail

#7、配置虚拟机网卡:
[root@localhost ~]# cat /etc/sysconfig/network-scripts/ifcfg-eth0
TYPE=Ethernet
BOOTPROTO=dhcp
NAME=eth0
DEVICE=eth0
ONBOOT=yes
[root@localhost ~]# systemctl restart network
[root@localhost ~]# ping 172.10.0.1

#8、验证IP地址:
#安装net-tools命令,并查看本机的当前IP地址是多少,目前自动获取到的IP地址是NAT分配的192.168.122.x地址段,此ip地址可以从出外网访问但是无法从外网主从访问到此虚拟机上的相关服务。
(4)创建bridge网络虚拟机:

桥接网络可以让运行在宿主机上的虚拟机使用和宿主机同网段IP,并且可以从外部直接访问到虚拟机,目前企业中大部分场景都使用桥接网络。

#1、创建br0桥接网卡:
[root@s1 src]# yum install bridge-utils #确认系统已经安装桥接组件,否则桥接不成功导致服务器远程连接不上
[root@s1 network-scripts]# pwd 
/etc/sysconfig/network-scripts 
[root@s1 network-scripts]# vim ifcfg-br0 
TYPE=Bridge 
BOOTPROTO=static 
NAME=br0 
DEVICE=br0 
ONBOOT=yes 
IPADDR=172.18.200.101 
NETMASK=255.255.0.0 
GATEWAY=172.18.0.1 
DNS1=172.18.0.1 
[root@s1 network-scripts]# vim ifcfg-eth0 
TYPE=Ethernet 
BOOTPROTO=static 
NAME=eth0 
DEVICE=eth0 
ONBOOT=yes 
BRIDGE=br0 
[root@s1 network-scripts]# systemctl restart network 
[root@s1 network-scripts]# ifconfig

#2、上传镜像并安装虚拟机:
[root@s1 ~]# ll /usr/local/src/CentOS-7-x86_64-Minimal-1810.iso 
-rw-r--r-- 1 qemu qemu 962592768 Jan 1 13:33 /usr/local/src/CentOS-7-x86_64-Minimal-1810.iso 
#创建磁盘: 
[root@s1 ~]# qemu-img create -f qcow2 /var/lib/libvirt/images/centos7-bridge.qcow2 10G Formatting '/var/lib/libvirt/images/centos7-bridge.qcow2', fmt=qcow2 size=10737418240 encryption=off cluster_size=65536 lazy_refcounts=off 
#创建桥接网络虚拟机 
[root@s1 ~]# virt-install --virt-type kvm --name centos7-bridge --ram 1024 -- vcpus 2 --cdrom=/usr/local/src/CentOS-7-x86_64-Minimal-1810.iso --disk path=/var/lib/libvirt/images/centos7-bridge.qcow2 --network bridge=br0 --graphics vnc,listen=0.0.0.0 --noautoconsole

#3、验证虚拟机网络:
[root@localhost ~]# ifconfig
[root@localhost ~]# ping www.baidu.com

#4、从外部ssh虚拟机:
[root@s1 src]# ssh 172.18.144.43
[root@localhost ~]# yum install pciutils #查看PCI设备
[root@localhost ~]# lspci
00:05.0 Communication controller: Red Hat, Inc. Virtio console #virtio为半虚拟化驱动
(5)安装windows server虚拟机:

virtio 是一种 I/O 半虚拟化解决方案,是一套通用I/O 设备虚拟化的程序,是对半虚拟化 Hypervisor 中的一组通用I/O设备的抽象。提供了一套上层应用与各 Hypervisor 虚拟化设备(KVM,Xen,VMware)之间的通信框架和编程接口,减少跨平台所带来的兼容性问题,大大提高驱动程序开发效率,windows 系统需要单独安装virtio驱动,linux系统自带virtio驱动。

#1、安装windows server 2008:
[root@s1 src]# ll /usr/local/src/windows_server_2008_r2.iso 
-rw-r--r-- 1 root root 3368962048 Jun 14 18:16 /usr/local/src/windows_server_2008_r2.iso 
[root@s1 src]# qemu-img create -f qcow2 /var/lib/libvirt/images/Windows-2008_r2- x86_64.qcow2 200G
[root@s1 src]# virt-install --virt-type kvm --name Win_2008_r2-x86_64 --ram 1024 --vcpus=2 --os-type=windows --cdrom=windows_server_2008_r2.iso --disk path=/var/lib/libvirt/images/Windows-2008_r2-x86_64.qcow2,format=qcow2,bus=virtio --disk path=/usr/local/src/virtio-win-0.1.141_amd64.vfd,device=floppy --network bridge=br0,model=virtio --graphics vnc,listen=0.0.0.0 --noautoconsole

#2、安装过程:加载驱动程序(软盘驱动器里选择),将网络驱动和块设备驱动都加载一遍,分区
#3、验证windows 驱动:驱动磁盘器,存储控制器,网络适配器
(6)虚拟机管理命令
[root@s1 src]# virsh list #列出当前开机的虚拟机
[root@s1 src]# virsh list --all #列出所有虚拟机
[root@s1 src]# virsh shutdown CentOS-7-x86_64 #正常关机 
[root@s1 src]# virsh start CentOS-7-x86_64 #正常关机 
[root@s1 src]# virsh destroy centos7 #强制停止/关机 
[root@s1 src]# virsh undefine Win_2008_r2-x86_64 #强制删除 
[root@s1 src]# virsh autostart centos7 #设置开机自启动
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值