利用virsh和xml文件创建虚拟机

virsh命令来创建虚拟机步骤

(1)生成硬盘镜像文件:
格式:raw或qcow2

# qemu-img create -f raw fdisk.img 10G
# qemu-img info fdisk.img

(2)编写xml配置文件,这一步在后面做详细介绍
(3)创建并运行虚拟机

# sudo apt-get install qemu-kvm
# virsh define vm0.xml  //导入虚拟机配置
# virsh start vm0  //开启vm0
# virsh list --all  // 显示所有虚拟机状态
# virsh destroy vm0  //销毁虚拟机
# virsh undefine vm1  //删除虚拟机配置
# virsh dumpxml vm0 //显示虚拟机xml配置

其中“vm0.xml”是步骤(2)中创建的xml文件。

虚拟机XML文件

<domain type='kvm'>  //如果是Xen,则type=‘xen’
  <name>vm0</name> //虚拟机名称,同一物理机唯一
  <uuid>fd3535db-2558-43e9-b067-314f48211343</uuid>  //同一物理机唯一,可用uuidgen生成
  <memory>524288</memory>
  <currentMemory>524288</currentMemory>  //memory这两个值最好设成一样
  <vcpu>2</vcpu>            //虚拟机可使用的cpu个数,查看物理机可用CPU个数:cat /proc/cpuinfo |grep processor | wc -l 
  <os>
   <type arch='x86_64' machine='pc-i440fx-vivid'>hvm</type> //arch指出系统架构类型,machine 则是机器类型,查看机器类型:qemu-system-x86_64 -M ?
   <boot dev='hd'/>  //启动介质,第一次需要装系统可以选择cdrom光盘启动
   <bootmenu enable='yes'/>  //表示启动按F12进入启动菜单
  </os>
  <features>
   <acpi/>  //Advanced Configuration and Power Interface,高级配置与电源接口
   <apic/>  //Advanced Programmable Interrupt Controller,高级可编程中断控制器
   <pae/>   //Physical Address Extension,物理地址扩展
  </features>
  <clock offset='localtime'/>  //虚拟机时钟设置,这里表示本地本机时间
  <on_poweroff>destroy</on_poweroff>  //突发事件动作
  <on_reboot>restart</on_reboot>
  <on_crash>restart</on_crash>
  <devices>   //设备配置
   <emulator>/usr/bin/kvm</emulator> //如果是Xen则是/usr/lib/xen/binqemu-dm
   <disk type='file' device='disk'> //硬盘
      <driver name='qemu' type='raw'/>
      <source file='/opt/vm/vmdev/fdisk.img'/>
      <target dev='vda' bus='virtio'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x06' function='0x0'/> //域、总线、槽、功能号,slot值同一虚拟机上唯一
   </disk>
   <disk type='file' device='disk'>  
      <driver name='qemu' type='raw'/> 
      <source file='/opt/vm/vmdev/fdisk2.img'/>
      <target dev='vdb' bus='virtio'/>  
   </disk>
   <disk type='file' device='cdrom'>//光盘
      <driver name='qemu' type='raw'/>
      <source file='/opt/vm/vmiso/ubuntu-15.10-server-amd64.iso'/>
      <target dev='hdc' bus='ide'/>
      <readonly/>
   </disk>

   /* 利用Linux网桥连接网络 */
   <interface type='bridge'>   
      <mac address='fa:92:01:33:d4:fa'/> 
      <source bridge='br100'/>  //配置的网桥网卡名称
      <target dev='vnet0'/>     //同一网桥下相同
      <alias name='net0'/>      //别名,同一网桥下相同
      <address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/>  //注意slot值唯一
   </interface>

   /* 利用ovs网桥连接网络 */
   <interface type='bridge'>  
      <source bridge='br-ovs0'/>  
      <virtualport type='openvswitch'/>
      <target dev='tap0'/>     
      <model type='virtio'/>  
   </interface>

    /* 配置成pci直通虚拟机连接网络,SR-IOV网卡的VF场景 */
   <hostdev mode='subsystem' type='pci' managed='yes'>
     <source>
       <address domain='0x0000' bus='0x03' slot='0x00' function='0x0'/>
     </source>
   </hostdev>

   /* 利用vhostuser连接ovs端口 */
   <interface type='vhostuser'>   
      <mac address='fa:92:01:33:d4:fa'/> 
      <source type='unix' path='/var/run/vhost-user/tap0' mode='client'/>  
      <model type='virtio'/>     
      <driver vringbuf='2048'/>     
      <address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/>  
   </interface>

   <interface type='network'>   //基于虚拟局域网的网络
     <mac address='52:54:4a:e1:1c:84'/>  //可用命令生成,见下面的补充
     <source network='default'/> //默认
     <target dev='vnet1'/>  //同一虚拟局域网的值相同
     <alias name='net1'/>
     <address type='pci' domain='0x0000' bus='0x00' slot='0x04' function='0x0'/>  //注意slot值
   </interface>
  <graphics type='vnc' port='5900' autoport='yes' listen='0.0.0.0' keymap='en-us'/>  //配置vnc,windows下可以使用vncviewer登录,获取vnc端口号:virsh vncdisplay vm0
   <listen type='address' address='0.0.0.0'/>
  </graphics>
  </devices>
</domain>
### 使用 `virsh` 创建 Linux 虚拟机的方法 要通过 `virsh` 工具创建一个 Linux 虚拟机,可以按照以下方式操作。以下是详细的说明以及示例代码。 #### 安装必要的软件包 在开始之前,需要确保已经安装了所需的工具库。可以通过以下命令来完成: ```bash yum install -y libvirt libvirt-client virt-manager virt-install qemu-kvm ``` 这一步骤会安装 `libvirt` 其客户端工具、KVM 支持以及其他必要组件[^1]。 #### 验证 KVM 是否启用 为了确认硬件虚拟化支持已开启,执行如下命令: ```bash egrep --color=auto '(svm|vmx)' /proc/cpuinfo ``` 如果输出中有匹配项,则表示 CPU 的虚拟化功能已被激活[^1]。 #### 启动并设置 Libvirt 服务 启动 `libvirtd` 服务,并将其设为开机自启: ```bash systemctl start libvirtd systemctl enable libvirtd ``` 此时,Libvirt 应该已经开始正常工作[^1]。 #### 准备 ISO 文件 下载目标系统的 ISO 映像文件(例如 CentOS 或 Ubuntu),并将它放置在一个可访问的位置,比如 `/var/lib/libvirt/images/centos7.iso`。 #### 使用 `virt-install` 命令创建虚拟机 接下来使用 `virt-install` 来定义新的虚拟机实例。这是一个典型的例子: ```bash virt-install \ --name centos7-vm \ --ram 2048 \ --vcpus 2 \ --disk path=/var/lib/libvirt/images/centos7.qcow2,size=20,bus=virtio,format=qcow2 \ --cdrom /var/lib/libvirt/images/centos7.iso \ --network bridge=virbr0,model=virtio \ --graphics vnc,listen=0.0.0.0 \ --os-type linux \ --os-variant rhel7 ``` 参数解释: - `--name`: 设置虚拟机名称。 - `--ram`: 分配给 VM 的内存大小 (单位 MB)。 - `--vcpus`: 指定虚拟处理器数量。 - `--disk`: 定义存储设备路径及其属性;这里我们指定了一个 QCOW2 格式的磁盘映像,容量为 20GB。 - `--cdrom`: 提供引导介质位置。 - `--network`: 网络连接配置,默认桥接模式下的网络接口卡类型为 VirtIO。 - `--graphics`: 图形界面选项,允许远程 VNC 连接到控制台。 - `--os-type` `--os-variant`: 描述操作系统类别及版本以便优化性能[^1]。 #### 查看新创建的虚拟机状态 运行以下命令以检查刚刚建立好的虚拟机是否处于活动状态: ```bash virsh list --all ``` 如果有任何错误或者想要进一步调整配置,也可以利用 XML 文件重新编辑域描述信息后再应用更改。 --- ### 注意事项 某些情况下可能遇到无法正常关机的问题,这是因为 ACPI 功能未被正确识别所致。解决方案之一是在 GRUB 中添加特定内核参数重启后生效[^3]。 ---
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

造夢先森

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值