By accessing the website and accepting the Cookie Policy, you agree to use the cookies provided by the Site in accordance with to analyze traffic, remember your preferences, and optimize your experience.

分类 - PVE

2024-03-28 14:28:36    75    0    0

起因

由于 LXC 容器无法使用 overlay2​ 存储层,为了保持与 Docker 的兼容性,默认存储层一直采用 vfs​。vfs 存储层的劣势很明显,目前的 lxc 虽然只部署 7 个 Docker 项目,但 /var/lib/docker​ 目录空间占用高达 70GB,因此迫切需要为 vfs 存储层寻找替代品,查阅众多资料后发现 fuse-overlayfs​ 可以解决这个问题,但lxc有些系统无法通过apt直接安装 fuse-overlayfs,因此就有了这篇文章,详细记录了 lxc 切换 vfs 存储层驱动为 fuse-overlayfs​ 的详细过程。

Docker 存储层

Docker容器分层

Docker 容器采用分层结构,其层级如同洋葱般逐一累加(layers、RUN、COPY、ADD)。这意味着 Dockerfile 中的每个命令将在容器内创建一个新层。每一层仅存储相较于上一层新增的修改内容,从而实现容器间的层级共享,降低存储空间占用和下载时间。然而,需要注意的是,这些层是可以访问的,因此不可通过增加额外层级来保护敏感信息。

在典型的系统环境中,Docker 使用联合文件系统(基于 MergerFS)透明地合并了所需的层级。Docker 将此称为 overlay2(默认存储驱动程序)。这样就创建了一个由所有层级共同组成的单个文件系统,而无需复制文件。容器看到的是一个完整的文件系统,但它实质是由多个文件系统组合而成。

LXC中的容器分层

在 LXC 中运行 Docker 时,默认的 overlay2 存储驱动程序不可用,因为 LXC 无法挂载这些高级的 overlay 文件系统(它们是内核构建的)。相反,LXC 使用 vfs,虽然较简单,但也存在一些重大问题。vfs 不会像 overlay2 那样仅更改写入磁盘,而是对现有的整个文件系统进行深度复制,以便在上一层基础上创建下一层。这意味着容器会消耗更多的空间,因为许多基础操作系统文件将在每个层中重复出现,从而显著增加磁盘使用率。因此,多个容器也无法共享相同的底层。强制使用 overlay2 也不会改善这种情况:

  1. ERRO[2021-09-30T09:24:56.9
2023-12-08 15:04:59    700    0    0

默认LXC容器不允许docker嵌套。要启动虚拟化嵌套功能,需要按照以下步骤在proxmox的母鸡上进行后续操作。

本教程使用新创建的虚拟机进行讲解 (假设创建了 CT100) :

cd /etc/pve/lxc

需要先停止lxc容器,之后对配置文件进行修改

nano 100.conf

在cores字段下加入以下代码:

features: nesting=1,fuse=1,
2023-12-08 15:04:59    3668    0    0

当创建kvm虚拟机后忘记密码、某些文件丢失或损坏无法继续使用虚拟机,宿主机挂载镜像来解决这样的难题。

1 raw格式

方法一

对于未分区镜像文件直接使用loop:

第一步:

file image.img 查看什么格式

第二步:
mount -o loop p_w_picpath.img /mnt/p_w_picpath

lxc容器在这一步,已经可以直接挂载文件到指定位置了

已分区的镜像文件:
如果已知分区的起始位置
mount -o loop,offset=32256 p_w_picpath.img /mnt/p_w_picpath
方法二:

使用losetup + kpartx
losetup /dev/loop0 p_w_picpath.img
kpartx -a /dev/loop0
mount /dev/mapper/loop0p1 /mnt/p_w_picpath
kpartx命令的作用,是让Linux内核读取一个设备上的分区表,然后生成代表相应分区的设备。
kpartx -l p_w_picpathfile 可以查看一个映像文件中的分区,使用 kpartx -a p_w_picpathfile 命令后,就可以通过 /dev/mapper/loop0pX (其中X是 分区号)来访问映像。

2 qcow2格式
对于qcow2格式需要使用qemu-nbd这个工具,如果没有请用yum安装.
modprobe nbd max_part=63
qemu-nbd -c /dev/nbd0 p_w_picpath.img
mount /dev/nbd0p1 /mnt/p_w_picpath

3 如果是LVM格式的镜像:
vgscan
vgchange -ay
mount /dev/VolGroupName/LogVolName /mnt/p_w_picpath

4 最后使用结束需释放资源:
umount /mnt/p_w_picpath
vgchange -an VolGroupName
killall qemu-nbd
kpartx -d /dev/loop0
losetup -d /dev/loop0

 

2023-12-08 15:04:59    544    0    0

图片[1]-KIMSUFI使用proxmox开【IPv4nat+IPv6】小鸡-科技密码

活动昨天跟风入手了KIMSUFI-LE独服,配置和价格都很不错。唯一槽点是机器只有下行是G口,上行被限制在了100M。听说有几率中奖开到上下都是G口,还听说有几率IPV6的上下行都是G口(仅IPV4限速)。结果我开的机器2个奖都没中(′⌒`)。

 

写这个教程主要是给IPV6中奖者开小鸡一个参考。IPv4设置较简单,这里只设置了小鸡可以访问IPv4外网,并没有给小鸡分配端口转发(

2023-12-08 15:04:59    117    0    0

启动救援模式,开启qemu虚拟机挂载本机系统

apt -y update
apt -y install qemu qemu-kvm

wget http://download.proxmox.com/iso/proxmox-ve_7.1-1.iso

qemu-system-x86_64 \
-enable-kvm \
-nodefaults \
-cdrom /root/proxmox-ve_7.1-1.iso \
-hda /dev/sda \
-hdb /dev/sdb \
-cpu host \
-smp 4 \
-m 8G \
-net nic \
-net user \
-vga std \
-vnc 0.0.0.0:0 \
-usbdevice tablet \
-k en-us​

使用VNC连接ip:5900,通过root登陆后排出故障项


2023-12-08 15:04:59    1202    0    0

一:zfs arc缓存介绍

zfs的raid,就像软raid,通过计算机的计算来实现raid,但是缓存从哪里来?内存啊,速度比硬盘快的多,而sun的 Solaris,以前就是怪物一样的超级大内存,所以ZFS在设计的时候,就很耗内存,移植到linux之后还带着这样的基因,占用50%的物理内存做zfs缓存。


二:检查内存占用

我的32G内存,就占了一半多一点,系统还得占点。

arcstat,pve管理界面,这些地方都能看到。


三:设置arc最大内存

这就是ZFS允许减小允许使用ARC大小的最大大小的原因。此设置在/etc/modprobe.d/zfs.conf文件中完成。

例如,如果您希望ARC永远不要超过32 GB,请添加以下行:

options zfs zfs_arc_max=34359738368
# 设置为1G
options zfs zfs_arc_max=1073741824

简单设置命令为:

echo "options zfs zfs_arc_max=1073741824" >> /etc/modprobe.d/zfs.conf

根据你的物理内存,自己计算吧,1G:1*1024*1024*1024*1024

如果根文件系统也使用了ZFS,你必须在每次修改该参数后更新initramfs,如下:

update-initramfs -u

四:测试效果

内存占用从16G多变成1G多了。

你就自己看arcstat或PVE的管理界面吧。

2023-12-08 15:04:59    952    0    0

移除未使用的Linux内核

  • 若不存在pvekclean,请先安装
git clone https://github.com/jordanhillis/pvekclean.git
cd pvekclean
chmod +x pvekclean.sh

安装完成后执行pvekclean即可

./pvekclean.sh

Proxmox VE 7 (PVE 7) 配置更新源, 移除自带的企业源

echo 'deb http://download.proxmox.com/debian/pve bullseye pve-no-subscription' >> /etc/apt/sources.list.d/pve-no-subscription.list

日常软件更新命令:

apt update -y && apt dist-upgrade -y

更新PVE,并安装常用软件

apt-get update && apt-get install vim lrzsz unzip net-tools curl screen uuid-runtime git -y && apt dist-upgrade -y

Proxmox VE 6.3 / 6.4 / 7.0 / 7.1 去掉未订阅的提示

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
  • 确认无误后,重新启动服务器
reboot


如果更新时出现错误 E: Sub-process /usr/bin/dpkg returned an error code

https://blo