KVM虚拟机管理(命令,克隆,添加设备)

虚拟机的组成部分:

    1. 虚拟机配置文件
[root@localhost ~]# ls /etc/libvirt/qemu/
networks  vm1.xml
    1. 储存虚拟机的介质
[root@localhost ~]# ls /var/lib/libvirt/images/
vm1.img

一、虚拟机的基本管理命令

#查看虚拟机
[root@localhost ~]# virsh list
 Id    名称                         状态
----------------------------------------------------
 2     vm1                            running

[root@localhost ~]# virsh list --all
 Id    名称                         状态
----------------------------------------------------
 2     vm1                            running
 -     vm2                            关闭

#查看配置文件
[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 start vm2
域 vm2 已开始


#挂起虚拟机,注:宿主机关机,虚拟机也会关机
[root@localhost ~]# virsh suspend vm2

#恢复虚拟机
[root@localhost ~]# virsh resume vm2  
  
#关闭虚拟机
方法1:
[root@localhost ~]# virsh shutdown vm2
方法2:不推荐此方法,有可能会对虚拟机产生损坏
[root@localhost ~]# virsh destroy vm2

#重启虚拟机
[root@localhost ~]# virsh reboot vm2

#重置虚拟机,不是100%恢复到初始状态
[root@localhost ~]# virsh reset vm2

#删除虚拟机,此步为删除了配置文件
[root@localhost ~]# virsh undefine vm2
手动删除镜像文件
[root@localhost ~]# rm -rf /var/lib/libvirt/images/vm2.img
注意:虚拟机在开启的情况下undefine是无法删除的,但是如果再destroy会直接被删除掉

#虚拟机开机自动启动
[root@localhost ~]# virsh autostart vm1
[root@localhost ~]# ls /etc/libvirt/qemu/autostart/     #此目录默认不存在,在有开机启动的虚拟机时自动创建
vm1.xml

#取消虚拟机开机自动启动
[root@localhost ~]# virsh autostart --disable vm1
[root@localhost ~]# ls /etc/libvirt/qemu/autostart/

#获取虚拟机IP
方式一:
[root@localhost ~]# virsh domifaddr vm1
 名称     MAC 地址           Protocol     Address
-------------------------------------------------------------------------------
 vnet0      52:54:00:12:07:10    ipv4         192.168.122.55/24
方式二:
[root@localhost ~]# virsh dumpxml vm1 |grep 'mac address'
      <mac address='52:54:00:12:07:10'/>

[root@localhost ~]# arp -a |grep "52:54:00:12:07:10"
? (192.168.122.55) at 52:54:00:12:07:10 [ether] on virbr0

二、虚拟机添加设备

1. 图形化方式

image.png

2. 修改配置文件方式

修改的机器需要先关机,修改完成后开机验证,添加磁盘的话,需要对新添加的分区

#修改vm2的配置文件
[root@localhost ~]# virsh edit vm2

#内存大小直接更改
  <memory unit='KiB'>536000</memory>
  <currentMemory unit='KiB'>536000</currentMemory>

#CPU直接更改
  <vcpu placement='static'>2</vcpu>

#此区域为磁盘,添加新磁盘,复制此区域修改即可
    <disk type='file' device='disk'>
      <driver name='qemu' type='qcow2'/>
      <source file='/var/lib/libvirt/images/vm2.img'/>    #需要创建 source file 实体镜像文件
      <target dev='vda' bus='virtio'/>                    #修改 target dev 磁盘名称
      <address type='pci' domain='0x0000' bus='0x00' slot='0x06' function='0x0'/>    #修改 slot 插槽,找一个没被占用的
    </disk>

#此区域为网卡,#添加新网卡,复制此区域修改即可
    <interface type='network'>
      <mac address='52:54:00:19:07:10'/>       #需要修改 mac address mac地址
      <source network='default'/>
      <model type='virtio'/>                            
      <address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/>    #修改 slot 插槽,找一个没被占用的
    </interface>

#创建空的磁盘文件
[root@localhost ~]# qemu-img create -f qcow2 /var/lib/libvirt/images/vm2_2.img 5G      #-f类型,文件路径,文件大小

三、虚拟机克隆

1. 图形化方式

关机状态才可以克隆


image.png

2. 文本模式

[root@localhost ~]# virt-clone -o vm1 --auto-clone     #-o指定克隆对象
    
[root@localhost ~]# virt-clone -o vm1 -n vm2 --auto-clone     #-n指定克隆出的名称
        
[root@localhost ~]# virt-clone -o vm1 -n vm2 -f /var/lib/libvirt/images/vm2.img     #-f指定克隆出的镜像

四、高级命令

1. 建立虚拟机磁盘镜像文件

  • 磁盘镜像文件格式:
  1. raw 原始格式,性能最好 直接占用你一开始给多少 系统就占多少 不支持快照
  2. qcow 性能远不能和 raw 相比,很快夭折了,然后出现了qcow2。

qcow2 性能上还是不如raw,但是raw不支持快照,qcow2支持快照。
现在默认安装好的用的是raw格式,所有做快照要把他转换成qcow2格式

  • 什么叫写时拷贝?
    raw立刻分配空间,不管你有没有用到那么多空间
    qcow2只是承诺给你分配空间,但是只有当你需要用空间的时候,才会给你空间。最多只给你承诺空间的大小,避免空间浪费

  • 工作当中用哪个?看你用不用快照。
    工作当中虚拟机会有多个备份,一个坏了,再起一个就行了,所有没必要用快照。当然也不一定。
    数据绝对不会存储到本地。

qemu-kvm qemu是早先的一个模拟器,kvm是基于qemu发展出来的。

#建立qcow2格式磁盘文件
[root@localhost ~]#qemu-img create -f qcow2 test.qcow2 20G 

#建立raw格式磁盘文件
[root@localhost ~]#qemu-img create -f raw test.raw 20G  

#查看已经创建的虚拟磁盘文件
[root@localhost ~]#qemu-img info /var/lib/libvirt/images/vm2.img 

2. 使用Libguestfs修复虚拟机

作为虚拟化环境管理员,你肯定遇到过虚拟机无法启动的情况。实施排错时,你需要对虚拟机的内部进行检查。而Libguestfs Linux工具集可以在这种情况下为你提供帮助。

Libguestfs允许在虚拟机上挂载任何类型的文件系统,以便修复启动故障。
使用Libguestfs,首先需要使用Libvirt。Libvirt是一个管理接口,可以和KVM、Xen和其他一些基于Liunx的虚拟机相互连接。Libguestfs的功能更加强大,可以打开Windows虚拟机上的文件。但是首先你需要将虚拟机迁移到libguestfs可用的环境当中,也就是Linux环境。

使用guestfish操作虚拟机磁盘镜像文件
[root@localhost ~]# yum -y install libguestfs-tools

[root@localhost ~]# guestfish --rw -a  /path/to/windows.vmdk
><fs> run                   #进入交互式shell之后第一个命令
><fs> list-filesystems      #列出磁盘镜像文件内的文件系统
/dev/vda1: ext4
/dev/vdb1: iso9660
/dev/VolGroup/lv_root: ext4
/dev/VolGroup/lv_swap: swap
><fs>  mount /dev/VolGroup/lv_root /     #将内容挂载到根目录下
><fs>  ls /                               #ls命令查看跟下内容 ,不能使用cd命令
bin  boot dev etc home  lib lib64  lost+found
><fs> cat /etc/passwd      #查看文件,不能像在其他shell环境中一样操作。目录所有路径必须从根开始
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin

在guestfish  shell当中可以使用像ls、cat、more、download这样的命令,来查看和下载文件以及目录

#查看帮助,这两个帮助显示的内容不一样
[root@localhost ~]# guestfish --help 
[root@localhost ~]# guestfish -h
Virt-rescue提供直接访问方式

这种方式跟linux系统光盘的rescue模式几乎一样,进去之后首先需要查看文件系统,然后手动挂载到/sysroot目录下,进入/sysroot目录就可以随意操作虚拟磁盘镜像内的文件了

#进入修复模式,help查看帮助
[root@localhost ~]# virt-rescue vm1
><rescue>fdisk -l     #列出分区
><rescue>mount /dev/mapper/VolGroup-lv_root /sysroot/      #挂载分区
><rescue>cd /sysroot/
><rescue>ls
#查看磁盘镜像分区信息
[root@localhost ~]# virt-df -h -d vm1
Filesystem                                Size       Used  Available  Use%
vm1:/dev/sda1                             484M        32M       428M    7%
vm1:/dev/sdb1                             3.5G       3.5G          0  100%
vm1:/dev/VolGroup/lv_root                 6.1G       1.1G       4.7G   18%

[root@localhost ~]# virt-filesystems -d vm1
/dev/sda1
/dev/sdb1
/dev/VolGroup/lv_root

#挂载磁盘镜像分区
[root@localhost ~]# guestmount -d vm1 -m /dev/VolGroup/lv_root --rw /vm1_mount     #-d虚拟机,-m挂载的盘,--rw挂载的位置
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,189评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,577评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,857评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,703评论 1 276
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,705评论 5 366
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,620评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,995评论 3 396
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,656评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,898评论 1 298
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,639评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,720评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,395评论 4 319
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,982评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,953评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,195评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,907评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,472评论 2 342

推荐阅读更多精彩内容