在 fnOS上安装 KVM 虚拟化,并使用 Cockpit 网页管理虚拟机

news/2024/9/19 15:35:25/文章来源:https://www.cnblogs.com/HGNET/p/18416486

在fnOS系统上安装 KVM 虚拟化,并使用 Cockpit 进行网页管理,可以按照以下步骤进行:

1. 安装 KVM虚拟化组件

首先,更新软件列表和系统包:

sudo apt update && sudo apt upgrade -y

安装 KVM 及相关工具软件:

sudo apt install qemu-kvm libvirt-daemon-system libvirt-clients bridge-utils

运行以下命令检查 KVM 是否成功安装:

sudo systemctl status libvirtd

如果服务正在运行,KVM 安装成功。

 

2. 安装 Cockpit管理工具

安装 Cockpit 及其虚拟机管理插件:

sudo apt install cockpit cockpit-machines

启动 Cockpit 服务:

sudo systemctl start cockpit

安装完成后即可打开浏览器,输入以下地址访问Cockpit

http://<您的服务器IP>:9090

使用您的fnOS用户名和密码登录,就可以管理服务器和虚拟机了。

 

3.关闭Apparmor对Libvirt安全限制

Libvirt在执行和访问系统文件的时候会被Apparmor阻挡,因此为了确保Libvirt始终有必须的权限,必须禁用apparmor

ln -s /etc/apparmor.d/usr.sbin.libvirtd  /etc/apparmor.d/disable/
apparmor_parser -R  /etc/apparmor.d/usr.sbin.libvirtd

执行完成后reboot重启机器。

 

4.创建Bridge网络,使虚拟机通过bridge0桥接到物理网络

在Cockpit Web管理界面进行操作

 

5.安装虚拟机(以OpenWrt为例)

在Cockpit Web管理界面进行操作(这一步需先创建虚拟机存储池)

 

6.解决虚拟机网桥不通的问题

解决虚拟机无法 ping 通网桥(如 bridge0)内其他主机的问题,需要在 nftables 的规则中添加放行 bridge0 网桥的规则。具体步骤如下:

1. 允许 bridge0 网桥的流量,在 filter 表的 FORWARD 链中添加规则,以允许通过 bridge0 网桥的流量,这样可以确保来自虚拟机的流量可以通过网桥转发到其他主机:

nft add rule ip filter FORWARD iifname "bridge0" accept
nft add rule ip filter FORWARD oifname "bridge0" accept

2. 保存规则,使用 nftables 提供的保存功能将当前规则保存到配置文件中:

sudo nft list ruleset > /etc/nftables.conf

3.确保 nftables 服务在启动时加载配置:

sudo systemctl enable nftables

 

7.解决虚拟机开机无法自动启动的问题

虚拟机无法自动启动原因是libvirtd服务过早启动,fnOS的存储和挂载点未准备好,导致虚拟机存储池vmdisk未能挂载,虚拟机无法访问到磁盘文件,我们可以修改libvirtd.service启动服务,增加判断,当fnOS存储目录可以访问时,再启动libvirtd,这样就可以让虚拟机正常自动启动。

编辑libvirtd.service文件:

sudo nano /lib/systemd/system/libvirtd.service

[Service]中找到这一行:

ExecStart=/usr/sbin/libvirtd $LIBVIRTD_ARGS

修改为改为:

ExecStart=/bin/bash -c 'while [ ! -d /vol1/1000/vmdisk ]; do sleep 5; done; /usr/sbin/libvirtd $LIBVIRTD_ARGS'

增加了对/vol1/1000/vmdisk路径访问到判断,可以按自己路径进行修改,改完以后效果:

[Service]
Type=notify
Environment=LIBVIRTD_ARGS="--timeout 120"
EnvironmentFile=-/etc/default/libvirtd
ExecStart=/bin/bash -c 'while [ ! -d /vol1/1000/vmdisk ]; do sleep 5; done; /usr/sbin/libvirtd $LIBVIRTD_ARGS'

 

至此,教程结束,虚拟机一切功能正常,fnOS更新不会影响虚拟机的使用,虚拟机的磁盘文件在飞牛的存储池内,也能保证虚拟机数据的安全性。

 

 

 

 

其他1:调整虚拟机关机超时时间(可选)

有些虚拟机不支持acpid 或者无法安装ga代理工具,可能出现无法响应关机命令,造成fnOS关机或者重启过慢。

可以修改 /etc/default/libvirt-guests文件中的相关设置,调整关机超时时间减少等待,配置文件也可以控制虚拟机关机的相关动作,默认的关机时间为300s,即5分钟:

SHUTDOWN_TIMEOUT=300

根据自己情况修改,修改完成后,重新启动 libvirt 服务生效:

sudo systemctl restart libvirtd

 

其他2:虚拟机的快照功能(可选)

如果需要使用快照功能,需要使用下面命令将img格式的磁盘文件转换为qcow2格式:

qemu-img convert -f raw -O qcow2 /path/to/source.img /path/to/destination.qcow2

 

其他3:使用iptables,解决虚拟机网桥不通(供参考,无需操作,已用nf实现)

1.放行bridge0流量:

sudo iptables -A FORWARD -i bridge0 -j ACCEPT
sudo iptables -A FORWARD -o bridge0 -j ACCEPT

2.安装iptables-persisten使tiptables规则持久化保存:

sudo apt install iptables-persistent

 

虚拟机配置数据的备份

虚拟机创建好以后,配置文件存放在/etc/libvirt/qemu/ 路径下

定时对此路径下的文件进行备份,当系统意外崩溃损坏后重装后,

可以导入虚拟机的配置文件,快速恢复虚拟机。

前提是虚拟磁盘文件是正常的,所以不建议在系统盘创建存储空间存放数据,

重要数据应该存放在带有效验恢复能力的RAID1 RAID5等阵列中,加以保护。

 

注意事项

  • 建议把飞牛OS安装在独立的硬盘上,不要在系统盘上再创建存储空间存储数据。
  • 按上面做法,在系统盘损坏或者系统损坏重装后,至少不会丢失存储空间的数据。
  • 存储空间建议使用RAID1 RAID5等具有效验恢复能力的阵列存储,提升安全性。
  • 此操作需要具备一定的Linux和网络基础知识,不建议新手对fnOS底层进行修改操作。
  • fnOS仍在测试阶段,可能发生数据丢失损毁的情况,不建议存放重要数据。
  • 虚拟机内不建议存放重要数据,以免虚拟文件损坏导致数据丢失。
  • 无论如何,重要的数据使用冷备份、网盘备份等多重备份才能确保其安全性。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/798146.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

如何基于Java解析国密数字证书

一、说明 随着信息安全的重要性日益凸显,数字证书在各种安全通信场景中扮演着至关重要的角色。国密算法,一、说明 随着信息安全的重要性日益凸显,数字证书在各种安全通信场景中扮演着至关重要的角色。国密算法,作为我国自主研发的加密算法标准,其应用也愈发广泛。然而,在…

Windows应急响应-个人整理

个人总览-仍待完善Windows应急响应整理(一)参考 1.NOPTeam的手册链接 2.fox-yu的博客(思路很清晰,对我这个小白来说很友好)1.整体思路 1.1常见事件类型(不完整、待补充)网络协议攻击:拒绝服务攻击:DDos、CC攻击、泛洪攻击等。链接 DNS劫持 ARP欺骗web入侵:webshell 网页挂马…

视野修炼-技术周刊第101期 | 垂直居中

① align-content - 垂直居中普通元素 ② up mode - 一键隐藏 Chrome 插件 ③ Chrome 性能面板新功能 ④ k-colors.js - 图片主色提取 ⑤ 英:优化JS性能的一些技巧 ⑥ 英:Web 的剪贴板,如何存储不同类型的数据 ⑦ 英:不简单的 js 入门教程 ⑧ Peter Cat - GitHub 仓库智能答…

06: 抽象工厂模式

提供一个创建一系列相关或相互依赖对象的接口,而无需指定他们具体的类1. 案例 在Access和SQL server分别插入User表和Department表 2. 抽象工厂模式结构 - 抽象产品(AbstractProduct):所有产品的基类,提供产品类的公共方法struct User {std::string m_sName = "";…

南沙C++信奥老师解一本通题 1371:看病

​【题目描述】有个朋友在医院工作,想请BSNY帮忙做个登记系统。具体是这样的,最近来医院看病的人越来越多了,因此很多人要排队,只有当空闲时放一批病人看病。但医院的排队不同其他排队,因为多数情况下,需要病情严重的人优先看病,所以希望BSNY设计系统时,以病情的严重情…

堪称最优秀的 Docker 可视化管理工具 ——Portainer

Portainer 是一款轻量级的应用,它提供了图形化界面,用于方便地管理 Docker 环境,包括单机环境和集群环境。随着 Docker 内实例越来越多,就得涉及到监控以及统计的需求:有多少个容器?运行的有几个?有哪些容器 CPU 使用率低?... Portainer 是一款轻量级的应用,它提供了图…

分布式数据库中间件:MyCat 和 ShardingSphere

分布式数据库中间件 用于实现 分库、分表、分片、分布式事务、读写分离 等。 本文 是 调查 MyCat 和 ShardingSphere 两款 中间件 的一些信息汇总。本文时间:2024年9月。MyCat Mycat数据库分库分表中间件。ben发布于博客园 http://www.mycat.org.cn github-Mycat1 https://gi…

Python 遭遇 ProxyError 问题记录

本内容复制知乎的一个贴子,在此只做下记录及参考和学习,原链接地址: 最近遇到的一个问题,在搞清楚之后才发现这么多年的 HTTPS_PROXY 都配置错了! 起因 想用 Python 在网上下载一些图片素材,结果 requests 报 requests.exceptions.ProxyError,具体的错误信息见下面。当然…

白云龙期货投资-第二讲

K线图基本用途就是为了寻找“买卖点”,所有的进场点有K线配合能大大的提高进场的成功率。关键点位出现K线及组合配合。大胆进场(波浪理论第五浪。回调黄金分割率点,趋势线,颈线,整数关口等)。K线技术-一切技术之根本 K线图基本用途就是为了寻找“买卖点”,所有的进场点有K…

博客园主题皮肤

背景图:目前使用的是Awescnb主题的geek 参照:https://blog.csdn.net/zk_tww/article/details/141030258

用户验收测试指南0简介

0 简介 这是一本关于多种形式的用户验收测试(UAT)及其用途的。它汇集了有关测试、项目管理、质量管理、团队行为和完整的用户验收测试经验的其他相关材料,并将它们编织成一条牢固可靠的生命线,供用户验收测试新手指南或利益相关者参考。 本书是为满足三类不同人群的需求而编…

以太网PHY芯片详解

以太网PHY芯片详解 什么是phy phy的基本作用 收到MAC过来的数据(PHY没有帧的概念,都是数据而不管什么地址数据还是CRC),进行处理,然后把并行数据转化为串行流数据,再按照物理层的编码规则把数据编码,再变为模拟信号把数据送出去。 实现CSMA/CD(多点接入载波监听/冲突检…