kvm介绍
kernel-based virtual machine的简称,是一个开源的系统虚拟化模块,自linux 2.6.20之后集成在linux的各个主要发行版本中。
kvm的虚拟化需要硬件支持(如intel vt技术或者amd v技术)。是基于硬件的完全虚拟化。
虚拟化是云计算的基础。虚拟化可以满足在一台物理的服务器上运行多个虚拟机。虚拟机共享物理机的 cpu、内存、io 硬件资源,但逻辑上虚拟机之间是相互隔离的。
物理机我们一般称为宿主机(host),宿主机上面的虚拟机称为客户机(guest)。
虚拟化分类
虚拟化分为两种:1型虚拟化和2型虚拟化。
1型虚拟化
hypervisor 直接安装在物理机上,多个虚拟机在 hypervisor 上运行。hypervisor 实现方式一般是一个特殊定制的 linux 系统。xen 和 vmware 的 esxi 都属于这个类型。
2型虚拟化
物理机上首先安装常规的操作系统,比如 redhat、ubuntu 和 windows。hypervisor 作为 os 上的一个程序模块运行,并对管理虚拟机进行管理。kvm、virtualbox 和 vmware workstation 都属于这个类型。
理论上讲:
1型虚拟化一般对硬件虚拟化功能进行了特别优化,性能上比2型要高;
2型虚拟化因为基于普通的操作系统,会比较灵活,比如支持虚拟机嵌套。嵌套意味着可以在kvm虚拟机中再运行kvm。
部署kvm
环境准备
确认开启虚拟化
[root@ken ~]# grep -e (vmx)|(svm) /proc/cpuinfo flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 syscall nx mmxext fxsr_opt pdpe1gb rdtscp lm constant_tsc art rep_good nopl tsc_reliable nonstop_tsc extd_apicid aperfmperf eagerfpu pni pclmulqdq ssse3 fma cx16 sse4_1 sse4_2 x2apic movbe popcnt aes xsave avx f16c rdrand hypervisor lahf_lm svm extapic cr8_legacy abm sse4a misalignsse 3dnowprefetch osvw retpoline_amd vmmcall fsgsbase bmi1 avx2 smep bmi2 rdseed adx smap xsaveopt clzero irperf xsaveerptr ibpb arat nptsvm_lock nrip_save vmcb_clean flushbyasid decodeassists
第一步:下载相关软件
[root@ken ~]# yum install libvirt virt-install qemu-kvm -ylibvirt : kvm 的管理工具。libvirt 包含 3 个东西:后台 daemon 程序 libvirtd、api 库和命令行工具 virsh
qemu-kvm:kvm 和 qemu 的核心包,提供 cpu、内存和 io 虚拟化功能
virt-install是一个命令行工具,它能够为kvm、xen或其它支持libvrit api的hypervisor创建虚拟机并完成guestos安装
第二步:启动libvirt
[root@ken ~]# systemctl restart libvirtd第三步:创建磁盘
[root@ken ~]# qemu-img create -f raw /ken/centos7-x86_64.raw 10gformatting '/ken/centos7-x86_64.raw', fmt=raw size=10737418240 第四步:创建虚拟机
[root@ken ~]# virt-install --virt-type kvm --name centos7-x86_64 --ram 1024 --cdrom=/tmp/centos-7.3-x86_64-minimal-1511.iso --disk path=/ken/centos7-x86_64.raw --network network=default --graphics vnc,listen=0.0.0.0 --noautoconsole注意:需要上传一个镜像到/tmp目录下,其他目录也可以,上面指定即可
第五步:快速使用vnc进行连接
ip地址输入虚拟机ip
开始安装系统
定制化系统
开始安装
第六步:查看已经创建的虚拟机
[root@ken ~]# virsh list --all
id name state
----------------------------------------------------
- centos7-x86_64 shut off
第七步:启动虚拟机
[root@ken ~]# virsh start centos7-x86_64domain centos7-x86_64 started[root@ken ~]# virsh list --all id name state---------------------------------------------------- 2 centos7-x86_64 running
第八步:使用vnc再次连接
现在就可以登录进去我们创建的虚拟机里面去了
第九步:ssh连接
宿主机上连接
首先查看新建虚拟机ip地址
宿主机进行连接
[root@ken ~]# ssh 192.168.122.198the authenticity of host '192.168.122.198 (192.168.122.198)' can't be established.ecdsa key fingerprint is sha256:t+jphwwhjk8mo2xzb93h9afhsvy7bcmvlsvqsuf+obg.ecdsa key fingerprint is md5:48:d5:9e:db:f8:bb:5e:56:c1:c8:1d:a2:4b:45:d6:fc.are you sure you want to continue connecting (yes/no)? yeswarning: permanently added '192.168.122.198' (ecdsa) to the list of known hosts.root@192.168.122.198's password: last login: mon mar 18 21:06:27 2019[root@localhost ~]# ip a1: lo: <loopback,up,lower_up> mtu 65536 qdisc noqueue state unknown link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo valid_lft forever preferred_lft forever inet6 ::1/128 scope host valid_lft forever preferred_lft forever2: eth0: <broadcast,multicast,up,lower_up> mtu 1500 qdisc pfifo_fast state up qlen 1000 link/ether 52:54:00:89:17:d7 brd ff:ff:ff:ff:ff:ff inet 192.168.122.198/24 brd 192.168.122.255 scope global dynamic eth0 valid_lft 3510sec preferred_lft 3510sec inet6 fe80::5054:ff:fe89:17d7/64 scope link valid_lft forever preferred_lft forever
登录退出虚拟机
第一步:在创建的kvm虚拟机里面执行如下的命令
[root@localhost ~]# grubby --update-kernel=all --args=console=ttys0第二步:重启kvm虚拟机
第三步:使用virsh console登录登录虚拟机
执行virsh console 虚拟机名称
[root@ken ~]# virsh console centos7-x86_64connected to domain centos7-x86_64escape character is ^] #到这步再次按回车centos linux 7 (core)kernel 3.10.0-327.el7.x86_64 on an x86_64localhost login: root #输入用户password: #密码last login: mon mar 18 22:19:47 on ttys0[root@localhost ~]#
第四步:退出kvm虚拟机
按这两个组合键,按ctrl加上中括号的右边: ctrl+]
[root@ken ~]# virsh console centos7-x86_64connected to domain centos7-x86_64escape character is ^]centos linux 7 (core)kernel 3.10.0-327.el7.x86_64 on an x86_64localhost login: rootpassword: last login: mon mar 18 22:20:44 on ttys0[root@localhost ~]# [root@ken ~]#
克隆虚拟机
第一步:关闭虚拟机
[root@ken ~]# virsh shutdown centos7-x86_64domain centos7-x86_64 is being shutdown[root@ken ~]# virsh list --all id name state---------------------------------------------------- - centos7-x86_64 shut off
第二步: 创建磁盘位置
[root@ken ~]# mkdir /ken/img第三步:使用virt-clone克隆新的虚拟机
[root@ken ~]# virt-clone -o centos7-x86_64 -n centos7_test -f /ken/img/centos7_test.imgallocating 'centos7_test.img' | 10 gb 00:00:36 clone 'centos7_test' created successfully.第四步:查看虚拟机
[root@ken ~]# virsh list --all id name state---------------------------------------------------- - centos7-x86_64 shut off - centos7_test shut off第五步:启动虚拟机
[root@ken ~]# virsh start centos7_test domain centos7_test started[root@ken ~]# virsh list --all id name state---------------------------------------------------- 3 centos7_test running
第六步:进入虚拟机
[root@ken ~]# virsh console centos7_testconnected to domain centos7_testescape character is ^]centos linux 7 (core)kernel 3.10.0-327.el7.x86_64 on an x86_64localhost login: rootpassword: last login: mon mar 18 22:21:24 on ttys0[root@localhost ~]# ip a1: lo: <loopback,up,lower_up> mtu 65536 qdisc noqueue state unknown link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo valid_lft forever preferred_lft forever inet6 ::1/128 scope host valid_lft forever preferred_lft forever2: eth0: <broadcast,multicast,up,lower_up> mtu 1500 qdisc pfifo_fast state up qlen 1000 link/ether 52:54:00:cc:69:f8 brd ff:ff:ff:ff:ff:ff inet 192.168.122.161/24 brd 192.168.122.255 scope global dynamic eth0 valid_lft 3597sec preferred_lft 3597sec inet6 fe80::5054:ff:fecc:69f8/64 scope link valid_lft forever preferred_lft forever
xshell连接虚拟机
现在物理主机是ping不通kvm虚拟机的,只有宿主机可以和kvm通信
第一步:创建脚本并执行
[root@ken ~]# cat bridg.sh #!/bin/bashbrctl addbr br0 #创建桥接网卡brctl addif br0 eth0 #把eth0加入到br0中ip a d 192.168.4.190/24 dev eth0 #删除eth0的ip地址ifconfig br0 192.168.4.190/24 up #启动br0网络route add default gw 192.168.4.1 #添加网关
第二步:查看网络
第三步:测试外网连通性
[root@ken ~]# ping www.baidu.comping www.a.shifen.com (119.75.217.26) 56(84) bytes of data.64 bytes from 119.75.217.26 (119.75.217.26): icmp_seq=1 ttl=54 time=6.08 ms64 bytes from 119.75.217.26 (119.75.217.26): icmp_seq=2 ttl=54 time=9.20 ms64 bytes from 119.75.217.26 (119.75.217.26): icmp_seq=3 ttl=54 time=8.58 ms^c--- www.a.shifen.com ping statistics ---3 packets transmitted, 3 received, 0% packet loss, time 6020msrtt min/avg/max/mdev = 6.087/7.957/9.201/1.346 ms
第四步:编辑虚拟机
修改如下的三处位置即可
[root@ken ~]# virsh edit centos7-x86_64
第五步: 启动kvm虚拟机并进入kvm虚拟机编辑网卡
配置一个与物理主机同网段的网络
[root@localhost ~]# cat /etc/sysconfig/network-scripts/ifcfg-eth0 type=ethernetbootproto=staticname=eth0device=eth0onboot=yesipaddr=192.168.4.165netmask=255.255.255.0gateway=192.168.4.1dns1=8.8.8.8[root@localhost ~]# systemctl restart network
第六步:xshell连接kvm虚拟机
connecting to 192.168.4.165:22...connection established.to escape to local shell, press 'ctrl+alt+]'.warning! the remote ssh server rejected x11 forwarding request.last login: mon mar 18 23:33:21 2019[root@localhost ~]# ip a1: lo: <loopback,up,lower_up> mtu 65536 qdisc noqueue state unknown link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo valid_lft forever preferred_lft forever inet6 ::1/128 scope host valid_lft forever preferred_lft forever2: eth0: <broadcast,multicast,up,lower_up> mtu 1500 qdisc pfifo_fast state up qlen 1000 link/ether 52:54:00:89:17:d7 brd ff:ff:ff:ff:ff:ff inet 192.168.4.165/24 brd 192.168.4.255 scope global eth0 valid_lft forever preferred_lft forever
网站服务器或虚拟主机什么要放在IDC机房中?如何申请泛域名证书网站建设中如何优化提示样式的设计自己建设网站需要注意什么事项8个步骤,拆解P2P平台数据运营体系地方站点创业系列之从全局出发策划分析外贸网站建设要注意哪些细节深圳专业网站建设教你怎么进行高端网站建设