网站名称和备案,汉网网站建设,网页界面设计的特点是什么,wordpress菜单用法前文《KVM 虚拟化环境搭建 - ProxmoxVE》已经给大家介绍了开箱即用的 PVE 系统#xff0c;PVE 是方便#xff0c;但还是有几点问题#xff1a;第一#xff1a;始终是商用软件#xff0c;虽然可以免费用#xff0c;但未来版本还免费么#xff1f;商用的法律风险呢#x…前文《KVM 虚拟化环境搭建 - ProxmoxVE》已经给大家介绍了开箱即用的 PVE 系统PVE 是方便但还是有几点问题第一始终是商用软件虽然可以免费用但未来版本还免费么商用的法律风险呢第二黑箱化的系统虽然基于 Debian 但是深度改造想搞点别的也不敢乱动。第三过分自动化不能让我操作底层 libvirt/qemu 的各项细节配置。PVE 是傻瓜相机智能又复杂对小白很友好WebVirtMgr 是机械相机简单而灵活。多一个选择始终是好事何况我们说完 PVE 之后还介绍 WebVirtMgr那肯定是有它不可代替的优势的。不管你是在中小公司研究 IT 解决方案还是搭建自己的 HomeLab虚拟化是一个绕不过去的砍现在的服务都不会直接启动在物理机上成熟的架构基本都是物理机-虚拟化-容器这样的三层架构也就是说虚拟化是一切服务的基础。通过下面的步骤让你拥有一套完全开源免费的属于你自己的没有任何版权和法律问题的虚拟化环境。操作系统选择发行版选择主要以 Debian/Ubuntu LTS Server 为主二者我并无偏好选择你趁手的即可。Debian 每两年一个大版本Ubuntu LTS Server 也是每两年一个大版本。也就是说每年都有一个最新的他们的支持周期都是五年以上去年发布的 Debian 9 今年是 Ubuntu 18.04 LTS明年又是 Debian 10。安装依赖新安装操作系统以后先安装必备的包sudo apt-get install libvirt-daemon-system libvirt-clients
sudo apt-get install sasl2-bin libsasl2-modules bridge-utils将 /etc/default/libvirtd 里面的一行 libvirtd_opts 改为libvirtd_opts修改 /etc/libvirt/libvirtd.conf保证下列配置生效# 允许tcp监听
修改 /etc/libvirt/qemu.conf取消 # vnc_listen ... 前面的 # 注释如有变为vnc_listen 找到并把 user 和 group 两个选项取消注释改为 libvirt-qemuuser 重启并查看服务的状态sudo service libvirtd restart
sudo service libvirtd status到了这一步依赖就准备好了。创建管理用户ubuntu 18.04 LTS 得改一下/etc/sasl2/libvirt.conf 文件取消最后一行注释变为sasldb_path: /etc/libvirt/passwd.db并保证 mech_list 的值为 digest-md5 默认的 gssapi 不能用mech_list: digest-md5注意如果是 Debian 10那么单机请使用 unix socketdigest-md5 方式被废除掉了下面的验证方式可以跳过直接把 www-data 用户加入 libvirt 用户组即可。客户端链接 libvirtd 需要用户名和密码创建很简单sudo saslpasswd2 -a libvirt virtadmin可以查看创建了哪些用户sudo sasldblistusers2 -f /etc/libvirt/passwd.db继续重启服务sudo service libvirtd restart测试用户权限virsh -c qemutcp://localhost/system list使用 virsh 链接本地的 libvirtd 操作本地虚拟机输入刚才的用户名和密码检查是否能够顺利执行如果该命令成功则代表 libvirtd 的服务和权限工作正常。配置网桥Debian 9 下面是更改 /etc/network/interfaces注意设备名称 eth0 需要改为实际的名称# The loopback network interface
auto lo
iface lo inet loopback
# The primary network interface
auto eth0
iface eth0 inet manual
auto br0
iface br0 inet staticaddress 192.168.0.2netmask 255.255.255.0network 192.168.0.0broadcast 192.168.0.255gateway 192.168.0.1dns-nameservers 192.168.0.1dns-search dell420bridge_ports eth0bridge_stp offbridge_fd 0bridge_maxwait 0Ubuntu 18.04 中使用 /etc/netplan 配置网桥卸载 cloud-init禁用 cloud-init 配置sudo apt-get remove cloud-init
sudo mv /etc/netplan/50-cloud-init.yaml /etc/netplan/50-cloud-init.disable并且新建文件/etc/netplan/10-libvirtd-bridge.yamlnetwork注意上面的设备名称 enp3s0f0 以及 ip 网关等配置应按实际情况更改。注意接口名字和 ip等改为对应的内容改完后sudo netplan apply启用新的网络配置然后重启网络看看网桥是否正常sudo brctl show并且查看网络是否正常。安装 WebVirtMgr按照 WebVirtMgr 的官网首页的说明安装依赖sudo apt-get install git python-pip python-libvirt python-libxml2 novnc supervisor nginx克隆仓库cd /var/www
sudo git clone git://github.com/retspen/webvirtmgr.git安装 Django 等 python 包cd webvirtmgr
sudo pip install -r requirements.txt
sudo ./manage.py syncdb
sudo ./manage.py collectstatic按提示输入 root 用户密码该用户后面将用来登陆 WebVirtMgr。然后测试sudo ./manage.py runserver 0:8000用浏览器打开 http://your-ip:8000 并用刚才的用户登陆看看行不行成功的话会看到然后点击右上角添加一个 connection把 localhost 这个 libvirtd 的链接用 tcp 的方式添加进去用户名和密码是刚才初始化的 libvirt 的管理员 admin 和密码链接如果能够正常添加的话表明可以正常运行了然后 CTRLC 退出。安装 Nginx 新建并编辑 /etc/nginx/sites-available/webvirtmgr 文件server 然后做一个该文件的软连接到 /etc/nginx/sites-enabled 下面并删除默认软连接cd /etc/nginx/sites-enabled
sudo ln -s /etc/nginx/sites-available/webvirtmgr .
sudo rm default然后重启服务sudo service nginx restart完成安装新建并编辑 /etc/supervisor/conf.d/webvirtmgr.conf[program:webvirtmgr]
把整个 webvirtmgr 的项目文件所有者改为 www-datasudo chown -R www-data:www-data /var/www/webvirtmgr重启并查看结果sudo supervisorctl reload
sudo supervisorctl status如果碰到错误比如 Exited too quickly 那么到 /var/log/supervisor 下面查看日志。完成后浏览器打开http://your-ip:8080/servers/ 如果一切工作正常那么恭喜你WebVirtMgr 安装成功。开始使用在 /home/data 下面创建 kvm 目录用于放虚拟机磁盘镜像文件和 iso 文件{images, iso你可以放在你喜欢的地方/home 目录一般在 debian 下面会分配比较大的空间所以把虚拟机相关的东西放到 /home/data/kvm 下面。然后浏览器登陆 webvirtmgr 的页面选择刚才添加的 localhost 链接webvirtmgr 可以同时管理多台机器的 libvirtd这里我们以刚才添加的 localhost 链接为例。首先到左侧的 “存储池”添加用于保存虚拟机映像的路径先点击 New Storage 添加一个类型为 “目录卷类型”的存储池名字为 images指向/home/data/kvm/images继续点“New Storage”添加一个类型为 “ISO 镜像卷”的存储池名字为 iso 路径为/home/data/kvm/iso你如果有多块硬盘还可以继续添加一些其他位置用于保存虚拟机的磁盘镜像。还差网络配置就妥了点击左边 “网络池”原来只有一个 default 的 NAT 类型网络那个 bridge 是我们需要点击 New Network 添加的桥接网络上面这个桥接名称就是我们前面配置的网桥名称 br0。我们启动的虚拟机一般都会希望和物理机同处于一个内网下拥有可以直接访问的 IP因此基本都用桥接模式。创建虚拟机先创建磁盘映像到左边的 “存储池”然后选择 images 存储池点击最下面的添加镜像添加一个 20G 的 qcow2名字为 test1然后点击左边的 “虚机实例”然后点击左上角的 “New Instance”不要使用它那些乱七八糟的模板直接点击正上方的 “Custom Instance”创建虚拟机在创建虚拟机的对话框里点击“Add Image”添加刚才创建的 test1.img 镜像然后再 Add network 添加类型为 bridge 的桥接网络你如果想要所有虚拟机都处于一个虚拟内网的话还可以再添加一块类型为 default 的网卡就是默认的 NAT 类型。完成后点 “创建”咱们的虚拟机就有了这时候可以到现前的 “存储池”的 iso 下面上传两个操作系统的安装盘 iso 文件然后回来这个 test1 虚拟机主页选择设置挂载 iso 文件选择我们刚才上传的操作系统 ISO 文件并点击右边的“链接”按钮然后可以到“Power”那里使用 “启动”按钮开机了此时虚拟机出于“开机”状态然后选择 Access 点击 “控制台”打开虚拟机的 webvnc 终端开始安装操作系统网页版本的 Webvnc 图形性能一般建议安装操作系统都用普通文本模式安装可以选择的话测试虚拟机可以正常启动以后我们先把它强制结束了进行一些必要设置。安全设置如果的服务器暴露再公网上一定要到 Access - Console Password 下面设置个密码webvirtmgr 里点击控制台它会自动读取该密码不需要你手工输入但是这样就比没有密码安全很多了。然后启动后你可以到设置-XML 那里查看一下 VNC 被分配的端口号和设置过的密码由于默认配置 VNC 都是使用 “自动端口”这样更安全些每次虚拟机启动都会动态分配一个再 XML 这里可以查看得到这样你也可以不用 webvnc而用自己的 VNC 客户端比如 Windows 下的 vnc-viewer填入 ip 地址和端口号然后点 connect提示输入密码将上面 XML 里的密码复制粘贴过来即可然后点击 OK 开始显示终端屏幕共享文件夹这是个很基本的需求想省事的话nfs 共享一下也可以但是 KVM 本身支持 Hypervisor 和虚拟机共享文件夹的并且性能很好可惜 PVE 里居然做不了因为它不能改 XML。再 “设置”- XML 那里点击 “编辑”并在 devices... /devices 中加入下面配置filesystem accessmode 可以设置成mappedpassthrough 或 none。物理机准备一下共享目录sudo mkdir /home/data/kvm/kfs
sudo chown libvirt-qemu:libvirt-qemu /home/data/kvm/kfs所有虚拟机在物理机上都会以 libvirt-qemu 这个用户来跑前面设置过 qemu.conf所以需要保证你物理机上需要共享的路径的权限。同时 accessmode 建议设置成 mapped这样会用文件信息里的 meta info 来保存虚拟机中的文件权限信息。虚拟机中编辑 /etc/modules 文件添加下面几行loop
virtio
9p
9pnet
9pnet_virtio加载内核模块sudo service kmod start然后测试 mounttrans这样虚拟机中的 /mnt/kfs 就映射到了物理机的 /home/data/kvm/kfs 路径下。测试成功的话设置 /etc/fstabkfs /mnt/kfs 9p transvirtio 0 0修改完后mount -a 测试测试通过重启虚拟机即可。后记可能大家发现了 WebVirtMgr 本质就是一个轻量级的 web 管理后台可以在一台机器上搭建 webvirtmgr 并管理内网所有的提供 libvirtd 服务的机器。由于 webvirtmgr 项目本身简单清晰不少成功项目的代码都是源自它的比如 QNAP 产品线里的 “虚拟机工作站”通过前面一番动手相信你对 kvm/libvirtd/vnc 之类的运作机里已经很熟悉了。该系统设计的比较好的一个点就是允许我编辑 XML而前面提到的 PVE 居然不允许我在页面上修改 XMLKVM支持的功能非常丰富很多都需要通过修改 XML 完成比如常用的硬件透传大家可以搜索 kvm passthrough该功能可以把 pcie 总线上的设备传递给虚拟机比如你的物理机上有两个 USB 插口你可以将其中一个赋予虚拟机。或者把物理机的磁盘阵列全部传递给虚拟机由虚拟机里面来组 raid这样虚拟机里面装点黑群晖或者 clearos / openmediavault 之类的 nas 系统的话可以方便的把磁盘阵列管理起来。如果物理机有显卡的话你甚至可以把物理机的 gpu 透传给虚拟机这样虚拟机里面就可以跑需要 GPU 支持的任务了比如挖矿之类这些在 PVE 里都没法支持这些都是 webvirtmgr 比 PVE 更灵活的地方。更多的功能留给大家慢慢探索吧。