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中开启的,具体操作可自行参考网上相关资料
查看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虚拟机了
熟悉的界面就出现了,接下来要做的就是安装操作系统了!!!!!!!
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
正常登陆,可查看相关虚拟机信息
配置网卡
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地址
已经获取到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
< <name>kvm-new</name>
< <uuid>49743917-ff44-3888-cc6b-cd289f79682c</uuid>
---
> <name>kvm-demo</name>
> <uuid>49743917-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虚拟机
通过名称可以看出是新的KVM虚拟机,说明配置是正确的
- 学Java到底好不好,已学未学将要学,大家都快看过来
- 理解SynchronizationContext
- WPF 的Main方法
- WiX制作安装包--系统必备
- 选项卡TabHost
- FPGA入门
- .NET 4 System.Threading.Barrier 类
- 终被捕!5名罗马尼亚黑客因入侵华盛顿政府摄像头被捕
- VUE 入门基础(9)
- 国家级人工智能产业基地落户松江,发布上海首款国产人工智能芯片
- C# 4.0 Optional Parameters 和Named Parameters
- 开源Web服务器GoAhead远程代码执行漏洞 影响数十万物联网设备
- MySpace:开源数据处理Qizmt
- 王劲:承受大风大浪,创业要忍人所不能忍
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- C++核心准则SF.5: .cpp文件必须包含定义它接口的.h文件
- C++核心准则SF.6:(只)为转换,基础库或在局部作用域内部使用using namspace指令
- C++核心准则SF.7:不要在头文件中的全局作用域中使用using namespace指令
- 二叉树:看看这些树的最小深度
- Hive初体验
- Hive数据的存储以及在centos7下进行Mysql的安装
- 一个改进的数学学习工具
- 配置hive的元数据到Mysql中
- 二叉树:我有多少个节点?
- POST请求和GET请求如何传递和接收解析参数
- 二叉树:我平衡么?
- 机器学习中的常用编码方式(二)
- 个人Next主题配置文件
- 数组中出现次数超过一半的数字
- 二叉树:找我的所有路径?