Debian11基于zfs安装PVE7

本次安装基于debian,使用6块2TB的nvme固态构建zfs进行安装。同时由于内核bug,国产nvme硬盘,pve8.0只能读取一块,预计会在kernel6.4进行修复,因此这里使用debian11安装pve7

第一步 :准备安装环境

  1. 启动 Debian GNU/Linux Live CD,使用用户名 user和密码live登录,连接网络。

  2. 设置和更新存储库

    sudo vi /etc/apt/sources.list
    # 默认注释了源码镜像以提高 apt update 速度,如有需要可自行取消注释
    deb http://mirrors.tuna.tsinghua.edu.cn/debian/ bullseye main contrib non-free
    # deb-src http://mirrors.tuna.tsinghua.edu.cn/debian/ bullseye main contrib non-free
    
    deb http://mirrors.tuna.tsinghua.edu.cn/debian/ bullseye-updates main contrib non-free
    # deb-src http://mirrors.tuna.tsinghua.edu.cn/debian/ bullseye-updates main contrib non-free
    
    deb http://mirrors.tuna.tsinghua.edu.cn/debian/ bullseye-backports main contrib non-free
    # deb-src http://mirrors.tuna.tsinghua.edu.cn/debian/ bullseye-backports main contrib non-free
    
    deb http://mirrors.tuna.tsinghua.edu.cn/debian-security bullseye-security main contrib non-free
    # deb-src http://mirrors.tuna.tsinghua.edu.cn/debian-security bullseye-security main contrib non-free
    
    # deb http://security.debian.org/debian-security bullseye-security main contrib non-free
    # # deb-src http://security.debian.org/debian-security bullseye-security main contrib non-free
    sudo apt update
  3. (可选) :在 Live CD 环境中安装并启动 OpenSSH 服务器

    这样进行后续配置会非常方便

    sudo apt install --yes openssh-server
    sudo sed -i '/^#PermitRootLogin/aPermitRootLogin yes' /etc/ssh/sshd_config
    sudo systemctl restart ssh

    修改root密码,直接使用root进行登录

    sudo passwd root

    在使用ssh登录之前,建议将debian的自动休眠关闭

  4. 禁用自动挂载

    如果磁盘之前已被使用过(分区具有相同的偏移量),则以前的文件系统(例如 ESP)将在未禁用的情况下自动挂载

    gsettings set org.gnome.desktop.media-handling automount false
  5. 切换为root用户

    su - root
  6. 在 Live CD 环境中安装 ZFS

    apt install --yes debootstrap gdisk zfsutils-linux

第二步 :磁盘格式化

  1. 使用磁盘名称设置变量

    始终对 ZFS 使用长/dev/disk/by-id/*别名。直接使用 /dev/sd*设备节点可能会导致偶发性导入失败,尤其是在具有多个存储池的系统上

    提示:

    • ls -la /dev/disk/by-id将列出别名

    • 选择启动池大小时,请考虑如何使用该空间。一个内核和initrd可能消耗100M左右。如果您有多个内核并拍摄快照,您可能会发现启动池空间不足,特别是如果您需要重新生成 initramfs 映像(每个映像可能约为 85M)。根据您的需要适当调整启动池的大小

    • 对于镜像或 raidz 拓扑,请使用DISK1DISK2等。

  2. 如果您要重复使用磁盘,请根据需要清除它

    确保交换分区未被使用

    如果该磁盘以前与 zfs 一起使用过

    一旦擦除分区信息所有数据会丢失

    对于基于闪存的存储,如果磁盘以前被使用过,您可能希望进行全盘丢弃(TRIM/UNMAP),这可以提高性能

    清除分区表

    如果您收到有关内核仍在使用旧分区表的消息,请重新启动并重新开始

  3. 对磁盘进行分区

  4. 创建启动池

    GRUB 不支持所有 zpool 功能。请参阅spa_feature_names grub -core/fs/zfs/zfs.c。此步骤创建一个单独的引导池,/boot其功能仅限于 GRUB 支持的功能,从而允许根池使用任何/所有功能。请注意,GRUB 以只读方式打开池,因此 GRUB “支持”所有只读兼容功能。

  5. 创建根池

  6. 创建数据池

第三步 :系统安装

  1. 创建文件系统数据集作为容器

  2. 为根文件系统和引导文件系统创建文件系统数据集

  3. 创建数据集

  4. 在 /run 挂载 tmpfs

  5. 安装最小系统

  6. 复制到 zpool.cache 中

第四步 :系统配置

  1. 配置主机名

    添加下面这一行

  2. 配置网络接口

    找到接口名称

    调整NAME以下内容以匹配您的接口名称,enp15s0为作者设备接口名称,请自行更换

    添加以下内容,enp15s0为作者设备接口名称,请自行更换

  3. 配置包源

  4. 将虚拟文件系统从 LiveCD 环境绑定到新系统并绑定chroot到其中

    这里使用DISK0

  5. 配置基本系统环境

    即使您更喜欢非英语系统语言,也请始终确保该语言 en_US.UTF-8可用

  6. 在新系统的 chroot 环境中安装 ZFS

    **注意:**忽略任何显示和的错误消息

  7. 安装GRUB

    安装 GRUB 以进行 UEFI 引导

    笔记:

    • 对于镜像或 raidz 拓扑,此步骤仅在第一个磁盘上安装 GRUB。其他磁盘将在稍后处理

    • 如果提示无法找到DISK0,请重新执行 第二步 :使用磁盘名称设置变量

  8. 可选:删除 os-prober

    这可以避免来自update-grub 的错误消息。 os-prober仅在双引导配置中才是必需的

  9. 设置root密码

  10. 启用导入 bpool

    这确保了bpool始终被导入,无论是否 /etc/zfs/zpool.cache存在、是否在缓存文件中、或者是否zfs-import-scan.service启用

  11. 可选(但推荐):挂载 tmpfs/tmp

  12. 可选:安装 SSH

第五步 :GRUB安装

  1. 验证 ZFS 引导文件系统是否被识别

  2. 刷新 initrd 文件

    **注意:**忽略任何显示和的错误消息

  3. GRUB 缺少 zpool-features 支持的解决方法

  4. 可选(但强烈推荐):使调试 GRUB 更容易

    稍后,一旦系统重新启动两次并且您确定一切正常,您可以根据需要撤消这些更改

  5. 更新启动配置

    **注意:**忽略来自 的错误osprober(如果存在)

  6. 安装引导加载程序

    对于 UEFI 引导,将 GRUB 安装到 ESP

    此处无需指定磁盘。如果您要创建镜像或 raidz 拓扑,则将稍后处理其他磁盘

  7. 修复文件系统挂载顺序

    我们需要激活zfs-mount-generator. 这使得 systemd 知道单独的挂载点,这对于/var/log 和之类的东西很重要/var/tmp。反过来,rsyslog.service依赖于使用systemd 自动使用功能var-log.mount 的方式local-fs.target和服务。PrivateTmp``After=var-tmp.mount

    通过确保这些不为空来验证是否zed更新了缓存

    如果其中一个为空,则强制更新缓存并再次检查

    如果它们仍然为空,请停止 zed(如下),启动 zed(如上所述),然后重试

    一旦文件有数据,停止zed

    修复要消除的路径/mnt

第六步 :首次启动

  1. 可选:初始安装快照

    将来,您可能希望在每次升级之前拍摄快照,并在某个时候删除旧快照(包括此快照)以节省空间

  2. chroot环境退出回到LiveCD环境

  3. 在 LiveCD 环境中运行以下命令以卸载所有文件系统

  4. 如果 rpool 失败,则在启动时安装它将会失败,您需要在 initamfs 提示符中执行zpool import -f rpool , 然后exit

  5. 重启

    等待新安装的系统正常启动。以 root 身份登录

  6. 配置zfs内存使用

    默认情况下, ZFS 将*50%*的主机内存用于自适应替换缓存(ARC)。为 ARC 分配足够的内存对于 IO 性能至关重要,因此请谨慎减少内存。根据一般经验,至少分配2 GiB Base + 1 GiB/TiB-Storage。例如,如果您有一个具有 8 TiB可用存储空间的池,那么您应该为 ARC使用10 GiB内存

    请将12修改为自己主机的参数

  7. 可选:删除初始安装的快照

第七步 :安装PVE

  1. 安装pve仓库源

  2. 添加Proxmox VE 存储库密钥

  1. 更新您的存储库和系统

  2. 安装Proxmox VE 内核

  3. 安装Proxmox VE 包

  4. 移除debian内核

  5. 更新并检查 grub2 配置

  6. 镜像GRUB

    如果安装到多个磁盘,请在其他磁盘上安装 GRUB

    对于 UEFI 启动

    对于第二个及后续磁盘(将 debian-2 增加到 -3 等)

  7. 可选(但建议):删除 os-prober 软件包

第八步 :配置PVE

  1. 连接到 Proxmox VE 网络界面

    连接到管理 Web 界面 ( https://your-ip-address:8006)。如果您是全新安装且尚未添加任何用户,则应选择 PAM 身份验证领域并使用root用户帐户登录

  2. 创建Linux网桥

    登录后,创建一个名为vmbr0Linux 网桥,并向其中添加您的第一个网络接口,网络接口名称同上

  3. 重启该服务器

Last updated