1.包的安装

2.虚拟机的创建安装

3.安装基本参数的说明

4.常用操作

一、包的安装

1.#yum install -y kvm qemu-kvm libvirt virt-install bridge-utils

说明:

kvm:软件包中含有KVM内核模块,它在默认linux内核中提供kvm管理程序

qemu-kvm:在用户空间需要QEMU来模拟所需要CPU和设备模型以及用于启动客户机进程,这样才有了一个完整的KVM运行环境。是为了KVM专门做了修改和优化的QEMU分支。

libvirts:安装虚拟机管理工具,使用virsh等命令来管理和控制虚拟机。

bridge-utils:设置网络网卡桥接(centos7默认安装)。

qemu-img:安装qemu组件,使用qemu命令来创建管理磁盘等。

virt-manager:图形化管理工具(最好直接安装yum install virt*,需要用到的virt命令工具较为方便)

2.开启kvm服务,并且设置其开机自动启动。关闭防火墙和selinux。

systemctl start libvirtd

systemctl enable libvirtd

二、虚拟机的创建

在创建之前,需要系统镜像文件和创建虚拟机的磁盘文件

1.上传系统镜像iso文件

2.创建虚拟机img文件(也可以在下一步创建虚拟机的同时创建参数如:path=/opt/vimg/centos7.raw,format=raw,size=8,bus=virtio)

3.创建并安装虚拟机

1)#virt-install --name=node-1 --vcpus=4 --ram 2048 --disk path=/opt/vimg/centos7.raw --cdrom /opt/iso/centos7.5.iso --network bridge=virbr0,model=virtio --vnc --vncport=5910 --vnclisten=0.0.0.0 --accelerate --noautoconsole

2)创建成功后可以通过netstat -nltp来查看是否运行,然后再通过VNC viewer去连接(本机电脑下载安装好了VNC viewer之后输入ip:port就可以连接了。)来安装此虚拟机。

3)系统安装完成之后需要重启,此时需要回到linux系统终端来重启下虚拟机,需要用到virsh命令后面再说。

4)再次回到VNC viewer软件的页面打开,登陆进去并配置桥接。我在此使用的是默认的桥接网卡virbr0,所以其ip信息配置如下:

5)配置端口转发

iptables -t nat -A PREROUTING -p tcp --dport 210 -j DNAT --to-destination 192.168.122.10:22

iptables -t nat -A POSTROUTING -d 192.168.122.10 -p tcp --dport 22 -j SNAT --to 192.168.122.1

现在就可以使用了。可以通过ssh外网连接虚拟机。ssh -p 210 root@45.248.11.84

三、命令使用参数的说明

1.qemu-img磁盘管理命令

下面为常用的:

info  #查看镜像的信息

create  #创建镜像

check  #检查镜像

convert  #转化镜像的格式,(raw,qcow ……)

snapshot  #管理镜像的快照

rebase  #在已有的镜像的基础上创建新的镜像

resize  #增加或减小镜像大小

快照管理(在下面会讲到使用virsh命令来管理快照)

查看快照
qemu-img snapshot -l /opt/vimg/centos7.qcow2
注意:只有qcow2才支持快照

打快照
qemu-img snapshot -c booting centos7.qcow2

从快照恢复:
qemu-img snapshot -a 1 /opt/vimg/centos7.qcow2
然后从kvm启动这个虚拟机,会发现虚拟机又在打快照时的状态了

删除快照:
qemu-img snapshot -d 2 /opt/vimg/centos7.qcow2

格式转化命令:

#qemu-img convert -c -O qcow2 centos7.raw centos7.qcow2

qemu-img convert -c -f fmt -O out_fmt -o options fname out_fname

-c:采用压缩,只有qcow和qcow2才支持

-f:源镜像的格式,它会自动检测,所以省略之

-O 目标镜像的格式

-o 其他选项

fname:源文件

out_fname:转化后的文件

一般kvm使用两种格式

对于qcow2的格式

  • qcow2的snapshot,可以在镜像上做N多个快照
  • 更小的存储空间,即使是不支持holes的文件系统也可以(这下du -h和ls -lh看到的就一样了)
  • Copy-on-write support, where the image only represents changes made to an underlying disk image(这个特性SUN ZFS表现的淋漓尽致)
  • 支持多个snapshot,对历史snapshot进行管理
  • 支持zlib的磁盘压缩
  • 支持AES的加密

对于raw的格式:

  • KVM默认格式,原生特性好,但不支持snapshot
  • 支持转换成其它格式的虚拟机镜像对裸露的它来说还是很简单的(如果其它格式需要转换,有时候还是需要它做为中间格式

2.安装参数解释

--name  #虚拟机名字

--vcpus     #虚拟机cpu个数

--ram  #虚拟机内存,单位MB

--disk  #指定虚拟机img文件路径,如果虚拟机使用lvm分区,就指向到lvm的分区

size  #虚拟机文件大小,单位GB

format  #虚拟磁盘格式

bus  #虚拟机磁盘使用的总线类型,为了使虚拟机达到好的性能,这里使用virtio

cache  #虚拟机磁盘的cache类型

--network bridge  #指定桥接网卡

model  #网卡模式,这里也是使用性能更好的virtio

--cdrom  #指定安装文件的全路径

--graphics  #图形参数

--os-type  #系统类型

3.virsh命令使用

virsh list --all  #列出所有

virsh start server1  #开启

virsh shutdown server1  #关机

virsh destroy server1  #强制

virsh undefine server1  #删除  以上三个命令为删除虚拟机的操作步骤,彻底删除可另外删除磁盘qcow2和raw文件。

virsh suspend server1  #挂起

virsh resume server1  #恢复

virsh autostart server1  #自启

virsh autostart --disable server1  #去掉自启

virsh dumpxml server1  #得到配置文件

virsh edit server1 修改server1KVM的配置文件,效果等于先dumpxml,然后vi xml,最后define该xml文件(建议关机修改,修改完virsh define防止不生效)

virsh console <虚拟机名称> # 连接虚拟机(需要安装virt-manager图形化管理工具并且系统本身也要装了图形化。不然会一直卡在界面,按CTRL+Shift+5退出卡住的界面)

另外一些对内存和cpu等的操作以下。

四、kvm常用操作

1.查看虚拟机信息(三种角度方式)

#virsh dumpxml node-1 | head -n 10

#virsh dominfo node-1

#qemu-img info centos7.raw

显示虚拟机内存和cpu的使用情况

#yum install virt-top -y

#virt-top

2.在线调整虚拟机内存(增大或减小)
#调整为4G
virsh setmem node-2 4G

#能够在线调整的最大内存不能超过为虚拟机分配的最大内存(上面xml文件中设置的最大为4G),否则需要关闭虚拟机上调最大内存(可以关机之后直接修改xml文件,也可以通过命令来修改最大内存)。如下:

#virsh shutdown node-2

#virsh setmaxmem --size 8G node-2

#virsh start node-2

#virsh dominfo | grep mem 再次查看maxmem和mem,就可以在线调整内存了。

3.在线调整虚拟机CPU(只能增大,不能减小)
virsh setvcpus server1 8
#同样,能够动态调整的最大VCPU个数也不能超过为虚拟机设置的最大VCPU数量(关机之后直接修改xml文件即可调整)

4.在线添加硬盘
#添加qcow2格式硬盘
#创建qcow2格式的新磁盘,大小为40G
qemu-img create -f qcow2 /data/node1-add1.disk 40G
virsh attach-disk node-1 /data/node1-add1.disk vdb --cache none --subdriver qcow2 --config --persistent
#虚拟机根磁盘为vda,因此这里使用vdb表示新添加磁盘
#--config 参数同时更新虚拟机xml文件,确保重启后依然生效

#添加raw格式硬盘
#创建raw格式的新磁盘,大小为40G
qemu-img create -f raw /data/node1-add2.disk 40G
virsh attach-disk node-1 /data/node1-add2.disk vdc --cache none --subdriver raw --config --persistent

#查看虚拟机所有磁盘
virsh domblklist node-2

5.在线移除硬盘
virsh detach-disk node-1 vdb

6.将新添磁盘加入逻辑卷(我在此处使用node-2为例)

1)首先为node-2创建磁盘并添加

2)然后在node-2虚拟机上fdisk /dev/vdb创建分区(以下操作都在node-2虚拟机上)

fdisk -l可以查看创建好的

3)#加入逻辑卷

#vgextend centos /dev/vdb1

#lvextend -l +100%FREE /dev/mapper/centos-root

#resize2fs /dev/mapper/centos-root

4)此时使用命令 xfs_growfs /dev/mapper/centos-root 即可看到磁盘已经扩充完毕

7.在线添加网卡

virsh attach-interface --domain node-1 --type bridge --source virbr0 --model virtio --persistent
#--type bridge: 虚拟机使用桥接模式
#--source virbr0 指定使用的网桥

#查看新添加的网卡
virsh domiflist node-1

8.根据mac地址移除网卡

virsh detach-interface node-1 bridge 52:54:00:6f:0a:da --persistent

9.在线添加光盘
virsh attach-disk node-1 /data/iso/CentOS-6.4-x86_64-bin-DVD1.iso vdd

10.克隆虚拟机

virt-clone 参数介绍
--connect=URI 连接到虚拟机管理程序 libvirt 的URI。
-o 原始虚拟机名称 原始虚拟机名称,必须为关闭或者暂停状态。
-n 新虚拟机名称 --name 新虚拟机名称。
--auto-clone 从原来的虚拟机配置自动生成克隆名称和存储路径。
-u NEW_UUID, --uuid=NEW_UUID 克隆虚拟机的新的UUID,默认值是一个随机生成的UUID。
-m NEW_MAC, --mac=NEW_MAC 设置一个新的mac地址,默认为随机生成 MAC。
-f NEW_DISKFILE, --file=NEW_DISKFILE 为新客户机使用新的磁盘镜像文件地址。
--force-copy=TARGET 强制复制设备。
--nonsparse 不使用稀疏文件复制磁盘映像。

#virt-clone -o node-2 -n node-2.1 -f /opt/vimg/centos7_clone.qcow2

# 手动克隆
1)复制xml配置文件
2)复制img文件
3)更改xml配置
4)virsh define定义配置文件

11.使用virsh命令管理快照

同样的此快照也是支持qcow2磁盘格式的,不是此格式需要先转换格式。

virsh snapshot-create node-2  #创建快照

virsh snapshot-list  node-2  #查看快照

virsh snapshot-revert node-2 1551277410  #恢复快照,数字为快照的TAG,可通过上面查看快照命令知晓

virsh snapshot-current node-2  #查看最新的快照版本

virsh snapshot-delete  node-2   1551277410  #删除

virsh snapshot-create-as --domain node-2 --name webserver_snap  #对快照命名

以上。

KVM的安装使用的更多相关文章

  1. linux中kvm的安装及快照管理

    一.kvm的安装及状态查看 1.安装软件 yum -y install kvm virt-manager libvirt2.启动libvirtd 报错,升级device-mapper-libs yum ...

  2. 在 KVM 上安装 Win7 虚拟机

    之前都是在用Linux 虚机,现在有需要用到Win7 虚机,才发现在 KVM 上安装 Win7 的过程远比想象中的复杂.本文就把其过程做个简单总结. 1. 在 Virtual Machine Mana ...

  3. kvm虚拟机安装

    KVM虚拟化技术介绍 概述 KVM是基于内核的虚拟化技术(Kernel-based Virtual Machine),于2007年的Linux 2.6.20被合并进Linux内核.KVM要求CPU支持 ...

  4. 烂泥:KVM中安装Windows Server 2008 R2系统

    本文由秀依林枫提供友情赞助,首发于烂泥行天下. 在前一篇文章中,我介绍了有关在KVM中的安装Centos系统.接下来,就来介绍如何在KVM中安装Windows系统. 注意:在此我安装的是windows ...

  5. centos vmware centos6.6 64位 kvm虚拟化安装配置 第四十二节课

    centos vmware centos6.6 64位 kvm虚拟化安装配置     第四十二节课 上半节课 下半节课 f

  6. web管理kvm ,安装webvirtmgr

    原创博文安装配置KVM http://www.cnblogs.com/elvi/p/7718574.htmlweb管理kvm http://www.cnblogs.com/elvi/p/7718582 ...

  7. KVM 虚拟机 安装配置

    原创博文安装配置KVM http://www.cnblogs.com/elvi/p/7718574.htmlweb管理kvm http://www.cnblogs.com/elvi/p/7718582 ...

  8. Centos 6.7 KVM下安装windows 7系统

    装windows 虚拟机之前你需要做以下准备工作:A.下载windows 镜像文件和 windows 的驱动iso 文件到本地,然后上传至服务器的某个目录(当然你也可以直接在服务器上下载):B.你本地 ...

  9. kvm的安装使用技巧

    KVM参考网址 http://www.server110.com/kvm/201403/8321.html http://www.2cto.com/os/201511/451650.html http ...

  10. KVM虚拟机安装报错 KVM is not available

    在linux系统上使用kvm安装系统时,如果你的cpu不支持虚拟化技术那么可能会报以下错误: Warning:KVM is not available. This may mean the KVM p ...

随机推荐

  1. DocX开源WORD操作组件的学习系列二

    DocX学习系列 DocX开源WORD操作组件的学习系列一 : http://www.cnblogs.com/zhaojiedi1992/p/zhaojiedi_sharp_001_docx1.htm ...

  2. docker 常用命令和使用

    首先安装Docker CE 在ubantu上,参照https://docs.docker.com/install/linux/docker-ce/ubuntu/#set-up-the-reposito ...

  3. Lambda in Java VS in C#

    核心+变化 “凡是钱能解决的问题,就不是大问题.有很多问题是钱无法解决的,比如生老病死,比如不再相爱.”,看过<蜗居>的朋友一眼就能认出来.虽然这部电视剧讲的是chugui,但是毫无违和感 ...

  4. javascript入门篇(一)

    未定义:undefined 布尔类型值:true,false 判断类型:typeof() 绝对值:Math.abs(-1) 声明常量:const   声明变量:var 小数两值互换如果出现问题,可以通 ...

  5. Haskell复习笔记(二)

    Haskell中的递归 递归就是定义函数以调用自身的方式,关于递归解决问题的实例有很多,如斐波那契数列,还有汉诺塔问题,递归也正是Haskell中用来解决循环问题的关键. 自定义maxinum函数 m ...

  6. 【Config】类库读取自己的配置文件,配置文件的扩展

    我们在项目中一般都是使用统一的项目文件配置,所有的配置和自定义的字段都写在一个web.config或者App.config文件中.一般平时我们也没有发现问题,确实这么写没有问题,但是就是如果写的多了就 ...

  7. [leetcode](4.21)4. 有效子数组的数目

    给定一个整数数组 A,返回满足下面条件的 非空.连续 子数组的数目: 子数组中,最左侧的元素不大于其他元素. 示例 1: 输入:[1,4,2,5,3] 输出:11 解释:有 11 个有效子数组,分别是 ...

  8. LeetCode 176. 第二高的薪水(MySQL版)

    0.前言 最近刷LeetCode 刷数据库题目 由于数据库课上的是SQL,而MySQL有许多自己的函数的,怕把刚学会的函数忘记 特在此记录! 1.题目 编写一个 SQL 查询,获取 Employee ...

  9. Python 面向对象之反射

    Python 面向对象之反射 TOC 什么是反射? hasattr getattr setattr delattr 哪些对象可以使用反射 反射的好处 例子一 例子二 什么是反射? 程序可以访问.检查和 ...

  10. css中关于table的相关设置

    一.设置好看的单边框表格 1.一种实现方式 分别给table标签和td标签设置不在同一方向的border属性,如下table设置‘左上’边框,td设置‘右下’边框.其他设置方式同样可以实现. tabl ...