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

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

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

sudo apt update && sudo apt upgrade -y
sudo apt update && sudo apt upgrade -y
sudo apt update && sudo apt upgrade -y

安装 KVM 及相关工具软件:

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

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

sudo systemctl status libvirtd
sudo systemctl status libvirtd
sudo systemctl status libvirtd

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

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

sudo apt install cockpit cockpit-machines
sudo apt install cockpit cockpit-machines
sudo apt install cockpit cockpit-machines

启动 Cockpit 服务:

sudo systemctl start cockpit
sudo systemctl start cockpit
sudo systemctl start cockpit

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

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

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

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
ln -s /etc/apparmor.d/usr.sbin.libvirtd /etc/apparmor.d/disable/ apparmor_parser -R /etc/apparmor.d/usr.sbin.libvirtd
ln -s /etc/apparmor.d/usr.sbin.libvirtd /etc/apparmor.d/disable/ apparmor_parser -R /etc/apparmor.d/usr.sbin.libvirtd

执行完成后reboot重启机器。

在Cockpit Web管理界面进行操作

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

解决虚拟机无法 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
nft add rule ip filter FORWARD iifname "bridge0" accept nft add rule ip filter FORWARD oifname "bridge0" accept
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
sudo nft list ruleset > /etc/nftables.conf
sudo nft list ruleset > /etc/nftables.conf

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

sudo systemctl enable nftables
sudo systemctl enable nftables
sudo systemctl enable nftables

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

编辑libvirtd.service文件:

sudo nano /lib/systemd/system/libvirtd.service
sudo nano /lib/systemd/system/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'
[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'
[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更新不会影响虚拟机的使用,虚拟机的磁盘文件在飞牛的存储池内,也能保证虚拟机数据的安全性。

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

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

SHUTDOWN_TIMEOUT=300

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

sudo systemctl restart libvirtd
sudo systemctl restart libvirtd
sudo systemctl restart libvirtd

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

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

1.放行bridge0流量:

sudo iptables -A FORWARD -i bridge0 -j ACCEPT sudo iptables -A FORWARD -o bridge0 -j ACCEPT
sudo iptables -A FORWARD -i bridge0 -j ACCEPT sudo iptables -A FORWARD -o bridge0 -j ACCEPT
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
sudo apt install iptables-persistent
sudo apt install iptables-persistent

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

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

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

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

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

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

原文链接:https://blog.csdn.net/muzihuaner/article/details/142309909?ops_request_misc=%257B%2522request%255Fid%2522%253A%25221824fa1992a31392d83d8337088bddcd%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fblog.%2522%257D&request_id=1824fa1992a31392d83d8337088bddcd&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~blog~first_rank_ecpm_v1~times_rank-11-142309909-null-null.nonecase&utm_term=%E9%A3%9E%E7%89%9BOS

© 版权声明
THE END
喜欢就支持一下吧
点赞11 分享