由于 WyOJ 主服务器(mei)使用的是一块 120GB 的二手 SSD,已经快要用满。而 mei(一体机改),只有一个完整的 SATA 口,所以即使已经使用了 LVM 也无法扩展。
而近期要上传大量新题目,所以我们不得不想办法扩容。我使用了一块 1T 的希捷机械硬盘,放在机房的出口软路由(wzsss2333)上,用 iSCSI 共享并创建为 PV。
然而,我将 PV 加入原有的卷组(arch)后,意识到根也在 arch 中。具体地说,原来的拓扑为:/dev/arch/root 挂载到根,/dev/arch/data 挂载到 /opt,数据位于 /opt/uoj/uoj_data/web/data。而将 iSCSI 设备加入到 arch 中后,几乎没有办法启动。
具体地,启动时 LVM 会根据 UUID 找 VG 中的 PV,结果发现 iSCSI 盘还不存在,因此无法挂载同在 arch 中的根。解决方法看起来很简单,无非就是在 LVM 启动之前把 iSCSI 拉起来就是了,但是我折腾了很久也丝毫无果。数小时后均失败。
吃饭的时候我就不得不思考快点回退到可用状态了,因为在很长一段时间内我都没有线下操作数小时的机会,所以必须快点用最稳定的方法把 OJ 拉起来。迫不得已的情况下,我缩容了 /dev/arch/data,然后在 Seagate 盘上创建了独立的 VG meiext、LV meiext/webdata。
我耗费 38 分钟执行了 resize2fs /dev/arch/data 60G 将 arch/data 缩容到 60G,并随后缩容 LV、从 VG 中 reduce 去 PV,并创建了新 LV,又耗费了约 20 分钟将数据全部复制到 meiext/webdata 下。
最终,我重新把系统拉起来了。现在的 arch/data 下还有一份 data-old 冗余。先试运行几天,没有问题后再删掉。
local root@mei:~# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
sda 8:0 0 111.8G 0 disk
├─sda1 8:1 0 500M 0 part
├─sda2 8:2 0 111.3G 0 part
│ ├─arch-root 253:0 0 32G 0 lvm /
│ └─arch-data 253:1 0 60G 0 lvm /opt
└─sda3 8:3 0 12M 0 part
sdb 8:16 0 931.5G 0 disk
├─sdb1 8:17 0 32G 0 part [SWAP]
└─sdb2 8:18 0 899.5G 0 part
└─meiext-webdata 253:2 0 674.6G 0 lvm /opt/uoj/uoj_data/web/data
local root@mei:~# df -h / /opt /opt/uoj/uoj_data/web/data
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/arch-root 32G 13G 18G 42% /
/dev/mapper/arch-data 59G 51G 5.5G 91% /opt
/dev/mapper/meiext-webdata 663G 41G 590G 7% /opt/uoj/uoj_data/web/data
另,mei 的内核已经更新到 7.0.10。
local root@mei:~# uname -a
Linux mei 7.0.10-arch1-1 #1 SMP PREEMPT_DYNAMIC Sat, 23 May 2026 14:21:20 +0000 x86_64 GNU/Linux
我真的要困死在这里了。
-- upd 15:56 已经清空了 data-old 冗余。
