virsh 既有命令行模式,也有交互模式,在命令行直接输入 virsh 就进入交互模式, virsh 后面跟命令参数,则是命令行模式;

(1)基础操作 --- 命令行下管理虚拟机

virsh list             列出当前宿主机上处于运行状态的虚拟机
virsh list --all      列出当前宿主机上所有的虚拟机
virsh start vm1     (虚拟机name) 开启某一台虚拟机
virsh shutdown vm1   (虚拟机name) 正常关闭一台虚拟机
virsh destroy vm1      强制关闭某一台虚拟机
virsh autostart vm1    开机自启动虚拟机vm1
virsh autostart  --disable vm1 关闭开机自启动
virsh edit vm1       编辑某个虚拟机的配置文件
virsh pool-list       列出存储池

2)创建新磁盘

qemu-img create -f qcow2(指定磁盘格式) -o size=9G(指定大小) /var/lib/libvirt/images/haha.qcow2(路径和名称)

/var/lib/libvirt/image/为磁盘镜像的默认路径。

注意注定磁盘大小的时候不能有空格,否则报错

[root@localhost images]# qemu-img create -f qcow2 -o size =9G /var/lib/libvirt/images/haha.qcow2
qemu-img: Invalid image size specified! You may use k, M, G, T, P or E suffixes for
qemu-img: kilobytes, megabytes, gigabytes, terabytes, petabytes and exabytes. [root@localhost images]# qemu-img create -f qcow2 -o size=9G /var/lib/libvirt/images/haha.qcow2
Formatting '/var/lib/libvirt/images/haha.qcow2', fmt=qcow2 size= encryption=off cluster_size= lazy_refcounts=off
[root@localhost images]# qemu-img info haha.qcow2

3)查看磁盘情况

qemu-img info 磁盘名

[root@localhost images]# qemu-img info /var/lib/libvirt/images/haha.qcow2
image: haha.qcow2
file format: qcow2
virtual size: .0G ( bytes)
disk size: 196K    #实际占用磁盘196k,最高可用9G
cluster_size:
Format specific information:
compat: 1.1
lazy refcounts: false

4)命令行下创建 && 管理虚拟机
Virt-install:      命令行下创建虚拟机的命令,不过在它后面需要跟上很多的参数
    --name:       虚拟机的名字。
    --disk Location:   磁盘映像的位置。
    --graphics :     怎样连接 VM ,通常是 SPICE 。
    --vcpu :       虚拟 CPU 的数量。
    --ram :       以兆字节计算的已分配内存大小。
    --location :     指定安装源路径
    --network :     指定虚拟网络,通常是 virbr0 或者自己设定的 br0

例如:创建一个磁盘

路径为/var/lib/libvirt/image/

指定cpu内存为1g

cpu数量为1

以spice方式连接vm

执行虚拟网络为自设网桥br0

virt-install --name=test --disk path=/var/lib/libvirt/image/test.qcow2 --ram=1024 --vcpus=1 --graphics spice --location=/export/download/software/iso/CentOS-7.3-x86_64-DVD.iso --network bridge=br0

注意磁盘路径与磁盘安装源路径的区别。

由于使用virsh命令创建虚拟机同样还需要在图形化界面操作,所以用的不多,了解就行。

5)其余重要的一些virsh命令

virsh define   xx.xml                从一个 XML 文件定义、恢复(但不开始)一个域
virsh undefine  xx           删除一个虚机域

KVM 通过virsh console连入虚拟机

定义:在宿主机上直接能够连通创建的虚拟机并执行操作,功能类似于ssh。

前提:新安装一台虚拟机后,是无法通过virsh console 命令连入虚拟机中的,这时我们需要开启虚拟机的console功能。

我们这里以centos7以上的版本做说明:

(1)在被连接的虚机里执行

[root@localhost ~]# grubby --update-kernel=ALL --args="console=ttyS0"

(2)重启此机

[root@localhost ~]# reboot

3)在宿主机上执行

[root@localhost ~]# virsh console vm5
连接到域 vm5
换码符为 ^]            #ctrl ] 退出 、一直hang在这个状态无法连接上虚拟机,这是因为宿主机通过ttyss0连接虚拟机,但被连接主机没有设置或者没有设置成功。
、或者grubby命令没有下载,yum安装后再次尝试

3、VNC Viewer 远程管理kvm主机

前提是宿主机内的虚拟机状态为开启

(1)在window中安装VNC Viewer 软件,一直点下一步就行。

2 )输入宿主机的ip地址。

点击Continue,即可连接里面的虚机

五、KVM虚拟化透传

KVM 虚拟化需要处理器对虚拟化技术的支持,当我们需要进行虚拟机嵌套虚拟机时,我们需要让虚拟机中处理器对 VT 功能的支持达到透传的效果

nested 虚拟机嵌套( kvm on kvm ):nested 技术,简单的说,就是在虚拟机上跑虚拟机。

KVM 虚拟机嵌套和 VMWare 原理不同, VMWare第一层是用的硬件虚拟化技术,第二层就是完全软件模拟出来的,所以 VMWare 只能做两层嵌套。 KVM 是将物理 CPU 的特性全部传给虚拟机,所有理论上可以嵌套 N 多层。

1、查看一层客户端是否支持 VT

grep vmx(svm) /proc/cpuinfo

如果查询未果,证明一层 KVM 的虚拟机,并未将宿主机处理器的 VT 功能成功透传。

因此我们需要透传。

2、在物理服务器上(宿主机)为嵌套虚拟机做准备 --- CPU 虚拟化透传

注意查看你的虚拟机架构支持的是amd还是intel

[root@localhost ~]# cat /etc/modprobe.d/kvm-nested.conf
options kvm_amd nested=1

3、在宿主机启用 kvm_amd 模块的嵌套虚拟化功能,并且使透传永久有效
(2)重新加载 kvm 模块
# modprobe -r kvm_amd      -r参数:remove掉kvm_amd模块
# modprobe kvm_amd            加载kvm_amd模块

4、验证是否加载成功
#cat /sys/module/kvm_intel/parameters/nested

1或者y证明加载成功。

0和N或者没有返回值证明没加载成功。

重新加载modprobe模块或者查看架构是支持intel还是amd来稍微更改下模块和目录。

[root@localhost ~]# cat /sys/module/kvm_amd/parameters/nested
1

5、编辑需要做虚拟化透传的虚拟机的配置文件

更改下面绿绿的一行即可。

host-passthrough 直接将物理 CPU 暴露给虚拟机使用,在虚拟机上完全可以看到的就是物理 CPU的型号(我们前面介绍过kvm透传就是将宿主机的cpu特性全部传给被透主机)

root@localhost ~]# virsh edit vm4
<domain type='kvm'>
<name>vm4</name>
<uuid>98c5d257-6b75-493b-91db-66589b582733</uuid>
<memory unit='KiB'></memory>
<currentMemory unit='KiB'></currentMemory>
<vcpu placement='static'></vcpu>
<os>
<type arch='x86_64' machine='pc-i440fx-rhel7.0.0'>hvm</type>
</os>
<features>
<acpi/>
<apic/>
</features>
<cpu mode='host-passthrough'/>        #删除下面两行
<clock offset='utc'>
<timer name='rtc' tickpolicy='catchup'/>

6、进入透传虚拟机中查看cpu是否透传成功

[root@localhost ~]# lsmod | grep kvm
kvm_amd
kvm kvm_amd
irqbypass kvm

7、在被透传虚拟机中查看cpu是否支持虚拟化

次数大于0证明透传成功,可以开始虚拟机嵌套了。

svm是支持amd架构

vmx支持intel架构

[root@localhost ~]# egrep svm /proc/cpuinfo | wc -l

kvm--virsh命令行下管理虚拟机的更多相关文章

  1. 如何在Linux中用命令行工具管理KVM虚拟环境

    第一步: 配置存储池 Virsh命令行工具是一款管理virsh客户域的用户界面,它能在命令行中运行所给的命令以及它的参数,我们要用它给我们的KVM环境创建存储池,想知道关于这个工具的更多信息,用以下这 ...

  2. virsh命令行管理工具

    virsh命令行管理工具 Libvirt有两种控制方式,命令行和图形界面 图形界面: 通过执行名virt-manager,启动libvirt的图形界面,在图形界面下可以一步一步的创建虚拟机,管理虚拟机 ...

  3. CentOS 6 命令行下安装 VirtualBox 虚拟机步骤

    CentOS 6 命令行下安装 VirtualBox 虚拟机步骤 1. 准备工作 安装内核更新 yum install kernel-develyum update kernel*如果内核有更新,则需 ...

  4. 转载:使用命令行启动VirtualBox虚拟机

    使用命令行启动VirtualBox虚拟机 装上VirtualBox就琢磨着如何让它开机自动启动,又或者能够通过命令行的形式直接启动指定的虚拟机. 看了下VirtualBox的官方文档,发现有一个命令可 ...

  5. 解放双手!推荐一款 GitHub 星标 8.2k+的命令行软件管理器,非常酷炫!

    小二是公司新来的实习生,之前面试的过程中对答如流,所以我非常看好他.第一天,我给他了一台新电脑,要他先在本地搭建个 Java 开发环境. 二话不说,他就开始马不停蹄地行动了.真没想到,他竟然是通过命令 ...

  6. 好用到爆!GitHub 星标 32.5k+的命令行软件管理神器,功能真心强大!

    前言(废话) 本来打算在公司偷偷摸摸给星球的用户写一篇编程喵整合 MongoDB 的文章,结果在通过 brew 安装 MongoDB 的时候竟然报错了.原因很简单,公司这台 Mac 上的 homebr ...

  7. 在CMD命令行下关闭进程的命令

    转载: [重要]在CMD命令行下关闭进程的命令━━━━━━━━━━━━━━━━━━━━━━━━━━ 方法一: 在"运行"中输入:ntsd -c q -pn 程序名字(在MS-Dos ...

  8. IntelliJ IDEA下Git的配置与使用(命令行下)

    1. 安装Git并配置好Git 安装与配置参见Git与码云(Git@OSC)入门-如何在实验室和宿舍同步你的代码(1)中的2.在本机安装Git与3.1 配置git. 2. 创建远程仓库 在gitee. ...

  9. Windows Git Bash命令行下创建git仓库并更新到github

    大二的时候就听过老师说有一个叫git的版本管理工具,当时只是听老师说说而已,也没有去使用它,因为当时用过svn,就感觉自己没多少东西需要git管理. 最近几天,我经常在开源中国看别人的帖子,看到别人对 ...

随机推荐

  1. 仅仅需一步教你解决Win10下Android Studio terminal无法使用的问题

    Android Studio集成和加入了一些有用的工具.当中一个便是terminal. 在Windows平台下Android Studio中的terminal在原理上实际使用的是window中的cmd ...

  2. ArcGIS中生成蜂窝多边形算法解析

    近来有不少同学.都有问我关于蜂窝多边形的问题.也就是正六边形,也就是以下这个东东: 一般的问答模式例如以下: 亲们问:ArcGIS里面那个工具能够做这个东东? 虾神答:额,没有原生的工具. 亲们问:那 ...

  3. Dagger2----一个最简单的Dagger2依赖的实现

    Dagger2是首个使用生成代码实现完整依赖注入的框架,极大降低了使用者的编码负担.Dagger2分析全部依赖并生成代码将这些依赖组织在一起,关于很多其它的Dagger2理论介绍请移步具体解释Dagg ...

  4. go12---interface

    package main /* 接口interface 接口是一个或多个方法签名的集合 只要某个类型拥有该接口的所有方法签名,即算实现该接口,无需显示 声明实现了哪个接口,这称为 Structural ...

  5. NPOI设置Excel中的单元格识别为日期

    只有月/日/年的格式,才能显示为Date 其他的,都是显示为Custom

  6. python库学习笔记——re库:正则表达式入门(一)

    什么是正则表达式? 我们在处理文本文件的时候,会按照某种规则查找某些特定的字符串.比方我们希望从一堆电子档案中找到人员的电话号码整理成通讯录.于是,我们可以利用特定字符串的规律编程获得我们想要的信息. ...

  7. [Codeforces 449B] Jzzhu and Cities

    [题目链接] https://codeforces.com/contest/449/problem/B [算法] 最短路 时间复杂度 : O(N ^ 2) [代码] #include<bits/ ...

  8. 7 Worksheet 对象

    7.1 设置阶段 代码清单7.1:使用Parent属性获得一个对象的父对象的指针 '使用Parent属性获得一个对象的父对象的指针 Sub MeetMySingleParent() 'Declare ...

  9. SpringBoot中使用spring-data-jpa 数据库操作(上)

    Java客户端使用Spring-Data-Jpa这个组件. Spring-Data-Jpa就是Spring对Hibernate的一个整合. 选择create在运行的时候它会自动帮我们创建一个表. sp ...

  10. Windows 使用之那些你还不知道操作

    作者:你未读 整理:君未读 关于使用 win 系统的基本普及. 建议更换 win10 系统 可能很多朋友看到这个建议,心里很不爽,还很不服气,别急,且看官方给出的信息. 也就是说在 2019 年你完全 ...