最近又失业了,找不到工作赋闲在家,所以折腾了下从群友那儿收到的一台二手戴尔 PowerEdge R730XD 机柜式服务器。

假装有开箱

没有开箱。我完全不懂服务器,也不懂组装服务器,不然也不至于买 DS220+。

想看开箱可以看这篇:《开箱测评——DELL PowerEdge R730xd》,非常详细。虽然他的是 24 个2.5寸盘位的版本,而我的是 12 个 3.5 寸盘位的版本。但只是盘位有区别,其他地方是一模一样的。

或者直接看司波图的评测视频:《超级“静音”的12盘机柜服务器竟然不到千元,或成工作室NAS最优解之一——戴尔PowerEdge R730XD服务器测评》。

C佬给我的 R730XD 规格是 H330 控制卡、双白金 750W 电源、4*16G 带 ECC 校验的内存、以及一块 E5 2650v3 的CPU、一块英特尔企业固态硬盘,12 盘位满盘架,用来升级替换我现在的 DS220+ 绰绰有余。

系统配置

由于 C佬已经折腾过了包括 BIOS 等等各方面的配置,IDRAC 也基本上是最新的,H330 阵列卡也切换为了可以直通的模式。总之就是可以开箱即用。

因此系统配置方面,就没有什么特别要说(也不知道要说些啥)的点。

安装 PVE

PVE,全称 Proxmox VE,是一个基于 Debian 的开源的服务器虚拟化环境Linux发行版。这里我使用 Ventoy 安装 PVE,Ventoy 是一个用于制作可启动 U 盘的开源工具,只需要把系统镜像拷贝到预装 Ventoy 的U盘中,无需其他操作就可以启动U盘中的系统。非常方便。

安装 PVE 时具体参考了《r730xd 安装pve》这个视频的安装步骤。

首先制作 U盘启动器。在 Ventoy 的 下载界面 下载适合当前系统的安装包,将 Ventoy 安装到U盘中,再把 PVE 的 ISO 镜像丢进去即可。

接着将U盘插到 R730XD 后置面板的 USB 接口中,同时确保服务器已接入电源、网络。随后打开 IDRAC 后台,启动服务器系统。在 BIOS 自检完成进入系统之前,按 F11 进入 Boot 管理界面。

进入 Boot 管理界面后,按照《r730xd 安装pve》视频中演示的步骤,配置 U盘为快速启动选项,保存后系统会自动重启。

选择 PVE 镜像安装系统,后续的操作基本照搬视频。

没什么用的安装截图 1
没什么用的安装截图 1
没什么用的安装截图 2
没什么用的安装截图 2

打开上图所示的 PVE 后台链接 https://192.168.31.100:8006,登录名为 root,密码为安装 PVE 时设置的那个,即可进入 PVE 的管理界面。

Shell 登录也是同一个密码,用户名 root

配置 PVE

在安装各种虚拟机之前,需要简单配置一下 PVE 的环境。

下面几乎全是 C佬的笔记,既然他不发博客,那我就直接一个复制粘贴了。欸嘿 (๑>؂<๑)

更换软件/CT 源

参考《Proxmox - USTC Mirror Help》中的步骤,先将 PVE 的系统软件源更换为中科大的国内镜像。

cp /etc/apt/sources.list /etc/apt/sources.list.bak
sed -i 's|^deb http://ftp.debian.org|deb https://mirrors.ustc.edu.cn|g' /etc/apt/sources.list
sed -i 's|^deb http://security.debian.org|deb https://mirrors.ustc.edu.cn/debian-security|g' /etc/apt/sources.list

同时,将系统中的 CT模板(LXC镜像)源也更换为中科大的国内镜像:

sed -i.bak 's|http://download.proxmox.com|https://mirrors.ustc.edu.cn/proxmox|g' /usr/share/perl5/PVE/APLInfo.pm

最后重启 pvedaemon 服务:

systemctl restart pvedaemon

删除 lvm-local

删除 lvm-local 使可用空间最大化。

在 PVE 管理后台打开 Shell 终端,使用 lsblk 查看硬盘情况:

sda                  8:0    0 447.1G  0 disk
├─sda1               8:1    0  1007K  0 part
├─sda2               8:2    0     1G  0 part /boot/efi
└─sda3               8:3    0 446.1G  0 part
  ├─pve-swap       252:0    0     8G  0 lvm  [SWAP]
  ├─pve-root       252:1    0    96G  0 lvm  /
  ├─pve-data_tmeta 252:2    0   3.3G  0 lvm
  │ └─pve-data     252:4    0 319.6G  0 lvm
  └─pve-data_tdata 252:3    0 319.6G  0 lvm
    └─pve-data     252:4    0 319.6G  0 lvm

由于是全新安装的机器,lvm-local 上肯定没有虚拟机。

编辑 lvm,勾选所有内容:

使用命令移除 pve-data:

lvremove /dev/pve/data

应有如下提示:

root@pve:~# lvremove /dev/pve/data
Do you really want to remove active logical volume pve/data? [y/n]: y
  Logical volume "data" successfully removed.

使用命令扩大 root 分区:

lvextend -rl +100%FREE /dev/pve/root

如下:

root@pve:~# lvextend -rl +100%FREE /dev/pve/root
  Size of logical volume pve/root changed from <39.56 GiB (10127 extents) to <110.24 GiB (28221 extents).
  Logical volume pve/root successfully resized.
resize2fs 1.47.0 (5-Feb-2023)
Filesystem at /dev/mapper/pve-root is mounted on /; on-line resizing required
old_desc_blocks = 5, new_desc_blocks = 14
The filesystem on /dev/mapper/pve-root is now 28898304 (4k) blocks long.

最后编辑 lvm,勾选所有内容并保存:

使用 df -h 检查下最终分区情况:

root@pve:~#df -h
Filesystem            Size  Used Avail Use% Mounted on
udev                   32G     0   32G   0% /dev
tmpfs                 6.3G  1.8M  6.3G   1% /run
/dev/mapper/pve-root  109G  2.6G  101G   3% /
tmpfs                  32G   46M   32G   1% /dev/shm
tmpfs                 5.0M     0  5.0M   0% /run/lock
efivarfs              192K  143K   45K  77% /sys/firmware/efi/efivars
/dev/nvme0n1p2       1022M   12M 1011M   2% /boot/efi
/dev/fuse             128M   16K  128M   1% /etc/pve
tmpfs                 6.3G     0  6.3G   0% /run/user/0

最后在 WebUI 中移除 lvm-thin 分区。

去除无有效订阅提示

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

禁用企业源

mv /etc/apt/sources.list.d/pve-enterprise.list /etc/apt/sources.list.d/pve-enterprise.list.bak
mv /etc/apt/sources.list.d/ceph.list /etc/apt/sources.list.d/ceph.list.bak

apt update

添加第二块硬盘

将第二块 SSD 硬盘插入后置面板的另一个硬盘槽位中,等待系统识别。

在节点、磁盘中,擦除目标硬盘,擦除成功后点击使用 GPT 初始化磁盘。


然后切换到目录,创建目录,选择对应的硬盘。

如果这块硬盘是从其他 PVE 上拆过来的,仍然存在块存储的话,擦除会遇到 disk/partition '/dev/xxxx' has a holder (500) 的报错,这里需要进入 SSH Shell,然后使用 dd if=/dev/zero of=/dev/xxxx 对硬盘全部填一次 0,/dev/xxxx 替换为对应硬盘, 注意一定不要选错目标硬盘!

安装 DSM

上传镜像

下载 RR 镜像:https://github.com/RROrg/rr ,参考张大妈上的教程:https://post.smzdm.com/p/al82z7ee/ 安装 DSM。

将镜像上传至 local 存储库中的 ISO镜像中。

上传完成后需记下第三行 target file 镜像保存的路径,例如:

/var/lib/vz/template/iso/rr.img

创建虚拟机

接着就可以创建虚拟机了。点击右上角创建虚拟机,名称为 DSM。

操作系统如图示配置,勾选【不使用任何介质】。

系统如图示配置,SCSI控制器选择 VirtIO SCSI single。

磁盘这里我是整个删了,没有分配磁盘。后面可以再加。

是的,

CPU随便给,后面觉得不够可以再加。类别选择【host】。

内存也是随便给,有多少加多少。虚拟机就是这么自由。

网络模型选择 VirtIO(半虚拟化)。

最后再检查一遍虚拟机配置,注意去选左下角【创建后启动】,点击完成。

由于本来就没添加硬盘,所以就不用执行分离的步骤了。

打开 PVE 网页管理的 Shell,执行以下命令:

qm importdisk 100 /var/lib/vz/template/iso/rr.img local

其中 /var/lib/vz/template/iso/rr.img 是最开始导入 RR 镜像时的镜像保存路径。

执行成功后,即可在 DSM 虚拟机的【硬件】中看到新增的硬盘,大小为 3585M,约为 RR 的镜像大小。

在【选项】中修改引导项,勾选新增的 RR镜像硬盘。

然后就可以启动虚拟机了,开始编译引导的操作。

编译引导

编译引导请参考官方文档中的编译引导环节,设备型号、系统版本任选。我选择的是 DS3622xs+,系统版本为 DSM 7.2。

这里唯一要注意的是:你的网可能糟糕到下载不动 DSM系统

解决办法是先下载到电脑上,再上传到web服务器中(比如我直接上传到博客里了)。

然后在跳出可编辑的下载框时,修改下载地址:

不然我都不知道什么时候能下载完。

等编译完,出现链接 DSM 的提示后,再进行下一步。

添加硬盘

由于没有添加硬盘,DSM 是启动不了的。添加 local 存储中的 SSD 硬盘。

分配硬盘大小,格式选择 raw,勾选 SSD仿真。

保存后重启虚拟机。

如果死活重启不了 DSM,就在 PVE 的 Shell 里强行关闭。

首先找到对应进程,其中 100 是虚拟机对应的 ID:

ps -ef|grep "/usr/bin/kvm -id 100"|grep -v grep

会出现很多数据,但我们只看第一行:

$ ps -ef|grep "/usr/bin/kvm -id 100"|grep -v grep
root      860848       1 99 13:07 ?        16:59:12

直接杀掉进程:

kill 860848

因为现在只是个引导,强停没关系。后面安装完 DSM 就不要这么做了,太危险。

安装系统

添加完硬盘,就可以正式安装系统了。

因为我已经下载了 pat 系统文件,所以直接上传。随后会提示将删除硬盘上的数据,填写产品型号后直接删。

等一会儿就进系统了。

配置 DSM

DSM 自身系统的配置暂且不提,我们来说些运行于 PVE 之上的 DSM 需要配置的东西。

安装 QEMU Guest Agent

在 DSM 中安装 QEMU Guest Agent,即可解决 PVE 无法关闭 DSM 的问题,并正确显示 DSM 网络地址等信息。

具体参考:https://blog.xm.mk/posts/0d5a/#%E7%BE%A4%E6%99%96-synology-dsm ,我就不复制粘贴了。

但是C佬没有写如何在 PVE 中启用,这里直接上图。

启用后重启 DSM 生效。

直通控制器

这一块非常复杂,我完全没有搞懂。

还请参考:

请在大佬的陪同下执行直通操作!

我先是在前面板硬盘栏内插入了一块之前DS220+上换下来的有数据的8T硬盘,边看教程边问C佬。一通鼓捣后,选择的是这个 PCIE 控制器。

重启 DSM 后,这个虚拟机 DSM 系统直接检测到了这块硬盘,并且提示在线重组启用这块硬盘。

而在线重组后,硬盘直接变为可用状态,并自动创建了存储池。

数据一点儿没丢!

所以DS220+上的硬盘我直接想都没想,全塞了进去。

配置 UPS

担心断电影响数据,我有为DS220+配置APC 的UPS。而 PVE 上的 DSM 也可以识别到这个 UPS。

首先将 UPS 的通信数据线插入 730XD 后置面板的 USB 槽内,再在硬件中将这个 USB 直通给 DSM。

我试过使用 USB 端口,可是重启之后这个端口它……变端口号了……

安装 Debian

这里安装的是 LXC Debian。首先在 CT 模板中下载镜像,选择 Debian 12。

因为先前已经换过镜像源了,如果下载还是慢……嗯,可以使用以下命令再换一次源:

sed -i.bak 's|http://download.proxmox.com|https://mirrors.ustc.edu.cn/proxmox|g' /usr/share/perl5/PVE/APLInfo.pm
systemctl restart pvedaemon

下载完成后,右上角创建 CT,我以后可能需要挂载 NFS,所以使用特权容器,去选【无特权的容器】。

然后根据需要调整 CPU、内存、网络的设置,最后一步去掉创建后启动的选项。

创建完成后,到选项-功能中,勾选上嵌套,实测不勾选嵌套会导致 timedatectl 服务无法运行、SSH 登录缓慢等一系列问题。需要挂载 NFS 则勾选 NFS。

另外,我的容器在使用的时候,出现了 ntpd 服务无法启动的情况,报错:

root@Debian:~# systemctl status ntpd
* ntpsec.service - Network Time Service
     Loaded: loaded (/lib/systemd/system/ntpsec.service; enabled; preset: enabled)
     Active: inactive (dead)
  Condition: start condition failed at Thu 2024-05-09 23:05:19 CST; 11min ago
             `- ConditionCapability=CAP_SYS_TIME was not met
       Docs: man:ntpd(8)

May 09 23:05:02 Debian systemd[1]: ntpsec.service - Network Time Service was skipped because of an unmet condition check (ConditionCapability=CAP_SYS_TIME).
May 09 23:05:07 Debian systemd[1]: ntpsec.service - Network Time Service was skipped because of an unmet condition check (ConditionCapability=CAP_SYS_TIME).
May 09 23:05:19 Debian systemd[1]: ntpsec.service - Network Time Service was skipped because of an unmet condition check (ConditionCapability=CAP_SYS_TIME).

需要为特权容器启用 CAP_SYS_TIME,这里我们直接对 PVE 下的所有 LXC 统一设置。进入 /usr/share/lxc/config/common.conf.d/,创建一个文件,我这里命名为 02-sys-time.conf,然后将文件内容设置为:

lxc.cap.drop =
lxc.cap.drop = mac_admin mac_override sys_module sys_rawio

再去启动 LXC 容器就可以食用了。后续 Debian 系统的初始化等配置,可以参考C佬的《Debian Server 初始化设置 SOP》。

最后

到这里,这台 730XD 就折腾得差不多了。目前整机功耗 120W 不到,近七天平均用电3.5度(插座统计的,设备包括UPS、路由器、光猫、交换机、730XD),虽然较 DS220+ 时期的 1度电翻了3.5倍,但性能实打实得到了提升。一本满足!

从 5月15日中午收到这台机子开始,我大概花了五天的时间折腾这些东西。这要不是失业赋闲我还真没这么多时间搞,看来还得感谢失业了。

第一天搞定了 PVE、DSM、磁盘直通、PVE 添加第二块硬盘、QEMU Guest Agent。恢复部分 NAS 上的服务。由于没弄懂 NFS,所以还是用 DSM 跑了一部分需要用到存储的程序。

第二天把 DS220+ 清理了一下,拍了照挂上了闲鱼。然后开始折腾 Debian,并慢慢把原 NAS 上的服务迁移到 Debian 上。顺便安装了 LXC 的 AdguardHome。从这天开始,我的折腾进入了一个白热化的阶段:我终于开始尝试透明代理了。在此之前我从没了解过「静态路由」这个概念,好在我的 Redmi AX6000 被我解锁了 ssh,能直接把静态路由写进系统配置。大概在凌晨搞定了这个透明代理,使用的方案是 PaoPaoGateway,分流由 PaoPaoDNS 负责。路由器的 DNS 由 AdguardHome 驱动,而 AdguardHome 里又设置了将需要代理的设备分流到 PaoPaoDNS,从而实现自动分流,同时亦可保持开启 IPv6。

就这样连着折腾透明代理搞了两天。第三日晚,我实在是不想搞机了,就把字幕子集化的坑给填了。

所以第四天我也就没继续搞这破玩意儿,看了半天动画片。但晚上又开始了,折腾虚拟机装 Windows,折腾 730XD的风扇。它这个风扇转速调得低温度就高,调得高了点那声音又轰轰响吵得睡不着觉…… (⌐■_■) 最后,结合 Dell-Fans-Control 用 ChatGPT 糊了一个自动调整的出来,兼顾 Telegram 通知。

第五日,我以为终于要结束了。结果朋友灵机一动,跟我说我现在这个网 730XD 一挂整个嗝屁,不如利用起闲置的 R2S。R2S 官方也支持跑 Debian,在里头安个 Docker,再安个 AdguardHome 和 PaoPaoDNS,完美接管网络。所以我就又搞了一天……但以失败告终,搞不明白为啥 PaoPaoDNS 会连不上网。于是我又把网络切回了原来的方案。

这两天终于清闲了点,我也能把这篇水文写完了。

故以上,是为我装机的七日,我亦在第七日歇了一切的工。

但为什么我的鸟先死了!!!

参考

一些可能会用到的参考: