kvm的安装

1.KVM虚拟机管理
1.虚拟机的组成部分
虚拟机配置文件
[root@localhost ~]# ls /etc/libvirt/qemu    #配置文件
networks  vm1.xml vm2.xml
储存虚拟机的介质
[root@localhost ~]# ls /var/lib/libvirt/images/   #镜像文件
vm1.img vm2.img
2.虚拟机的基本管理命令:
查看虚拟机:
[root@localhost ~]# virsh list    #查看正在运行的虚拟机
 Id    Name                           State
----------------------------------------------------
 1     vm1                            running

[root@localhost ~]# virsh list --all  #查看全部虚拟机
 Id    Name                           State
----------------------------------------------------
 1     vm1                            running
 -     vm2                            shut off
查看kvm虚拟机配置文件:
[root@localhost ~]# virsh dumpxml vm1   
将vm1虚拟机的配置文件保存至vm3.xml
[root@localhost ~]# virsh dumpxml vm1 > /etc/libvirt/qemu/vm3.xml
修改vm3的配置文件:
[root@localhost ~]# virsh edit vm3      
如果直接用vim编辑器修改配置文件的话,需要重启libvirtd服务
[root@localhost ~]# virsh define /etc/libvirt/qemu/vm2.xml  
启动:
[root@localhost ~]# virsh start vm1
挂起(暂停)kvm虚拟机: 
[root@localhost ~]# virsh suspend vm1  
恢复kvm虚拟机:
[root@localhost ~]# virsh resume vm1   #暂停之后用这个 
关闭kvm虚拟机:
方法1:
[root@localhost ~]# virsh shutdown vm1
方法2:(这个不推荐,有几率会摧毁你的虚拟机)
[root@localhost ~]# virsh destroy vm1
重启kvm虚拟机
[root@localhost ~]# virsh reboot vm1
重置kvm虚拟机
[root@localhost ~]# virsh reset vm1
删除虚拟机:
[root@localhost ~]# virsh undefine vm2    
#假的删除,只是将配置文件删除了,镜像文件还在
再去把镜像文件删除就行了

注意:虚拟机在开启的情况下undefine是无法删除的,但是如果再destroy会直接被删除掉
======================
虚拟机开机自动启动:
[root@localhost ~]# virsh autostart vm1 
[root@localhost ~]# ls /etc/libvirt/qemu/autostart/  #查看自动启动目录里面会有vm1.xml   
#此目录默认不存在,在有开机启动的虚拟机时自动创建
vm1.xml
取消开机自动启动
[root@localhost ~]# virsh autostart --disable vm1
域 vm1取消标记为自动开始
获取虚拟机IP
方式一:
[root@localhost ~]# virsh domifaddr vm1
 Name       MAC address          Protocol     Address
-------------------------------------------------------------------------------
 vnet0      52:54:00:3d:c2:fe    ipv4         192.168.122.173/24
方式二:
[root@localhost ~]# virsh dumpxml vm1 |grep 'mac address'
      <mac address='52:54:00:3d:c2:fe'/>
[root@localhost ~]# arp -a |grep "52:54:00:3d:c2:fe"   #知道mac地址来获取ip
vm1 (192.168.122.173) at 52:54:00:3d:c2:fe [ether] on virbr0
2.给虚拟机添加设备
1.图形方式:

首先,关闭要添加硬件的虚拟机
双击虚拟机,在打开的对话框点击上方的View,点击Details,点击Add Hardware可以选择要添加的虚拟硬件

2.文本方式:
先关闭你想要添加硬件的那台虚拟机
[root@localhost ~]# virsh shutdown vm1
1.添加磁盘
[root@localhost ~]# qemu-img create -f qcow2 /var/lib/libvirt/images/vm1_1.img 5G
#创建vm1_1.img空的镜像文件,qcow2类型的,大小5G,路径指的是将镜像文件创建到改路径下
[root@localhost ~]# virsh edit vm1
找到<disk      和</disk>,将其复制一遍并修改
	<disk type='file' device='disk'>
      <driver name='qemu' type='qcow2'/>
      <source file='/var/lib/libvirt/images/vm1.img'/>
      <target dev='vda' bus='virtio'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x06' function='0x0'/>
    </disk>
上面是文件里面本来就有的,我们复制并粘贴到下面
    <disk type='file' device='disk'>
      <driver name='qemu' type='qcow2'/>
      <source file='/var/lib/libvirt/images/vm1_1.img'/>    #空的镜像文件的路径
      <target dev='vdb' bus='virtio'/>      #dev的名字改为vdb
      <address type='pci' domain='0x0000' bus='0x00' slot='0x08' function='0x0'/> #slot 插槽改成没有被占用的,
    </disk>
[root@localhost ~]# virsh start vm1
[root@KVMB ~]# ssh 192.168.122.173      #我们连接到vm1上面查看
The authenticity of host '192.168.122.173 (192.168.122.173)' can't be established.
ECDSA key fingerprint is SHA256:7Z1J1wDNTFAIzQeHpGZPVPBoXccOWE+Jcfo9sFOVqp0.
ECDSA key fingerprint is MD5:9a:3a:49:8a:50:b1:6d:37:51:17:7b:53:9b:55:d5:0b.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '192.168.122.173' (ECDSA) to the list of known hosts.
root@192.168.122.173's password: 
Last login: Thu Apr 16 17:40:04 2020
[root@localhost ~]# lsblk
NAME            MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
vda             252:0    0    5G  0 disk 
├─vda1          252:1    0    1G  0 part /boot
└─vda2          252:2    0    4G  0 part 
  ├─centos-root 253:0    0  3.5G  0 lvm  /
  └─centos-swap 253:1    0  512M  0 lvm  [SWAP]
vdb             252:16   0    5G  0 disk 
我们发现多了一个vdb

kvm 获取虚拟机桌面 kvm查看虚拟机列表_centos

2.添加网卡
同样虚拟机是关闭状态
[root@localhost ~]# virsh shutdown vm1
[root@localhost ~]# virsh edit vm1
<interface type='network'>
      <mac address='52:54:00:3d:c2:fe'/>   
      <source network='default'/>
      <model type='virtio'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/>    
    </interface>
添加一块网卡
    <interface type='network'>
      <mac address='52:54:00:3d:c2:aj'/>   #修改mac地址
      <source network='default'/>
      <model type='virtio'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x05' function='0x0'/>    #修改插槽slot
    </interface>
3.内存和cpu个数的修改
[root@localhost ~]# virsh edit vm1    #直接修改就行了
内存:
<memory unit='KiB'>2048000</memory>
  <currentMemory unit='KiB'>2048000</currentMemory>
cpu个数:
  <vcpu placement='static'>2</vcpu>
3.克隆kvm
1.图形界面

Applications (左上角)-----> System Tools ------>Virtual Machine Manager
关闭要克隆的虚拟机,右键点击虚拟机选择Clone

2.使用命令克隆
[root@localhost ~]# virt-clone -o vm1 --auto-clone #没有指定名字,自动起名为vm1-clone
-o : 克隆哪台虚拟机
--auto-clone : 自动克隆
[root@localhost ~]# virt-clone -o vm1 -n vm3 --auto-clone #指定名字
[root@localhost ~]# virt-clone -o vm1 -n vm2 -f /var/lib/libvirt/images/vm2.img #-f 后面指定克隆后镜像文件的路径
4.Libguestfs修复工具
[root@localhost ~]# yum -y install libguestfs-tools
[root@localhost ~]# virsh shutdown vm1    #关掉vm1,让其充当挂掉的虚拟机
[root@localhost ~]# guestfish --rw -a /var/lib/libvirt/images/vm1.img #创建一个连接到文件系统的交互式shell

Welcome to guestfish, the guest filesystem shell for
editing virtual machine filesystems and disk images.

Type: ‘help’ for help on commands
      ‘man’ to read the manual
      ‘quit’ to quit the shell

><fs> run      #找到可用的文件系统
 100% ⟦▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒⟧ 00:00
><fs> list-filesystems  #列出磁盘镜像文件内的文件系统
/dev/sda1: xfs
/dev/centos/root: xfs
/dev/centos/swap: swap
><fs> mount /dev/centos/root   /       #将你想要的文件系统挂载到 / 下
><fs> ls /         #这里没法用cd命令
就可以获取到vm1上面的所有文件
在guestfish  shell当中可以使用像ls、cat、more、download这样的命令,来查看和下载文件以及目录

另一种修复方式:
virt-rescue提供直接访问方式:
这种方式跟linux系统光盘的rescue模式几乎一样,进去之后首先需要查看文件系统,然后手动挂载
到/sysroot目录下,进入/sysroot目录就可以随意操作虚拟磁盘镜像内的文件了
[root@localhost ~]# virt-rescue vm1
><rescue> fdisk -l         #列出文件系统信息

Disk /dev/sda: 5368 MB, 5368709120 bytes, 10485760 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: 0x0002c97a

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *        2048     2099199     1048576   83  Linux
/dev/sda2         2099200    10485759     4193280   8e  Linux LVM

Disk /dev/sdb: 4294 MB, 4294967296 bytes, 8388608 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 /dev/mapper/centos-swap: 536 MB, 536870912 bytes, 1048576 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 /dev/mapper/centos-root: 3753 MB, 3753902080 bytes, 7331840 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
><rescue> mount /dev/mapper/centos-root /sysroot/  #挂载
><rescue> cd /sysroot   #进入这个目录里面
在里面所有shell的基本操作都可以用