Linux系统——KVM虚拟机安装与管理

本人花费半年的时间总结的《Java面试指南》已拿腾讯等大厂offer,已开源在github ,欢迎star!

转载声明:转载请注明出处,本技术博客是本人原创文章

本文GitHub https://github.com/OUYANGSIHAI/JavaInterview 已收录,这是我花了6个月总结的一线大厂Java面试总结,本人已拿大厂offer,欢迎star

原文链接:blog.ouyangsihai.cn >> Linux系统——KVM虚拟机安装与管理

Linux系统——KVM虚拟机安装与管理

     kvm是linux内核的一种技术,有着很高的兼容性,性能也非常好,相对物理机而言它就是一个进程,日常管理维护与扩展非常方便,因此,今天来介绍下KVM虚拟机的安装与一些日常管理操作

1、安装环境与准备

系统环境

[root@Centos ~]# **cat /etc/redhat-release **

CentOS release 6.5 (Final)

[root@Centos ~]# uname -r

2.6.32-431.el6.x86_64

本文不是在真实服务器上安装操作,因此VM 也要开启支持虚拟化功能,实际生产环境的服务器支持虚拟化功能是在BIOS中开启的,具体操作可自行参考网上相关资料

Linux系统——KVM虚拟机安装与管理 **查看CPU 是否支持虚拟化**

[root@Centos ~]# egrep ‘vmx|svm’ /proc/cpuinfo

**flags **          : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts mmx fxsr sse sse2 ss syscall nx pdpe1gb rdtscp lm constant_tsc up arch_perfmon pebs bts xtopology tsc_reliable nonstop_tsc aperfmperf unfair_spinlock pni pclmulqdq vmx ssse3 fma cx16 pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand hypervisor lahf_lm abm 3dnowprefetch ida arat epb xsaveopt pln pts dts tpr_shadow vnmi ept vpid fsgsbase bmi1 avx2 smep bmi2 invpcid

**2、安装KVM虚拟机**

[root@Centos ~]# [root@centos6 ~]# yum install qemu-kvm qemu-kvm-tools virt-manager libvirt -y

KVM:它是linux系统内核的一个模块

qemu:虚拟化软件

qemu-kvm:管理工具(管理网卡等一些设备)

创建一个磁盘

[root@centos6 ~]# qemu-img create -f raw /opt/centos.6.5-x86_64.raw 10G (Formatting /opt/centos.6.5-x86_64.raw,fmt =raw size=10737418240)可以不加

Formatting ‘/opt/centos.6.5-x86_64.raw’, fmt=raw size=10737418240 

创建完成后,我们可以看看这时的磁盘状态信息****

[root@apache ~]# qemu-img info /opt/kvm.raw

image: /opt/kvm.raw

file format: raw                                          #文件格式****

virtual size: 10G (10737418240 bytes)     #虚拟大小****

disk size: 0

显示kvm状态

[root@centos6 ~]# lsmod |grep kvm

kvm_intel              54285  0 

kvm                   333172  1 kvm_intel

启动libvirtd

[root@centos6 ~]# /etc/init.d/libvirtd start

Starting libvirtd daemon: libvirtd: relocation error: libvirtd: symbol dm_task_get_info_with_deferred_remove, version Base not defined in file libdevmapper.so.1.02 with link time reference               [FAILED]

出现报错信息,解决办法如下

[root@centos6 ~]# yum upgrade device-mapper-libs -y

将光盘iso导入

[root@centos6 ~]# dd if=/dev/cdrom of=/opt/centos-6.5-x86.64.iso

8726528+0 records in

8726528+0 records out

4467982336 bytes (4.5 GB) copied, 300.907 s, 14.8 MB/s

注:导入过程很慢

[root@centos6 ~]# ll /opt

total 4363272

-rw-r–r–. 1 root root  4467982336 Jan  9 18:07 centos-6.5-x86.64.iso

-rw-r–r–. 1 root root 10737418240 Jan  9 17:44 centos.6.5-x86_64.raw

drwxr-xr-x. 2 root root        4096 Nov 22  2013 rh

创建虚拟机

[root@centos6 ~]# virt-install –name centos-6.5-x86.64 –virt-type kvm –ram 1024 –cdrom=/opt/centos-6.5-x86.64 –cdrom=/opt/centos-6.5-x86.64.iso –disk path=/opt/centos.6.5-x86_64.raw  –network network=default –graphics vnc,listen=0.0.0.0 –noautoconsole        

Starting install…

Creating domain…                                   |    0 B     00:02     

Domain installation still in progress. You can reconnect to 

the console to complete the installation process.

创建安装虚拟机的一些基本命令

virt-install -help   查看命令选项帮助

–name                  指定虚拟机名称

–ram                     指定内存大小

-cdrom                 指定镜像

-disk                     磁盘路径

-virt-type              虚拟机类型

-network              虚拟机网络类型

virt-install            安装创建虚拟机

virsh list               查看在运行的虚拟机

virsh list-all          查看所有的虚拟机

virsh start name  启动虚拟机

virsh shutdown name   正常关闭虚拟机

安装完成后,我们就可以通过VNC图形化工具来连接KVM虚拟机了

Linux系统——KVM虚拟机安装与管理 Linux系统——KVM虚拟机安装与管理

熟悉的界面就出现了,接下来要做的就是安装操作系统了!!!!!!!

3、配置管理KVM虚拟机

启动虚拟机

[root@centos6 ~]#virsh start centos-6.5-x86.64

Domain centos-6.5-x86.64 started 

[root@centos6 ~]# virsh list

 Id    Name                           State


 1     centos-6.5-x86.64              running

Linux系统——KVM虚拟机安装与管理 正常登陆,可查看相关虚拟机信息

配置网卡

vi /etc/sysconfig/network-scripts/ifcfg-eth0

DEVICE=eth0

HWADDR=00:0c:29:eb:d7:31

UUID=8dc4d786-d727-45e4-864d-3fec5d8418ed

**ONBOOT=no改成yes  **

NM_CONTROLLED=yes

** 重启网络服务**

service network restart

Shutting down interface eth0:                      [  OK  ]

Shutting down loopback interface:               [  OK  ]

Bringing up loopback interface:                   [  OK  ]

Bringing up interface eth0:                           [  OK  ]

查看KVM虚拟机的IP地址

Linux系统——KVM虚拟机安装与管理 已经获取到IP地址了

此时测试下主机与KVM虚拟机之间有联通性

[root@centos6 ~]# ping 192.168.122.42

PING 192.168.122.42 (192.168.122.42) 56(84) bytes of data.

64 bytes from 192.168.122.42: icmp_seq=1 ttl=64 time=1.13 ms

64 bytes from 192.168.122.42: icmp_seq=2 ttl=64 time=0.888 ms

64 bytes from 192.168.122.42: icmp_seq=3 ttl=64 time=0.890 ms

64 bytes from 192.168.122.42: icmp_seq=4 ttl=64 time=0.993 ms

^C

— 192.168.122.42 ping statistics —

4 packets transmitted, 4 received, 0% packet loss, time 3915ms

rtt min/avg/max/mdev = 0.888/0.975/1.132/0.106 ms

可以正常通信,表明KVM虚拟机安装正确

主机为什么能与KVM虚拟机能正常通信????????

[root@apache ~]# ifconfig

eth0      Link encap:Ethernet  HWaddr 00:0C:29:94:21:8C  

          inet addr:192.168.1.22  Bcast:192.168.1.255  Mask:255.255.255.0

          inet6 addr: fe80::20c:29ff:fe94:218c/64 Scope:Link

          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1

          RX packets:19569 errors:0 dropped:0 overruns:0 frame:0

          TX packets:15014 errors:0 dropped:0 overruns:0 carrier:0

          collisions:0 txqueuelen:1000 

          RX bytes:10210529 (9.7 MiB)  TX bytes:2651298 (2.5 MiB)

**virbr0    Link encap:Ethernet  HWaddr 52:54:00:8D:20:65  **

**          inet addr:192.168.122.1  Bcast:192.168.122.255  Mask:255.255.255.0**

          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1

          RX packets:3631 errors:0 dropped:0 overruns:0 frame:0

          TX packets:6292 errors:0 dropped:0 overruns:0 carrier:0

          collisions:0 txqueuelen:0 

          RX bytes:163946 (160.1 KiB)  TX bytes:9283752 (8.8 MiB)

看到没有主机自动生成了一个virbr0的网卡,IP与KVM虚拟机的IP是同一网段,这也就是为什么主机与KVM虚拟主机能正常通信的原因

查看进程

[root@centos6 ~]# netstat -lntp

Active Internet connections (only servers)

Proto Recv-Q Send-Q Local Address   Foreign Address  State  PID/Program name   

*tcp        0      0 0.0.0.0:5900                0.0.0.0:        LISTEN      2043/qemu-kvm **

此时再次查看下KVM虚拟磁盘的状态

[root@apache ~]# qemu-img info /opt/kvm.raw

image: /opt/kvm.raw

file format: raw

virtual size: 10G (10737418240 bytes)

disk size: 1.6G

发现已使用1.6G大小,说明是安装系统使用的空间

4、拷贝(复制)KVM虚拟机

拷贝KVM 虚拟机

目前已经运行一台虚拟了,关闭虚拟机,导出XML文件

[root@apache ~]# virsh destroy kvm-demo

Domain kvm-demo destroyed

[root@apache ~]# virsh list –all

 Id    Name                           State


 -     kvm-demo                       shut off

[root@apache ~]# virsh dumpxml kvm-demo new.xml

[root@apache ~]# ll new.xml

-rw-r–r– 1 root root 2725 Jan 11 07:06 new.xml

拷贝镜像文件

[root@apache ~]# cp /opt/kvm.raw /opt/new.raw

[root@apache ~]# ll /opt/

total 7579264

-rw-r–r–  1 qemu qemu  4467982336 Jan 10 08:46 centos6.5.iso

-rw-r–r–  1 root root 10737418240 Jan 11 07:04 kvm.raw

-rw-r–r–  1 root root 10737418240 Jan 11 07:08 new.raw

drwxr-xr-x. 2 root root        4096 Nov 22  2013 rh

修改new.xml文件

修改完成后,对比下两个文件的不同之处,就知道修改哪里的配置了

[root@apache ~]# diff new.xml /etc/libvirt/qemu/kvm-demo.xml

0a1,7

!–

WARNING: THIS IS AN AUTO-GENERATED FILE. CHANGES TO IT ARE LIKELY TO BE

OVERWRITTEN AND LOST. Changes to this xml configuration should be made using:

   virsh edit kvm-demo

or other application using the libvirt API.

2,3c9,10

   namekvm-new/name

   uuid49743917-ff44-3888-cc6b-cd289f79682c/uuid


   namekvm-demo/name

   uuid49743917-ff44-3888-cc6b-cd289f79681c/uuid

24c31

       source file=’/opt/new.raw’/


       source file=’/opt/kvm.raw’/

53c60

       mac address=’52:54:00:0b:8d:e7’/


       mac address=’52:54:00:0b:8d:e6’/

76d82

 

 

启动新的KVM虚拟机

[root@apache ~]# virsh define new.xml

Domain kvm-new defined from new.xml

[root@apache ~]#** virsh list –all **  

 Id    Name                           State


 -     kvm-demo                       shut off

 -     kvm-new                        shut off

[root@apache ~]# virsh start kvm-new

Domain kvm-new started

[root@apache ~]# **virsh list –all ** 

 Id    Name                           State


 2     kvm-new                        running

 -     kvm-demo                       shut off

此时我们可以通过VNC工具来连接新KVM虚拟机

Linux系统——KVM虚拟机安装与管理 通过名称可以看出是新的KVM虚拟机,说明配置是正确的 Linux系统——KVM虚拟机安装与管理

** 长按关注公众号——友侃有笑**

本人花费半年的时间总结的《Java面试指南》已拿腾讯等大厂offer,已开源在github ,欢迎star!

转载声明:转载请注明出处,本技术博客是本人原创文章

本文GitHub https://github.com/OUYANGSIHAI/JavaInterview 已收录,这是我花了6个月总结的一线大厂Java面试总结,本人已拿大厂offer,欢迎star

原文链接:blog.ouyangsihai.cn >> Linux系统——KVM虚拟机安装与管理


 上一篇
LNMP架构应用实战——openssl升级最新版本 LNMP架构应用实战——openssl升级最新版本
LNMP架构应用实战——openssl升级最新版本      由于实际生产环境需求,需要将LNMP环境中的openssl版本升级至目前最新版本openssl-1.1.0c,这玩意升级还真的不是一般的麻烦,由于它与系统各种服务都有相关的联
2021-04-05
下一篇 
linux系统运维企业常见面试题集合(一) linux系统运维企业常见面试题集合(一)
linux系统运维企业常见面试题集合(一)  **   本文所有内容均来自于个人整理而成,其中解答均属个人观点,如有不正之处,烦请给予指正,谢谢!!!** *1、请描述下***linux **系统的开机启动过程 开机加电BIOS自检
2021-04-05