云筏 2x2T 机械的杜甫没有 IPMI,重装系统收费 100 元。而交付的机器是单盘 LVM 的 Proxmox,显然不适合正经使用,为省钱只能自行重装 Proxmox 为 ZFS mirror
核心原理受 Hetzner 的 vKVM 启发,就是将 1 块空闲硬盘直通入 QEMU 虚拟机安装系统。由于并非一边装一遍记录的,因此以下仅供参考。
对于跟随以下记录操作而导致服务器无法启动、失联等结果,概不负责!
1. 记录关键数据
需要用到机器现在的公网 IP、网关、网卡名和硬盘名。这里假设:
公网 IP: 123.1.2.3/32
网关: 123.1.2.1
网卡名: enp1s0
原系统硬盘:/dev/sda
新系统硬盘:/dev/sdb
2. 直通硬盘安装系统
首先下载 Proxmox 镜像保存任意目录,我保存为了 /root/proxmox-ve_7.0-1.iso
在控制台输入以下命令:
- qemu-system-x86_64 -enable-kvm -smp 8 -m 8192 -boot d -cdrom /root/proxmox-ve_7.0-1.iso -drive file=/dev/sdb,format=raw,media=disk -vnc 127.0.0.1:1
这样就用 qemu 开启了一个 8C8G 的虚拟机,挂载 proxmox-ve_7.0-1.iso 为 CD,直通 /dev/sdb 进虚拟机,同时开启了虚拟机的 vnc 端口。
注意不要关闭控制台,因为虚拟机要保持运行。接下来要用 SSH 转发端口,如果自己电脑已经安装了 SSH 就很方便:
- ssh -L 8888:127.0.0.1:5901 root@123.1.2.3
将杜甫的 5901 端口转发到了本机的 8888 端口。本机用 UltraVNC Viewer 连接就好了,自行按指引安装系统,和普通 IPMI 操作没有区别。
注意由于只有一块硬盘,Proxmox 在安装时无法选择 ZFS mirror,需要选择 ZFS raid0。
3. 修改虚拟机中的系统
为了让虚拟机中的安装的系统在物理机中能正常启动和使用,需要修改虚拟机中的网卡配置,编辑 /etc/network/interfaces :
- auto lo
iface lo inet loopback
iface enp1s0 inet manual
auto vmbr0
iface vmbr0 inet static
address 123.1.2.3/32
gateway 123.1.2.1
bridge_ports enp1s0
bridge_stp off
bridge_fd 0
如果安装的新系统不是 Proxmox ZFS 还需要额外关注硬盘配置,不过由于使用了 ZFS 文件系统,就无需关心了。
配置完毕后,用 Ctrl+Z 或 Ctrl+C 者关闭这个 qemu 开的虚拟机。
4. 删除原本的引导
原系统装在 /dev/sda,而新系统装在 /dev/sdb,需要修改原系统 grub 才能在开机时启动到新系统。但有个更直接但比较危险的操作,直接抹掉原系统:
- dd if=/dev/zero of=/dev/sda bs=64K conv=noerror,sync status=progress
用 dd 破坏 /dev/sda 的引导信息,引导分区不大,一般不超过几个 G。也就是执行几分钟就行了,不需要全盘抹掉。
然后就可以重启了,以我个人的经验,云筏这杜甫重启需要 4 分半的时间。
5. 添加硬盘到 ZFS 组成 mirror
正常启动后就是全新安装的系统了,不过这时候是单盘 ZFS,组成 mirror 还需要一些操作。先查看新系统的分区 fdisk -l :
Device Start End Sectors Size Type
/dev/sdb1 34 2047 2014 1007K BIOS boot
/dev/sdb2 2048 1050623 1048576 512M EFI System
/dev/sdb31050624390702913439059785111.8T Solaris /usr & Apple ZFS
sdb1 是 BIOS 引导分区, sdb2 是 EFI 引导分区,sdb3 才是真正的 ZFS 分区。
将新系统的分区表复制到原系统的硬盘上并修复分区表 id:
- sgdisk /dev/sdb -R /dev/sda
sgdisk -G /dev/sda
将原系统盘的 sda3 分区加入 ZFS 组成 mirror :
- zpool attach rpool /dev/sdb3 /dev/sda3
用 zpool status 看下:
NAME STATE READ WRITE CKSUM
rpool ONLINE 0 0 0
mirror-0ONLINE 0 0 0
sdb3 ONLINE 0 0 0
sda3 ONLINE 0 0 0
得到了想要的 mirror ,刚加入后会自动同步数据,过几分钟就好了。
6. 引导修复
最后还需要手动修复下 Proxmox 的引导:
- proxmox-boot-tool format /dev/sda2
proxmox-boot-tool init /dev/sda2
终于完成了重装系统的一切操作,可以正常使用了。
最后再说下,一定要清楚自己在干什么,否则杜甫 GG 了就杯具了
热议
推荐楼 无神通 6天前
@pslt @CloudRaft 教程来了
2楼 optimism 6天前
技术贴必顶了
4楼 zxxx 6天前
收藏,帮顶!
5楼 pinanao 6天前
重装CentOS不是更好,svm这些的对接WHMCS方便,pve对接模块贵死
6楼 燕十三丶 6天前
来个视频教程更佳。还可以发到有图比 赚钱
7楼 CloudRaft 6天前
大牛啊!!!
这思路第一次见到,震撼!
8楼 honey 6天前
牛皮啊 大佬 给大佬顶起来
9楼 CloudRaft 6天前
重装CentOS不是更好,svm这些的对接WHMCS方便,pve对接模块贵死
PVE有很多其他的优势,如果不是用来对接WHMCS转卖小鸡的话是首选了。
10楼 mean 6天前
这个思路之前看到过,补充个单硬盘版的:
1. 思路大体相同,注意当前启动系统要有 kvm 模块,并且有足够的内存;
2. menhera 或者 takeover,脚本会复制当前系统到tmpfs,chroot;
3. 当前启动盘已经释放,可以把整块硬盘挂入 kvm
4. 略
https://github.com/Jamesits/menhera.sh
12楼 无神通 6天前
mean 发表于 2021-7-23 21:57
这个思路之前看到过,补充个单硬盘版的:1. 思路大体相同,注意当前启动系统要有 kvm 模块,并且有足够的 ...
好东西,mark
13楼 micms 半小时前
mark大佬的神操作
申明:本文内容由网友收集分享,仅供学习参考使用。如文中内容侵犯到您的利益,请在文章下方留言,本站会第一时间进行处理。