xapt-get install qemu-kvmapt-get install qemu (qemu是一个广泛使用的开源计算机仿真机器和虚拟机)apt-get install virt-manager(虚拟机的可视化管理工具)apt-get install virt-viewer(是一个用于显示虚拟机的图形控制台的最小工具)apt-get install libvirt-bin(虚拟数据库,不一定有)apt-get install bridge-utils(桥网络)# 安装apt-get install kvm qemu libvirt-bin virtinst virt-manager virt-viewer# 验证root@ubuntu:~# kvm-okINFO: /dev/kvm existsKVM acceleration can be usedroot@ubuntu:~# virsh -c qemu:///system listId Name State# 启动virt-manager
在VM workstation中安装KVM,运行virt-manager
virt-manager提示: error no active connection to install on.
原因:libvirtd调用子进程dmidecode超时至无法响应,可能和VM workstation的兼容性有关
解决办法:killall dmidecode杀掉dmidecode后,kvm立马就正常了,关机重启也正常了
创建网桥
xxxxxxxxxx# The primary network interfaceauto eth0iface eth0 inet manual## 静态IPauto br0iface br0 inet staticaddress 192.168.200.130network 192.168.200.0netmask 255.255.255.0broadcast 192.168.200.255gateway 192.168.200.1dns-nameservers 8.8.8.8bridge_ports eth0bridge_stp offbridge_fd 0bridge_maxwait 0bridge_maxage 12## DHCPauto br0iface br0 inet dhcpbridge_ports eth0bridge_stp offbridge_fd 0
重启网络
xxxxxxxxxxservice networking restart
posted @ 2019-01-24 13:36 过眼风 阅读(5010) 评论(0)
KVM 全称是 Kernel-Based Virtual Machine。也就是说 KVM 是基于 Linux 内核实现的。 KVM有一个内核模块叫 kvm.ko,只用于管理虚拟 CPU 和内存。
那 IO 的虚拟化,比如存储和网络设备由谁实现呢? 这个就交给 Linux 内核和Qemu来实现。
说白了,作为一个 Hypervisor,KVM 本身只关注虚拟机调度和内存管理这两个方面。IO 外设的任务交给 Linux 内核和 Qemu
xxxxxxxxxx# 查看cpu是否支持虚拟化grep -E '(vmx|svm)' /proc/cpuinfo# 安装qemu-kvm(用户态管理工具),libvirt(命令行管理工具)# virt-install(安装kvm工具),bridge-utils(桥接设备管理工具)yum install -y qemu-kvm libvirt virt-install virt-manager# 加载kvm模块,默认应该是加载的lsmod |grep kvmmodprobe kvm-intel# 启动libvirtd服务systemctl enable libvirtdsystemctl restart libvirtdsystemctl status libvirtd
xxxxxxxxxx# 查看网桥[root@localhost ~]# brctl showbridge name bridge id STP enabled interfacesvirbr0 8000.52540034742a yes virbr0-nic# 新增 ifcfg-br0cd /etc/sysconfig/network-scripts/cp ifcfg-ens33 ifcfg-br0# ifcfg-br0NAME=br0DEVICE=br0TYPE=Bridge# UUID# 编辑 ifcfg-ens33vi ifcfg-ens33BOOTPROTO=noneBRIDGE=br0 # 增加此项# 重启网卡服务systemctl restart network.service# 查看网桥[root@localhost network-scripts]# brctl showbridge name bridge id STP enabled interfacesbr0 8000.000c29f134bd no ens33virbr0 8000.525400a2496a yes virbr0-nic
需要通过 nmcli
xxxxxxxxxx# 查看网络脚本目录,只看到以太网卡eno1的配置:[root@server ~]# ls -al /etc/sysconfig/network-scripts/total 8drwxr-xr-x. 2 root root 24 Oct 6 22:27 .drwxr-xr-x. 7 root root 4096 Oct 6 23:15 ..-rw-r--r--. 1 root root 308 Oct 6 22:27 ifcfg-eno1# 查看当前连接:[root@server ~]# nmcli connectionNAME UUID TYPE DEVICEeno1 ce6dd316-b6a9-4e58-9032-e0c1b3fcf1b0 ethernet eno1virbr0 979aeccf-7002-4b27-853b-ca0faddf7f0d bridge virbr0# 新建网桥,名字为br0:[root@server ~]# nmcli connection add type bridge con-name br0 ifname br0 autoconnect yesConnection 'br0' (6d7894dc-ccb0-45a6-9347-940128de7efa) successfully added.# 这时这时/etc/sysconfig/network-scripts目录已经新增一个文件ifcfg-br0,可查看到内容为:[root@server ~]# cat /etc/sysconfig/network-scripts/ifcfg-br0STP=yesBRIDGING_OPTS=priority=32768TYPE=BridgePROXY_METHOD=noneBROWSER_ONLY=noBOOTPROTO=dhcpDEFROUTE=yesIPV4_FAILURE_FATAL=noIPV6INIT=yesIPV6_AUTOCONF=yesIPV6_DEFROUTE=yesIPV6_FAILURE_FATAL=noIPV6_ADDR_GEN_MODE=stable-privacyNAME=br0UUID=6d7894dc-ccb0-45a6-9347-940128de7efaDEVICE=br0ONBOOT=yes# 查看连接:[root@server ~]# nmcli connectionNAME UUID TYPE DEVICEeno1 ce6dd316-b6a9-4e58-9032-e0c1b3fcf1b0 ethernet eno1virbr0 979aeccf-7002-4b27-853b-ca0faddf7f0d bridge virbr0br0 6d7894dc-ccb0-45a6-9347-940128de7efa bridge br0# 网桥br0桥接至eno1:[root@server ~]# nmcli connection add type bridge-slave ifname eno1 master br0Connection 'bridge-slave-eno1' (b1788643-bdbb-4f24-adde-265462f172fc) successfully added.# 这时/etc/sysconfig/network-scripts目录已经自动新增一个文件ifcfg-bridge-slave-eno1:[root@server ~]# cat /etc/sysconfig/network-scripts/ifcfg-bridge-slave-eno1TYPE=EthernetNAME=bridge-slave-eno1UUID=b1788643-bdbb-4f24-adde-265462f172fcDEVICE=eno1ONBOOT=yesBRIDGE=br0# 查看连接:[root@server ~]# nmcli connectionNAME UUID TYPE DEVICEeno1 ce6dd316-b6a9-4e58-9032-e0c1b3fcf1b0 ethernet eno1virbr0 7bbff2fd-12e1-4e9c-8cd6-9f0bd14ad35e bridge virbr0br0 6d7894dc-ccb0-45a6-9347-940128de7efa bridge br0bridge-slave-eno1 b1788643-bdbb-4f24-adde-265462f172fc ethernet --# 关闭eno1:[root@server ~]# nmcli connection down eno1Connection 'eno1' successfully deactivated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/2)# 打开网桥br0:[root@server ~]# nmcli connection up br0Connection successfully activated (master waiting for slaves) (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/4)# 注意:如果这个过程是远程SSH或VNC操作的,需要耐心等信息返回~
xxxxxxxxxx# CentOS 8 默认没有x11组件,需安装yum install xorg-x11-xauth xorg-x11-fonts-* xorg-x11-font-utils xorg-x11-fonts-Type1 xclock# 启动图形化管理工具virt-managerLANG="zh_CN.UTF-8";virt-manager# 中文支持yum groupinstall "fonts"# CentOS 6vi /etc/sysconfig/i18n# CentOS 7vi /etc/locale.conf把内容改为LANG="zh_CN.UTF-8"
xxxxxxxxxxqemu-img create -f qcow2 /tmp/CentOS-7-x86_64.qcow2 10Gvirt-install --virt-type kvm --name CentOS-7-x86_64 --ram 1024 \--cdrom=/tmp/CentOS-7-x86_64-Minimal-1511.iso \--disk path=/tmp/CentOS-7-x86_64.qcow2,format=qcow2 \--network bridge=br0 --graphics vnc,listen=0.0.0.0 --noautoconsole
xxxxxxxxxxkvm 默认路径/var/lib/libvirtkvm 默认镜像/var/lib/libvirt/imageskvm 配置文件/etc/libvirt/qemuKVM 重新加载虚拟机XML配置文件virsh define /etc/libvirt/qemu/centos7.xml
链接至远程主机的qemu hypervisor,每次都要输入ssh密码,改成ssh无密码登陆就不需要输入密码了,直接显示结果。
xxxxxxxxxxvirsh -c qemu+ssh://tux@mercury.example.com/system 直接进入交互virsh模式virsh -c qemu+ssh://tux@mercury.example.com/system list 直接显示list后的结果#其余连接格式如下:qemu:///session (local access to per-user instance)qemu+unix:///session (local access to per-user instance)qemu:///system (local access to system instance)qemu+unix:///system (local access to system instance)qemu://example.com/system (remote access, TLS/x509)qemu+tcp://example.com/system (remote access, SASl/Kerberos)qemu+ssh://root@example.com/system (remote access, SSH tunnelled)
xxxxxxxxxxvirsh list --all 查看所有虚拟机virsh shutdown <domin> 关闭虚拟机domin,如果不设置domin则关闭所有的虚拟机virsh destory <domin> 强制关闭虚拟机virsh start <domin> 启动虚拟机virsh undefine <domin> 删除虚拟机(该命令只删除配置文件,并不删除磁盘文件)virsh dumpxml <domin> 导出虚拟机配置文件到标准输出# 直接编辑domain配置文件virsh edit domain-id# 编辑XML配置文件,等效于:virsh dumpxml domain > domain.xmlvirsh edit domain.xmlvirsh define domain.xmlvirsh managedsave domain-id 保存当前运行的虚拟机的状态,当虚拟机再次启动的时候会恢复到之前保存的状态virsh migrate optional –live –suspend domain-id desturi migrateuri 迁移虚拟机到其他机器 –live表示动态迁移,–suspend表示迁移到目的地时虚拟机处于paused状态,desturi是迁移到目的地主机的URI,migrateuri是迁移机器的URI。virsh save domain-id state-file 保存一个正在运行的虚拟机的状态到一个文件中,以便以后恢复到此状态,一旦保存后虚拟机将不会再运行,占有的资源也会释放,virsh restore可以恢复到此前的状态。eg:save 12 /tmp/testvirsh restore state-file 恢复到之前保存的一个状态.eg:restore /tmp/testvirsh setmem domain-id kilobytes 改变当前虚拟机分配的内存,立即生效,单位KBvirsh setmaxmem domain-id kilobytes 设置一个虚拟机可分配的最大内存,它不改变当前使用的内存virsh setvcpus domain-id count 改变当前虚拟机的vcpu个数virsh suspend domain-id 挂起一个虚拟机virsh resume domain-id 从挂起状态恢复一个虚拟机virsh vcpuinfo domain-id 显示一些虚拟机的vcpu信息,包括几个vcpu,运行时间,和那个物理cpu亲和virsh vcpupin domain-id vcpu cpulist 把vcpu绑定到物理cpu,vcpu的数量必须提供,cpulist是一个以逗号分割的物理cpu列表virsh vncdisplay domain-id 显示vnc监听的地址和端口
xxxxxxxxxx# 创建存储卷qemu-img create -f qcow2 /data/kvmstorage/centos7.qcow2 20G
snapshots可以保存一个domain的disk memory device在某个时间点的状态以便将来会使用到,保存的文件名称必须是唯一的
xxxxxxxxxxsnapshot-create domain xmlfile 给domain创建一个snapshot,详细内容保存在xmlfile中snapshot-current domain 显示一个domain的当前的snapshotsnapshot-list domain 显示一个domain的所有的snapshotsnapshot-revert domain snapshot 恢复一个domian到以前的snapshotsnapshot-delete domain snapshot –children 删除一个domain的snapshot
所有的日志以及虚拟机启动的命令都在libvirt日志目录中。
xxxxxxxxxxcat /var/log/libvirt/libvirtd.logPosted by emmoblin 2013年06月16日 libvirt
https://www.cnblogs.com/lwlnice/p/18326662
服务器没有图形界面,可以安装xfce。要安装最小的 X Windows,可以不安装xface,只 安装xorg 即可。
xxxxxxxxxxapt update# 安装 Xfce 桌面环境及其所有软件包apt install task-xfce-desktop# 安装简体中文字体apt install fonts-wqy-zenhei# 设置系统语言为中文,在弹出的窗口中,选择 zh_CN.UTF-8 UTF-8,可以用Page Down翻页dpkg-reconfigure locales#启动startxfce4
https://blog.csdn.net/allway2/article/details/122160151
xxxxxxxxxx# 检查CPU是否支持虚拟化grep --color=auto -E '(vmx|svm)' /proc/cpuinfoapt update# 安装 QEMU-KVM 和 Libvirt 的命令apt install qemu-kvm libvirt-clients libvirt-daemon-system bridge-utils virtinst libvirt-daemon -y# 安装 Virt-Manager 图形界面apt install virt-manager -y# 列出可用网络,默认只有default,且未处于活动状态,virsh net-list --all# 使其处于活动状态并自动启动sudo virsh net-start defaultsudo virsh net-autostart default# 启用 vhost_net 模块modprobe vhost_netlsmod | grep vhost
虽然 KVM 带有一个开箱即用的名为 virbr0 的桥接网络接口,创建一个名为 br0 的直联网桥
xxxxxxxxxx#vi /etc/network/interfaces#Configure bridge and give it a static ipauto br0iface br0 inet staticaddress 192.168.0.100netmask 255.255.255.0network 192.168.0.1broadcast 192.168.0.255gateway 192.168.0.1bridge_ports eno1bridge_stp offbridge_fd 0bridge_maxwait 0dns-nameservers 8.8.8.8 4.4.2.2#Configure bridge with DHCPauto br0iface br0 inet dhcpbridge_ports eno1
xxxxxxxxxxsystemctl restart networking.service#/etc/init.d/networking restart
xxxxxxxxxxvirt-manager
virt-manager是图形界面程序,想要通过ssh远程打开virt-manager,需要安装Xorg。Xorg介绍
xxxxxxxxxxapt install xorg -y
https://zhuanlan.zhihu.com/p/27155499043
安装X Server,打开 MobaXterm ,打开右上角的 X server
启用SSH X11支持,一般默认启用
xxxxxxxxxxvi /etc/ssh/sshd_config# 取消注释,X11Forwrding yesservice sshd reload
https://www.cnblogs.com/dwj192/p/11237636.html
Xshell、SecretCRT、Putty等SSH客户端连接时启用X11转发,然后就可以通过 virt-manager 命令在本地打开virt-manager了
kvm中安装windows虚拟机,需要使用VirtIO驱动。
减小镜像大小
https://blog.csdn.net/justlpf/article/details/128443005
虚拟机操作
xxxxxxxxxx# 不要swap分区、swap文件# 清除临时文件yum clean all# 将未使用的磁盘空间用0填满dd if=/dev/zero of=~/tmprm -f tmp
宿主机操作:
xxxxxxxxxx# 关闭虚拟机sudo poweroff# 转换磁盘镜像文件sudo qemu-img convert -O qcow2 old.qcow2 new.qcow2# 查看qemu虚拟机xinxisudo qemu-img info new.qcow2# 查看qcow2文件占用空间大小ls -al
X11
定义与背景
工作原理
应用场景与重要性
Xorg
与 X11 的关系
主要功能与作用
Wayland
定义与背景
与 X11 的比较和优势
应用场景与发展趋势
GNOME
定义与背景
与 X11 和 Wayland 的关系
总的来说,X11 是一种图形显示协议,Xorg 是 X11 的一个重要实现;Wayland 是一种新的显示协议,用来替代 X11 的一些老旧功能;GNOME 是桌面环境,它可以基于 X11(通过 Xorg)或者 Wayland 来实现图形显示,为用户提供完整的桌面操作体验。