•KVM模块直接整合在Linux内核中node
•虚拟机建立 •虚拟机内存分配 •虚拟机CPU寄存器读写 •虚拟CPU运行
•模拟PC硬件的用户控件组件 •提供I/O设备模型及访问外设的途径
•客户模式: 虚拟机 •用户设置: 设置 •内核模式: KVM Driver 内核态
开启虚拟机的虚拟化linux
[root@localhost ~]# fdisk -l 磁盘 /dev/sdb:107.4 GB, 107374182400 字节,209715200 个扇区 Units = 扇区 of 1 * 512 = 512 bytes 扇区大小(逻辑/物理):512 字节 / 512 字节 I/O 大小(最小/最佳):512 字节 / 512 字节 磁盘 /dev/sda:42.9 GB, 42949672960 字节,83886080 个扇区 Units = 扇区 of 1 * 512 = 512 bytes 扇区大小(逻辑/物理):512 字节 / 512 字节 I/O 大小(最小/最佳):512 字节 / 512 字节 磁盘标签类型:dos 磁盘标识符:0x000be35b 设备 Boot Start End Blocks Id System /dev/sda1 * 2048 12584959 6291456 83 Linux /dev/sda2 12584960 54527999 20971520 83 Linux /dev/sda3 54528000 62916607 4194304 82 Linux swap / Solaris /dev/sda4 62916608 83886079 10484736 5 Extended /dev/sda5 62918656 83886079 10483712 83 Linux [root@localhost ~]# fdisk /dev/sdb 欢迎使用 fdisk (util-linux 2.23.2)。 更改将停留在内存中,直到您决定将更改写入磁盘。 使用写入命令前请三思。 Device does not contain a recognized partition table 使用磁盘标识符 0xc2432934 建立新的 DOS 磁盘标签。 命令(输入 m 获取帮助):n Partition type: p primary (0 primary, 0 extended, 4 free) e extended Select (default p): p 分区号 (1-4,默认 1): 起始 扇区 (2048-209715199,默认为 2048): 将使用默认值 2048 Last 扇区, +扇区 or +size{K,M,G} (2048-209715199,默认为 209715199): 将使用默认值 209715199 分区 1 已设置为 Linux 类型,大小设为 100 GiB 命令(输入 m 获取帮助):w The partition table has been altered! Calling ioctl() to re-read partition table. 正在同步磁盘。 [root@localhost ~]# [root@localhost ~]# mkfs /dev/sdb1 mke2fs 1.42.9 (28-Dec-2013) 文件系统标签= OS type: Linux 块大小=4096 (log=2) 分块大小=4096 (log=2) Stride=0 blocks, Stripe width=0 blocks 6553600 inodes, 26214144 blocks 1310707 blocks (5.00%) reserved for the super user 第一个数据块=0 Maximum filesystem blocks=4294967296 800 block groups 32768 blocks per group, 32768 fragments per group 8192 inodes per group Superblock backups stored on blocks: 32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208, 4096000, 7962624, 11239424, 20480000, 23887872 Allocating group tables: 完成 正在写入inode表: 完成 Writing superblocks and filesystem accounting information: 完成 [root@localhost ~]# mkdir /data [root@localhost ~]# mount /dev/sdb1 /data/ [root@localhost ~]# df -hT 文件系统 类型 容量 已用 可用 已用% 挂载点 /dev/sda2 xfs 20G 3.3G 17G 17% / devtmpfs devtmpfs 1.9G 0 1.9G 0% /dev tmpfs tmpfs 1.9G 0 1.9G 0% /dev/shm tmpfs tmpfs 1.9G 9.0M 1.9G 1% /run tmpfs tmpfs 1.9G 0 1.9G 0% /sys/fs/cgroup /dev/sda5 xfs 10G 37M 10G 1% /home /dev/sda1 xfs 6.0G 174M 5.9G 3% /boot tmpfs tmpfs 378M 12K 378M 1% /run/user/42 tmpfs tmpfs 378M 0 378M 0% /run/user/0 /dev/sdb1 ext2 99G 60M 94G 1% /data [root@localhost ~]#
[root@localhost ~]# mount.cifs //192.168.100.100/tools /mnt/ Password for root@//192.168.100.100/tools: [root@localhost ~]#
[root@localhost ~]# yum groupinstall "GNOME Desktop" -y ##安装桌面环境 [root@localhost ~]# yum install qemu-kvm -y ##KVM模块 [root@localhost ~]# yum install qemu-kvm-tools -y ##KVM调试工具 [root@localhost ~]# yum install virt-install -y ##构建虚拟机的命令行工具 [root@localhost ~]# yum install qemu-img -y ##qemu组件,建立磁盘,启动虚拟机 [root@localhost ~]# yum install bridge-utils -y ##网络支持工具 [root@localhost ~]# yum install libvirt -y ##虚拟机管理工具 [root@localhost ~]# yum install virt-manager -y ##图像化管理虚拟机
[root@localhost ~]# lsmod | grep kvm kvm_intel 170086 0 kvm 566340 1 kvm_intel irqbypass 13503 1 kvm [root@localhost ~]#
cat /proc/cpuinfo | grep svm ##AMD服务器可用 cat /proc/cpuinfo | grep vmx ##inter服务器可用 egrep '(vmx|svm)' /proc/cpuinfo ##二者均可用
#开启服务 [root@localhost ~]# systemctl start libvirtd #开机自启动 [root@localhost ~]# systemctl enable libvirtd
[root@localhost ~]# cd /data/ #建立两个文件 [root@localhost data]# mkdir vdisk viso #复制并调到后台运行 [root@localhost data]# cp -r /mnt/CentOS-7-x86_64-DVD-1708.iso /data/viso & [1] 29318 [root@localhost data]# [1]+ 完成 cp -i -r /mnt/CentOS-7-x86_64-DVD-1708.iso /data/viso [root@localhost data]# ls viso/ CentOS-7-x86_64-DVD-1708.iso [root@localhost data]#
#进入网卡文件 [root@localhost data]# cd /etc/sysconfig/network-scripts/ #复制建立br0网卡 [root@localhost network-scripts]# cp -p ifcfg-ens33 ifcfg-br0 #进入ens33网卡,设置桥接命令 [root@localhost network-scripts]# vim ifcfg-ens33 ##末行添加 #桥接命令 BRIDGE=br0 #配置桥接网卡,将桥接网卡设置为静态的地址 [root@localhost network-scripts]# vim ifcfg-br0 TYPE=bridge PROXY_METHOD=none BROWSER_ONLY=no BOOTPROTO=static DEFROUTE=yes IPV4_FAILURE_FATAL=no IPV6INIT=yes IPV6_AUTOCONF=yes IPV6_DEFROUTE=yes IPV6_FAILURE_FATAL=no IPV6_ADDR_GEN_MODE=stable-privacy NAME=br0 DEVICE=br0 ONBOOT=yes IPADDR=192.168.52.134 NETMASK=255.255.255.0 GATEWAY=192.168.52.1 [root@localhost network-scripts]# systemctl restart network ##重启网卡 [root@localhost network-scripts]# ifconfig ##查看网卡信息 br0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 inet 192.168.52.134 netmask 255.255.255.0 broadcast 192.168.52.255 inet6 fe80::69d9:68eb:e59e:c66f prefixlen 64 scopeid 0x20<link> ether 00:0c:29:eb:34:07 txqueuelen 1000 (Ethernet) RX packets 14 bytes 1274 (1.2 KiB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 29 bytes 4473 (4.3 KiB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 ether 00:0c:29:eb:34:07 txqueuelen 1000 (Ethernet) RX packets 3356082 bytes 4925169168 (4.5 GiB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 227829 bytes 18565675 (17.7 MiB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
[root@localhost ~]# virt-manager