虚拟化技术概述 虚拟机安装与管理手册

概述:虚拟化技术的介绍(kvm,qemu),虚拟机的安装,虚拟机的管理(virt-manger,virsh等)。

1.为什么要有虚拟化技术?

如果你的主要操作系统是windows但是又需要在Linux上工作,像VMware(需要付费。。。)或者virtualbox一定是你的首选,这样你就可以在两个操作系统间随意切换了,除了这其实我们还有解除了很多虚拟化技术;比如虚拟光驱,我们完全不需要真正的光驱也可以使用光盘镜像,这些都是我们日常接触到的,但并不是虚拟化技术的全部,现在比较热门的docker容器也是一种虚拟化技术。

在企业中可以将同一台机器的资源分割,管理员可以针对不同的客户群设置不同的虚拟机,隔离出不同的区块,以进行系统升级和维护,而完全不影响终端使用者的作业。 资讯管理人员可以建置一部商用暨个人用的桌上型电脑系统,有效隔离软体的载入和病毒的攻击;或者建置一部能够执行不同作业系统和软体的电脑,以因应不同的需求或支援旧版软体。 可见在企业中虚拟化技术有很广泛的应用。

说了这么多,先来看看你的计算机是否支持虚拟化,打开终端键入grep --color -E "vmx|svm" /proc/cpuinfo

如果有信息显示那么恭喜你,你可以安装虚拟化软件了

虚拟化软件的安装

yum install qemu-kvm qemu-img
yum install virt-manager libvirt libvirt-python python-virtinst libvirt-client

2.虚拟机的安装

和我们最友好也最简单的虚拟化技术就是虚拟机了,这里简单介绍虚拟机的安装。

2.1)图形化安装

在系统工具中找到Virtual Machine Manager或者在终端输入virt-manager打开这个虚拟机图形管理窗口,在画红圈处单机右键选择NEW可以进入虚拟创建

进入这个界面选择第一个选项,用本地的媒体安装

改图第二个选项为你的磁盘镜像的路径,选好后Forward

在这里选择你虚拟机的内存大小

这里选择硬盘的大小

这里选择虚拟机的名字,这个名字是我们识别虚拟机的一个标志

这些点完后终于来到了装机界面,这里有两个选项,第一个选项是直接安装redhat7.1,第二个选项是测试一下这个镜像再安装。

选择装系统时使用的语言(为了继续强调英语的重要性,我选择了英语。。。),是安装系统时的语言不是系统本身的!

安装系统的一个主界面按照上到下,左到右的顺序,分别是时区的选择(上海),键盘类型的选择(美式键盘),系统的语系支持(把中文加上,否则遇到中文时会出现乱码),安装的镜像源是什么(本地的磁盘镜像),软件包的选择(为了快速我选择了最小安装),安装到哪个盘上和磁盘的分区(默认的磁盘分区和我自己分的没什么区别。。。一般是/boot 200MB,swap 为内存的2倍吧,剩下的全给/),Kdump 是一种基于 kexec 的 Linux 内核崩溃捕获机制,将 kernel 崩溃前的内存镜像保存,程序员通过分析该文件找出 kernel 崩溃的原因,从而进行系统改进。最后是安装过程的网络设置(我们选择不设置)。

一切设置好后我们进入安装的进度条界面,等进度条读完,即可重启进入这个新鲜的redhat。

2.2)命令安装虚拟机

在Linux中一切皆是命令安装虚拟机也可以使用命令而且非常方便

[root@foundation3 ~]# virt-install --name mo1 --ram 1024 --file /var/lib/li
bvirt/images/mo1.img --cdrom /root/Desktop/rhel-server-7.1-x86_64-dvd.iso -
-file-size 8
WARNING No operating system detected, VM performance may suffer. Specify an OS
with --os-variant for optimal results.
WARNING CDROM media does not print to the text console by default, so you likel
y will not see text install output. You might want to use --location.See the man
 page for examples of using --location with CDROM media 

Starting install...
Allocating 'mo1.img'         | 8.0 GB  00:00
Creating domain...         | 0 B  00:00
Connected to domain mo1

这其中--name选项是确定虚拟机的名字,--ram是虚拟机的内存,--file为你将虚拟机的磁盘文件存储路径,--cdrom是你的镜像文件路径,--file-size是虚拟机的磁盘大小。键入命令后即可进入安装系统的界面,在上一步骤已经介绍完了。

3)虚拟机的管理

在介绍虚拟机管理命令之前我们先介绍下创建完虚拟机并安装完系统后生成了哪些文件,或者说虚拟机对于我们真机到底是个啥?

[root@foundation3 ~]# ls /etc/libvirt/qemu /var/lib/libvirt/images/
/etc/libvirt/qemu:
desktop.xml <span style="color:#ff0000;">mo.xml</span> networks server.xml 

/var/lib/libvirt/images/:
mo1.img    rh124-desktop-vda.qcow2 rh124-server-vda.ovl rh124-server.xml
<span style="color:#ff0000;">mo.img</span>     rh124-desktop-vdb.ovl rh124-server-vda.qcow2 test.sh
mo_shot.qcow2   rh124-desktop-vdb.qcow2 rh124-server-vdb.ovl vm1.qcow2
rh124-desktop-vda.ovl rh124-desktop.xml  rh124-server-vdb.qcow2

上面输出的结果中红色字处就是我们生成的文件,总共两个一个xml文件和一个硬盘文件。xml文件可以随意删掉,不会影响虚拟机,但是如果删掉他我们不能再virt-manager(虚拟机图形管理工具上找到他),不过我们有方法恢复;硬盘文件如果删掉的话那你的虚拟机也就无法使用了。

virt-manager ##开启图形管理工具
virt-viewer vmname 
##显示以vmname为名字的虚拟机,当我们开启虚拟机时默认不会,将他显示在前台而只是running状态,如果我们要将他显示出来就要键入上面这条命令

virsh list ##列出正在运行的虚拟机(在默认情况下,需要root用户才可以查看)

[root@foundation3 ~]# virsh list
 Id Name       State
----------------------------------------------------

表示我没有虚拟机在运行,但是如果我不是root用户的话也会显示如上图输出

[root@foundation3 ~]# virsh start mo
Domain mo started 

[root@foundation3 ~]# virsh list
 Id Name       State
----------------------------------------------------
 9  mo        running 

[root@foundation3 ~]# su - mo
Last login: Wed Oct 19 10:48:59 CST 2016 on pts/3
[mo@foundation3 ~]$ virsh list
 Id Name       State
----------------------------------------------------

所以一定要切换到root用户使用此命令否则是无效的,但是具体为什么只有root用户可以查看或其他设定都在配置文件中规定着(/etc/libvirt/qemu.conf),说到这里我想到了一个我刚开始安装虚拟机出现的错误,如下:

[root@foundation3 ~]# virt-install --name zhao --ram 1024 --file /var/lib/libvirt/images/zhao.img --file-size 8 --cdrom /root/Desktop/rhel-server-7.1-x86_64-dvd.iso
WARNING No operating system detected, VM performance may suffer. Specify an OS with --os-variant for optimal results.
WARNING CDROM media does not print to the text console by default, so you likely will not see text install output. You might want to use --location.See the man page for examples of using --location with CDROM media 

Starting install...
Allocating 'zhao.img'            | 8.0 GB 00:00:00
<span style="color:#ff0000;">ERROR </span> internal error: process exited while connecting to monitor: 2016-10-19T03:00:25.552714Z qemu-kvm: -drive file=/root/Desktop/rhel-server-7.1-x86_64-dvd.iso,if=none,id=drive-ide0-0-1,readonly=on,format=raw: <span style="color:#ff0000;">could not open disk image /root/Desktop/rhel-server-7.1-x86_64-dvd.iso: Could not open file: Permission denied</span> 

Domain installation does not appear to have been successful.
If it was, you can restart your domain by running:
 virsh --connect qemu:///system start zhao
otherwise, please restart your installation.

根据上面红字的报错,他竟然说我没权限,我是root好不好!!我很是生气,作为root用户还要看到“Permission denied“的侮辱,我先查看了下镜像文件的权限,如下:

[root@foundation3 ~]# ll /root/Desktop/rhel-server-7.1-x86_64-dvd.iso
-rw-r--r-- 1 qemu qemu 3890216960 Oct 17 22:15 /root/Desktop/rhel-server-7.1-x86_64-dvd.iso

显示结果是我有对他的读写权限,所以权限没有问题,经过仔细的查阅资料,我找到了解决方法,原来对虚拟机操作的权限还在一个他的配置文件中规定着!

<span style="color:#ff0000;">#user = "root"</span> 

# The group for QEMU processes run by the system instance. It can be
# specified in a similar way to user.
<span style="color:#ff0000;">#group = "root"</span> 

# Whether libvirt should dynamically change file ownership
# to match the configured user/group above. Defaults to 1.
# Set to 0 to disable file ownership changes.
<span style="color:#ff0000;">#dynamic_ownership =0 </span>

将红色处的#去掉我们的root就有权限创建虚拟机啦。

virsh list --all  ##列出所有虚拟机(同样也需要root用户)

[root@foundation3 ~]# virsh list --all
 Id Name       State
----------------------------------------------------
 -  desktop      shut off
 -  mo        shut off
 -  server       shut off

virsh start vmname ##开启名为vmname的虚拟机
virsh shutdown vmname ##正常关闭vmname虚拟机
virsh destroy vmname ##强行结束vmname虚拟机
virsh create vmname.xml ##指定vmname虚拟机前端文件(*.xml),并显示在图形管理工具上,相当于临时恢复虚拟机前端引导选项
virsh define vmname.xml ##永久恢复虚拟机前端引导项

virsh undefine vmname.xml ##删除虚拟机前端管理,但不会删除硬盘镜像。

下面仔细说明下这个前段引导的作用和一些操作:

虚拟机图形管理界面和virsh list --all显示出一样的结果

我们可以对”mo“这台虚拟机单机右键选择Delete,删除前端文件。

也可以通过 virsh undefine mo命令删除它的前端文件。这个命令的原理是删除掉/etc/libvirt/qemu/mo.xml,所以只要提前备份这个文件即可恢复前端文件。然后使用virsh define */mo.xml就可恢复前端文件。

但是我没有备份。就只能通过重新加载镜像来生成mo.xml文件了,其实也非常简单。

[root@foundation3 ~]# virt-install --name mo --ram 1024 --disk /var/lib/libvirt/images/mo.img

是不是和刚开始创建虚拟机的命令是一样的只不过参数有些变化,这里我们相当于在电影中将一个特工的身份抹掉,再生成一个身份,所以只用指定它的新名字(可与和以前一样)和真身是什么(就是硬盘文件)即可,而且速度非常快。这样就重新生成好了前端文件。

4)虚拟机快照

使用过vmware的同学都知道虚拟机有一个快照功能非常好用,也是我们能在虚拟机上随便折腾的基础保证

红线处就是拍摄快照的地方。我们的kvm呢,当然也有这个功能了。如下

[root@foundation3 ~]# qemu-img create -f qcow2 -b /var/lib//libvirt/images/mo.img /var/lib/libvirt/images/test.qcow2
Formatting '/var/lib/libvirt/images/test.qcow2', fmt=qcow2 size=8589934592 backing_file='/var/lib//libvirt/images/mo.img' encryption=off cluster_size=65536 lazy_refcounts=off
[root@foundation3 ~]# ls /var/lib/libvirt/images/
mo1.img     rh124-desktop-vdb.ovl rh124-server-vdb.ovl vm1.qcow2
mo.img     rh124-desktop-vdb.qcow2 rh124-server-vdb.qcow2 zhao.img
mo_shot.qcow2   rh124-desktop.xml  rh124-server.xml
rh124-desktop-vda.ovl rh124-server-vda.ovl  <span style="color:#ff0000;">test.qcow2</span>
rh124-desktop-vda.qcow2 rh124-server-vda.qcow2 test.sh
[root@foundation3 ~]#

红色部分就是我们创建的快照,接下来我们使用上面提到的

[root@foundation3 ~]# virt-install --name mo --ram 1024 --disk /var/lib/libvirt/images/test.qcow2 
就可以使用快照了,如果快照被玩坏了,再重新建立一个快照,仍然和原虚拟机是一样的,但是切记,虚拟机真正的磁盘文件不可删除或者玩坏,因为那样就没法恢复了。

总结一下kvm的快照其实就是以原虚拟机磁盘文件为基础,拍摄快照,每次拍摄的快照系统与原虚拟机一模一样,所以对于原虚拟机有什么更改,快照也会有相应的更改。

由于自带的管理命令太过强大,但是有点功能其实不太需要,但又缺少了诸如直接重置等一键简单操作,我自己封装了一个脚本,来管理虚拟机,代码如下:

#!/bin/bash
create_img()
{ 

 virsh undefine $1 &>/dev/null
 qemu-img create -f qcow2 -b /var/lib/libvirt/images/$1.img /var/lib/libvirt/images/$1_shot.qcow2 &>/dev/null
 virt-install --name $1 --ram 1024 --disk /var/lib/libvirt/images/$1_shot.qcow2 --import --noautoconsole &>/dev/null
 virsh define /etc/libvirt/qemu/$1.xml &>/dev/null
}
delete_img()
{
 virsh undefine $1 &>/dev/null
 rm -rf /var/lib/libvirt/images/$1_shot.qcow2 &>/dev/null
}
check_status()
{
 status=`virsh list --all| sed -n '3,$p'|sed 's/[[:space:]]\+/:/g'|grep $1 |cut -d':' -f4`
 echo $status
 if [ $status = "shut" ];then
  return 0
 elif [ $status = 'running' ];then
  return 1
 fi
}
case $1 in
--start|-s)
shift 

echo "start $1 ..."
check_status $1 &>/dev/null && virsh start $1 &>/dev/null
;;
--view|-v)
shift
echo "view $1 ..."
check_status $1 &> /dev/null || virt-viewer $1 &>/dev/null &
;;
--shutdown|-d)
shift
echo "shutdown $1 ..."
check_status $1 &> /dev/null || virsh destroy $1 &>/dev/null &
;;
--create|-c)
shift
check_status $1 &> /dev/null || virsh destroy $1
echo "create snapshot for $1 ..."
create_img $1
echo "success create snapshot"
;;
--reset|-r)
shift
check_status &>/dev/null $1 || virsh destroy $1
delete_img $1
create_img $1
;;
--check|-h)
shift
echo $1 `check_status $1`
;;
*)
echo "vmctl <COMMAND> <OPTIONS> "
echo ""
echo "open,show,shutdown,reset...Virtual Machine"
echo -e "--start|-s\topen Virtual Machine\n--view|-v\tshow the Virtual Machine that has been opened"
echo -e "--shutdown|-d\tclose your Virtual Machine"
echo -e "--create|-c\tcreate a snapshot for your Virtual Machine"
echo -e "--reset|-r\treset your Virtual Machine"
echo -e "--check|-h\tcheck Virtual Machine status running or shut"
;;
esac

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • 资料:如何用虚拟机安装Windows Vista系统

    如果您打算在Windows Vista面市后将自己的系统升级,那么,在升级前对Windows Vista进行详尽的测试则是十分必要的,这不仅可以帮助您了解Windows Vista带来的新特性.新功能,帮助您熟练掌握Windows Vista的操作技巧,同时,也有助于让您清楚目前必备软件在Windows Vista中的兼容性,确保在将来升级时能够平衡过渡. 一般而言,在我们安装测试的Windows Vista系统时,通常不太可能为其准备一台单独的PC,而只能在目前使用的工作机上安装.为保证目前使

  • Windows Server 2012 R2 Hyper-V虚拟化常见异常处理方法总结

    最近给客户做一台Hyper-V虚拟化服务器,本着对于Microsoft的爱,信心满满的安装了一套Windows Server 2012 R2 Hyper-V,可Microsoft好像不太爱我!!异常多多! 问题一:虚拟机内存占用100% 虚拟机开机内存占用正常,但是如果开启任何一个应用,内存就会100%,太吓人了!Ping都会! 我尝试调整动态内存分配但未能够此解决,后来将动态内存分配功能关闭使用正常使用正常!以前部署的时候不会有这种情况,估计与服务器硬件有关系(此服务器硬件使用DELL R72

  • Vmware虚拟机的安装及配置方法

    安装 VMWARE TOOLS的步骤   装的郁闷死了,为了避免自己还有将来的人犯糊涂,把安装的步骤写下吧:   1.1.以ROOT身份进入LINUX   2.退出到windows,点击 SETTING菜单下的ENABLE VMWARE TOOLS子菜单,确认安装   3.把光驱改为使用iso镜像,路径为C:\Program Files\VMware\VMware Workstation\Programs\linux.iso   4.进入linux运行mount -t iso9660 /dev/

  • centos 6.6 安装 KVM 虚拟机的方法

    KVM是指基于Linux内核的虚拟机(Kernel-base Virtual Machine),增加到Linux内核是Linux发展的一个重要里程碑,这也是第一个整合到Linux主线内核的虚拟化技术.在KVM模型中,每一个虚拟机都是一个由Linux调度程序管理的标准进程,你可以在用户空间启动客户机操作系统,一个普通的Linux进程有两种运行模式:内核和用户,KVM增加了第三种模式:客户模式(有自己的内核和用户模式). 1 KVM虚拟机的管理工具 准确的来说,KVM仅仅是Linux内核的一个模块,

  • 轻松玩转VMWare虚拟机之安装GHOST系统图文教程第1/2页

    VMWare是一个"虚拟PC"软件.它使你可以在一台机器上同时运行二个或更多Windows.DOS.LINUX系统.与"多启动"系统相比,VMWare采用了完全不同的概念.多启动系统在一个时刻只能运行一个系统,在系统切换时需要重新启动机器.VMWare是真正"同时"运行,多个操作系统在主系统的平台上,就象标准Windows应用程序那样切换.而且每个操作系统你都可以进行虚拟的分区.配置而不影响真实硬盘的数据,你甚至可以通过网卡将几台虚拟机用网卡连接

  • 虚拟化之VMware Workstation 10.0.x安装教程(图文)

    大纲内容 一.什么是虚拟化 二.主流虚拟化技术 三.系统虚拟化的用处 四.个人用虚拟机软件介绍 五.安装VMware workstation 六.VMware workstation功能简介 文档版本 更新时间 备注 v1 2016-02-07 版本更新信息 环境 操作系统版本 软件版本 Win 7  x64 VMware workstation 10 一.什么是虚拟化 虚拟化(Virtulization)是表示计算机资源的抽象方法.通过虚拟化可以对包括基础设施,系统和软件等计算机资源的表示,访

  • android 使用虚拟机安装apk(图文教程)

    1.启动虚拟机 2.我的android sdk在"E:\android\android开发环境\android SDK\platform-tools"把要安装的apk复制到这个根目录(和adb.exe同文件夹). 2.点击电脑左下角的"开始"按钮,输入cmd然后点击回车打开cmd输入框. 3. (由于我的Android SDK安装路径为e盘,所以需要定位模拟器platform-tools目录) 在cmd命令提示符中输入E: 回车,如图 第一行, 4.apk名称为zq

  • CentOS7.2虚拟机上安装MySQL 5.6.32的教程

    1.MySQL 5.6.32 64位安装包下载 在官网http://dev.mysql.com/downloads/mysql/5.6.html#中使用迅雷下载MySQL 5.6.32 64位安装包下载: http://pan.baidu.com/s/1pLCiAmf 2.把下载文件通过SecureFX传递到/usr/local/src/目录中(虚拟主机CentOS7.2的IP为:192.168.1.11) 3.解压文件. cd /usr/local/src/ [root@localhost s

  • win2008 r2 hyper-v虚拟机的安装使用图文教程第1/2页

    hyper-v 简介 Hyper-V是微软的一款虚拟机产品,部署在win 8.x 64位 pro以上版本中,和Windows 2008以上服务器的版本中,其功能与VMware及VirtualBox等虚拟机软件类似.由于Hyper-v是微软自己出的软件,所以对windows的支持是最好的.对于一些需要经常使用不同操作系统的人员来说非常方便,它能让你在一台PC上同时运行多个操作系统,你不需要重新启动系统,只要点击鼠标便可以打开新的操作系统或是在操作系统之间进行切换,从此,你可以把一台机器当做多台使用

  • virtualbox虚拟机上安装centOS的网络配置详解

    最近接触hadoop,需要在在Linux上面开发,所以我装了一个virtualbox虚拟机,在该虚拟机上面安装了一个centOS系统.linux系统是装好了,但是网络配置却另人头疼.我主要是想让宿主机和虚拟机能够互相访问. 然后我就百度了一下,根据百度的结果一步一步的配置. 安装virtualbox之后它会在宿主机上面安装一个虚拟网卡,如图 双击它,查看详情,信息如图所示 在虚拟机上面配置网络我使用的是host-only方式,当然也可以使用桥接的方式,至于他们的区别,网上很多.虚拟机上面主要是使

随机推荐