如何从lvm分区中删除磁盘?

如何从lvm分区中删除磁盘?

有人可以帮忙吗?我有 2 个磁盘跨越我的主分区。一个是 460Gb,另一个是 1TB。我想删除 1TB - 我想在另一台机器上使用它。

无论如何,卷组不会使用大量空间,我只有 docker 和一些使用该磁盘的容器,而且我的 docker 容器卷无论如何都位于不同的物理磁盘上。

如果我只是删除磁盘([物理]),它会导致问题,对吧?

这是一些信息


pvdisplay


  --- Physical volume ---
  PV Name               /dev/sda3
  VG Name               ubuntu-vg
  PV Size               <464.26 GiB / not usable 2.00 MiB
  Allocatable           yes (but full)
  PE Size               4.00 MiB
  Total PE              118850
  Free PE               0
  Allocated PE          118850
  PV UUID               DA7Q8E-zJEz-2FzO-N64t-HtU3-2Z8P-UQydU4

  --- Physical volume ---
  PV Name               /dev/sdb1
  VG Name               ubuntu-vg
  PV Size               931.51 GiB / not usable 4.69 MiB
  Allocatable           yes (but full)
  PE Size               4.00 MiB
  Total PE              238466
  Free PE               0
  Allocated PE          238466
  PV UUID               Sp6b1v-nOj2-XXdb-GZYf-1Vej-cfdr-qLB3GU

LVM 让我有点困惑:-)

难道不只是一个简单的例子,

“将自己从 VG 中删除,并评估您正在使用剩余组成员的任何内容”?

值得注意的是,1TB 是后来添加的,所以假设它更容易删除?

任何帮助真的很感激

编辑

还有一些更多信息

df -h
Filesystem                         Size  Used Avail Use% Mounted on
udev                                16G     0   16G   0% /dev
tmpfs                              3.2G  1.4M  3.2G   1% /run
/dev/mapper/ubuntu--vg-ubuntu--lv  1.4T  5.1G  1.3T   1% /

同样只使用 1%

还输出lvs

lvs
  LV        VG        Attr       LSize Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  ubuntu-lv ubuntu-vg -wi-ao---- 1.36t

编辑

pvdisplay -m
  --- Physical volume ---
  PV Name               /dev/sda3
  VG Name               ubuntu-vg
  PV Size               <464.26 GiB / not usable 2.00 MiB
  Allocatable           yes (but full)
  PE Size               4.00 MiB
  Total PE              118850
  Free PE               0
  Allocated PE          118850
  PV UUID               DA7Q8E-zJEz-2FzO-N64t-HtU3-2Z8P-UQydU4

  --- Physical Segments ---
  Physical extent 0 to 118849:
    Logical volume  /dev/ubuntu-vg/ubuntu-lv
    Logical extents 0 to 118849

  --- Physical volume ---
  PV Name               /dev/sdb1
  VG Name               ubuntu-vg
  PV Size               931.51 GiB / not usable 4.69 MiB
  Allocatable           NO
  PE Size               4.00 MiB
  Total PE              238466
  Free PE               0
  Allocated PE          238466
  PV UUID               Sp6b1v-nOj2-XXdb-GZYf-1Vej-cfdr-qLB3GU

  --- Physical Segments ---
  Physical extent 0 to 238465:
    Logical volume  /dev/ubuntu-vg/ubuntu-lv
    Logical extents 118850 to 357315

编辑

输出

lsblk -f
NAME   FSTYPE     LABEL UUID                                   MOUNTPOINT
loop0  squashfs                                                /snap/core/9066
loop2  squashfs                                                /snap/core/9289
sda
├─sda1 vfat             E6CC-2695                              /boot/efi
├─sda2 ext4             0909ad53-d6a7-48c7-b998-ac36c8f629b7   /boot
└─sda3 LVM2_membe       DA7Q8E-zJEz-2FzO-N64t-HtU3-2Z8P-UQydU4
  └─ubuntu--vg-ubuntu--lv
       ext4             b64f2bf4-cd6c-4c21-9009-76faa2627a6b   /
sdb
└─sdb1 LVM2_membe       Sp6b1v-nOj2-XXdb-GZYf-1Vej-cfdr-qLB3GU
  └─ubuntu--vg-ubuntu--lv
       ext4             b64f2bf4-cd6c-4c21-9009-76faa2627a6b   /
sdc    xfs              1a9d0e4e-5cec-49f3-9634-37021f65da38   /gluster/bricks/2

上面的 sdc 是不同的驱动器 - 并且不相关。

答案1

由于您需要从中删除磁盘的文件系统是您的文件系统,并且文件系统类型为ext4,您必须首先从一些实时 Linux 启动媒体启动系统。 Ubuntu Live 可能可以很好地解决这个问题。

从外部介质启动后,运行sudo vgchange -ay ubuntu-vg以激活卷组,以便您能够访问 LV,但不要挂载文件系统:需要卸载 ext2/3/4 文件系统才能缩小。然后将文件系统缩小到 10G(或任何您想要的大小 - 稍后可以轻松地再次扩展,甚至在线扩展):

sudo resize2fs /dev/mapper/ubuntu--vg-ubuntu--lv 10G

请注意输出的消息resize2fs- 如果它表示文件系统无法缩小那么远,请指定更大的大小并重试。

这是在外部介质上启动时需要完成的唯一步骤;对于此后的一切,您可以正常启动系统。

此时,文件系统应该已缩小到 10G(或您指定的任何大小)。下一步是缩小 LV。至关重要的是,LV 的新大小应与文件系统的新大小完全相同或更大!您不想在缩小 LV 时切断文件系统的尾部。在这里指定稍大的尺寸是最安全的:

sudo lvreduce -L 15G /dev/mapper/ubuntu--vg-ubuntu--lv

现在,使用pvdisplaypvs来查看 LVM 现在/dev/sdb1是否认为完全免费。在 中pvdisplayTotal PE和 的Free PEsdb1应相等 - 在pvs输出中,该PFree值应分别相等PSize。如果不是这种情况,那么就该使用pvmove

sudo pvmove /dev/sdb1

此后,sdb1根据 LVM,PV 肯定是完全空闲的,并且可以从 VG 中减少。

sudo vgreduce vg-ubuntu /dev/sdb1

如果您愿意,您可以从 ex-PV 中删除 LVM 签名:

sudo pvremove /dev/sdb1

但如果您无论如何都要覆盖它,则可以省略此步骤。

完成这些步骤后,缩小的文件系统的大小仍为 10G(或您指定的任何值),即使 LV 可能比这稍大一些。要解决这个问题:

sudo resize2fs /dev/mapper/ubuntu--vg-ubuntu--lv

扩展文件系统时,您不必指定大小:该工具将自动扩展文件系统以匹配包含它的最内部设备的确切大小。在这种情况下,文件系统的大小将根据 LV 的大小进行调整。

稍后,如果您想扩展 LV+文件系统,只需两个命令即可完成:

sudo lvextend -L <new size> /dev/mapper/ubuntu--vg-ubuntu--lv
sudo resize2fs /dev/mapper/ubuntu--vg-ubuntu--lv

即使文件系统正在使用和挂载,您也可以执行此操作。由于缩小文件系统比扩展它更困难,因此在 LVM 级别保留一定量的未分配空间可能会很有用 - 您将能够立即使用它来创建新的 LV 和/或扩展现有的 LV根据需要在同一 VG 中。

答案2

将您的评论添加到您的问题中。

如果您运行vgreduce ubuntu-vg /dev/sdb1,并且它给出了消息/dev/sdb is still in use,则意味着上面有数据,并且您无法在不引起问题的情况下删除它。

否则,它将成功地将其从卷组中删除,然后您可以运行pvremove /dev/sdb1以从中删除 LVM 标签,然后从计算机中删除磁盘并在其他地方使用它。

您可以使用pvmove /dev/sdb1,但如果您得到No extents available for allocation,则可能意味着磁盘上没有任何可用区域来移动它。

如果运行pvdisplay -m,则可以看到物理卷的映射数据,包括物理盘区。例如,如果您运行它并FREE在下面看到Physical Extents,那么您可以运行pvmove -v /dev/sdb1:<[physical_extent_with_data> /dev/sda3/:<physical_extent_free> --alloc anywhere。就您而言,它看起来不会起作用,因为 的输出pvdisplay显示它们已满,这就是您收到No extents available for allocation消息的原因。

在执行任何操作之前,请确保您已备份数据。如果您想删除该磁盘,除非您可以使用lvreduce.将来,我建议创建多个卷组,这样您只需在系统安装时重建一个卷组即可。

相关内容