TGTGInsighttelegram intelligenceLIVE / telegram public index
← Welcome to the Black Parade
Welcome to the Black Parade avatar

TGINSIGHT POST

Post #55

@TheB1ackParade

Welcome to the Black Parade

Views140Post view count
PostedMay 2505/25/2020, 03:54 PM
Post content

Post content

# KVM 极简入门 ## 一. QEMU QEMU (Quick Emulator) 提供了硬件和处理器虚拟化, 它跑在用户态, 无需内核. 话不多说, 直接用起来. 我使用的 OS 是 Ubuntu16. ### 1.1 安装 apt-get update apt-get install qemu 然后检查一下 dpkg --list | grep qemu ### 1.2 拉个镜像 curl -OL https://cloud.centos.org/centos/7/images/CentOS-7-x86_64-GenericCloud.qcow2 经过漫长的等待, 检查一下 qemu-img info CentOS-7-x86_64-GenericCloud.qcow2 会输出 format qcow2, virtual size 8G. ### 1.3 第一个虚拟机 qemu-system-x86_64 -name zc -cpu Nehalem -m 1024 -drive format=qcow2,file=CentOS-7-x86_64-GenericCloud.qcow2 -vnc 0.0.0.0:0 -daemonize -cpu Nehalem Nahalem Intel Core i7, -m 1024 1G 内存, -drive 指定刚才下载的镜像, -vnc 绑定一个端口让你访问虚拟机 然后检查一下 pgrep -la qemu 如果要停止的话直接 pkill -9 qemu ### 1.4 登录 我 macOS 下载了一个 VNC Viewer, 然后在 GUI 上连接 Ubuntu 的 IP:5900, 顺利连接, 然后让我登录, 但我不知道 root 和密码. 改镜像密码, 先下载 apt install -y libguestfs-tools 然后设置 root 密码为 root virt-customize -a CentOS-7-x86_64-GenericCloud.qcow2 --root-password password:root 会报错 virt-customize: error: libguestfs error: guestfs_launch failed., 这是因为在这个镜像上正跑着一个 VM 呢, 关掉先. 改好密码后最后重新启动一个虚拟机, VNC 连接登录, 成了. 进去后检查一下 cpu, memory, disk free -h lscpu df -h 应该是和我们指定的一样的, 分别是 1G, 1C, 8G. ### 1.5 KVM KVM (Kernel-based Virtual Machine) 和 QEMU 最大的不同是它跑在内核态, 所以需要内核支持. 先检查 cpu 支持 KVM 虚拟化: lscpu | grep vmx | uniq 然后检查内核模块 modprobe kvm lsmod | grep kvm 那么来吧 qemu-system-x86_64 -name zc -cpu Nehalem -m 1024 -drive format=qcow2,file=CentOS-7-x86_64-GenericCloud.qcow2 -vnc 0.0.0.0:0 -enable-kvm -daemonize 注意新增的 -enable-kvm. 另一种做法是下载 kvm 二进制 apt install qemu-kvm kvm -name zc -cpu Nehalem -m 1024 -drive format=qcow2,file=CentOS-7-x86_64-GenericCloud.qcow2 -vnc 0.0.0.0:0 -daemonize 不过本质上 kvm 二进制只是把 qemu-system-x86_64 包了一下, pgrep -la qemu 看到两种拉起来的进程是一样的. ## 二. libvirt libvirt 对不同的虚拟化技术提供了统一的上层接口, 比方说管理 QEMU/KVM, XEN, LXC. ### 2.1 安装 apt install -y libvirt0-dbg/xenial-updates apt install -y libvirt-bin 然后 libvirtd daemon 就起来了 systemctl status libvirtd 看看配置 cat /etc/libvirt/libvirtd.conf | grep -v '^#\|^$' 很多东西在 /etc/libvirt/ 里, 猫一眼 # ls -lF /etc/libvirt/ total 84 drwxr-xr-x 2 root root 4096 Mar 11 21:52 hooks/ -rw-r--r-- 1 root root 450 Mar 11 21:52 libvirt-admin.conf -rw-r--r-- 1 root root 547 Mar 11 21:52 libvirt.conf -rw-r--r-- 1 root root 15276 Mar 11 21:52 libvirtd.conf -rw-r--r-- 1 root root 834 Mar 11 21:52 libxl.conf -rw-r--r-- 1 root root 2169 Mar 11 21:52 libxl-lockd.conf -rw-r--r-- 1 root root 1235 Mar 11 21:52 lxc.conf drwxr-xr-x 2 root root 4096 May 19 22:23 nwfilter/ drwxr-xr-x 3 root root 4096 May 19 22:23 qemu/ -rw------- 1 root root 19536 Mar 11 21:52 qemu.conf -rw-r--r-- 1 root root 2169 Mar 11 21:52 qemu-lockd.conf -rw-r--r-- 1 root root 2134 Mar 11 21:52 virtlockd.conf -rw-r--r-- 1 root root 1802 Mar 11 21:52 virtlogd.conf -rw-r--r-- 1 root root 1217 Mar 11 21:52 virt-login-shell.conf 关注 libvirt.conf 是给 libvirt client 用的, libvirtd.conf 是给 libvirtd 用的, qemu.conf 是 libvirtd 驾驭 QEMU/KVM 的配置, qemu/ 里是创建的 VM 配置 ### 2.2 第二个虚拟机 先安装工具 apt install virtinst/xenial-updates 然后生成 libvirt domain xml virt-install --name v2 --ram 1024 --disk path=CentOS-7-x86_64-GenericCloud.qcow2,format=qcow2 --print-xml > v2.xml 看一下 v2.xml