在fnOS系统上安装 KVM 虚拟化,并使用 Cockpit 进行网页管理,可以按照以下步骤进行:
首先,更新软件列表和系统包:
sudo apt update && sudo apt upgrade -ysudo apt update && sudo apt upgrade -ysudo apt update && sudo apt upgrade -y
安装 KVM 及相关工具软件:
sudo apt install qemu-kvm libvirt-daemon-system libvirt-clients bridge-utilssudo apt install qemu-kvm libvirt-daemon-system libvirt-clients bridge-utilssudo apt install qemu-kvm libvirt-daemon-system libvirt-clients bridge-utils
运行以下命令检查 KVM 是否成功安装:
sudo systemctl status libvirtdsudo systemctl status libvirtdsudo systemctl status libvirtd
如果服务正在运行,KVM 安装成功。
安装 Cockpit 及其虚拟机管理插件:
sudo apt install cockpit cockpit-machinessudo apt install cockpit cockpit-machinessudo apt install cockpit cockpit-machines
启动 Cockpit 服务:
sudo systemctl start cockpitsudo systemctl start cockpitsudo systemctl start cockpit
安装完成后即可打开浏览器,输入以下地址访问Cockpit
:
http://<您的服务器IP>:9090http://<您的服务器IP>:9090http://<您的服务器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.libvirtdln -s /etc/apparmor.d/usr.sbin.libvirtd /etc/apparmor.d/disable/ apparmor_parser -R /etc/apparmor.d/usr.sbin.libvirtdln -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" acceptnft add rule ip filter FORWARD iifname "bridge0" accept nft add rule ip filter FORWARD oifname "bridge0" acceptnft 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.confsudo nft list ruleset > /etc/nftables.confsudo nft list ruleset > /etc/nftables.conf
3.确保 nftables
服务在启动时加载配置:
sudo systemctl enable nftablessudo systemctl enable nftablessudo systemctl enable nftables
虚拟机无法自动启动原因是libvirtd
服务过早启动,fnOS的存储和挂载点未准备好,导致虚拟机存储池vmdisk
未能挂载,虚拟机无法访问到磁盘文件,我们可以修改libvirtd.service
启动服务,增加判断,当fnOS存储目录可以访问时,再启动libvirtd
,这样就可以让虚拟机正常自动启动。
编辑libvirtd.service
文件:
sudo nano /lib/systemd/system/libvirtd.servicesudo nano /lib/systemd/system/libvirtd.servicesudo 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 libvirtdsudo systemctl restart libvirtdsudo systemctl restart libvirtd
如果需要使用快照功能,需要使用下面命令将img格式的磁盘文件转换为qcow2格式:
qemu-img convert -f raw -O qcow2 /path/to/source.img /path/to/destination.qcow2qemu-img convert -f raw -O qcow2 /path/to/source.img /path/to/destination.qcow2qemu-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 ACCEPTsudo iptables -A FORWARD -i bridge0 -j ACCEPT sudo iptables -A FORWARD -o bridge0 -j ACCEPTsudo iptables -A FORWARD -i bridge0 -j ACCEPT sudo iptables -A FORWARD -o bridge0 -j ACCEPT
2.安装iptables-persisten使tiptables规则持久化保存:
sudo apt install iptables-persistentsudo apt install iptables-persistentsudo 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