kvm的一些基本操作详解
kvm的安装1.KVM虚拟机管理虚拟机的组成部分1.虚拟机配置文件[root@localhost ~]# ls /etc/libvirt/qemu#配置文件networksvm1.xml vm2.xml2.储存虚拟机的介质[root@localhost qemu]# ls /var/lib/libvirt/images/#镜像文件vm1.img vm2.img=...
·
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
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的基本操作都可以用
更多推荐
已为社区贡献11条内容
所有评论(0)