[ kvm ] 学习笔记 7:KVM 虚拟机创建的几种方式
通过对 qemu-kvm、libvirt 的学习,总结三种创建虚拟机的方式:
(1)通过 qemu-kvm 创建
(2)通过 virt-install 创建
(3)通过 virt-manager 创建
在使用这三种创建虚拟机前提是 宿主机必须支持 cpu 的硬件虚拟化技术(Intel 是 vmx,AMD 是svm),通过下面方式进行查看是否支持:
1 2 3 | [root@192.168.118.14 ~] #lscpu | egrep Virtualization Virtualization: VT-x Virtualization type : full |
通过上面查看,宿主机支持 VT-x 虚拟化技术
创建网桥网络:
1 2 3 4 5 | [root@192.168.118.14 ~] #yum install libvirt -y [root@192.168.118.14 ~] #mv /etc/libvirt/qemu/networks/default.xml /tmp/ [root@192.168.118.14 ~] #systemctl stop NetworkManager ; systemctl start libvirtd # 创建网桥设备:br0 [root@192.168.118.14 ~] #virsh iface-bridge eth0 br0 |
1. qemu-kvm 创建虚拟机
在 qemu-kvm 创建虚拟机中,又分为:
(1) 直接启动虚拟磁盘文件为虚拟机
(2)通过iso镜像文件安装虚拟机
(1)通过虚拟磁盘文件直接启动的方式
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 | [root@192.168.118.14 ~] #yum install qemu-kvm -y [root@192.168.118.14 ~] #ln -vs /usr/libexec/qemu-kvm /usr/bin/ [root@192.168.118.14 ~] #mkdir /images [root@192.168.118.14 ~] #cd /images/ [root@192.168.118.14 /images ] #wget http://download.cirros-cloud.net/0.3.5/cirros-0.3.5-i386-disk.img # 编写桥接使用的脚本 [root@192.168.118.14 ~] #cat /etc/qemu-ifup #!/bin/bash # BRIDGE=br0 if [ -n $1 ]; then ifconfig $1 up brctl addif $BRIDGE $1 [ $? - eq 0 ] && exit 0 || exit 1 else echo "Error: no interface specified." exit 1 fi [root@192.168.118.14 /images ] #qemu-kvm -cpu host -smp 1 -m 512m -drive file=/images/cirros-0.3.5-i386-disk.img,if=virtio,cache=writeback \ -net nic,model=virtio,macaddr=52:54:00:bb:d2:88 -net tap,ifname=vnet0.0,script= /etc/qemu-ifup -daemonize 说明: -name 虚拟机名称 -cpu 执行虚拟机cpu类型,可通过 -cpu ? 查看支持的cpu类型 -smp 虚拟机cpu数,支持多核心多线程设置 -smp n[,scores=scores][,threads=threads][,sockets=sockets] -drive 指定虚拟磁盘文件属性设置 file : 指定具体虚拟磁盘文件目录 if : 设置虚拟磁盘文件类型,virtio 为半虚拟化类型 cache: 虚拟磁盘文件属性,是回写(writeback) 还是 透写(writethrough) -nographic 设置虚拟机工作方式 不写直接在前台执行,Ctrl + C 会终止虚拟机运行 -nographic 直接命令行显示在控制端 -daemonize 后台执行虚拟机进程 /etc/qemu-ifup 脚本: #!/bin/bash # BRIDGE=br0 if [ -n $1 ]; then ip link set $1 up sleep 1 brctl addif $BRIDGE $1 [ $? - eq 0 ] && exit 0 || exit 1 else echo "Error: no interface specified." exit 1 fi |
(2) 通过 iso 文件安装虚拟机
1 2 3 4 5 6 7 8 9 10 | # 自行准备 iso 镜像文件 [root@192.168.118.14 ~] #ls /mnt/iso/ CentOS-7-x86_64-DVD-1511.iso # 安装 vnc 客户端 和 x11 需要的插件 [root@192.168.118.14 ~] #yum install tigervnc xorg-x11-xauth -y [root@192.168.118.14 ~] #qemu-img create -f qcow2 -o size=20G,preallocation=metadata /images/Centos7.qcow2 [root@192.168.118.14 ~] #qemu-kvm -name 'centos7' -cpu host -smp 1 -m 1024m -drive file=/images/Centos7.qcow2 -cdrom /mnt/iso/CentOS-7-x86_64-DVD-1511.iso -daemonize # 如果这里召唤不出界面,建议重新开启一个终端执行 [root@192.168.118.14 ~] #vncviewer :5900 |
如图:
2. virt-install 创建虚拟机
在使用 virt-install 创建虚拟机的时候,首先把一些要使用的程序包安装:
1 2 3 4 5 | yum install virt-viewer dejavu-sans-fonts.noarch xorg-x11-xauth -y 说明: virt-viewer 用于通过vnc直接查看虚拟机控制台 dejavu-sans-fonts.noarch xorg-x11-xauth 用于通过 xmanager直接界面访问 |
在 virt-install 中创建虚拟机的方式有以下几种:
(1)直接启动虚拟磁盘文件为虚拟机
1 2 3 4 5 6 7 | virt- install --name test --memory 512 --disk /images/cirros-0 .3.5-i386-disk.img -- import --network bridge=br0 --graphics=vnc --name 虚拟机名 --memory 内存(默认单位: MB) --disk 指定虚拟磁盘文件 -- import 导入虚拟磁盘文件 --network 执行网络,不指定网络是无法启动的。bridge 执行网桥设备 --graphics 通过什么方式访问界面,这里使用 vnc ,否则无法输入。 |
(2)通过 iso 文件安装虚拟机
1 2 3 4 5 6 7 8 9 10 11 | 首先通过 qemu-img 创建虚拟磁盘文件 #qemu-img create -f qcow2 -o size=20G,preallocation=metadata CentOS7.qcow2 #virt-install --name centos --vcpus 2 --memory 2048 --disk /images/CentOS7.qcow2,format=qcow2,bus=virtio,cache=writeback \ --network bridge=br0,model=virtio --cdrom /usr/local/src/CentOS-7-x86_64-Minimal-1708 .iso --graphics vnc --noautoconsole --name 虚拟机名 --memory 内存(默认单位: MB) --disk 指定虚拟磁盘文件, format 指定虚拟磁盘格式,bus 指定半虚拟化(virtio) cache 指定磁盘缓存(回写) --network 执行网络,不指定网络是无法启动的。bridge 执行网桥设备 model 指定虚拟网卡为半虚拟化,优化性能 --graphics 通过什么方式访问界面,这里使用 vnc ,否则无法输入。 --noautoconsole 不用在界面直接弹出安装界面,后面可以通过 virt-view centos 唤出图形界面 |
3. virt-manager 创建虚拟机
virt-manager 是通过图形界面直接鼠标选择安装,这个不再演示。注意以下几个点:
(1)通过命令 virt-manager 无法唤出界面,需要安装 xorg-x11-xauth , 然后重新开启一个会话执行 virt-manger
(2)如果 virt-manager 出现乱码,需要安装 dejavu-sans-mono-fonts
(3)注意防火墙和 selinux
本文作者:hukey
本文链接:https://www.cnblogs.com/hukey/p/11307129.html
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】博客园携手 AI 驱动开发工具商 Chat2DB 推出联合终身会员
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步