KVM虚拟化
简介
KVM(Kernel-Based Virtual Machines)是一个基于Linux内核的虚拟化技术, 可以直接将Linux内核转换为Hypervisor(系统管理程序)从而使得Linux内核能够直接管理虚拟机, 直接调用Linux内核中的内存管理、进程管理子系统来管理虚拟机。
KVM的虚拟化需要硬件支持(如Intel VT技术或者AMD V技术)。是基于硬件的完全虚拟化。而Xen早期则是基于软件模拟的Para-Virtualization,新版本则是基于硬件支持的完全虚拟化。但Xen本身有自己的进程调度器、存储管理模块等,所以代码较为庞大。广为流传的商业系统虚拟化软件VMware ESX系列是基于软件模拟的Full-Virtualization。
安装KVM
调整虚拟机
修改虚拟机内存,至少设置成2GB,双击“编辑虚拟机设置”按钮,如下图所示:
将虚拟机的内存修改为“2048”,如图所示:
在“硬件”选项卡中单击“处理器”,在虚拟化引擎中勾选虚拟化cpu性能计数器和虚拟化Intel VT,如下图所示:
接下来,我们添加一块50G的硬盘
到这里虚拟机设置就完成了。
检查CPU参数
[root@kvm ~]# free
[root@kvm ~]# grep -Ei 'vmx|svm' /proc/cpuinfo #//vmx为英特尔的cpu;svm为AMD的cpu。
如果显示为空,就要检查你虚拟机设置虚拟化引擎那里有没有打上√。
挂载磁盘
lsblk查看我们新添加的磁盘
可以看到一块大小为50G名字为sdb的磁盘
接下来格式化这块磁盘,格式化成ext4格式
//blkid+磁盘:查看磁盘信息
格式化完成后,挂载磁盘,创建挂载目录/kvm_data,然后进行挂载。
这种方式挂载后,重启虚拟机后需要重新挂载,我们可以设置一下开机自动挂载。
编写/etc/fstab文件,在最后一行添加/dev/sdb /kvm_data ext4 defaults 0 0
关闭防火墙和selinux
修改完成,重启虚拟机生效,使用getenforce查看
安装KVM
[root@kvm ~]# yum install -y virt-* libvirt bridge-utils qemu-img vim
启动KVM
配置网卡
增加桥接网卡ifcfg-br0,命令如下
[root@kvm ~]# cd /etc/sysconfig/network-scripts/
[root@kvm network-scripts]# cp ifcfg-eth0 ifcfg-br0 //ifcfg-eth0是配置的IP网卡,注意自己的网卡名字。
修改桥接网卡ifcfg-br0和NAT网卡ifcfg-eth0的内容,修改后service network restart 重启网卡
启动libvirtd服务
检查kvm模块是否加载
[root@kvm ~]#lsmod|grep kvm
启动libvirtd并检查是否成功启动
启动成功后,使用brctl命令可以看到两个网卡,如下
命令行安装Centos7
通过xshell或者CRT把centos7镜像上传到tmp目录下,上传后使用ll命令查看是否存在。
镜像存在,接下来使用virt-install进行CentOS 7的安装
[root@kvm ~]# virt-install --name=test --memory=512,maxmemory=1024 --vcpus=1,maxvcpus=2 --os-type=linux --os-variant=rhel7 --location=/tmp/CentOS-7-x86_64-DVD-1511.iso --disk path=/kvm_data/test.img,size=10 --bridge=br0 --graphics=none --console=pty,target_type=serial --extra-args="console=tty0 console=ttyS0"
命令解释:
l --name:指定虚拟机的名称。
l --memory:指定分配给虚拟机的内存资源大小。
l maxmemory:指定可调节的最大内存资源大小,因为KVM支持热调整虚拟机的资源。
l --vcpus:指定分配给虚拟机的CPU核心数量。
l maxvcpus:指定可调节的最大CPU核心数量。
l --os-type:指定虚拟机安装的操作系统类型。
l --os-variant:指定系统的发行版本。
l --location:指定ISO镜像文件所在的路径,支持使用网络资源路径,也就是说可以使用URL。
l --disk path:指定虚拟硬盘所存放的路径及名称,size则是指定该硬盘的可用大小,单位是G。
l --bridge:指定使用哪一个桥接网卡,也就是说使用桥接的网络模式。
l --graphics:指定是否开启图形。
l --console:定义终端的属性,target_type 则是定义终端的类型。
l --extra-args:定义终端额外的参数。
打完上面那条命令后,等一会,就可以看见下面这段命令,这是系统基础设置,带[!]基本都是需要配置。
1“Language settings”语言设置选择68中文,简体中文。
回车开始设置“Timezone settings”时区设置,选择Asia 亚洲,在选择城市上海
接下来我们配置“Software selection”,选择“4”,在选择“c”,因为默认就是minimalinstall,按Enter键
接下来我们配置“Installation Destination”,选择“5”,其余的依次选择“c”默认,按Enter键
接下来配置“Root password”,选择8,按Enter键 依次输入两次密码,密码相同,我设置的是000000,
Would you like to use it anyway?
//这句话的意思:你的密码太过简单,是否使用它,输入yes即可。
配置完成,选择“b”,按Enter键后,开始安装。
Installation complete. Press return to quit //按回车
输入用户名root,密码为刚才设置的000000.
到这里kvm虚拟化就完成了。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了