centos 7.2 kvm虚拟化配置以及常用操作

1.开始安装kvm
a.
检查你的系统是否支持虚拟化
grep -Ei 'vmx|svm' /proc/cpuinfo
如果有输出内容,则支持,其中intelcpu支持会有vmxamd cpu支持会有svm

b.
通过yum安装虚拟化的软件包
yum install -y kvmvirt-*libvirtbridge-utils qemu-img
说明:
kvm:
软件包中含有KVM内核模块,它在默认linux内核中提供kvm管理程序
libvirts:
安装虚拟机管理工具,使用virsh等命令来管理和控制虚拟机。
bridge-utils:
设置网络网卡桥接。
virt-*:
创建、克隆虚拟机命令,以及图形化管理工具virt-manager
qemu-img:
安装qemu组件,使用qemu命令来创建磁盘等。




c.
检查kvm模块是否加载
lsmod |grep kvm
正常应该是:
kvm_intel 554963
kvm 3377721 kvm_intel

如果没有,需要执行
modprobe kvm-intel
还没有就重启一下试试

d.
配置网卡
cd /etc/sysconfig/network-scripts/
cp ifcfg-eth0 ifcfg-br0
分别编辑eth0br0
ifcfg-eth0
改成如下:
DEVICE=eth0
HWADDR=00:0C:29:55:A7:0A
TYPE=Ethernet
UUID=2be47d79-2a68-4b65-a9ce-6a2df93759c6
ONBOOT=yes
NM_CONTROLLED=yes
BOOTPROTO=none
BRIDGE=br0


ifcfg-br0
改成如下:
DEVICE=br0
#HWADDR=00:0C:29:55:A7:0A
TYPE=Bridge
#UUID=2be47d79-2a68-4b65-a9ce-6a2df93759c6
ONBOOT=yes
NM_CONTROLLED=yes
BOOTPROTO=static
IPADDR=192.168.11.17
NETMASK=255.255.255.0
GATEWAY=192.168.11.1
DNS1=202.106.0.20

说明:我的虚拟机是桥接模式,所以设置br0ip和我的真机同样的网段,包括网关也是我路由器的ip,大家可以根据自己的环境去配置,目的是为了让虚拟机可以上网。

/etc/init.d/network restart
查看网卡如下:
br0 Linkencap:EthernetHWaddr 00:0C:29:55:A7:0A
inetaddr:192.168.11.17Bcast:192.168.11.255Mask:255.255.255.0
inet6addr: fe80::20c:29ff:fe55:a70a/64 Scope:Link
UPBROADCAST RUNNING MULTICASTMTU:1500Metric:1
RXpackets:141326 errors:0 dropped:0 overruns:0 frame:0
TXpackets:90931 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RXbytes:456024940 (434.8 MiB)TX bytes:10933593 (10.4 MiB)

eth0 Linkencap:EthernetHWaddr 00:0C:29:55:A7:0A
inet6addr: fe80::20c:29ff:fe55:a70a/64 Scope:Link
UPBROADCAST RUNNING MULTICASTMTU:1500Metric:1
RXpackets:341978 errors:0 dropped:0 overruns:0 frame:0
TXpackets:90946 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RXbytes:468848861 (447.1 MiB)TX bytes:10934699 (10.4 MiB)

lo Linkencap:Local Loopback
inetaddr:127.0.0.1Mask:255.0.0.0
inet6addr: ::1/128 Scope:Host
UPLOOPBACK RUNNINGMTU:65536Metric:1
RXpackets:0 errors:0 dropped:0 overruns:0 frame:0
TXpackets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RXbytes:0 (0.0 b)TX bytes:0 (0.0 b)

virbr0 Linkencap:EthernetHWaddr 52:54:00:14:EF:D5
inetaddr:192.168.122.1Bcast:192.168.122.255Mask:255.255.255.0
UPBROADCAST RUNNING MULTICASTMTU:1500Metric:1
RXpackets:0 errors:0 dropped:0 overruns:0 frame:0
TXpackets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RXbytes:0 (0.0 b)TX bytes:0 (0.0 b)



e.
启动或重启libvirtd服务和messagebus 服务
/etc/init.d/libvirtd start
/etc/init.d/messagebus restart

此时可以查看网络接口列表
brctl show
结果如下:
bridge name bridgeid STPenabled interfaces
br0 8000.000c2955a70a no eth0
virbr0 8000.52540014efd5 yes virbr0-nic


2.
创建虚拟机
mkdir /data/ //
创建一个存储虚拟机虚拟磁盘的目录,该目录所在分区必须足够大

virt-install \
--nameaming1 \
--ram 512 \
--disk path=/data/aming1.img,size=30 \
--vcpus 1 \
--os-type linux \
--os-variant rhel6 \
--network bridge=br0 \
--graphics none \
--console pty,target_type=serial \
--location'http://mirrors.163.com/centos/6.7/os/i386/' \
--extra-args 'console=ttyS0,115200n8 serial'


说明:
--name
指定虚拟机的名字
--ram
指定内存分配多少
--disk path
指定虚拟磁盘放到哪里,size=30 指定磁盘大小为30G,这样磁盘文件格式为rawraw格式不能做快照,后面有说明,需要转换为qcow2格式,如果要使用qcow2格式的虚拟磁盘,需要事先创建qcow2格式的虚拟磁盘。参考http://www.361way.com/kvm-qcow2-preallocation-metadata/3354.html 示例:qemu-img create -f qcow2 -opreallocation=metadata/data/test02.img 10G;

--diskpath=/data/test02.img,format=qcow2,size=10,bus=virtio
--vcpus
指定分配cpu几个
--os-type
指定系统类型为linux
--os-variant
指定系统版本
--network
指定网络类型
--graphics
指定安装通过哪种类型,可以是vnc,也可以没有图形,在这里我们没有使用图形直接使用文本方式
--console
指定控制台类型
--location
指定安装介质地址,可以是网络地址,也可以是本地的一个绝对路径,(--location '/mnt/',其中/mnt/下就是我们挂载的光盘镜像mount /dev/cdrom /mnt)如果是绝对路径,

已有本地镜像可以

virt-install \

--name test02 \

--ram 512 \

--diskpath=/data/kvm/test02.qcow2,bus=virtio \

--vcpus 1 \

--os-type linux \

--os-variant rhel7 \

--network bridge=br0 \

--graphics none \

--console pty,target_type=serial\

--location '/data/CentOS.iso' \

--extra-args'console=ttyS0,115200n8 serial'

会出现文本方式的安装界面,选择时区,安装包的选择(默认 Minial install)、root密码设置,创建新用户,以及网络配置。在此没看见有,注意设置一下DNS。

最后安装完,reboot就进入刚刚创建的虚拟机了。要想退回到宿主机,ctrl] 即可。

virsh list 可以列出当前的子机列表。

virsh start test01 启动test01

virsh console test01可以进入指定的子机

3. 克隆虚拟机
virt-clone --original test01 --name template--file /data/clone1.img
如果子机test01还未关机,则需要先关机,否则会报错:
ERROR
必须暂停或者关闭有要克隆设备的域。
关闭子机的方法是:
virsh shutdown test01

说明:默认,我们没有办法在宿主机直接shutdown自己,我们需要借助于子机上的acpid服务才可以,这个服务说白了就是让宿主机可以去调用子机的电源关闭的接口。所以,子机上需要安装并启动acpid服务。
先登录子机:
virsh console test01
登录后,安装acpid服务:
yum install -y acpid
启动:
/etc/init.d/acpid start
ctrl ] 退出来
此时再执行 virsh shutdowntest01 就可以啦。

克隆完后,virsh list all 就会发现clone1 这个子机,通过命令
virsh start clone1
可以开启该子机。

4. virsh 常用操作
a.
开启子机
virsh start test01
也可以在开启的同时连上控制台
virsh start test01 --console

b.
关闭子机
virsh shutdown test01
(这个需要借助子机上的acpid服务)
另外一种方法是
virsh destroy test01

c.
让子机随宿主机开机自动启动
virsh autostart test01
解除自动启动
virsh autostart --disable test01

d.
列出子机
virsh list//
只能列出启动的子机
virsh list --all//
可以把所有子机都列出来

e.
删除子机
virsh destroy clone1
virsh undefine clone1
rm -f /data/clone1.img

f.
挂起子机
virsh suspend test01

h.
恢复子机
virsh resume test01

5. 快照管理
a.
创建快照
virsh snapshot-create test01
会报错:
unsupported configuration: internal snapshot fordisk vda unsupported for storage type raw
这是因为raw格式的镜像不能做快照,所以需要先转换一下格式

b.
磁盘镜像转换格式
先查看当前子机磁盘镜像格式
qemu-img info /data/test01.img
结果是:
image: /data/test01.img
file format: raw
virtual size: 30G (32212254720 bytes)
disk size: 1.6G


raw格式转换为qcow格式(其实是复制了一份):
qemu-img convert -f raw -O qcow2 /data/test01.img/data/test01.qcow2

qemu-img info /data/test01.qcow2 //
再次查看格式,结果如下
image: /data/test01.qcow2
file format: qcow2
virtual size: 30G (32212254720 bytes)
disk size: 1.1G
cluster_size: 65536


现在我们还需要编辑子机配置文件,让它使用新格式的虚拟磁盘镜像文件
virsh edit test01//
这样就进入了该子机的配置文件(/etc/libvirt/qemu/test01.xml),跟用vim编辑这个文件一样的用法
需要修改的地方是:
<driver name='qemu'type='raw' cache='none'/>
<sourcefile='/data/test01.img'/>

改为:
<driver name='qemu'type='qcow2' cache='none'/>
<sourcefile='/data/test01.qcow2'/>


c.
继续创建快照
virsh snapshot-create test01//
这次成功了,提示如下
Domain snapshot 1437248443 created


列出快照:
virsh snapshot-list test01

查看当前子机的快照版本:
virsh snapshot-current test01

test01
子机的快照文件在/var/lib/libvirt/qemu/snapshot/test01/目录下


d.
恢复快照
首先需要关闭子机
virsh destroy test01

确认子机是否关闭
virsh domstate test01
关闭

vish snapshot-list test01//
结果是
名称 Creation Time 状态
------------------------------------------------------------
1437248443 2015-07-19 03:40:43 +0800 shutoff
1437248847 2015-07-19 03:47:27 +0800 running


virsh snapshot-revert test011437248443

e.
删除快照
virsh snapshot-delete test011437248847

6. 磁盘扩容

a.
对于raw格式的虚拟磁盘扩容

qemu-img info /data/kvm/test03.img //
本身只有9G

1.image: /data/kvm/test03.img

2.file format: raw

3.virtual size: 9.0G (9663676416 bytes)

4.disk size: 1.1G


qemu-img resize /data/kvm/test03.img +2G

qemu-img info /data/kvm/test03.img //
现在增加了2G

3.virtual size: 11G (11811160064 bytes)

4.disk size: 1.1G

5.


virsh destroy test03//关闭test03虚拟机
virsh start test03//
开启
virsh console test03//
进入虚拟机

fdisk -l
查看已经磁盘分区已经增加
[root@localhost ~]# fdisk -l

但是磁盘挂载的空间并没有增加
[root@localhost ~]# df -h

Filesystem SizeUsed Avail Use%Mounted on

/dev/mapper/VolGroup-lv_root

6.5G579M5.6G10% /

tmpfs 250M 0250M 0%/dev/shm

/dev/vda1 477M26M427M 6% /boot


因为新增加的空间还没有划分使用。所以要继续分区:
[root@localhost ~]# fdisk /dev/vda

1.WARNING: DOS-compatible mode is deprecated.It's strongly recommended to

2. switch off the mode (command 'c') and change display units to

3. sectors (command 'u').

4.

5.Command (m for help): p

6.

7.Disk /dev/vda: 11.8 GB,11811160064 bytes

8.16 heads,63 sectors/track,22885 cylinders

9.Units = cylinders of 1008 * 512 = 516096bytes

10.Sector size(logical/physical): 512 bytes / 512 bytes

11.I/O size(minimum/optimal): 512 bytes / 512 bytes

12.Diskidentifier: 0x000099f3

13.

14.Device Boot Start End BlocksIdSystem

15./dev/vda1* 3 1018 51200083Linux

16.Partition 1does not end on cylinder boundary.

17./dev/vda2 1018 <font color="#ff0000">16645</font>7875584 8eLinux LVM

18.Partition 2does not end on cylinder boundary.

19.

20.Command (mfor help):<font color="#ff0000"> n</font>

21.Commandaction

22.e extended

23.p primary partition (1-4)

24.p

25.Partitionnumber (1-4): <font color="#ff0000">3</font>

26.Firstcylinder (1-22885,default 1): <fontcolor="#ff0000">16646</font>

27.Lastcylinder,+cylinders or +size{K,M,G} (16646-22885,default 22885):

28.Usingdefault value 22885

29.

30.Command (mfor help): p

31.

32.Disk/dev/vda: 11.8 GB,247);">33.16 heads,63sectors/track,247);">34.Units =cylinders of 1008 * 512 = 516096 bytes

35.Sector size(logical/physical): 512 bytes / 512 bytes

36.I/O size(minimum/optimal): 512 bytes / 512 bytes

37.Diskidentifier: 0x000099f3

38.

39.Device Boot Start End BlocksIdSystem

40./dev/vda1* 3 1018 51200083Linux

41.Partition 1does not end on cylinder boundary.

42./dev/vda2 1018 16645 7875584 8eLinux LVM

43.Partition 2does not end on cylinder boundary.

44.<fontcolor="#ff0000">/dev/vda3 16646 228853144960 83Linux</font>

45.

46.Command (mfor help): w

47.Thepartition table has been altered!

48.

49.Callingioctl() to re-read partition table.

50.

51.WARNING:Re-reading the partition table failed with error 16: Device or resource busy.

52.The kernelstill uses the old table. The new table will be used at

53.the nextreboot or after you run partprobe(8) or kpartx(8)

54.Syncingdisks.


然后再把这个/dev/vda3 加入到lvm里面去:

ls/dev/vda3
如果没有这个分区,需要重启一下。

[root@localhost ~]#
pvcreate/dev/vda3

1.<spanstyle="line-height: 1.5; background-color: rgb(247,247);">Physical volume "/dev/vda3" successfullycreated</span>


[root@localhost ~]# pvs

1.PV VG FmtAttr PSize PFree

2./dev/vda2 <fontcolor="#ff0000"> VolGroup</font> lvm2a--7.51g 0

3./dev/vda3 lvm2 ---3.00g 3.00g


[root@localhost ~]#vgextendVolGroup /dev/vda3

1.Volume group "VolGroup"successfully extended


[root@localhost ~]# vgs

1.VG #PV #LV #SNAttr VSize<fontcolor="#ff0000">VFree</font>

2.VolGroup 22 0 wz--n- 10.50g <fontcolor="#ff0000">3.00g</font>


[root@localhost ~]# lvs

1.LV VG Attr LSize PoolOrigin Data%Meta%Move Log Cpy%Sync Convert

2.lv_root VolGroup-wi-ao---- 6.71g

3.lv_swap VolGroup -wi-ao----816.00m


[root@localhost ~]# lvextend -l+100%FREE/dev/VolGroup/lv_root

1.Size of logical volume VolGroup/lv_rootchanged from 6.71 GiB (1718 extents) to 9.71 GiB (2485 extents).

2.Logical volume lv_rootsuccessfully resized


[root@localhost ~]# df -h

1.Filesystem SizeUsed Avail Use% Mounted on

2./dev/mapper/VolGroup-lv_root

3. 6.5G618M5.6G10% /

4.tmpfs 250M0250M 0% /dev/shm

5./dev/vda1 477M 26M427M 6% /boot

resize2fs1.resize2fs 1.41.12 (17-May-2010)

2.Filesystem at /dev/VolGroup/lv_root ismounted on /; on-line resizing required

3.old desc_blocks = 1,new_desc_blocks = 1

4.Performing an on-line resize of/dev/VolGroup/lv_root to 2544640 (4k) blocks.

5.The filesystem on /dev/VolGroup/lv_root isnow 2544640 blocks long.

3. <fontcolor="#ff0000">9.5G</font>618M8.4G 7% /


另外,如果是增加磁盘,思路是:
创建磁盘: qemu-img create -fraw/data/kvm/test03_2.img 5G
关闭虚拟机: virsh destroy test03
编辑配置文件: virsh edittest03增加如下:

1.<disk type='file'device='disk'>

2.<driver name='qemu'type='raw' cache='none'/>

3.<source file='/data/kvm/test03_2.img'/>

4.<target dev='vdb'bus='virtio'/>

5.</disk>


开启虚拟机:virsh start test03
进入虚拟机:virsh console test03
分区: fdisk /dev/vdb
格式化(略)
挂载(略)
当然也可以按照上面的思路把 /dev/vdb1 加入到 lvm里面去


b. qcow2
格式
步骤基本上和raw一样。如果提示 This image format doesnot support resize,检查一下你qemu-img create的时候,是否有加preallocation=metadata 选项,如果有,就不能resize了。

7. 调整cpu和内存查看子机配置:
virsh dominfo test02
virsh edittest02
修改:
<memoryunit='KiB'>524288</memory>
<currentMemoryunit='KiB'>524288</currentMemory>
<vcpuplacement='static'>1</vcpu>

为:
<memoryunit='KiB'>624288</memory>
<currentMemoryunit='KiB'>624288</currentMemory>
<vcpuplacement='static'>2</vcpu>


重启虚拟机:
virsh destroy test02
virsh start test02

8. 不重启虚拟机在线增加网卡
virsh domiflist test02
查看test02子机的网卡列表
virsh attach-interface test02 --type bridge--source br0 //
命令行增加一块网卡
virsh dumpxml test02 >/etc/libvirsh/qemu/test02.xml //
命令行增加的网卡只保存在内存中,重启就失效,所以需要保存到配置文件中,其中/etc/libvirsh/qemu/test02.xml test02子机的配置文件
virsh console test02 //
进入虚拟机后,执行
ifconfig -a
发现多了一个网卡eth1

9. 虚拟机迁移

该方式要确保虚拟机是关机状态。
virsh shutdown test02
virsh dumpxml test02 >/etc/libvirt/qemu/test03.xml//
如果是远程机器,需要把该配置文件拷贝到远程机器上
virsh domblklist test02//
查看test02子机的磁盘所在目录
Target Source
------------------------------------------------
vda /data/add1.qcow2
rsync -av /data/add1.qcow2/data/test03.qcow2 //
如果是迁移到远程,则需要把该磁盘文件拷贝到远程机器上
vi /etc/libvirt/qemu/test03.xm//
因为是迁移到本机,配置文件用的是test02子机的配置,不改会有冲突,所以需要修改该文件,如果是远程机器不用修改
修改domname:
<name>test03</name>
修改uuid(随便更改一下数字,位数不要变)
<uuid>77bb10bd-3ad8-8899-958d-756063002969</uuid>
修改磁盘路径:
<disk type='file'device='disk'>
<driver name='qemu'type='raw' cache='none'/>
<source file='
/data/test03.qcow2'/>
<target dev='vda'bus='virtio'/>
<address type='pci'domain='0x0000' bus='0x00' slot='0x05' function='0x0'/>
</disk>

virsh list --all //
会发现新迁移的test03子机

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


linux下开机自启: 在/etc/init.d目录下新建文件elasticsearch 并敲入shell脚本: 注意, 前两行必须填写,且要注释掉。 第一行为shell前行代码,目的告诉系统使用shell。 第二行分别代表运行级别、启动优先权、关闭优先权,且后面添加开机服务会用到。 shell脚本
1、因为在centos7中/etc/rc.d/rc.local的权限被降低了,所以需要赋予其可执行权 chmod +x /etc/rc.d/rc.local 2、赋予脚本可执行权限假设/usr/local/script/autostart.sh是你的脚本路径,给予执行权限 chmod +x /usr
最简单的查看方法可以使用ls -ll、ls-lh命令进行查看,当使用ls -ll,会显示成字节大小,而ls- lh会以KB、MB等为单位进行显示,这样比较直观一些。 通过命令du -h –max-depth=1 *,可以查看当前目录下各文件、文件夹的大小,这个比较实用。 查询当前目录总大小可以使用d
ASP.NET Core应用程序发布linux在shell中运行是正常的。可一但shell关闭网站也就关闭了,所以要配置守护进程, 用的是Supervisor,本文主要记录配置的过程和过程遇到的问题 安装Supervisor&#160;1 yum install python-setuptools
设置时区(CentOS 7) 先执行命令timedatectl status|grep &#39;Time zone&#39;查看当前时区,如果不是时区(Asia/Shanghai),则需要先设置为中国时区,否则时区不同会存在时差。 #已经是Asia/Shanghai,则无需设置 [root@xia
vim&#160;/etc/sysconfig/network-scripts/ifcfg-eth0 BOOTPROTO=&quot;static&quot; ONBOOT=yes IPADDR=192.168.8.106 NETMASK=255.255.252.0 GATEWAY=192.168.
一、安装gcc依赖 由于 redis 是用 C 语言开发,安装之前必先确认是否安装 gcc 环境(gcc -v),如果没有安装,执行以下命令进行安装 [root@localhost local]# yum install -y gcc 二、下载并解压安装包 [root@localhost local
第一步 On CentOS/RHEL 6.*: $ sudo rpm -Uvh http://li.nux.ro/download/nux/dextop/el6/x86_64/nux-dextop-release-0-2.el6.nux.noarch.rpm On CentOS/RHEL 7: $
/// &lt;summary&gt; /// 取小写文件名后缀 /// &lt;/summary&gt; /// &lt;param name=&quot;name&quot;&gt;文件名&lt;/param&gt; /// &lt;returns&gt;返回小写后缀,不带“.”&lt;/ret
which nohup .bash_profile中并source加载 如果没有就安装吧 yum provides */nohup nohup npm run start &amp; nohup ./kibana &amp;
1.1 MySQL安装 1.1.1 下载wget命令 yum -y install wget 1.1.2 在线下载mysql安装包 wget https://dev.mysql.com/get/mysql57-community-release-el7-8.noarch.rpm 1.1.3 安装My
重启 reboot shutdown -r now init 6 关闭 init 0 shutdown -h now shutdown -h 20:25 #8点25关机查看内存 free CPU利用率 top 日期 date 设置时间 date 033017002015 #月日时间年 日历 cal
1、firewalld的基本使用 启动: systemctl start firewalld 关闭: systemctl stop firewalld 查看状态: systemctl status firewalld 开机禁用 : systemctl disable firewalld 开机启用 :
1 下载并安装MySQL官方的&#160;Yum Repository wget -i -c http://dev.mysql.com/get/mysql57-community-release-el7-10.noarch.rpm 使用上面的命令就直接下载了安装用的Yum Repository,大概
CentOS6.x CentOS6中转用Upstrat代替以前的init.d/rcX.d的线性启动方式。 一、相关命令 通过initctl help可以查看相关命令 [root@localhost ~]# initctl help Job commands: start Start job. sto
1、使用命令:df -lk 找到已满磁盘 2、使用命令:du --max-depth=1 -h 查找大文件,删除
ifconfig:查看网卡信息 网卡配置文件位置: /etc/sysconfig/network-scripts/文件夹 nmtui:配置网卡 netstat -tlunp:查看端口信息 端口信息存储位置: /etc/services文件 route:查看路由信息 wget:下载网路文件,例如 wg
ps -ef:查看所有进程,&#160;ps -ef |grap firewalld 查看与firewalld相关的进程 which :查看进程:which firewalld kill 进程id:杀掉进程 kill 640,强制杀:kill -9 640 man:查看帮助,例如 man ps 查看
useradd:添加用户 useradd abc,默认添加一个abc组 vipw:查看系统中用户 groupadd:添加组groupadd ccna vigr:查看系统中的组 gpasswd:将用户abc添加到ccna组 gpasswd -a abc ccna groups abc:查看用户abc属