常用安装管理

创建虚拟机的桥接网卡,并将原来物理网卡上IP自动添加到桥接网卡上:

1
virsh iface-bridge eth0  br0

输入此命令后,如果没有报错,网络会断开,需要重启网卡,br0就自动添加上了。

如果要删除桥接网卡操作可以使用如下命令:

1
virsh iface-unbridge br0


不创建虚拟磁盘,一次性创建KVM虚拟机(默认为qcow2磁盘格式,网络为桥接模式,在此前最好安装virt-manager):

1
2
3
4
virt- install   --virt- type  kvm --name CentOS-7-x86_64 -- ram  2048 \
  -vcpus=1 -s 20 -c  /vm/iso/CentOS-7-x86_64-DVD-1511 .iso --hvm  \
   --os- type =linux -f  /vm/CentOS-7-x86_64-tmp .img --graphics vnc,listen=0.0.0.0 \
    --noautoconsole

查看镜像信息:

1
2
3
4
5
6
# qemu-img info CentOS-6.5-x86_64.raw
  
image: CentOS-6.5-x86_64.raw
file  format : raw
virtual size: 5.0G (5368709120 bytes)
disk size: 939M

把文件从qcow2格式装换成raw格式(转换之后需要修改对应xml文件):

1
qemu-img  convert -f qcow2 -O raw  CentOS-6.img CentOS-6.raw

 转换之后需要修改xml中对应的镜像路径,格式。


本地虚拟机克隆

1、首先关闭虚拟机,虚拟机运行状态下无法clone

2、以CentOS-6-x86_64为源镜像,克隆一个新的CS6的镜像,新镜像磁盘为CS-6.raw

1
# virt-clone -o CentOS-6-x86_64 -n CS6 -f /vm/image/CS-6.raw

3. 对比新镜像和源镜像的xml文件,发现自动更新了镜像路径和MAC地址信息,其他不变,同时,新镜像自动加入了虚拟机列表 virsh list --all。

4、启动配置即可。


通过复制配置文件与磁盘文件的虚拟机地址克隆(适用于异机的迁移)

1、备份出需要迁移的虚拟机xml文件

1
virsh  dumpxml CentOS-6-x86_64 >  /vm/image/CS-6-new .xml

2、使用vim编辑修改此xml文件中的name,uuid,mac address 虚拟磁盘路径source file,vnc端口等。

3、复制一份源镜像文件,并重命名为新镜像名称

1
cp  CentOS-6-x86_64.raw  CS-6-new.raw

3、重新定义此xml文件:

1
virsh  define  /vm/image/CS-6-new .xml

4、启动虚拟机

1
virsh start CS-6-new

5、当发生UUID或者mac地址冲突的情况,先修改对应的xml文。启动虚拟机,配置网络并修改mac  地址,和xml文件中信息统一。

6、拷贝xml文件和镜像到另一台宿主机,修改xml文件中的souce file 路径,定义虚拟机并启动:

1
2
virsh  define  /vm/CS-6-new .xml
virsh start CS-6-new

7、启动如果报错:

error: Failed to start domain CS-6-new

error: unsupported configuration: guest and host CPU are not compatible: Host CPU does not provide required features: fma, movbe, fsgsbase, bmi1, avx2, smep, bmi2, erms, invpcid

这是由于CPU信息不兼容造成的,可以修改xml的配置文件,使其兼容:

1
2
3
4
5
6
virsh edit CS-6-new
 
     <cpu mode 'custom'  match= 'exact' >                                 
         <model>qemu64< /model >                                        
         <feature name= 'svm'  policy= 'disable' />                       
     < /cpu >

8、启动虚拟机,配置IP地址,虚拟机迁移完成。

9、配置虚拟机开机自启动:

1
virsh  autostart CS-6-new

如果要禁用自启动:

1
virsh  autostart --disable CS-6-new



重新定义镜像(虚拟机重命名)

1、备份xml文件

1
virsh  dumpxml tomcat- test  > 1c4g100g.xml

2、修改xml文件中指定的镜像名称,虚拟机名称

1
2
3
4
5
# vim 1c4g100g.xml
 
<name>1c4g100g< /name >
...
< source  file = '/kvm/images/1c4g100g.img' />

3、修改镜像名称,删除旧的虚拟机配置,添加新的xml:

1
2
3
4
mv  tomcat- test .img  1c4g100g.img
virsh undefine  tomcat- test
virsh  define 1c4g100g.xml 
virsh start 1c4g100g


快照操作 (磁盘类型必须为qcow2格式)

1、创建虚拟机快照

1
virsh snapshot-create vm1-clone

不指定名称系统会默认命名为一个ID信息,可以通过快照信息查看。

或者指定快照名称:

1
virsh snapshot-create-as vm1-clone first_snap

2、查看虚拟机快照信息

1
virsh snapshot-list vm1-clone

3、查看虚拟机磁盘信息

1
qemu-img info  /vm-images/vm1-clone .img

4、查看当前快照信息

1
virsh snapshot-current vm1-clone

5、恢复指定的快照

1
virsh snapshot-revert vm1-clone  first_snap

6、删除指定的快照

1
virsh snapshot-delete vm1-clone first_snap


磁盘扩容

1、这里是对KVM虚拟机磁盘进行扩容,镜像格式为qcow2,对系统的根目录进行扩展,也可以对已有数据的数据盘进行扩展。

在对磁盘进行扩容时,先关闭虚拟机进行克隆备份

1
virt-clone -o jenkins-t -n jenkins-t-bak-clone -f  /data2/images/jenkins-t-bak-clone .img


2、对磁盘扩容:

1
qemu-img resize jenkins-t.img +200G

3、启动虚拟机,查看磁盘容量,显示扩容成功,如果没有变化,需要重启虚拟机:

1
2
3
4
5
6
7
8
fdisk   -l
 
Disk  /dev/sda : 322.1 GB, 322122547200 bytes, 629145600 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical /physical ): 512 bytes / 512 bytes
I /O  size (minimum /optimal ): 512 bytes / 512 bytes
Disk label  type : dos
Disk identifier: 0x000d9b2a

4、使用LVM系统工具进行扩展:

  •  首先创建一块新的分区:

       fdisk  /dev/hda

       n

       l        #选择逻辑分区,如果没有,则首先创建扩展分区,然后再添加逻辑分区(硬盘:最多四个分区P-P-P-P或P-P-P-E)

       6        #分区号(从5开始),/dev/hda6

       t      

       6

       8e   #分区类型8e表示LVM分区

       w        #写入分区表

       partprobe   #重读分区表

       mkfs.xfs  /dev/hda6 #格式化

       partx /dev/hda #查看当前硬盘的分区表及使用情况

  •   创建PV,扩容VG,LV

       pvcreate /dev/hda6

       vgdisplay #查看当前已经存在的VG信息,以存在VG:VolGroup00为例,默认为centos

       vgextend VolGroup00 /dev/hda6    #扩展VolGroup00  

       lvdisplay #查看已经存在的LV信息,以存在LV:LogVol01为例,默认为/dev/centos/root

       lvextend –L +200G /dev/VolGroup00/LogVol01 #扩展LV, 如果不使用+ 号,默认为总大小  

       xfs_growfs /dev/VolGroup00/LogVol01  #执行该重设大小,对于当前正在使用的LogVol01有效,此命令在CS7中使用,如果是CS6及其以下版本,使用 resize2fs /dev/VolGroup00/LogVol01

       df –h #查看挂载情况,已经扩容


挂载虚拟磁盘

如果要对虚拟机单独添加一块虚拟磁盘,可以使用如下方式:


  1. 创建磁盘,指定磁盘类型.文件存放位置和容量大小.

1
qemu-img create -f qcow2  /data/vm-disk/test1 .img 300G

 2. 将磁盘挂载到虚拟机,指定虚拟机名称,和磁盘路径,默认的挂载磁盘格式为raw,这里由于是qcow2格式,所以需要单独指定:

1
virsh attach-disk vm-test1 -- source  /data/vm-disk/test1 .img --driver qemu --subdriver qcow2 --target hdc --persistent

提示: 这里使用的 --persistent 参数会自动修改 虚拟机的xml配置文件,如果是使用的IDE方式,将不支持热插拔,只能先关闭虚拟机,再挂载磁盘。并且指定的磁盘名称不能当前的发生冲突。

也可以直接修改虚拟机的xml配置文件,在磁盘区域添加如下内容:

1
2
3
4
5
6
     <disk  type = 'file'  device= 'disk' >
       <driver name= 'qemu'  type = 'qcow2' />
       < source  file = '/data/vm-disk/test1.img' />
       <target dev= 'hdc'  bus= 'ide' />
       <address  type = 'drive'  controller= '0'  bus= '1'  target= '0'  unit= '0' />
     < /disk >


如果要卸载磁盘,执行:

1
virsh detach-disk vm-test1  /data/vm-disk/test1 .img --persistent


3. 虚拟机上格式化磁盘,并挂载:

1
2
3
4
5
6
# fdisk -l
Disk  /dev/sdb : 322.1 GB, 322122547200 bytes, 629145600 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical /physical ): 512 bytes / 512 bytes
I /O  size (minimum /optimal ): 512 bytes / 512 bytes
...
1
2
3
# mkfs.xfs /dev/sdb
# mkdir /data
# mount /dev/sdb /data/

4.将磁盘挂载信息写入配置文件:

1
2
3
4
5
6
# blkid
 
/dev/sdb : UUID= "c0034119-e36e-452d-8b65-4e5eb5ef4f56"  TYPE= "xfs" 
/dev/sda1 : UUID= "a648e395-cd58-4f33-8b4a-7245cbef4801"  TYPE= "xfs" 
/dev/sda2 : UUID= "PaJ9Dg-09L4-FDVU-Fio1-gPp6-Gc40-CicAz4"  TYPE= "LVM2_member" 
/dev/mapper/centos-root : UUID= "22f84b13-b958-4025-bfb9-91279727ba23"  TYPE= "xfs"
1
2
3
# vi /etc/fstab
#添加如下内容:
UUID= "c0034119-e36e-452d-8b65-4e5eb5ef4f56"  /data  xfs defaults 0 0