云计算 之 虚拟化技术--KVM 虚拟机管理

前言

本环境是基于 Centos 7.7 系统构建KVM环境
具体构建,请参考 KVM环境的部署


一、创建 KVM 虚拟机

1、安装 windows_xp_professional

执行命令,创建虚拟机

[root@kvm01 iso]# virt-install \
> --name=windows_xp_professional \
> --graphics vnc,listen=0.0.0.0,port=6000,keymap=en_us \
> --ram=500 \
> --vcpus=1 \
> --disk path=/var/lib/libvirt/images/windowsxp.img,size=8,format=qcow2 \
> --bridge=virbr0 \
> --cdrom=/iso/"zh-hans_windows_xp_professional_with_service_pack_3_x86_cd_vl_x14-74070.iso"
WARNING  Unable to connect to graphical console: virt-viewer not installed. Please install the 'virt-viewer' package.
WARNING  No console to launch for the guest, defaulting to --wait -1

Starting install...
Allocating 'windowsxp.img'                                                                            | 8.0 GB  00:00:00     
Domain installation still in progress. Waiting for installation to complete.

VNC 连接
在这里插入图片描述
点击”回车键“开始安装系统
在这里插入图片描述
点击“继续”进一步安装
在这里插入图片描述
输入秘钥,进一步完成系统安装
在这里插入图片描述
查看系统信息

在这里插入图片描述

在这里插入图片描述

2、安装 Centos-7.8 系统

执行命令,创建虚拟机

[root@kvm01 iso]#  virt-install \
> -n name=CentOS-7 \
> --memory 2048,maxmemory=3500 \
> --vcpus 2,maxvcpus=4 \
> --os-type=linux \
> --cdrom=/iso/CentOS-7-x86_64-Minimal-1908.iso \
> --disk path=/var/lib/libvirt/images/centos7u6.img,size=5,format=qcow2 \
> -w  bridge=virbr0 \
> --vnc \
> --vncport=6500 \
> --vnclisten=0.0.0.0 \
> --autostart
WARNING  No operating system detected, VM performance may suffer. Specify an OS with --os-variant for optimal results.
WARNING  Unable to connect to graphical console: virt-viewer not installed. Please install the 'virt-viewer' package.
WARNING  No console to launch for the guest, defaulting to --wait -1

Starting install...
Allocating 'centos7u6.img'                                                                            | 5.0 GB  00:00:00     
Domain installation still in progress. Waiting for installation to complete.

VNC 连接

在这里插入图片描述
选择语言类型,点击”continue“,继续安装系统

在这里插入图片描述
选择系统参数,开始安装系统

在这里插入图片描述
安装完成
在这里插入图片描述

登录系统,查看系统信息
在这里插入图片描述

二、KVM 管理

1、使用virsh来管理虚拟机

#查看virsh命令帮助
[root@kvm01 ~]# virsh -h
#查看现有系统上安装的所有虚拟机
[root@kvm01 ~]# virsh list --all
 Id    Name                           State
----------------------------------------------------
 2     windows_xp_professional        running
 3     name=CentOS-7                  running
#停止系统运行
[root@kvm01 ~]# virsh destroy windows_xp_professional
Domain windows_xp_professional destroyed
#删除系统
[root@kvm01 ~]# virsh undefine windows_xp_professional
Domain windows_xp_professional has been undefined
#查看剩余系统
[root@kvm01 ~]# virsh list --all
 Id    Name                           State
----------------------------------------------------
 3     name=CentOS-7                  running

#查看已经运行的虚拟机
[root@kvm01 ~]# virsh list 
 Id    Name                           State
----------------------------------------------------
 3     name=CentOS-7                  running

virsh命令常用参数总结

在这里插入图片描述

2、管理虚拟存储

a、使用qemu-img管理虚拟磁盘

虚拟存储
在这里插入图片描述
KVM 存储模式

[root@kvm01 ~]# qemu-img --help | grep Supported
Supported formats: vvfat vpc vmdk vhdx vdi ssh sheepdog rbd raw host_cdrom host_floppy host_device file qed qcow2 qcow parallels nbd iscsi gluster dmg tftp ftps ftp https http cloop bochs blkverify blkdebu
#创建虚拟磁盘
[root@kvm01 ~]# qemu-img create t1.img 1g
Formatting 't1.img', fmt=raw size=1073741824 
#查看虚拟磁盘信息
[root@kvm01 ~]# qemu-img info t1.img 
image: t1.img
file format: raw
virtual size: 1.0G (1073741824 bytes)
disk size: 0
#检查虚拟磁盘
[root@kvm01 ~]# qemu-img check CentOS-7

根据以上测试,默认情况下qemu-img创建的磁盘文件的类型是动态的(Dynamic 空洞)会根据真实存放数据的大小进行动态扩容直到磁盘空间设定值的大小。

b、预分配磁盘策略(qcow2)–磁盘使用多少,将会占用多少

虚拟磁盘格式转换

[root@kvm01 ~]# qemu-img --help | grep convert
  convert [-c] [-p] [-q] [-n] [-f fmt] [-t cache] [-T src_cache] [-O output_fmt] [-o options] [-s snapshot_name] [-S sparse_size] filename [filename2 [...]] output_filename
    options are: 'none', 'writeback' (default, except for convert), 'writethrough',
    'directsync' and 'unsafe' (default for convert)

导出系统
在这里插入图片描述

将.vmdk虚拟磁盘文件拷入到KVM虚拟机中

在这里插入图片描述
磁盘文件的格式转换

[root@kvm01 images]# qemu-img convert -O qcow2 rhel_7.2-test-disk1.vmdk node6-disk1.img

#查看结果
[root@kvm01 images]# ll -h
total 4.1G
-rw-r--r--. 1 root root 484M Oct 12 05:26 rhel_7.2-test-disk1.vmdk
-rw-r--r--. 1 root root 1.2G Oct 12 05:32 rhel_7.2-test.img
-rw-------. 1 root root 8.1G Oct 11 23:30 windowsxp.img
[root@kvm01 images]# qemu-img info rhel_7.2-test.img
image: rhel_7.2-test.img
file format: qcow2
virtual size: 20G (21474836480 bytes)
disk size: 2.0G
cluster_size: 65536
Format specific information:
    compat: 1.1
    lazy refcounts: false

[root@kvm01 images]# virsh list --all
 Id    Name                           State
----------------------------------------------------
 3     name=CentOS-7                  running
 4     rhel_7.2-test                  running

VNC连接

在这里插入图片描述
在这里插入图片描述
安装完成
在这里插入图片描述

#调整虚拟磁盘大小
[root@kvm01 images]# qemu-img resize centos7u6.img +10G
Image resized.

3、管理存储池

查看现有的存储池
[root@kvm01 ~]# virsh pool-list 
 Name                 State      Autostart 
-------------------------------------------
 images               active     yes       
 iso                  active     yes       

#查看指定存储池中的存储卷
[root@kvm01 ~]# virsh vol-list images 
 Name                 Path                                    
------------------------------------------------------------------------------
 centos7u6.img        /var/lib/libvirt/images/centos7u6.img   

[root@kvm01 ~]# virsh vol-list iso 
 Name                 Path                                    
------------------------------------------------------------------------------
 CentOS-7-x86_64-Minimal-1908.iso /iso/CentOS-7-x86_64-Minimal-1908.iso   

a、基于目录的存储池

#常见目录
[root@kvm01 ~]# mkdir /guest_images
#常见存储池
[root@kvm01 ~]# virsh pool-start guest_images
#启动存储池
[root@kvm01 ~]# virsh pool-start guest_images
#设置开机自启
[root@kvm01 ~]# virsh pool-autostart guest_images 
#列出所有存储池
[root@kvm01 ~]# virsh pool-list
 Name                 State      Autostart 
-------------------------------------------
 guest_images         active     yes       
 images               active     yes       
 iso                  active     yes

#删除存储池
[root@kvm01 ~]# virsh pool-destroy guest_images
Pool guest_images destroyed
#删除存储池目录
[root@kvm01 ~]# virsh pool-delete guest_images
Pool guest_images deleted
#删除存储池配置文件
[root@kvm01 ~]# virsh pool-undefine guest_images
Pool guest_images has been undefined
#完成删除
[root@kvm01 ~]# virsh pool-list --all
 Name                 State      Autostart 
-------------------------------------------
 images               active     yes       
 iso                  active     yes  

b、基于分区的存储池

添加一块磁盘
在这里插入图片描述
分区格式化

[root@kvm01 ~]# lsblk 
NAME            MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda               8:0    0   80G  0 disk 
├─sda1            8:1    0    1G  0 part /boot
└─sda2            8:2    0   79G  0 part 
  ├─centos-root 253:0    0 49.1G  0 lvm  /
  ├─centos-swap 253:1    0  5.9G  0 lvm  [SWAP]
  └─centos-home 253:2    0   24G  0 lvm  /home
sdb               8:16   0   20G  0 disk 
└─sdb1            8:17   0    2G  0 part 
sr0              11:0    1  942M  0 rom  

[root@kvm01 ~]# mkfs.xfs /dev/sdb1 
meta-data=/dev/sdb1              isize=512    agcount=4, agsize=131072 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=1        finobt=0, sparse=0
data     =                       bsize=4096   blocks=524288, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0 ftype=1
log      =internal log           bsize=4096   blocks=2560, version=2
         =                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0

创建存储池

[root@kvm01 ~]#  virsh pool-define-as guest_images_fs fs --source-dev "/dev/sdb1" --target "/guest_images2"
ol-start guest_images_fs #启动存储
 virsh pool-autostart guest_images_fs #标记存储池开机自启动
 mount | grep /dev/sdb1 #已经自动挂载Pool guest_images_fs defined

[root@kvm01 ~]#  virsh pool-define-as guest_images_fs fs --source-dev "/dev/sdb1" --target "/guest_images2"

[root@kvm01 ~]#  virsh pool-build guest_images_fs #创建存储池存储目录
Pool guest_images_fs built

[root@kvm01 ~]#  virsh pool-start guest_images_fs #启动存储
Pool guest_images_fs started

[root@kvm01 ~]#  virsh pool-autostart guest_images_fs #标记存储池开机自启动
Pool guest_images_fs marked as autostarted

[root@kvm01 ~]#  mount | grep /dev/sdb1 #已经自动挂载
/dev/sdb1 on /guest_images2 type xfs (rw,nosuid,nodev,noexec,relatime,seclabel,attr2,inode64,noquota)

c、基于LVM的存储池

#创建vg
[root@kvm01 ~]# virsh pool-define-as guest_images_lvm3 logical --source-dev=/dev/sdc --sourcename=libvirt_lvm --target=/dev/libvirt_vg
#创建lv
[root@kvm01 ~]# virsh pool-build guest_images_lvm3
#启动LVM存储池并标记开机自启动
[root@kvm01 ~]# virsh pool-start guest_images_lvm3
[root@kvm01 ~]# virsh pool-autostart guest_images_lvm3
#常见基于NFS的存储池
[root@kvm01 ~]# virsh pool-define-as --name nfstrial2 --type netfs --source-host 192.168.150.132 --source-path /nfsshare --target /nfstrial2
Pool nfstrial2 defined

3、管理存储卷

#向VM存储池里创建一个存储卷
[root@kvm01 ~]# virsh vol-create-as vm test1.qcow2 1G --format qcow2
[root@kvm01 ~]# virsh vol-info /vm/test1.qcow2
[root@kvm01 ~]# virsh vol-info test1.qcow2 --pool vm

#定义一个基于LVM的存储池
[root@kvm01 ~]# virsh pool-define-as guest_images_lvm logical \
--source-dev=/dev/sdc --target=/dev/vg_libvirt
[root@kvm01 ~]#构建LVM存储池(如果构建失败,可手动pvcreate -y /dev/sdc后再执行)
[root@kvm01 ~]# virsh pool-build guest_images_lvm
#启动基于LVM的存储池
[root@kvm01 ~]# virsh pool-start guest_images_lvm
[root@kvm01 ~]# virsh pool-autostart guest_images_lvm
#向LVM存储池中创建一个存储卷
[root@kvm01 ~]# virsh vol-create-as guest_images_lvm lvvoll 1G
[root@kvm01 ~]# virsh vol-create-as guest_images_lvm lvvol2 2G
[root@kvm01 ~]# virsh vol-create-as guest_images_lvm lvvol3 3G

#定义一个基于LVM的存储池
virsh pool-define-as guest_images_lvm logical \
--source-dev=/dev/sdc --target=/dev/vg_libvirt
[root@kvm01 ~]#构建LVM存储池(如果构建失败,可手动pvcreate -y /dev/sdc后再执行)
[root@kvm01 ~]# virsh pool-build guest_images_lvm
#向VM存储池里创建一个存储卷
[root@kvm01 ~]# virsh vol-create-as vm test1.qcow2 1G --format qcow2
#查看test1.qcow2的卷信息的两种方式
[root@kvm01 ~]# virsh vol-info /vm/test1.qcow2
[root@kvm01 ~]# virsh vol-info test1.qcow2 --pool vm
#定义一个基于LVM的存储池
[root@kvm01 ~]# virsh pool-define-as guest_images_lvm logical \
--source-dev=/dev/sdc --target=/dev/vg_libvirt
[root@kvm01 ~]#构建LVM存储池(如果构建失败,可手动pvcreate -y /dev/sdc后再执行)
[root@kvm01 ~]# virsh pool-build guest_images_lvm
存储卷的克隆
[root@kvm01 ~]# virsh vol-clone --help
#克隆基于目录的存储池中的存储卷test1.qcow2
[root@kvm01 ~]# virsh vol-clone test1.qcow2 test2.qcow2 --pool vm
#克隆基于LVM的存储池中的存储卷
[root@kvm01 ~]# virsh vol-clone lvvoll lvvol4 --pool guest_images_lvm
#存储卷的删除
#查看命令帮助
[root@kvm01 ~]# virsh vol-delete --help
#删除基于LVM存储池中的存储卷
[root@kvm01 ~]]# virsh vol-delete lvvol4 guest_images_lvm
#删除基于LVM的存储池
[root@kvm01 ~]# virsh pool-destroy guest_images_lvm
[root@localhost ~]# virsh pool-undefine guest_images_lvm
#删除基于目录的存储池中的存储卷
[root@kvm01 ~]# virsh vol-delete /vm/test2.qcow2
#删除基于LVM存储池中的存储卷
[root@kvm01 ~]# virsh vol-delete lvvol4 guest_images_lvm
#删除基于LVM的存储池
[root@kvm01 ~]# virsh pool-define-as guest_images_lvm logical \
--source-dev=/dev/sdc --target=/dev/vg_libvirt
[root@kvm01 ~]# virsh pool-build guest_images_lvm
[root@kvm01 ~]# virsh vol-create-as vm test1.qcow2 1G --format qcow2
[root@kvm01 ~]# virsh vol-info /vm/test1.qcow2
[root@kvm01 ~]# virsh vol-info test1.qcow2 --pool vm
[root@kvm01 ~]# virsh pool-define-as guest_images_lvm logical \
--source-dev=/dev/sdc --target=/dev/vg_libvirt
[root@kvm01 ~]# virsh pool-build guest_images_lvm
[root@kvm01 ~]# virsh vol-clone --help
[root@kvm01 ~]#克隆基于目录的存储池中的存储卷test1.qcow2
[root@kvm01 ~]# virsh vol-clone test1.qcow2 test2.qcow2 --pool vm
#克隆基于LVM的存储池中的存储卷
[root@kvm01 ~]# virsh vol-clone lvvoll lvvol4 --pool guest_images_lvm
#查看命令帮助
[root@kvm01 ~]# virsh vol-delete --help
#删除基于LVM存储池中的存储卷
[root@kvm01 ~]]# virsh vol-delete lvvol4 guest_images_lvm
#删除基于LVM的存储池
[root@kvm01 ~]# virsh pool-destroy guest_images_lvm
[root@kvm01 ~]# virsh pool-undefine guest_images_lvm
#删除基于目录的存储池中的存储卷
[root@kvm01 ~]# virsh vol-delete /vm/test2.qcow2
内部资料,仅限学习交流root@localhost ~]# virsh pool-destroy guest_images_lvm
[root@kvm01 ~]]# virsh pool-undefine guest_images_lvm
#删除基于目录的存储池中的存储卷
[root@kvm01 ~]]# virsh vol-delete /vm/test2.qcow2

4、管理快照

[root@kvm01 ~]# qemu-img snapshot -l centos7.img
[root@kvm01 ~]# qemu-img snapshot -c s1 centos7.img #创建磁盘快照
[root@kvm01 ~]# qemu-img snapshot -l centos7.img
#关闭虚拟机回滚磁盘快照
#在虚拟机里删除一个文件然后进行磁盘回滚
[root@kvm01 ~]# qemu-img snapshot -a s1 centos7.img
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值