df -h 结果与 VGdisplay / LVdisplay 不同

df -h 结果与 VGdisplay / LVdisplay 不同

我正在尝试删除向虚拟机添加的磁盘,因为不再需要该磁盘空间。然而,看起来 VM 中的 VG 几乎所有数据都使用了那里可用的数据。

然而,我已经设法将 zoneminder--vg 的大小从 1.5TB 调整到 6G,resiz2fs但 lvdisplay 的说法不同。

这是一些命令的输出。

root@zoneminder:~# lvs
  LV     VG            Attr       LSize   Pool Origin Data%  Meta%  Move Log  Cpy%Sync Convert
  root   zoneminder-vg -wi-ao----   1.52t
  swap_1 zoneminder-vg -wi-ao---- 976.00m
root@zoneminder:~# pvs
  PV         VG            Fmt  Attr PSize   PFree
  /dev/sda3  zoneminder-vg lvm2 a--  900.00g     0
  /dev/sda5  zoneminder-vg lvm2 a--  699.52g 46.57g
root@zoneminder:~# vgs
  VG            #PV #LV #SN Attr   VSize VFree
  zoneminder-vg   2   2   0 wz--n- 1.56t 46.57g

DF-H

Filesystem                       Size  Used Avail Use% Mounted on
udev                             7.9G     0  7.9G   0% /dev
tmpfs                            1.6G  8.9M  1.6G   1% /run
/dev/mapper/zoneminder--vg-root  5.6G  4.9G  431M  92% /
tmpfs                            7.9G     0  7.9G   0% /dev/shm
tmpfs                            5.0M     0  5.0M   0% /run/lock
tmpfs                            7.9G     0  7.9G   0% /sys/fs/cgroup
/dev/sda1                        472M  108M  340M  25% /boot
tmpfs                            1.6G     0  1.6G   0% /run/user/1000

光伏显示

  --- Physical volume ---
  PV Name               /dev/sda5
  VG Name               zoneminder-vg
  PV Size               699.52 GiB / not usable 2.00 MiB
  Allocatable           yes
  PE Size               4.00 MiB
  Total PE              179077
  Free PE               11922
  Allocated PE          167155
  PV UUID               SVGqoc-SQ42-tDzp-Qc7H-n90f-1g9n-x0eLWe

  --- Physical volume ---
  PV Name               /dev/sda3
  VG Name               zoneminder-vg
  PV Size               900.00 GiB / not usable 0
  Allocatable           yes (but full)
  PE Size               4.00 MiB
  Total PE              230400
  Free PE               0
  Allocated PE          230400
  PV UUID               Cdanv0-2pLJ-Yp2n-3zsl-JvjH-72QS-Ciwhaj

lv显示

  --- Logical volume ---
  LV Path                /dev/zoneminder-vg/root
  LV Name                root
  VG Name                zoneminder-vg
  LV UUID                poThtY-v96W-e2Ai-nan7-ckqn-aeBm-T0Kqji
  LV Write Access        read/write
  LV Creation host, time zoneminder, 2018-08-01 22:22:13 +0200
  LV Status              available
  # open                 1
  LV Size                1.52 TiB
  Current LE             397311
  Segments               2
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     256
  Block device           252:0

  --- Logical volume ---
  LV Path                /dev/zoneminder-vg/swap_1
  LV Name                swap_1
  VG Name                zoneminder-vg
  LV UUID                SXQ36r-5Kum-Z3Wa-m9DE-CBVb-h9Wx-kmctKT
  LV Write Access        read/write
  LV Creation host, time zoneminder, 2018-08-01 22:22:13 +0200
  LV Status              available
  # open                 2
  LV Size                976.00 MiB
  Current LE             244
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     256
  Block device           252:1

图形显示

  --- Volume group ---
  VG Name               zoneminder-vg
  System ID
  Format                lvm2
  Metadata Areas        2
  Metadata Sequence No  6
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                2
  Open LV               2
  Max PV                0
  Cur PV                2
  Act PV                2
  VG Size               1.56 TiB
  PE Size               4.00 MiB
  Total PE              409477

  Alloc PE / Size       397555 / 1.52 TiB
  Free  PE / Size       11922 / 46.57 GiB

  VG UUID               lTo8U0-dIL9-Yye3-RVYk-rJu6-w6WQ-zIpL8f

如何在不影响 LVM 上任何数据的情况下删除 /dev/sda3?然后再次将 VG​​roup 重建回 100G 还是其他?

fdisk -l

Disk /dev/sda: 1.6 TiB, 1717986918400 bytes, 3355443200 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x21880f4a

Device     Boot      Start        End    Sectors   Size Id Type
/dev/sda1  *          2048     999423     997376   487M 83 Linux
/dev/sda2          1001470 1468004351 1467002882 699.5G  5 Extended
/dev/sda3       1468004352 3355443199 1887438848   900G 8e Linux LVM
/dev/sda5          1001472 1468004351 1467002880 699.5G 8e Linux LVM

Partition table entries are not in disk order.


Disk /dev/mapper/zoneminder--vg-root: 1.5 TiB, 1666443116544 bytes, 3254771712 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes


Disk /dev/mapper/zoneminder--vg-swap_1: 976 MiB, 1023410176 bytes, 1998848 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
root@zoneminder:~#

更新#1:

@telcoM:感谢您友善而详细的回答,
您提到的所有操作均已完成。我还发现数据当然分布在整个磁盘上,所以我还必须物理移动数据:

root@zoneminder:~# pvresize --setphysicalvolume 101G -v /dev/sda5
    Using physical volume(s) on command line.
    Archiving volume group "zoneminder-vg" metadata (seqno 9).
    /dev/sda5: Pretending size is 211812352 not 1467002880 sectors.
    Resizing volume "/dev/sda5" to 211812352 sectors.
    Resizing physical volume /dev/sda5 from 0 to 25855 extents.
  /dev/sda5: cannot resize to 25855 extents as later ones are allocated.
  0 physical volume(s) resized / 1 physical volume(s) not resized


root@zoneminder:~# pvs -v --segments /dev/sda5
    Using physical volume(s) on command line.
    Wiping cache of LVM-capable devices
  PV         VG            Fmt  Attr PSize   PFree   Start  SSize  LV     Start Type   PE Ranges
  /dev/sda5  zoneminder-vg lvm2 a--  699.52g 598.57g      0  25600 root       0 linear /dev/sda5:0-25599
  /dev/sda5  zoneminder-vg lvm2 a--  699.52g 598.57g  25600 141311            0 free
  /dev/sda5  zoneminder-vg lvm2 a--  699.52g 598.57g 166911    244 swap_1     0 linear /dev/sda5:166911-167154
  /dev/sda5  zoneminder-vg lvm2 a--  699.52g 598.57g 167155  11922            0 free

root@zoneminder:~# sudo pvmove --alloc anywhere /dev/sda5:166911-167154 /dev/sda5:25601-25845
  /dev/sda5: Moved: 0.4%
  /dev/sda5: Moved: 100.0%

root@zoneminder:~# pvresize --setphysicalvolume 101G -v /dev/sda5
    Using physical volume(s) on command line.
    Archiving volume group "zoneminder-vg" metadata (seqno 12).
    /dev/sda5: Pretending size is 211812352 not 1467002880 sectors.
    Resizing volume "/dev/sda5" to 211812352 sectors.
    Resizing physical volume /dev/sda5 from 0 to 25855 extents.
    Updating physical volume "/dev/sda5"
    Creating volume group backup "/etc/lvm/backup/zoneminder-vg" (seqno 13).
  Physical volume "/dev/sda5" changed
  1 physical volume(s) resized / 0 physical volume(s) not resized

root@zoneminder:~# pvs -v --segments /dev/sda5
    Using physical volume(s) on command line.
    Wiping cache of LVM-capable devices
  PV         VG            Fmt  Attr PSize   PFree  Start SSize LV     Start Type   PE Ranges
  /dev/sda5  zoneminder-vg lvm2 a--  101.00g 44.00m     0 25600 root       0 linear /dev/sda5:0-25599
  /dev/sda5  zoneminder-vg lvm2 a--  101.00g 44.00m 25600     1            0 free
  /dev/sda5  zoneminder-vg lvm2 a--  101.00g 44.00m 25601   244 swap_1     0 linear /dev/sda5:25601-25844
  /dev/sda5  zoneminder-vg lvm2 a--  101.00g 44.00m 25845    10            0 free

实际上我想要实现的目标如下(post #18): https://communities.vmware.com/message/2723540#2723540

我现在卡在那个/dev/sda3还没有删除的地方,仍然看到fdisk -l,大小/dev/sda5仍然是700G。

root@zoneminder:~# fdisk -l
Disk /dev/sda: 1.6 TiB, 1717986918400 bytes, 3355443200 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x21880f4a

Device     Boot      Start        End    Sectors   Size Id Type
/dev/sda1  *          2048     999423     997376   487M 83 Linux
/dev/sda2          1001470 1468004351 1467002882 699.5G  5 Extended
/dev/sda3       1468004352 3355443199 1887438848   900G 8e Linux LVM
/dev/sda5          1001472 1468004351 1467002880 699.5G 8e Linux LVM

Partition table entries are not in disk order.


Disk /dev/mapper/zoneminder--vg-root: 100 GiB, 107374182400 bytes, 209715200 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes


Disk /dev/mapper/zoneminder--vg-swap_1: 976 MiB, 1023410176 bytes, 1998848 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes

更新#2:

我已经通过 LIVE-CD 管理使用 GPARTED 和 PARTED 来删除磁盘并调整其中/dev/sda2/dev/sda5与 LV(M) 的大小

由于我在 ESXi 中制作了快照,因此我需要再次重做所有步骤。因为 vmdk 的嵌套看起来有点令人讨厌。

需要一段时间才能复制原始虚拟机 (1.6TB)。之后,我将完整转储所有步骤,以便将来其他人也可以使用它。

答案1

太棒了,你已经成功缩小了文件系统在根 LV 内。

下一步是缩小 LV 以匹配文件系统的新大小。为了安全起见,您可能需要留一点余地,因为不小心切断太多会导致更严重的问题。

文件系统收缩操作总是比扩展风险更大,特别是如果您还不太熟悉它们的话。因此,请备份您可能需要的所有内容,以防万一出现问题。

然后使用tune2fs -l从文件系统获取准确的块计数:

tune2fs -l /dev/mapper/zoneminder--vg-root | grep "Block "
Block count:          NNNNNNNNN
Block size:           XXXX

将这两个数字相乘即可得到文件系统的确切大小,然后除以 1024 即可得到二进制千字节,再除以 1024 即可得到二进制兆字节。加一以防止舍入错误:

expr NNNNNNNNN \* XXXX / 1024 / 1024 + 1
SSSSSS

现在,缩小 LV:

lvreduce -L SSSSSS /dev/mapper/zoneminder--vg-root

现在您的 Zoneminder VG 中应该有足够的可用空间。使用pvs来确认/dev/sda3现在是否完全未使用:

如果在pvs输出中,PFree 值不等于 PSize /dev/sda3,则该 PV 上仍然存在根 LV 的某些部分,您需要将它们移出那里。pvmove可以轻松做到这一点。如果/dev/sda3现在完全自由,您可以跳过此步骤。

pvmove /dev/sda3

这实质上是说“sda3通过将仍在 ot 中的所有 LV 数据移动到属于同一 VG 的其他 PV 来清空”。

pvmove其工作原理是镜像要移动到新位置的数据,然后从旧位置“删除镜像”。因此,如果pvmove因系统崩溃而中断,也不会造成灾难性的后果。只需pvmove不带参数运行即可从原来的位置继续。

现在,sda3PV 应该完全是空的。从 VG 中删除它:

vgreduce zoneminder-vg /dev/sda3

此时,/dev/sda3将成为一个独立的、完全免费的 LVM PV。如果您愿意,您可以擦除其中的 PVID:

pvremove /dev/sda3

现在您可以/dev/sda3按照自己喜欢的方式自由地重复使用该分区。 (如果您打算做一些导致分区被覆盖的事情,那么该pvremove命令并不是绝对必要的。)

现在,如果您想将根 LV 扩展到 100 GiB,请执行以下步骤:

lvextend -L 100G /dev/mapper/zoneminder--vg-root
resize2fs /dev/mapper/zoneminder--vg-root

你就完成了。

请注意,我在这里任何时候都没有说“卸载文件系统”或“重新启动系统”。没有必要。

答案2

LVM 系统不知道您如何使用逻辑卷。即使减少 LV 中使用的文件系统,也不会更改 LV 的大小,也不会更改 VG 和 PV 中的可用空间(分配给 LV 的所有空间都被视为正在使用)。

如果您减少了文件系统,则可以使用该命令减少 LV lvreduce,但您应该格外小心,不要将其减少到适合您的文件系统,否则可能会丢失一些数据。

减少逻辑卷后,您可以使用该pvmove命令将已用空间从一个 PV 移动到另一个 PV,然后使用该vgreduce命令从 VG 中删除该 PV。

相关内容