KVM命令行管理虚拟机——筑梦之路

#查看所有虚拟机

virsh list --all

#查看虚拟机信息概览

virsh dominfo 虚拟机名或虚拟机ID

#虚拟机镜像文件默认路径:/var/lib/libvirt/images/

磁盘镜像文件以qcow2、img、raw等格式后缀

磁盘镜像文件格式:
  虚拟机磁盘文件有raw、qcow2格式和qed(这种已经不用了)。qcow2格式是kvm支持的标准格式,raw格式为虚拟磁盘文件通用格式。raw格式性能最好,速度最快,其缺点是不支持一些新的功能,如镜像,Zlib磁盘压缩、AES加密、快照等,另外raw格式文件比qcow2格式文件大很多,将近15倍吧。而qcow2格式是支持快照模式,做快照要把它转换成qcow2格式。

#命令创建虚拟机示例

virt-install \        #创建命令 
-n kvm1 \          #虚拟机显示名(非虚拟机主机名)
-r 4096 \          #虚拟机内存大小 
--vcpus 2 \          #虚拟机cpu个数 
--disk path=/var/lib/libvirt/images/kvm1.qcow2,size=50,format=qcow2,bus=virtio \     #指定硬盘路径,大小,格式为qcow2,总线类型为virtio 
--location /root/iso/CentOS-7-x86_64-Minimal-2009.iso \    #系统安装iso路径 
--nographics \                    #不调用图形化界面 
--network network=default \                #网卡1指定网桥 
--network bridge=br0 \                #网卡2指定网桥 
--console pty,target_type=serial \          #console控制通道 
--extra-args 'console=ttyS0,115200n8 serial'      #文本输出 

或者vnc方式连接安装

virt-install \
--name=kvm001 --ram 1024 --vcpus=1 \
--disk path=/home/raw/kvm001.raw,size=10,format=raw,bus=virtio \
--cdrom=/mnt/CentOS-7-x86_64-Minimal-1810.iso --network bridge=br0,model=virtio \
--graphics vnc,listen=0.0.0.0 --noautoconsole

参数说明:

--name    #虚拟机名称
--ram     #分配给虚拟机的内存,单位MB
--vcpus   #分配给虚拟机的cpu个数
--cdrom   #指定CentOS镜像ISO文件路径
--disk    #指定虚拟机raw文件路径
  size    #虚拟机文件大小,单位GB
  bus     #虚拟机磁盘使用的总线类型,为了使虚拟机达到好的性能,这里使用virtio
  cache   #虚拟机磁盘的cache类型
--network bridge    #指定桥接网卡
   model            #网卡模式,这里也是使用性能更好的virtio
--graphics          #图形参数 



#进入虚拟机

virsh console 虚拟机名或虚拟机ID

#虚拟机状态维护

 virsh shutdown 虚拟机名或虚拟机ID   #关闭虚拟机 
 virsh destroy benet      #强制关闭虚拟机 
 virsh start 虚拟机名或虚拟机ID   #开机虚拟机  
 virsh suspend 虚拟机名或虚拟机ID   #挂起虚拟机 
 virsh resume 虚拟机名或虚拟机ID    #恢复虚拟机 
 virsh reset 虚拟机名或虚拟机ID    #重置虚拟机 

#设置虚拟机自动启动

virsh autostart 虚拟机名或虚拟机ID 

virsh autostart --disable 虚拟机名 

#查看虚拟机配置文件

virsh dumpxml 虚拟机名或虚拟机ID    #查看虚拟机配置文件 

#修改虚拟机配置,必须关机

virsh edit 虚拟机名或虚拟机ID 
virsh edit kvm1   #示例修改kvm1的配置文件

#删除虚拟机

virsh undefine 虚拟机名或虚拟机ID

注:虚拟机在开机状态下删除虚拟机,会发现配置文件被清除,虚拟机还在,如果destroy会直接被删除掉。但是磁盘文件不会被删除一直存在,需要删除磁盘文件,则要手动删除

#克隆虚拟机

virt-clone -o 源虚拟机名 -n 新虚拟机名 -f 存储新虚拟机的文件路径 

命令行克隆的磁盘镜像名和虚拟机名完全是一样,通过两个虚拟机文件匹配发现修改的是虚拟机配置文件的名、uuid、磁盘镜像名、MAC地址

#创建虚拟机快照

virsh snapshot-create-as 虚拟机名  快照名 
virsh snapshot-create-as generic generic.snap 

#查看虚拟机快照

virsh snapshot-list 虚拟机名   #查看虚拟机快照列表  
virsh snapshot-list generic    #查看虚拟机快照列表

#恢复虚拟机快照

virsh snapshot-revert 虚拟机名 虚拟机快照名 
virsh snapshot-revert generic generic.snap   #恢复虚拟机快照

#查看帮助命令

virsh help
KVM磁盘格式转换

raw  原始格式,性能最好。直接占用,一开始给多少系统就占多少,不支持快照,立刻分配空间,不管有没有用到那么多空间。

qcow2 性能上不如raw,有一个写时拷贝,但是raw不支持快照,qcow2支持快照。只是承诺分配空间,但是只有当需要用空间的时候,才会给空间。最多只给承诺空间的大小,避免空间浪费。


#打快照
virsh snapshot-create-as kvm2 kvm2.snap   #给kvm2虚拟机创建kvm2.snap快照

此处若磁盘是raw格式,将会失败

#磁盘转换格式

1.关机
virsh shutdown kvm2   #将虚拟机kvm2做关机处理 

2.检查
virsh list --all     #检查虚拟机状态

3.查看文件格式
ll /var/lib/libvirt/images/    #目前kvm2的磁盘镜像文件格式为raw

4.格式转换
qemu-img convert -f 源格式 -O 转换目标格式 源文件镜像 目标文件镜像

qemu-img convert -f raw -O qcow2 /var/lib/libvirt/images/kvm2.raw /var/lib/libvirt/images/kvm2.qcow2

ll /var/lib/libvirt/images/

5.查看转换后的磁盘信息
qemu-img info /var/lib/libvirt/images/kvm2.qcow   #查看转换好的硬盘格式信息

6.修改配置
vim /etc/libvirt/qemu/kvm2.xml   #修改kvm2的配置文件关于磁盘的信息

此处主要修改转换后的磁盘文件所在位置

7.重新定义虚拟机
virsh define /etc/libvirt/qemu/kvm2.xml   #重新定义虚拟机

注:这里是直接通过vim的编辑来修改配置文件,所以需要重新定义虚拟机,重新定义之后新的配置文件才会生效。如果是采用virsh edit的方式编辑虚拟机配置文件,则不需要重新定义虚拟机。

8.开启虚拟机
virsh start kvm2

9.进入虚拟机验证文件完整性
virsh console kvm2

10.创建快照
virsh snapshot-create-as kvm2 kvm2.snap

11.恢复快照
virsh snapshot-revert kvm2 kvm2.snap

KVM存储池管理

 存储池是一种可以简化kvm存储管理的方法,它可以把服务器本地、远程nfs、分布式文件系统、硬盘等组织在一起,来方便对kvm环境下存储的管理。本地存储池可以是本地的一个目录、磁盘设备、物理分区或LVM卷。网络共享存储池使用标准的网络协议进行存储设备的共享,它支持SAN、IP-SAN、NFS、GFS2等协议。在KVM虚拟化技术中,存储池可以包含多个存储卷,对虚拟主机而言,这些存储卷将被识别为物理硬件存储设备。

  KVM必须要配置一个目录作为存储磁盘镜像(存储卷)的目录,我们称这个目录为存储池。默认存储池/var/lib/libvirt/images。

#查看存储池
virsh pool-list --all    #查看当前存储池列表

#查看存储池信息
virsh pool-info 存储池名     #查看存储池信息 
virsh pool-info default     #查看default存储池信息

virsh  pool-dumpxml 存储池名    #查看存储池信息  
virsh  pool-dumpxml default     #查看default存储池信息

注:存储池的配置信息也是xml的格式,存放在/etc/libvirt/storage中

#创建本地存储池

mkdir -p /data/vmfs

#定义存储池
virsh pool-define-as vmdisk --type dir --target /data/vmfs/

参数说明:
          vmdisk:
指定新的存储池的名称为vmdisk

          --type:自定存储池类型为dir(文件系统目录)

          --traget:指定存储池所在的目录

#创建已定义的存储池
virsh pool-build vmdisk

#激活并自动启动已定义的存储池,存储池不激活是无法使用的
virsh pool-start vmdisk 
virsh pool-autostart vmdisk

virsh pool-list --all

#测试存储卷管理
创建存储卷,在vmdisk存储池中,创建一个容量为20G、格式为qcow2的虚拟机存储卷,名称为kvm2_2.qcow2

virsh vol-create-as vmdisk kvm2_2.qcow2 20G --format qcow2

#删除存储卷
virsh vol-delete --pool vmdisk kvm2_2.qcow2

#取消激活存储卷
virsh pool-destroy vmdisk

#删除存储池定义的目录
virsh pool-delete vmdisk

#取消定义存储池
virsh pool-undefine vmdisk

 

KVM虚拟机磁盘挂载

当linux虚拟机出现异常情况无法开机的时候,在实施排错时,需要对虚拟机内部进行检查或者是需要将虚拟机里的文件拷贝到本地服务器时,可以通过Libguestfs linux的工具集来挂载虚拟机任何类型的文件系统,以便于修复启动故障或拷贝无法启动虚拟机里的文件

1.查看虚拟机磁盘镜像分区信息
virt-df -h -d kvm2

2.查看虚拟机文件系统
virt-filesystems -d kvm2

3.挂载磁盘镜像分区
guestmount -d kvm2 -m /dev/centos/root --rw /mnt

注:将KVM虚拟机的根分区挂载到本地服务器的/mnt/目录,其中--rw代表的是可读写

此时就可以操作所挂载的文件,进行操作,看图

4.取消挂载
guestunmount /mnt/

KVM虚拟机添加硬盘

1.创建磁盘文件
qemu-img create -f qcow2 /var/lib/libvirt/images/kvm2_qcow2.qcow2 2G    #创建2G的qcow2格式的磁盘文件
qemu-img create -f raw /var/lib/libvirt/images/kvm2_raw.raw 2G    #创建2G的raw格式的磁盘文

2.查看磁盘文件信息
qemu-img info kvm2_qcow2.qcow2
qemu-img info kvm2_raw.raw

3.修改虚拟机配置,添加磁盘
virsh edit kvm2

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值