好吧,大约一两个月前我创建了我的第一个 proxmox 虚拟环境,由于缺乏经验和计算错误,我创建了一个我不太满意的分区表。与此同时,我注意到我可能需要一个 zfs(意图)日志磁盘/分区,不幸的是,该分区需要从我的 ssd 中取出。
目前,我已在 500G ssd 上安装了 proxmox 节点,该节点设置为 LVM 和 5 个 4T hhd,采用 zrad2 配置。
现在主 ssd (/dev/nvme0n1) 有 3 个分区
- 一个(1007K-nvme0n1p1),我认为是 BIOS/UEFI
- 一个(1G-nvme0n1p2)安装在/boot/efi 上
- 其余部分(464.8G-nvme0n1p3)是 LVM
现在我想做的是修复包含 proxmox 的主 ssd,这样我就有 5 个分区而不是 3 个。我想要 3 个原始分区,但缩小第 3 个分区的大小,然后创建 2 个额外的分区,一个用作 zfs(意向)日志驱动器/分区,另一个留作未分配空间,可用于将来扩展或出现任何问题,因此我不需要再次经历这个过程,或者只是一个用于数据的标准分区。
现在的问题是 - 这是运行操作系统的主驱动器,因此需要在实时环境中完成,这没关系,但有些事情我担心,所以让我解释一下我想做什么、怎么做以及我的犹豫是什么。
让我们首先了解我当前的设置:
lsblk
输出:
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
sda 8:0 0 3.6T 0 disk
├─sda1 8:1 0 3.6T 0 part
└─sda9 8:9 0 8M 0 part
sdb 8:16 0 3.6T 0 disk
├─sdb1 8:17 0 3.6T 0 part
└─sdb9 8:25 0 8M 0 part
sdc 8:32 0 3.6T 0 disk
├─sdc1 8:33 0 3.6T 0 part
└─sdc9 8:41 0 8M 0 part
sdd 8:48 0 3.6T 0 disk
├─sdd1 8:49 0 3.6T 0 part
└─sdd9 8:57 0 8M 0 part
sde 8:64 0 3.6T 0 disk
├─sde1 8:65 0 3.6T 0 part
└─sde9 8:73 0 8M 0 part
zd16 230:16 0 32G 0 disk
zd32 230:32 0 32G 0 disk
nvme0n1 259:0 0 465.8G 0 disk
├─nvme0n1p1 259:1 0 1007K 0 part
├─nvme0n1p2 259:2 0 1G 0 part /boot/efi
└─nvme0n1p3 259:3 0 464.8G 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.4G 0 lvm
│ └─pve-data-tpool 252:4 0 337.9G 0 lvm
│ ├─pve-data 252:5 0 337.9G 1 lvm
│ └─pve-vm--101--disk--0 252:6 0 32G 0 lvm
└─pve-data_tdata 252:3 0 337.9G 0 lvm
└─pve-data-tpool 252:4 0 337.9G 0 lvm
├─pve-data 252:5 0 337.9G 1 lvm
└─pve-vm--101--disk--0 252:6 0 32G 0 lvm
‘pvs’ 输出
PV VG Fmt Attr PSize PFree
/dev/nvme0n1p3 pve lvm2 a-- <464.76g 16.00g
‘vgs’ 输出
VG #PV #LV #SN Attr VSize VFree
pve 1 4 0 wz--n- <464.76g 16.00g
‘lvs’ 输出
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
data pve twi-aotz-- 337.86g 1.43 0.54
root pve -wi-ao---- 96.00g
swap pve -wi-ao---- 8.00g
vm-101-disk-0 pve Vwi-aotz-- 32.00g data 15.12
再次,目标是重新分区nvme0n1
以拥有 5 个分区,但由于它当前已被 LVM 卷充分利用,所以我们需要减少文件系统和逻辑卷,以便它们适合第 3 个分区,并且我还留有空间用于要创建的另外 2 个分区。
我打算通过启动到支持 lvm 的实时环境,然后使用以下命令调整逻辑卷的大小(我正在调整根卷的大小,因为我不需要那里的所有空间)
# resize root volume to 30G
# use -r to resize filesystem within as well
# notify command this is a thin pool using --type and make it loud so i know what's going on
lvresize -L30G /dev/mapper/root -r -vvvv --type thin-pool
# do the same to the data volume except this time to 230G
lvresize -L230G /dev/mapper/data -r -vvvv --type thin-pool
# now reduce the physical volume size to 272G (8swap + 30root +230data +3.4meta)
pvresize --setphysicalvolumesize 272G /dev/nvme0n1p3
# now repartition the disk with fdisk
fdisk /dev/nvme0n1
# delete partition, partition number: d, 3
# create new partition, new partition number(same as deleted): n, 3
# accept default first sector, last sector: enter, +300G
# n=dont remove the LVM signature
# set partition type, partition number, type=Linux LVM: t, 3, 30
# new partition, 50G, type solaris zfs : n, 4, enter, 50G, t, bf
# new partition, the rest, type linux : n, 5, enter, enter
# write the changes
d - 3 - n - 3 - enter - +300G - n - t - 3 - 30 - n - 4 - enter - +50G - t - bf - n - 5 - enter - enter - t - 83 - w
现在重新启动 proxmox,但是 proxmox 不知道这些更改,所以如果发生这种情况,proxmox 会不会崩溃,甚至无法启动?这看起来是正确的做法吗?还是我遗漏了什么,也许我可以做些不同/更好的事情?
现在让我们假设我破坏了一切,我需要在新格式化的 ssd 上重新安装 proxmox,很好,不管怎样,但现在我不得不担心我的 zfs 池上的所有数据,它会保持完好吗?如果是这样,我需要做些什么来重新创建/重新实现它,还是所有数据都存储在磁盘的某个地方,也许是元数据,我只需插入设备,它们就会被识别并自行配置,我的所有数据都会恢复正常?ZFS 池上的 Vms/(数据)会被 proxmox 识别并重新添加为 VM 并像那样使用,还是我需要进行某种备份和重新导入,甚至更糟的是,进行某种黑客工作来重新创建它们,然后将它们的数据设置为 zfs 池中的某个位置或类似的东西?