从 Hyper-V 迁移到 Proxmox VE 的计划

为从 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

这一步就等实际操作后再做记录吧

“从 Hyper-V 迁移到 Proxmox VE 的计划”的一个回复

  1. 两个通宵终于没有翻车!

    配置完成的:
    VM → OpenWrt
    LXC → Debian11 → NextCloud

    未完成的:
    LXC → Debian11 → OnlyOffice
    SSL证书从LXC (Debian11_NextCloud acme_zerossl) 同步到OpenWrt,OnlyOffice,Proxmox VE

发表评论