virsh的使用与实例步骤安装虚拟机

2023-05-16

 Libvirt有两种控制方式,命令行和图形界面

图形界面:

通过执行名virt-manager,启动libvirt的图形界面,在图形界面下可以一步一步的创建虚拟机,管理虚拟机,还可以直接控制虚拟机的桌面。

 

命令行:

virsh list                                                  #显示本地活动虚拟机

virsh list –all                                           #显示本地所有的虚拟机(活动的+不活动的)

virsh define ubuntu.xml                      #通过配置文件定义一个虚拟机(这个虚拟机还不是活动的)

virsh start ubuntu                                #启动名字为ubuntu的非活动虚拟机

virsh create ubuntu.xml                     #创建虚拟机(创建后,虚拟机立即执行,成为活动主机)

virsh suspend ubuntu                          #暂停虚拟机

virsh resume ubuntu                           #启动暂停的虚拟机

virsh shutdown ubuntu                       #正常关闭虚拟机

virsh destroy ubuntu                           #强制关闭虚拟机

virsh dominfo ubuntu                          #显示虚拟机的基本信息

virsh domname 2                                 #显示id号为2的虚拟机名

virsh domid ubuntu                              #显示虚拟机id

virsh domuuid ubuntu                         #显示虚拟机的uuid

virsh domstate ubuntu                       #显示虚拟机的当前状态

virsh dumpxml ubuntu                        #显示虚拟机的当前配置文件(可能和定义虚拟机时的配置不同,因为当虚拟机启动时,需要给虚拟机分配id号、uuidvnc端口号等等)

virsh setmem ubuntu 512000           #给不活动虚拟机设置内存大小

virsh setvcpus ubuntu 4                      #给不活动虚拟机设置cpu个数

virsh edit ubuntu                                  #编辑配置文件(一般是在刚定义完虚拟机之后)

 

28-5  virsh常用命令一览表

命令

说明

help

显示该命令的说明

quit

结束 virsh ,回到 Shell

connect

连接到指定的虚拟机服务器

create

启动一个新的虚拟机

destroy

删除一个虚拟机

start

开启(已定义的)非启动的虚拟机

define

XML 定义一个虚拟机

undefine

取消定义的虚拟机

dumpxml

转储虚拟机的设置值

list

列出虚拟机

reboot

重新启动虚拟机

save

存储虚拟机的状态

restore

回复虚拟机的状态

suspend

暂停虚拟机的执行

resume

继续执行该虚拟机

dump

将虚拟机的内核转储到指定的文件,以便进行分析与排错

shutdown

关闭虚拟机

setmem

修改内存的大小

setmaxmem

设置内存的最大值

setvcpus

修改虚拟处理器的数量

 

 

libvirt还提供了一个shell:virsh,直接执行名virsh即可获得一个特殊的shell:virsh,在这个virsh里面可以执行上面的命令(去掉前面的virsh)与本地libvirt交互,还可以通过命令connect命令连接远程libvirt,与之交互,例如:connect xen+ssh://root@10.4.122.11。另外可以只执行一条远程libvirt命令:virsh –c xen+ssh://root@10.4.122.11 list --all

 

ubuntu.xml配置文件举例:

<domain type='xen'>  //域类型

<name>ubuntu</name>  //虚拟机的名字

<memory>1048576</memory> //虚拟机的最大内存

<currentMemory>524288</currentMemory> //虚拟机当前的内存

<vcpu>2</vcpu> //该虚拟机的cpu

<os>

<type>hvm</type>  //hvm表示全虚拟化

<loader>/usr/lib/xen/boot/hvmloader</loader>  //全虚拟化的守护进程所在的位置

<boot dev='hd'/> //hd表示从硬盘启动

</os>

<features>

<acpi/>

<apic/>

<pae/>

</features>

<clock offset='utc'/>

<on_poweroff>destroy</on_poweroff>

<on_reboot>restart</on_reboot>

<on_crash>restart</on_crash>

<devices>

<emulator>/usr/lib64/xen/bin/qemu-dm</emulator>  //二进制模拟器设备的完整路径。

<disk type='file' device='disk'>  //disk是用来描述磁盘的主要容器

<driver name='file'/>

<source file='/opt/awcloud/ubuntu/ubuntu.img'/>  //指定磁盘上文件的绝对路径

<target dev='hda' bus='ide'/>

</disk>

<disk type='file' device='disk'>

<driver name='file'/>

<source file='/opt/awcloud/ubuntu/sdb.img'/>

<target dev='hdb' bus='ide'/>

</disk>

<disk type='file' device='cdrom'>

<driver name='file'/>

<source file='/opt/awcloud/forest/ubuntu-10.04.3-desktop-i386.iso'/>

<target dev='hdc' bus='ide'/>

<readonly/>

</disk>

<serial type='pty'>   //定义串口

<target port='0'/>

</serial>

<console type='pty'>  //console用来代表交互性的控制台

<target port='0'/>

</console>

<interface type='bridge'>    //桥接设备

<mac address='00:16:36:1e:1d:04'/> //MAC地址

<source bridge='virbr0'/>

</interface>

<graphics type='vnc' autoport='yes' keymap='en-us'/>  //图形类型

</devices>

</domain>

 

注:

生成一个4G大小的空文件:dd if=/dev/zero of=./disk bs=1024 count=`expr 4 \* 1024 \* 1024`

修改虚拟机的启动设备:<boot dev='hd'/>从硬盘启动;<boot dev='cdrom'/>CD启动

 

网络参数:

ubuntu.xml配置文件,kvm虚拟机和xen虚拟机都只需要按照下面的模板进行配置,MAC地址是必须的,bridage的名字可能在不同的主机上是不一样,可能是virbr0,也可能是br0,但类型一定要是桥接模式就可以了

 

<interface type='bridge'>

<mac address='00:16:36:1e:1d:04'/>

<source bridge='virbr0'/>

</interface>

 

KVM虚拟机迁移:

迁移命令:virsh migrate –live<id or name> qemu+ssh://<dstip>/system tcp://<dstip>:49152

迁移完之后,本地机器可能仍是定义状态,要执行virsh undefine <name>清除。

 

注意:/dev/zero是一个输入设备,用来初始化文件。

      /dev/null是个无底洞,可以向它输出任何数据,它通吃并且不会撑着。

 

 实例:

1、使用ssh登入服务器:ssh 193.169=8.195.248

2、创建磁盘:    qemu-img create -f qcow2 rhel6.5x64.img 15G

3、生成xml:     virsh dumpxml rhel6.5x64 > rhelxml

4、编辑xml:    vimrhelxml

a\修改name:rhel6.5x64

b\修改type:   type=qcow2

c\修改mac地址: 改成不一样的就可以:比如: a1->a2;

d\修改两个source地址: iso   img

e\去除uid那一行

5、定义xml:virsh define rhelxml

6、开启rhel6.5x64:virsh start rhel6.5x64

 

 

 

 

 

另外一些查看命令:

virsh list --all:查看所有的虚拟机的信息

virsh vncdispaly ID;

vnc viewer address:oprt

 

 

 

一、安装guest虚拟机
1、直接通过virt-manager安装、管理虚拟机(略)
2、通过命令行安装guest虚拟机
qemu-img create -f qcow2 /images/centos6.3-x86_64.img 10G
chown qemu:qemu /images/centos6.3-x86_64.img
virt-install --name centos6.3 --ram=1024 --arch=x86_64 --vcpus=1 --check-cpu --os-type=linux --os-variant='rhel6' -c /tmp/CentOS-6.3-x86_64-minimal.iso --disk path=/images/centos6.3-x86_64.img,device=disk,bus=virtio,size=10,format=qcow2 --bridge=br100 --noautoconsole --vnc --vncport=5902 --vnclisten=0.0.0.0

二、利用virsh对虚拟机管理
2、开关机
virsh start centos6.3 #开机
virsh create /etc/libvirt/qemu/centos6.3.xml #直接通过主机配置文档启动主机
virsh shutdown centos6.3 #关机
virsh destroy centos6.3 #强制关闭电源
virsh list --all #查看虚拟机状态

3、添加删除虚拟机
virsh define /etc/libvirt/qemu/node5.xml #根据主机配置文档添加虚拟机
virsh list --all #node5已经添加
virsh undefine node5 #移除虚拟机
ls /etc/libvirt/qemu
virsh list --all #node5已经被移除

4、使用已存在的虚拟机配置文档安裝新的虚拟机
qemu-img create -f qcow2 /virhost/kvm_node/node6.img 20G#为新建虚拟机生产磁盘镜像文件
virsh list
virsh dumpxml node4 >/etc/libvirt/qemu/node6.xml#导出虚拟机node6的硬件配置信息为/etc/libvirt/qemu/node6.xml
vim /etc/libvirt/qemu/node6.xml
<domain type='kvm' id='20'> #修改node6的id号
<name>node6</name> #虚拟机node6的name
<uuid>4b7e91eb-6521-c2c6-cc64-c1ba72707fc7</uuid> #uuid必须修改,否则会和node4的冲突
<source file='/virhost/node4.img'/> #指定新虚拟机的硬盘文件
virsh define /etc/libvirt/qemu/node6.xml #使用虚拟描述文档建立虚拟机,
可用virsh edit node6修改node6的配置文件
virsh start node6#启动虚拟机

5 为虚拟机开启vnc
virsh edit node4 #编辑node4的配置文件;不建议直接通过vim node4.xml修改。
<graphics type='vnc' port='-1' listen='127.0.0.1' keymap='en-us'/>
#port='-1' :port自动分配,监听回环网络(virt-manager管理需要listen='127.0.0.1'),无密码
改为
<graphics type='vnc' port='5904' listen='0.0.0.0' keymap='en-us' passwd='xiaobai'/>
#固定vnc管理端口5904,不自动分配,vnc密码xiaobai,监听所有网络

远程vnc访问地址:192.168.32.40:5904

三、存储池和存储卷的管理

1.创建 KVM主机存储池

1).创建基于文件夹(目录)的存储池
virsh pool-define-as vmware_pool --type dir --target /virhost/vmware#定义存储池vmware_pool或
virsh pool-create-as --name vmware_pool --type dir --target /virhost/vmware
#创建存储池vmware_pool,类型为文件目录,/virhost/vmware,与pool-define-as结果一样

2).创建基于文件系统的存储池
virsh pool-define-as --name vmware_pool --type fs --source-dev /dev/vg_target/LogVol02 --source-format ext4 --target /virhost/vmware

virsh pool-create-as --name vmware_pool --type fs --source-dev /dev/vg_target/LogVol02 --source-format ext4 --target /virhost/vmware

3).查看存储池信息
virsh pool-info vmware_pool #查看存储域(池)

4).启动存储池
virsh pool-start vmware_pool #启动存储池
virsh pool-list

5)销毁存储域,取消存储池
virsh pool-destroy vmware_pool #销毁存储池
virsh pool-list --all
virsh pool-undefine vmware_pool #取消存储池的定义
virsh pool-list --all

2.创建了存储池后,就可以创建一个卷,这个卷是用来做虚拟机的硬盘
virsh vol-create-as --pool vmware_pool --name node6.img --capacity 10G --allocation 1G --format qcow2#创建卷 node6.img,所在存储池为vmware_pool,容量10G,初始分配1G,文件格式类型qcow2
virsh vol-info /virhost/vmware/node6.img #查看卷信息名称: node6.img类型:文件容量: 10.00 GB分配: 136.00 KB

3.在存储卷上安装虚拟主机
virt-install --connect qemu:///system \-n node7 \-r 512 \-f /virhost/vmware/node7.img \--vnc \--os-type=linux \--os-variant=rhel6 \--vcpus=1 \--network bridge=br0 \-c /mnt/rhel-server-6.0-x86_64-dvd.iso

 

game over!

待续。。。。。

 

安装虚拟机
从 6 系列开始 RedHat 推荐使用 virt-install/virsh 系列工具操作 kvm,而不是直接使用 qemu-kvm,所以 qemu-kvm 被移到一个不起眼的地方 /usr/libexec/:

# qemu-kvm
-bash: qemu-kvm: command not found

# ls /usr/libexec/qemu-kvm
/usr/libexec/qemu-kvm
VPSee 采用 RedHat 推荐的方式(virt-install)安装虚拟机,这里以安装 Ubuntu-11.10-server-amd64.iso 为例:

# virt-install \
--name ubuntu \
--ram 512 \
--vcpus=1 \
--disk path=/root/ubuntu.img,size=10 \
--accelerate \
--cdrom /root/ubuntu-11.10-server-amd64.iso \
--graphics vnc
开始安装,创建硬盘 ubuntu.img 后就报错,用的是 root 帐号居然还 Permission denied?!

Starting install...
Creating storage file ubuntu.img                                 | 10.0 GB     00:00
ERROR    internal error Process exited while reading console log output: char device redirected to /dev/pts/1
qemu-kvm: -drive file=/root/ubuntu.img,if=none,id=drive-ide0-0-0,format=raw,cache=none: could not open disk image /root/ubuntu.img: Permission denied

Domain installation does not appear to have been successful.
If it was, you can restart your domain by running:
  virsh --connect qemu:///system start ubuntu
otherwise, please restart your installation.
修改 qemu.conf 配置,把下面几个地方的注释去掉,然后把 dynamic_ownership 的值改成0,禁止 libvirtd 动态修改文件的归属:

# vi /etc/libvirt/qemu.conf
...
user = "root"
group = "root"
dynamic_ownership = 0
...
重启 libvirtd 服务再用上面的 virt-install 命令安装就应该可以了。这个时候 vnc 默认绑定的是本机 127.0.0.1,如果其他机器想用 vnc 客户端访问这台 kvm 服务器正在安装的 ubuntu 的话需要把 vnc 绑定到服务器的 IP 地址或者绑定到全局 0.0.0.0. 修改 qemu.conf 文件取消 vnc_listen 一行前面的注释,记得重启 libvirtd:

# vi /etc/libvirt/qemu.conf
...
vnc_listen = "0.0.0.0"


 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

virsh的使用与实例步骤安装虚拟机 的相关文章

随机推荐

  • springmvc(18)使用WebSocket 和 STOMP 实现消息功能

    0 README 1 xff09 本文旨在 介绍如何 利用 WebSocket 和 STOMP 实现消息功能 xff1b 2 xff09 要知道 xff0c WebSocket 是发送和接收消息的 底层API xff0c 而SockJS 是
  • stomp 连接错误: Whoops! Lost connection to http://localhost:8080/spring13/stomp 的解决方法

    0 README 1 xff09 本文旨在给出 stomp 连接错误 xff1a Whoops Lost connection to http localhost 8080 spring13 stomp 的解决方法 xff1b you ca
  • IEEE论文检测的字体未嵌入问题Times New Roman,Bold, Times New Roman,Italic is not embedded解决方法

    1 README 毕业前写了一篇 英文paper xff0c 接受后 xff0c 需要提交到 IEEE PDF Express 做格式检测 xff1b xff1b latex源码中引用了 Visio生成的算法流程图 xff0c PDF文件
  • centos磁盘安装与磁盘分区方案详解

    转自 xff1a https yq aliyun com ziliao 56538 前几天自己研究了下几个linux系统 xff0c 还是觉着centos要好一些 相对稳定点 xff0c 起码桌面系统还是比 ubuntu 强 安装cento
  • 学习Oracle 最好的5本书

    转自 xff1a http www goodu info gc node 88 经过精心搜集和统计 xff0c 这里列出了学习Oracle最好的5本书 xff0c 从入门到精通从简单理解到高级技巧 xff0c 涵盖了历年来最佳学习实践经验
  • java-HttpURLConnection 发送POST请求 传递参数或JSON数据

    java HttpURLConnection 发送POST请求 传递参数或JSON数据 需求 三方接口 restful请求 POST方式 参数JSON 接收数据JSON HttpURLConnection发送POST请求 span clas
  • 一次DPDK-L3FWD-ACL的问题排查

    其实说起来不是什么大问题 xff0c 所有的配置按照下面这个来的 包括写入arp和配置默认路由 xff0c 不过我用的单文件那个l3fwd acl https blog csdn net sinat 20184565 article det
  • Centos7关机和重启前执行自定义脚本

    0 前言 如果你在linux系统上启动了很多自己的服务 xff0c 如果直接执行系统的reboot或者shutdown命令 xff0c 可能会发生一些异常的现象 xff0c 所以我们在重启和关机前 xff0c 应该按照我们的意愿去自定义清理
  • Ubuntu20.04系统WineHQ7.0安装微信

    提供3种Ubuntu系统安装微信的方法 xff0c 在Ubuntu20 04上验证都ok 1 WineHQ7 0安装微信 xff1a ubuntu20 04安装最新版微信 可以支持微信最新版 xff0c 但是适配的不是特别好 xff1b 比
  • 0402 0603 0805 1206焊盘封装尺寸

  • Ubuntu 上使用hexo+github打造个人blog

    最近一段时间想要搭建个人的blog xff0c 然后好好写博客 在网上大致看了下 xff0c 一致的推荐hexo来搭建个人blog xff0c 而且可以通过github挂载在公网上去 xff0c 由于个人使用的Ubuntu 16 04 xf
  • 简单使用Python爬虫爬取淘宝网页商品信息

    最近在学习爬虫 xff0c 本人还是入门级的小白 xff0c 自己跟着老师写了一些代码 xff0c 算是自己的总结 xff0c 还有一些心得 xff0c 跟大家分享一下 xff0c 如果不当 xff0c 还请各位前辈斧正 这是代码 xff1
  • 非常详细的范式讲解(1NF/2NF/3NF/BCNF)

    范式 范式在计算机方面运用广泛 xff0c 在计算机二级三级均有涉及到 xff0c 今天就来讲讲范式 要是能够认真的看完 xff0c 相信一定能够理解的 在讲范式之前 xff0c 我们先来了解有关范式的基本概念 xff0c 听懂了有利于后面
  • ubuntu18.04无法安装libesd0-dev完美解决办法

    ubuntu18 04无法安装libesd0 dev 解决办法 解决办法 span class token comment 在行尾添加如下一行的内容 span span class token function sudo span vim
  • SystemUI学习记录

    OS android 7 1 由于项目需要需要对SystemUI进行定制化 xff0c 需求比较紧急 xff0c 没有很深入的去了解其整体代码 xff0c 仅仅记录下我的用到修改记录如下 xff1a 目录中有 或者 由于在不同的系统环境拷贝
  • informer

    list watch机制 list watch有两部分组成 xff0c 分别是list和watch list非常好理解 xff0c 就是调用资源的list API罗列资源 xff0c 基于HTTP短链接实现 xff1b watch则是调用资
  • kubelet - container manager

    containerManager 负责 node 节点上运行的容器的配置信息 xff0c 如 cgroup cpu device xff1b pod的创建流程参考 xff1a http www tianfeiyu com p 61 2825
  • 理解TCP/IP网络通信原理

    为什么会有TCP IP协议 在世界上各地 xff0c 各种各样的电脑运行着各自不同的操作系统为大家服务 xff0c 这些电脑在表达同一种信息的时候所使用的方法是千差万别 就好像圣经中上帝打乱了各地人的口音 xff0c 让他们无法合作一样 计
  • python 正则表达式点号与'\n'符号的问题

    匹配除了制表符和换行符之外的所有字符 前面的元字符出现任意次 xff0c 含0 43 前面的元字符出现一次或多次 xff1f 非贪婪模式 re S可以匹配多行 S s 匹配所有字符 所以 可以使用 s S 取代 在Python中可以使用方法
  • virsh的使用与实例步骤安装虚拟机

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