是否有可能纠正我的 LVM 错误?

是否有可能纠正我的 LVM 错误?

我在旧服务器上安装了 Proxmox (PVE),我想交换旧驱动器以获得更多空间。但首先我想将 PVE 安装移至 SSD。够简单的。

初始点:

  • 1x76GB SATA(PVE 根 LVM)
  • 2x500GB SATA(VG1 使用 mdadm 配置为 RAID1 - LVM Thinpool)

最终目标:

  • 1x120GB SSD(PVE 根 LVM)
  • 2x500GB SATA(VG1 更长一些)
  • 1x2000GB SATA*(在 VG1 中,以便将pvmove旧 RAID 中的所有文件转移到该驱动器)

*此驱动器将在 mdraid 设置中与另一个 2TB 驱动器一起配置,该驱动器将在稍后添加(由于缺少电缆和 SATA 端口)。

我插入 SSD 并使用 Linux 启动实时 USB,运行我在网上找到的 dd 命令,将旧的 76GB 驱动器复制到新的(但已使用的)120GB SSD。一切正常,除了磁盘大小仍显示为 76GB 之外。

因此,为了解决这个问题,事后我不太确定我做了什么。看看历史记录,我相信我运行了以下命令

echo 1 > /sys/class/scsi_device/0\:0\:0\:0/device/rescan
parted -l
 # At this point I got a few questions and I chose Fix and/or Ignore until it was finished
pvresize /dev/sda3
lvresize /dev/pve/data -l 100%FREE

现在我认为我已经完成并开始处理清单上的下一个项目。在这里我遇到了我的深夜大脑 Stu Pid。

我用一个驱动器创建了 RAID

mdadm --create /dev/md2 --level 1 --raid-devices 2 /dev/sdd missing
 # Next, I forgot to RTFM..
mkfs.ext4 /dev/md2
 # I actually aborted the above command Ctrl-C...
 # Uhhhh. I create the Physical Volume and extended the VG
pvcreate /dev/md2
vgextend vg1 /dev/md2
 # Next, I dunno
lvextend /dev/vg1/tpool /dev/md2
resize2fs /dev/mapper/vg1-tpool
 # Again what? And now something from Youtube
/usr/share/mdadm/mkconf > /etc/mdadm/mdadm.conf
dpkg-reconfigure pve-kernel-`uname -r`

从那时起,出于某种原因,我parted -l再次开始resize2fs跑步vg1-tpool。我只知道我不知道此时我在做什么。

总而言之,这就是我最终得到的结果(为简洁起见,省略了一些信息):

root@host:~# lsblk
NAME                           MAJ:MIN RM   SIZE RO TYPE  MOUNTPOINT
sda                              8:0    0 111.8G  0 disk
├─sda1                           8:1    0  1007K  0 part
├─sda2                           8:2    0   512M  0 part
└─sda3                           8:3    0 111.3G  0 part
  ├─pve-swap                   253:0    0     8G  0 lvm   [SWAP]
  ├─pve-root                   253:1    0  18.5G  0 lvm   /
  ├─pve-data_tmeta             253:2    0     1G  0 lvm
  │ └─pve-data-tpool           253:4    0  82.8G  0 lvm
  │   ├─pve-data               253:5    0  82.8G  0 lvm
  │   ├─pve-vm--102--disk--0   253:6    0    15G  0 lvm
  │   └─pve-vm--103--disk--0   253:7    0     4G  0 lvm
  └─pve-data_tdata             253:3    0  82.8G  0 lvm
    └─pve-data-tpool           253:4    0  82.8G  0 lvm
      ├─pve-data               253:5    0  82.8G  0 lvm
      ├─pve-vm--102--disk--0   253:6    0    15G  0 lvm
      └─pve-vm--103--disk--0   253:7    0     4G  0 lvm
sdb                              8:16   0 465.8G  0 disk
└─sdb1                           8:17   0 465.8G  0 part
  └─md1                          9:1    0 465.7G  0 raid1
    ├─vg1-tpool_tmeta          253:8    0   108M  0 lvm
    │ └─vg1-tpool-tpool        253:10   0   2.3T  0 lvm
    │   ├─vg1-tpool            253:11   0   2.3T  0 lvm
    │   ├─vg1-vm--100--disk--0 253:12   0    32G  0 lvm
    │   ├─vg1-vm--100--disk--1 253:13   0   350G  0 lvm
    │   └─vg1-vm--101--disk--0 253:14   0    32G  0 lvm
    └─vg1-tpool_tdata          253:9    0   2.3T  0 lvm
      └─vg1-tpool-tpool        253:10   0   2.3T  0 lvm
        ├─vg1-tpool            253:11   0   2.3T  0 lvm
        ├─vg1-vm--100--disk--0 253:12   0    32G  0 lvm
        ├─vg1-vm--100--disk--1 253:13   0   350G  0 lvm
        └─vg1-vm--101--disk--0 253:14   0    32G  0 lvm
sdc                              8:32   0 465.8G  0 disk
└─sdc1                           8:33   0 465.8G  0 part
  └─md1                          9:1    0 465.7G  0 raid1
    ├─vg1-tpool_tmeta          253:8    0   108M  0 lvm
    │ └─vg1-tpool-tpool        253:10   0   2.3T  0 lvm
    │   ├─vg1-tpool            253:11   0   2.3T  0 lvm
    │   ├─vg1-vm--100--disk--0 253:12   0    32G  0 lvm
    │   ├─vg1-vm--100--disk--1 253:13   0   350G  0 lvm
    │   └─vg1-vm--101--disk--0 253:14   0    32G  0 lvm
    └─vg1-tpool_tdata          253:9    0   2.3T  0 lvm
      └─vg1-tpool-tpool        253:10   0   2.3T  0 lvm
        ├─vg1-tpool            253:11   0   2.3T  0 lvm
        ├─vg1-vm--100--disk--0 253:12   0    32G  0 lvm
        ├─vg1-vm--100--disk--1 253:13   0   350G  0 lvm
        └─vg1-vm--101--disk--0 253:14   0    32G  0 lvm
sdd                              8:48   0   1.8T  0 disk
└─md2                            9:2    0   1.8T  0 raid1
  └─vg1-tpool_tdata            253:9    0   2.3T  0 lvm
    └─vg1-tpool-tpool          253:10   0   2.3T  0 lvm
      ├─vg1-tpool              253:11   0   2.3T  0 lvm
      ├─vg1-vm--100--disk--0   253:12   0    32G  0 lvm
      ├─vg1-vm--100--disk--1   253:13   0   350G  0 lvm
      └─vg1-vm--101--disk--0   253:14   0    32G  0 lvm

root@host:~# vgdisplay
  --- Volume group ---
  VG Name               pve
  VG Access             read/write
  VG Status             resizable
  VG Size               <111.29 GiB
  PE Size               4.00 MiB
  Total PE              28489
  Alloc PE / Size       28489 / <111.29 GiB
  Free  PE / Size       0 / 0

  --- Volume group ---
  VG Name               vg1
  VG Access             read/write
  VG Status             resizable
  VG Size               2.27 TiB
  PE Size               4.00 MiB
  Total PE              596101
  Alloc PE / Size       596101 / 2.27 TiB
  Free  PE / Size       0 / 0

root@host:~# lvdisplay vg1
  --- Logical volume ---
  LV Name                tpool
  VG Name                vg1
  LV Write Access        read/write
  LV Creation host, time host, 2020-09-11 00:05:40 +0200
  LV Pool metadata       tpool_tmeta
  LV Pool data           tpool_tdata
  LV Status              available
  # open                 4
  LV Size                2.27 TiB
  Allocated pool data    15.16%
  Allocated metadata     50.58%
  Current LE             596047
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     256
  Block device           253:10

来自 Proxmox 环境

实际的错误是什么?我该如何修复它们?看起来我已经以某种方式分配了每个 VG 上的所有范围,所以现在我真的无能为力!再次,是否仍然可以:

  • 收回“自由空间”,无论这意味着什么
  • 修复 /dev/md2 以便我可以pvmove正确地从 /dev/md1 访问

答案1

你想要一个名为VG1,由两个 RAID 组成。两个小磁盘形成/dev/md1,大磁盘形成/dev/md2。从lsblk输出和屏幕截图来看,这就是您所拥有的。好的!尽管也许 LVM 的内置镜像可能是更好的解决方案(更简单,可能灵活性较差)。

现在,事情变得很奇怪。您在 /dev/md2 上创建了一个文件系统,然后通过将设备转变为物理卷来丢弃该文件系统。将 /dev/md2 添加到卷组(确定)并扩展t池超过整个尺寸VG1。这很好,但如果您扩展逻辑卷以使用所有空间,您不应该对所有空间都用完感到惊讶。

更奇怪的是,延长后t池,你就跑resize2fs /dev/mapper/vg1-tpool吧。这实际上应该会导致错误,因为该卷上没有文件系统。或者也许您遗漏了一些步骤?

获得可用空间VG1,我只需将该卷的大小减小到之前的大小即可。通常,这应该可以工作,希望任何可能使用的精简卷t池没有看到太多的活动。

最后,我绝对不会使用随机教程和 Youtube 视频来完成我不理解且有可能毁掉我的服务器的任务。在重试之前,请阅读有关 LVM、精简卷和文件系统的完整介绍。

相关内容