使用KVM服务创建虚拟机

kvm的概念
KVM(Kernel-based Virtual Machine)是一个开源软件,基于内核的虚拟化技术,实际是嵌入系统的一个虚拟化模块,通过优化内核来使用虚拟技术,该内核模块使得Linux变成了一个Hypervisor,虚拟机使用 Linux 自身的调度器进行管理。

KVM 是基于虚拟化扩展(Intel VT或者AMD-V)的X86硬件的开源的Linux原生的全虚拟化解决方案。KVM中,虚拟机被实现为常规的Linux进程,由标准Linux调度程序进行调度;虚机的每个虚拟CPU被实现为一个常规的Linux进程。这使得KVM能够使用 Linux内核的已有功能。但是,KVM本身不执行任何硬件模拟,需要客户空间程序通过/dev/kvm接口设置一个客户机虚拟服务器的地址空间,向它提供模拟的I/O,并将它的视频显示映射回宿主的显示屏。目前这个应用程序是QEMU。

前期准备
使用 VMWare Workstation 软件安装 CentOS 7.2 操作系统,镜像使用提供的CentOS-7-x86_64-DVD-1511.iso,关闭防火墙并且配置 SELinux 规则,配置 IP 地址。YUM源使用提供的 kvm_yum 文件夹【VMware 虚拟机直接使用 centos 镜像安装,不需要提供的文件夹】

案例实施
1.安装KVM

配置本地yum源。

[root@localhost ~]rm -rf /etc/yum.repos.d/*

[root@localhost ~]# vi /etc/yum.repos.d/local.repo

[centos]

name=centos

baseurl=file:///opt/centos7.2

gpgcheck=0

enabled=1

[root@localhost ~]mkdir /opt/centos7.2

[root@localhost ~]mount CentOS-7-x86_64-DVD-1511.iso /opt/centos7.2

关闭防火墙。
[root@localhost ~]systemctl stop firewalld

[root@localhost ~]setenforce 0

使用yum安装KVM的主要组件及工具。

[root@localhost ~]yum install qemu-kvm openssl libvirt -y net-tools

命令解释:

qemu-kvm qemu-img (qcow2,raw)作用:管理虚拟机的虚拟磁盘
openssl: 进行安全通信,避免窃听,同时确认另一端连接者的身份
libvirt 作用: 虚拟机的管理软件

启动libvirtd服务。

[root@localhost ~]systemctl start libvirtd

将/usr/libexec/qemu-kvm 链接为/usr/bin/qemu-kvm。

[root@localhost ~]# ln -s /usr/libexec/qemu-kvm /usr/bin/qemu-kvm

2.创建 NAT 模式 KVM 虚拟机

将cirros-0.3.3-x86_64-disk.img镜像与qemu-ifup-NAT脚本文件上传到系统/root目录下。

给脚本赋予执行权限。

[root@localhost ~]# chmod +x /root/qemu-ifup-NAT

通过 qemu-kvm 命令启动 KVM 虚拟机。

[root@localhost ~]#qemu-kvm -m 1024 -drive file=/root/cirros-0.3.3-x86_64-disk.img,if=virtio -net nic,model=virtio -net tap,script=/root/qemu-ifup-NAT -nographic -vnc :1

-m 内存大小
drive file=/root/cirros-0.3.3-x86_64-disk.img 硬盘映像文件路径,采用这个镜像
-net tap,[script=file]:通过物理机的TAP网络接口连接,可使用script=file指定的脚本(默认为/etc/qemu-ifup)来配置当前网络接口
-nographic:默认情况下,qemu使用SDL来显示VGA输出,而此选项用于禁止图形接口,此时qemu类似于一个简单的命令行程序,其仿真串口设备将被重定向到控制台
3.验证
 创建虚拟机完成后,cirros 用户登录虚拟机,输入用户名为 cirros,密码为 cubswin:)。然后输入 ip addr list 命令查询 IP 地址,最后输入 route -n 命令查询路由表。示例代码如下:

 

 查询后,退出KVM虚拟机,代码如下所示:

 

 

<think>好的,我现在需要帮助用户了解如何使用命令行通过KVM创建虚拟机。首先,我需要确认自己对KVM的基本流程和所需工具有足够的了解。KVM是内核虚拟化模块,通常与QEMU和libvirt一起使用。用户可能已经安装了这些工具,但可能需要指导步骤。 首先,安装必要的软件包。不同的Linux发行版安装命令不同,比如Ubuntu用apt,CentOS用yum。需要确保用户安装了qemu-kvmlibvirt-daemon、virt-manager等。这部分可能需要分步骤说明,但用户的问题是关于命令行创建,所以可能不需要virt-manager的图形界面,但安装时可能还是会提到。 接下来,检查KVM是否启用。需要让用户运行kvm-ok命令或者检查/dev/kvm是否存在。如果未启用,可能需要引导他们开启虚拟化支持,比如在BIOS中设置,或者加载内核模块。这部分可能需要简要提及,避免用户卡在这一步。 然后,准备虚拟机的磁盘镜像。使用qemu-img创建qcow2格式的镜像文件,指定大小。需要解释命令的参数,比如-f指定格式,大小如20G。这步骤很重要,因为磁盘镜像是虚拟机的基础。 然后是实际的虚拟机创建命令。这里可能使用virt-install工具,它属于virt-manager的一部分,但可以通过命令行调用。需要列出virt-install的参数,比如--name、--ram、--disk path、--vcpus、--os-type、--os-variant、--network、--graphics、--console、--location等。特别是--location指定安装源,比如ISO镜像的位置,或者网络安装的URL。 如果使用ISO安装,需要指定--cdrom参数,而网络安装可能需要不同的参数。需要解释这些选项的区别,并给出示例。例如,使用本地ISO文件安装和通过网络安装的不同命令。 安装过程中,用户可能需要连接到虚拟机的控制台,这里提到使用virsh console命令,但需要说明如何配置虚拟机的控制台输出,可能涉及修改XML配置或使用--console参数正确设置。 最后,安装完成后的管理命令,如virsh list查看虚拟机,virsh start/reboot/shutdown等操作。这部分帮助用户管理虚拟机状态。 在整理这些步骤时,需要确保命令的正确性,比如参数顺序和选项的正确使用。同时,考虑用户可能遇到的问题,比如权限问题(需要将用户加入libvirt组),或者网络配置问题(默认使用NAT网络是否需要额外设置)。 可能还需要提醒用户确保CPU支持虚拟化,并且已经在BIOS中启用。此外,如果使用非图形界面安装,可能需要额外的参数来避免图形界面,或者使用VNC连接。 最后,将整个流程以清晰的中文步骤呈现,每个步骤给出示例命令,并解释关键参数的作用,帮助用户理解而不仅仅是复制命令。同时,指出可能的变通情况,比如不同的安装源或网络设置,以及常见问题的解决方法,如权限不足或找不到命令的情况。</think>以下是使用命令行通过KVM创建虚拟机的分步指南: ----- ### 1. 安装必要组件 ```bash # Debian/Ubuntu系统 sudo apt install qemu-kvm libvirt-daemon-system virtinst bridge-utils # CentOS/RHEL系统 sudo yum install qemu-kvm libvirt virt-install bridge-utils ``` * 将当前用户加入libvirt组: ```bash sudo usermod -aG libvirt $USER newgrp libvirt # 立即生效 ``` ### 2. 验证虚拟化支持 ```bash lsmod | grep kvm # 应显示kvm_intel或kvm_amd virt-host-validate # 验证环境准备情况 ``` ### 3. 创建磁盘镜像 ```bash qemu-img create -f qcow2 /var/lib/libvirt/images/ubuntu22.qcow2 20G ``` * `-f qcow2`:使用动态分配磁盘格式 * 最后一个参数为最大容量 ### 4. 执行安装命令(ISO安装示例) ```bash virt-install \ --name Ubuntu22-Server \ --ram 2048 \ --disk path=/var/lib/libvirt/images/ubuntu22.qcow2,size=20 \ --vcpus 2 \ --os-type linux \ --os-variant ubuntu22.04 \ --network bridge=virbr0 \ --graphics vnc,listen=0.0.0.0 \ --console pty,target_type=serial \ --cdrom /path/to/ubuntu-22.04-live-server-amd64.iso ``` ### 5. 关键参数说明 - **--network**: - `network=default` 使用NAT网络 - `bridge=br0` 使用桥接网络 - **--graphics**: - `none` 纯文本安装 - `spice,port=5900` 使用SPICE协议 - **安装源类型**: ```bash # 网络安装 --location http://archive.ubuntu.com/ubuntu/dists/jammy/main/installer-amd64/ # PXE引导 --pxe ``` ### 6. 虚拟机管理命令 ```bash virsh list --all # 查看所有虚拟机 virsh start vm_name # 启动 virsh shutdown vm_name # 正常关机 virsh destroy vm_name # 强制停止 virsh undefine vm_name # 删除配置 ``` ### 7. 高级配置示例(CPU拓扑) ```bash --cpu host-passthrough \ --features kvm_hidden=on \ --numatune nodeset=0 \ --vcpus sockets=1,cores=2,threads=2 ``` ### 常见问题处理 1. **权限拒绝错误**: - 确认用户属于libvirt组 - 检查`/var/lib/libvirt/images/`目录权限 2. **虚拟网络配置**: ```bash virsh net-list --all # 查看网络 virsh net-edit default # 编辑默认网络配置 ``` 3. **VNC连接**: ```bash virsh vncdisplay vm_name # 查看VNC端口 # 使用vnc客户端连接 <host-ip>:5900 ``` ----- 通过以上步骤,您可以灵活地使用命令行创建和管理KVM虚拟机。实际使用时请根据硬件配置和需求调整内存、CPU等参数。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值