为从 Hyper-V 迁移到 Proxmox VE 正在做各方面的准备工作,准备2021年10月28日 — 今晚 21:30 进行。
- 当前的所谓家庭服务器使用的是 Windows server 2019 Hyper-V
- 需要将家庭服务器主机关机,才能将PVE部署到服务器上
- 届时将无法使用本地部署的服务:OpenWrt、WordPress、NextCloud
- 用普通路由器顶替OpenWrt的拨号工作,暂时保证互联网正常工作。
- 虽然运行的东西不多,但全程手动档,耗时应该比较长,无特殊情况一律勿扰模式。
- 由于对PVE还不太熟悉,可能会遇到各种翻车的情况出现!
一、备份 Hyper-V 上运行的各种服务配置
我不知道能不能直接备份配置文件,搞好新环境后直接还原配置文件到新环境上呢?貌似这样不太完美
不过配置文件的备份是必需的,到时在新环境可以全程手动抄作业即可。
- 备份OpenWrt各种配置
- 备份承载NextCloud与WordPress的Debian各种环境配置
- NextCloud与WordPress网站数据及数据库已经Rsync到另一台测试机的磁盘上了。
- 但我已经感觉到头疼了,这个环境配置涉及太多
- 备份
/etc/apache2
这个目录的配置文件 - 备份
/etc/mysql
这个目录的配置文件 - 备份
/etc/php/7.4/fpm
这个目录的配置文件
二、安装 Proxmox VE
- filesystem 就使用ext4吧。
安装时需要自定义磁盘分区大小
- hdsize 定义要使用的总硬盘大小,计划用一个128G的固态硬盘安装PVE。
- swapsize 交换分区大小,最小4GB,最大8GB。计划准备配置4GB
- maxroot 存储操作系统的根分区,最大限制为hdsize/4,计划配置20GB
- maxvz 定义lvm-thin pool data分区大小,计划配置80GB左右 datasize=hdsize-rootsize-swapsize-minfree
- minfree 定义LVM卷组pve中剩余的可用空间。计划配置5GB,超过128GB的可用存储空间默认配置为16GB。
否则默认hdsize/8, LVM需要VG中的可用空间来创建快照,lvmthin不需要VG中的可用空间来创建快照!
国家,时区,键盘
- Country: 国家,china
- Time zone: 时区,Asia/Shanghai
- Keyboard Layout: 键盘,U.S. English
网卡,主机名,IP地址,DNS
- Management Interface: 选个PVE用的网卡,用集成网卡吧。
- Hostname(FQDN): 主机名随便吧,fzpve.lan
- IP Address(CIDR): 主机地址,192.168.33.3/24
- Gateway: 网关地址,192.168.33.1
- DNS Server: DNS服务器地址,223.5.5.5
设置密码、邮箱
- Password: 设置root密码
- Confirm: 再次输入root密码
- Email: 邮箱地址
三、Proxmox VE 基础配置
修改Vi编辑器
#切换到root身份
su -
#使用nano编辑器修改Vi配置文件vimrc.tiny
nano /etc/vim/vimrc.tiny
# 需要修改的内容如下
" set compatible
set nocompatible
set backspace=2
修改软件、模板源为国内清华镜像站,禁用PVE企业源
# 用vi编辑器修改Debian软件源sources.list
vi /etc/apt/sources.list
# 默认注释了源码镜像以提高 apt update 速度,如有需要可自行取消注释
deb https://mirrors.tuna.tsinghua.edu.cn/debian/ bullseye main contrib non-free
# deb-src https://mirrors.tuna.tsinghua.edu.cn/debian/ bullseye main contrib non-free
deb https://mirrors.tuna.tsinghua.edu.cn/debian/ bullseye-updates main contrib non-free
# deb-src https://mirrors.tuna.tsinghua.edu.cn/debian/ bullseye-updates main contrib non-free
deb https://mirrors.tuna.tsinghua.edu.cn/debian/ bullseye-backports main contrib non-free
# deb-src https://mirrors.tuna.tsinghua.edu.cn/debian/ bullseye-backports main contrib non-free
deb https://mirrors.tuna.tsinghua.edu.cn/debian-security bullseye-security main contrib non-free
# deb-src https://mirrors.tuna.tsinghua.edu.cn/debian-security bullseye-security main contrib non-free
# 禁用Proxmox企业源
# 注释掉企业源即可。
vi /etc/apt/sources.list.d/pve-enterprise.list
# deb https://enterprise.proxmox.com/debian/pve bullseye pve-enterprise
# CT Templates LXC模板镜像源,修改为清华镜像站
# 将 /usr/share/perl5/PVE/APLInfo.pm 文件中默认的源地址 http://download.proxmox.com
# 替换为 https://mirrors.tuna.tsinghua.edu.cn/proxmox 即可。
# 可以使用如下命令修改:
# 首先备份APLInfo.pm配置文件
cp /usr/share/perl5/PVE/APLInfo.pm /usr/share/perl5/PVE/APLInfo.pm_back
# 修改APLInfo.pm配置文件
sed -i 's|http://download.proxmox.com|https://mirrors.tuna.tsinghua.edu.cn/proxmox|g' /usr/share/perl5/PVE/APLInfo.pm
# 针对 /usr/share/perl5/PVE/APLInfo.pm 文件的修改,重启后生效。
存储和备份方案
使用块级存储 LVM-thin存储类型做后端
- 主要因为LVM-thin是PVE官方推荐,快照与克隆非常方便,性能各方面较好吧?
- LVM需要VG中的空闲空间来创建快照,lvmthin不需要VG中的空闲空间来创建快照!
- 为了方便使用快照,必须用LVM-thin
单个SSD磁盘运行NextCloud Rsync同步备份并结合快照保证数据安全
- 使用Rsync实时同步到HDD磁盘,比较有效的防止磁盘损坏丢失数据
- 只在HDD上做快照,因为SSD容量较小且有写入寿命。快照可以避免中毒数据被修改……。
磁盘查看、添加、管理
查看磁盘相关信息的命令有如下:
# 以下常用查看磁盘相关的命令,实际使用更能理解命令的作用。
# 查看机器上的所有硬盘及分区情况
fdisk -l
# 查看系统当前已挂载的磁盘及挂载目录
df -h
# 查看所有磁盘及分区树状结构、类型、挂载点
lsblk
# 查看所有磁盘UUID,类型
blkid
为PVE添加块级存储 LVM-thin
- 不建议在WebUI管理页添加LVM-thin
- 强烈建议使用命令进行添加LVM-thin
使用命令行添加 LVM-thin存储
# 首先确定我们需要添加的物理磁盘
fdisk -l
# 创建物理卷PV (volume),这里针对没有分区的硬盘
pvcreate /dev/sdb # sdc,sdd,sde
# 创建卷组VG (group)
# vgcreate <VGNAME> /dev/sdb
vgcreate vgdata /dev/sdb
# 创建 thin-pool (精简池),1TB的SSD预留5G左右的VG空闲空间,目前仅为tmeta扩容做准备。
# 以便灵活增加tmeta空间,此步骤默认创建的[<poolNAME>_tmeta]容量为100mb左右
# 我们可以创建精简池后,再增加[<poolNAME>_tmeta]空间为500MB即可,增加tmeta空间[lvol0_pmspare]空间也会同步增加。
# lvcreate -L 100G -n <poolNAME> <VGNAME>
# lvconvert --type thin-pool <VGNAME>/<poolNAME>
lvcreate -L 100G -n fzdata vgdata
lvconvert --type thin-pool vgdata/fzdata
# 使用刚才创建的 thin-pool (精简池)
# pvesm add lvmthin <STORAGE_ID> --vgname <VGNAME> --thinpool <poolNAME>
pvesm add lvmthin fzthin --vgname vgdata --thinpool fzdata
# 检查存储状态
pvesm status
# PVE存储的配置storage.cfg文件路径为:/etc/pve/storage.cfg
# 下面是扩容 pool 或 tmata 空间的方法。
# 如果我们要扩容 pool 就必需保证 VG 有空闲的空间以便扩容
# 首先查看VG的可用空闲空间VFree
vgs
# 或空闲空间PFree
pvs
# 扩容 pool 方法
# lvextend -L+10G <VGNAME>/<poolNAME>
lvextend -L+10G vgdata/fzdata
# 如果我们要扩容 tmata 就必需保证 VG 有空闲的空间以便扩容
# 查看<poolNAME>_tmeta]空间
lvs -a
# 或
lvs -oname,size,data_percent,metadata_percent vgdata/fzdata
# 或
lvs -a -oname,attr,size vgdata
# 扩容[<poolNAME>_tmeta]空间
# lvextend --poolmetadatasize +900M <VGNAME>/<poolNAME>
lvextend --poolmetadatasize +900M vgdata/fzdata
# tmeta空间--即是Web管理页面上的元数据大小
# 增加tmeta空间同时[lvol0_pmspare]同步增加同样大小的空间,即tmeta增加50MB,就需要100MB的PFree空间。
管理磁盘 日常
日后再说吧
硬件直通配置
1、主板必须开启vt-d
2、修改grub文件
vi /etc/default/grub
# GRUB_CMDLINE_LINUX_DEFAULT="quiet"做如下修改(intel的CPU)
GRUB_CMDLINE_LINUX_DEFAULT="quiet intel_iommu=on"
3、更新grub
update-grub
4、加载内核模块modules
vi /etc/modules
# 内容如下
vfio
vfio_iommu_type1
vfio_pci
vfio_virqfd
5、刷新initramfs
update-initramfs -u -k all
6、然后重启主机
7、验证是否开启iommu
dmesg | grep 'remapping'
- 执行命令后显示如下内容,说明开启成功
DMAR-IR: Enabled IRQ remapping in x2apic mode
- 此时输入命令
find /sys/kernel/iommu_groups/ -type l
出现很多直通组,说明成功了。
8、PCI-E直通要求
- 执行了前面所有步骤之后,虚拟机 机器必需要选q35。
9、关于显卡直通
暂时不考虑直通显卡吧。
- 据说新版的PVE7无需做驱动屏蔽,直接开启iommu之后,创建的虚拟机 机器q35,然后添加直通设备即可。
- 关于直通显卡,在Windows上驱动报错43,尝试下载安装最新版的NVIDIA驱动试试吧!
修改PVE绑定的网卡及IP地址
假如我们更换了网卡或是PCIe网卡更换了插槽位置,可能会导致PVE网络故障。 这会造成无法远程访问并管理PVE,那么就必须进入高级模式,修改绑定的网卡参数了。
# 首先查看我们的物理网卡及IP地址等相关信息
ip addr
# 这可以看到我们所有的网络设备
# 1: lo:全称loopback,是回环地址。
# 2: enp1s0: 物理网卡,如果有多个网卡,会有多个enp1s1、enp2s0或其他
# 3: vmbr0: 桥接网卡,这是PVE桥接网卡,多个桥接网卡也会有多个vmbr1、vmbr2
# 然后查看interfaces配置文件
cat /etc/network/interfaces
# 部分内容如下
auto lo
iface lo inet loopback
auto enp1s0
iface enp1s0 inet manual
auto enp2s0
iface enp2s0 inet manual
auto vmbr0
iface vmbr0 inet static
address 192.168.33.3/24 # PVE后台IP地址
gateway 192.168.33.1 # 网关
bridge-ports enp1s0 # PVE桥接绑定的物理网卡,如果对应不上目前的物理网卡必然网络故障。
bridge-stp off # 暂时未知,应该与自动激活或开启相关
bridge-fd 0 # 暂时未知,应该与自动激活或开启相关
# 我们就能很容易发现问题了
有了上面的例子,我们就很容易的去修改网卡及IP地址的参数了。
四、在Proxmox VE创建虚拟机及LXC容器
VM虚拟机部署OpenWrt
虽然LXC上运行OpenWrt真的非常省CPU资源,但是PPPoE拨号正常却无法提供LAN口设备上网。
- 查看防火墙表状态没有任何规则内容,重启防火墙后,防火墙表状态有规则内容了,同时LAN口设备也可以正常上网啦。
- 即使重启了防火墙后可上网了,实际上没有发现的问题,可能还有很多,所以还是算了,不在乎多损耗一些CPU资源了。
- 再说LXC上运行OpenWrt,在配置LXC的时候还是比较繁琐的,那么就更有理由放弃LXC运行OpenWrt了。
计划网卡直通给OpenWrt。
- 如果使用硬件直通,就需要选择q35机器咯,那么就再搞一个UEFI启动吧。
VM虚拟机部署OpenWrt的步骤如下:
首先要建立一个VM虚拟机 硬件配置暂定如下:
- 内存 512MB
- 处理器 2核心
[host,flags=+aes]
- BIOS OVMF(UEFI)
- 显示 标准VGA(安装配置完成后,最后选择无显示)
- 机器 q35(最新)
- SCSI控制器 VirtIO SCSI
- 硬盘随便添加一个1G的,然后需要使用img镜像导入的磁盘,之后要删除这个硬盘的。
- 网络设备(net0) 随便添加一个网卡,之后要删除,配置直通网卡的哟。
- EFI磁盘 这个必须要且不能删除。
然后下载OpenWrt
# 直接在PVE上下载即可
wget https://downloads.openwrt.org/releases/21.02.0/targets/x86/64/openwrt-21.02.0-x86-64-generic-ext4-combined-efi.img.gz
# 解压
gzip -d openwrt-21.02.0-x86-64-generic-ext4-combined-efi.img.gz
# 将img磁盘直接导入为VM虚拟磁盘,vmid根据现实灵活修改哟。
# qm importdisk <vmid> <source> <storage> [OPTIONS]
qm importdisk 101 /root/openwrt-21.02.0-x86-64-generic-ext4-combined-efi.img local-lvm
最后再编辑虚拟机配置
- 硬件
- 将之前创建时的网卡删除,添加PCI设备,先添加一个直通网口作为LAN,之后安装好后再添加WAN口
- 将之前创建虚拟机时的磁盘删除,添加刚才命令导入的虚拟磁盘。
- 剩下的默认吧,检查配置无误后进入下一环节
- 选项
- 开机自动启动 是
- OS类型 Linux 5.x – 2.6 Kernel
- 引导顺序 scsi0 (特别注意这必须选导入的OpenWrt磁盘)
- 剩下的项目默认吧。
至此可以开机了,如果一切正常之后,就可以进入192.168.1.1进行配置了。
创建CT(LXC)容器部署NextCloud与OnlyOffice
这一步就等实际操作后再做记录吧
两个通宵终于没有翻车!
配置完成的:
VM → OpenWrt
LXC → Debian11 → NextCloud
未完成的:
LXC → Debian11 → OnlyOffice
SSL证书从LXC (Debian11_NextCloud acme_zerossl) 同步到OpenWrt,OnlyOffice,Proxmox VE