重新分区 proxmox 根/数据 LVM 和 zfs 池恢复

重新分区 proxmox 根/数据 LVM 和 zfs 池恢复

好吧,大约一两个月前我创建了我的第一个 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 池中的某个位置或类似的东西?

相关内容