首页 > kvm--virsh命令行下管理虚拟机

kvm--virsh命令行下管理虚拟机

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=9663676416 encryption=off cluster_size=65536 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: 9.0G (9663676416 bytes)
disk size: 196K    #实际占用磁盘196k,最高可用9G
cluster_size: 65536
Format specific information:compat: 1.1lazy 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 ] 退出1、一直hang在这个状态无法连接上虚拟机,这是因为宿主机通过ttyss0连接虚拟机,但被连接主机没有设置或者没有设置成功。
2、或者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
'kvm'>vm498c5d257-6b75-493b-91db-66589b582733'KiB'>1048576'KiB'>1048576'static'>1'x86_64' machine='pc-i440fx-rhel7.0.0'>hvm'host-passthrough'/>        #删除下面两行'utc'>'rtc' tickpolicy='catchup'/>

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

[root@localhost ~]# lsmod | grep kvm
kvm_amd                69849  0 
kvm                   566340  1 kvm_amd
irqbypass              13503  1 kvm

 

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

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

svm是支持amd架构

vmx支持intel架构

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

 

转载于:https://www.cnblogs.com/xiaoxiaotiejiang/p/11082756.html

更多相关:

  • 一、业务场景 在rMBP上的VMware Fushion 15.1安装虚拟机,采用一切默认的配置,经过简单几步,我们将得到一个dhcp协议的具有动态ip地址的虚拟机,可以满足绝大多数情况,也很方便很好用。但是有一种业务场景需要考虑到,比如我想创建一个虚拟机,只提供指定的网络服务(比如dns,http服务等),在家里和公司环境都不需要...

  • 1.区分VirtualBox和具体的虚拟机系统 VirtualBox是个虚拟机管理器,而我们真正使用的操作系统,比如CentOS,XP或Mac X OS,都是具体的虚拟机。在VirtualBox中可以安装多个具体的虚拟机系统。 安装完VirtualBox之后,还需要进一步安装具体的虚拟机实例。 2.区分虚拟机容器和光盘镜...

  • 问题:我们在使用Linux虚拟机的时候经常会出现各种各样的问题,其中的一个问题就是Linux虚拟机连不上网,这是我最近经常遇到的问题,下面提供一种方法解决这个问题 Linux网络设置 打开虚拟机依次单击【System】–>【Preferences】–>【Network Connections】,如下图所示 这个时候会弹出一...

  • Java是通过java虚拟机来装载和执行编译文件(class文件)的,java虚拟机通过命令java option 来启动,-option为虚拟机参数,通过这些参数可对虚拟机的运行状态进行调整. 一、如何查看参数列表: 虚拟机参数分为基本和扩展两类:在命令行中输入java可得到基本参数列表,java -X则可得到扩展参数列表。 注:以...