ProxmoxVE(PVE) 7.0配置国内软件源并删除订阅弹窗

参考:

简书

因PVE7.0更换了Debian11作为内核,软件源管理方式也发生了变更,故原软件源配置方法已失效。

默认是企业订阅版,如果不做修改,在使用 pveceph init 进行 ceph 初始化安装的时候会将整个环境破坏,切记!

登陆Shell控制台

【重要】将/etc/apt/sources.list.d/pve-enterprise.list 文件内的唯一一条记录注释掉:

1
echo "#deb https://enterprise.proxmox.com/debian/pve bullseye pve-enterprise" > /etc/apt/sources.list.d/pve-enterprise.list

Proxmox软件源更换

以下任选其一

  • 中科大源
1
2
3
4
wget https://mirrors.ustc.edu.cn/proxmox/debian/proxmox-release-bullseye.gpg -O /etc/apt/trusted.gpg.d/proxmox-release-bullseye.gpg		#替换pgp验证身份
echo "deb https://mirrors.ustc.edu.cn/proxmox/debian/pve bullseye pve-no-subscription" > /etc/apt/sources.list.d/pve-no-subscription.list
echo "deb https://mirrors.ustc.edu.cn/proxmox/debian/ceph-pacific bullseye main" > /etc/apt/sources.list.d/ceph.list
sed -i.bak "s#http://download.proxmox.com/debian#https://mirrors.ustc.edu.cn/proxmox/debian#g" /usr/share/perl5/PVE/CLI/pveceph.pm
  • Proxmox中文社区源
1
2
3
4
wget http://download.proxmox.wiki/debian/proxmox-release-bullseye.gpg -O /etc/apt/trusted.gpg.d/proxmox-release-bullseye.gpg	
echo "deb http://download.proxmox.wiki/debian/pve bullseye pve-no-subscription" > /etc/apt/sources.list.d/pve-no-subscription.list
echo "deb https://download.proxmox.wiki/debian/ceph-pacific bullseye main" > /etc/apt/sources.list.d/ceph.list
sed -i.bak "s#http://download.proxmox.com/debian#https://download.proxmox.wiki/debian#g" /usr/share/perl5/PVE/CLI/pveceph.pm

Debian系统源更换

以下任选其一

  • 阿里Debian源
1
2
sed -i.bak "s#ftp.debian.org/debian#mirrors.aliyun.com/debian#g" /etc/apt/sources.list     #阿里Debian源
sed -i "s#security.debian.org#mirrors.aliyun.com/debian-security#g" /etc/apt/sources.list #阿里Debian源
  • 163-Debian源
1
2
sed -i.bak "s#ftp.debian.org/debian#mirrors.163.com/debian#g" /etc/apt/sources.list     #163Debian源
sed -i "s#security.debian.org#mirrors.163.com/debian-security#g" /etc/apt/sources.list #163Debian源

删除订阅弹窗

去掉PVE登录网页界面时候的订阅提醒

1
2
sed -Ezi.bak "s/(Ext.Msg.show\(\{\s+title: gettext\('No valid sub)/void\(\{ \/\/\1/g" /usr/share/javascript/proxmox-widget-toolkit/proxmoxlib.js && systemctl restart pveproxy.service
# 执行完成后,浏览器Ctrl+F5强制刷新缓存

更新软件及系统

1
apt update && apt dist-upgrade     #更新

开启硬件直通

硬件直通:即外部物理硬件直接可以供给PVE下的虚拟机使用,而不用通过虚拟层进行转换,由于通过虚拟层转换后的硬件性能略减,故要开启硬件功能。

需软件包:vim

参考:

bilibili

Vedio Talk

Intel CPU

Grub配置文件更改:

1
vim /etc/default/grub

找到:

1
GRUB_CMDLINE_LINUX_DEFAULT="quiet"

然后修改为:

1
GRUB_CMDLINE_LINUX_DEFAULT="quiet intel_iommu=on"

更新一下Grub配置到/boot/grub/gru b.cfg才可以重启生效:

1
update-grub

AMD CPU

输入命令:

1
vim /etc/default/grub

找到:

1
GRUB_CMDLINE_LINUX_DEFAULT="quiet"

然后修改为:

1
GRUB_CMDLINE_LINUX_DEFAULT="quiet amd_iommu=on"

更新一下Grub配置:

1
update-grub

新增所需模块

修改文件/etc/modules,加入如下的行:

1
echo "\nvfio \nvfio_iommu_type1 \nvfio_pci \nvfio_virqfd" >> /etc/modules

执行命令来更新initramfs:

1
update-initramfs -u -k all

重启PVE虚拟机

1
reboot

LXC/LXD

之前用的是爱快的软路由,它的总体使用感受更适合入门级,还可以用来赚钱,推荐小白入门软路由的系统,其次爱快客打电话推荐开了个繁星业务,同意开了之后,申请关闭好久,差评。除了这些之外,实测Windows7测网速,OpenWRT快与爱快,可能和一个是容器一个是虚拟机有关。我更喜欢专业一点的系统,哪怕是软路由。

参考:

BiliBili-比尔迈克:复合体超级软路由(8)-PVE虚拟机下的复合路由完全打造教程

LXC and LXD: Explaining Linux Containers

Installing OpenWRT In Proxmox LXC

Linux Containers - Image server

安装OpenWRT

选择一个Storage,选择存储为CT Templates(容器模板):

image-20221022164102549

访问 LXC and LXD: Explaining Linux Containers-> OpenWRT复制rootfs.tar.xz的URL:

image-20221022164551352

选择Download from URL:

image-20221022165358421

粘贴URL,为文件起一个名字,.tar.xz命名。

点击网页SHA256SUMS,复制红框内容:

image-20221022165144199

点击Download:

image-20221022163637005

下载验证完成后就会出现一个OpenWRT.tar.xz文件。

选择要安装容器的节点,点击shell:

image-20221022170302104

此时ssh方式连接到你的节点。

执行命令:

1
pct create 108 /mnt/seagate-disk0/PVE-Files/template/cache/OpenWRT.tar.xz --arch amd64 --hostname OpenWrt --rootfs local-lvm:60 --memory 2048 --cores 4 --ostype unmanaged --unprivileged 1
  • 108 虚拟机ID,此id不能重复
  • LXC模板路径一定要写对
  • –hostname 虚拟机名称
  • –arch 值是你的cpu指令集类型
  • –rootfs 值是Storage名称:大小(G)
  • –memory 虚拟机的内存大小
  • –cores 虚拟机核心数,建议填写CPU核心数
  • –ostype 容器系统类型不指定
  • –unprivileged 这个应该是启动优先级

首先理清节点下的网络:

image-20221022173523052

  • enp1s0,后面有个Type意思是这个是一个网络设备,我的机器只有一个网口,可理解为此项PVE自动加载的网口
  • vmbr0,手动添加,理解为添加了一个网域,后面有个enp1s0,意思是将主机的物理网口enp1s0添加到vmbr0网域,此时的enp1s0网口配置了IP(192.168.123.123)、子网(255.255.255.0)、网关(192.168.123.1),相当于PVE系统网口加入了192.168.123.0/24这个网域,至于路由器就是我的物理网口接入的路由器了,可理解为此网域的路由器就是192.168.123.1
  • vmbr2,手动添加的另一个网域,网域vmbr1之间不相互干扰,等同于路由隔离,这个网域的路由器将设置为OpenWRT

OpenWRT容器添加WAN网口:

image-20221022173142626

  • 网口名称不能随便命名,实验得知eth*可被系统识别
  • IPv4 可以DHCP也可以Static,选择Static要保证信息填写正确(如图),选择DHCP要保证路由器开启DHCP
  • Bridge选择vmbr0,可理解为加入了我家路由器管理的网域

OpenWRT容器添加LAN网口:

image-20221022175744012

  • 网口名称不能随便命名
  • IPv4 Static,由于这个是路由器的LAN网口
  • MAC address 不用填写
  • 防火墙不要

重启,改密码:

由于是容器重启速度非常快。

image-20221022181101317

填入之前修改的密码

image-20221022181537035

成功登陆路由器后台

image-20221022181700592

去掉未订阅的提示

通用

Proxmox VE 6.3 / 6.4 / 7.0 / 7.1 / 7.2 / 7.3 / 7.4 / 8.0 / 8.1 / 8.2 去掉未订阅的提示

1
2
3
4
sed -i_orig "s/data.status === 'Active'/true/g" /usr/share/pve-manager/js/pvemanagerlib.js
sed -i_orig "s/if (res === null || res === undefined || \!res || res/if(/g" /usr/share/javascript/proxmox-widget-toolkit/proxmoxlib.js
sed -i_orig "s/.data.status.toLowerCase() !== 'active'/false/g" /usr/share/javascript/proxmox-widget-toolkit/proxmoxlib.js
systemctl restart pveproxy

无误后重启即可

磁盘管理

常用命令

mount

用于挂载设备,Linux系统一般插入某个磁盘需要进行挂载之后才可以进行访问

1
2
3
4
5
6
7
8
9
# 输出系统下mount信息
mount

# 挂载分区到/mnt目录
mount /dev/sda1 /mnt

# 挂载/etc/fstab中所有配置
mount -a

findmnt

1
2
# 显示设备上所有挂载树状图
findmnt

df

1
2
3
4
5
6
7
# 显示挂载的文件系统及其磁盘使用情况
df -h

# 显示挂载点对应的设备
df -h /mnt/data


blkid

常用于/etc/fstab磁盘挂载查询分区UUID

1
2
# 显示所有分区的UUID
blkid

lsblk

1
2
3
# 显示所有块设备关系,包括lvm卷关系信息等信息
lsblk

LVM

安装完PVE后,PVE默认会将磁盘进行分区,其中包括真实的物理分区/boot和一个虚拟分区lvm,此虚拟分区包含了两个部分,1.系统所在分区 2.虚拟化池,1分区中包含一个物理分区,调整其大小需要先对物理分区进行调整(例如ext4 使用resize2fs),后对包含这个物理分区的逻辑卷进行调整(例如lvreduce -L 10G /dev/vg_name/lv_name)顺序不能错。2虚拟化分区采用使用 Thin Provisioning 技术的存储管理方案,允许你创建逻辑卷的虚拟容量,而不需要立即分配所有实际的存储空间(物理),说百了就是可灵活的加多个磁盘,对这些磁盘存储资源可进行灵活分配,比如我可以将一个新插入的磁盘规划到2分区,2分区就会被逻辑上被看作一个大的存储池,这个池可以被所有的虚拟机灵活取用,按需分配,无论加入多少设备,都可以逻辑上按需规划这些资源到不同的池,不同的池也可以包含所有设备部分/全部资源。

扩展知识:ext4上需要lvm扩展这些新的特性,但Btrfs文件系统自带这些新的特性,可以不创建lvm可直接使用lvm这种特性,我觉得少一层lvm或许会有性能提升。

特性

  1. 动态调整存储空间
    扩展卷组:可以动态添加新的物理卷(PV)到现有的卷组(VG)中,以增加存储容量。
    扩展逻辑卷:可以动态扩展逻辑卷(LV)的大小,而不需要停机或重新分区。
    缩小逻辑卷:可以动态缩小逻辑卷的大小(需要先缩小文件系统)。
  2. 创建快照
    快照卷:可以创建逻辑卷的快照,这些快照可以用于数据备份、测试或恢复操作。快照是写时复制(COW)的,因此只存储自快照创建以来的更改。
  3. 磁盘条带化(Striping)
    提高性能:通过将数据分布在多个物理卷上,可以实现并行I/O操作,从而提高磁盘性能。
  4. 磁盘镜像(Mirroring)
    数据冗余:可以创建逻辑卷的镜像,将数据实时复制到多个物理卷上,提高数据的可靠性和冗余性。
  5. 移动物理卷
    在线移动:可以在系统运行时将数据从一个物理卷移动到另一个物理卷,以便进行硬件维护或升级。
  6. 硬盘快照和恢复
    灵活备份:LVM 的快照功能可以在不停止服务的情况下进行数据备份,并在需要时轻松恢复。
  7. Thin Provisioning
    节省存储:LVM 支持 Thin Provisioning,可以动态分配存储空间,避免预分配未使用的空间,提高存储利用率。
  8. 卷组管理
    卷组:通过卷组管理多个物理卷,简化了存储管理和扩展。可以在卷组内创建和管理多个逻辑卷。

创建

物理卷(Physical Volume,PV)

1
2
# 物理设备初始化为物理卷
pvcreate /dev/sdX

卷组(Volume Group,VG)

1
2
3
# 将一个或多个物理卷加入到一个卷组中
vgcreate vg_name /dev/sdX

逻辑卷(Logical Volume,LV)

1
2
3
4
5
6
# 卷组中创建逻辑卷,lv_name 替换为逻辑卷的名称,10G 为逻辑卷的大小,vg_name 为卷组的名称。
lvcreate -n lv_name -L 10G vg_name

# 将逻辑卷格式化为ext4(也可以其他文件系统)
mkfs.ext4 /dev/vg_name/lv_name

查看

查看物理卷、卷组和逻辑卷

1
2
3
4
5
6
7
8
9
10
11
12
# 需 sudo

pvdisplay
# 显示物理卷的概要信息,包括其所在的卷组
pvs

vgdisplay
# 提供卷组的概要信息
vgs

lvdisplay
lvs

调整容量

有一个这样的场景:某个磁盘上有一个lvm区,其中包含两个逻辑卷,现将其中一个减小容量后,增加另一个的容量

列出所有逻辑卷及其当前大小

1
lvdisplay

确认要调整大小的逻辑卷。例如:

  • 逻辑卷1:/dev/vg_name/lv_name1
  • 逻辑卷2:/dev/vg_name/lv_name2

检查文件系统的大小

1
df -h

调整

注意:建议在调整之前备份重要数据,以免造成损失。

  • 调整大小时要注意顺序,先进行物理调整,再进行逻辑调整
  • 调小某个物理卷时一定要大于存储数据的总容量,才可进行无损调整
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
# 卸载逻辑卷1
umount /dev/vg_data/lv_data1

# 检查文件系统
e2fsck -f /dev/vg_data/lv_data1

# 调整文件系统大小为10G
resize2fs /dev/vg_data/lv_data1 10G

# 减小逻辑卷1的大小
lvreduce -L 10G /dev/vg_data/lv_data1

# 重新挂载逻辑卷1
mount /dev/vg_data/lv_data1 /mnt/data1

# 扩展逻辑卷2的大小10
lvextend -L 10G /dev/vg_data/lv_data2
# 扩展逻辑卷2的大小到所有未分配空间
lvextend -l +100%FREE /dev/vg_data/lv_data2

# 扩展文件系统大小
resize2fs /dev/vg_data/lv_data2

# 验证调整后的大小
lvdisplay
df -h

数据池

在 LVM (Logical Volume Manager) 中,数据池 (Data Pool) 是用于管理存储的高级功能,尤其是涉及快照、克隆等功能时。数据池通常由两个主要的逻辑卷组成:数据池元数据 (Metadata) 和数据池数据 (Data)。数据池是使用 Thin Provisioning 技术的存储管理方案。Thin Provisioning 允许你创建逻辑卷的虚拟容量,而不需要立即分配所有实际的存储空间。这有助于提高存储效率和灵活性。

数据池的主要组件

  1. 数据池数据 (Data Pool Data)

    作用: 存储实际的数据内容。

    详细信息:

    • 逻辑卷用于存放文件系统、虚拟机磁盘映像等实际数据。
    • 这是数据池的主要部分,用于保存用户数据或虚拟机数据。

    命名示例:

    1
    2
    ├─pve-data_tdata
    │ └─pve-data-tpool

    这里,pve-data_tdata 是数据池的数据逻辑卷,pve-data-tpool 是数据池的实际存储池。

  2. 数据池元数据 (Data Pool Metadata)

    作用: 管理数据池的元数据,包括跟踪数据块的分配情况、空闲空间、快照信息等。

    详细信息:

    • 逻辑卷用于存储数据池的元数据。
    • 这个部分包含数据池的管理信息,不直接存储用户数据。

    命名示例:

    1
    2
    ├─pve-data_tmeta
    │ └─pve-data-tpool

    这里,pve-data_tmeta 是数据池的元数据逻辑卷,pve-data-tpool 是数据池的实际存储池。

如需调节数据池大小需调节pve-data-tpool大小,pve-data_tmeta的大小到0.1%-1%的pve-data-tpool的大小。