为什么驱动器的大小有两个不同的值,以及如何将它们与设备映射器和 LVM 协调?

Feu*_*mel 14 linux lvm hard-disk device-mapper hdparm

我有一个通过 USB 连接的 1 TB 驱动器。它包含一个填充整个设备的 LVM物理卷(没有任何分区表)。当我尝试使用整个 PV扩展逻辑卷时设备映射器开始抱怨 LVM 在 PV 上分配的部分大于设备。来自设备映射器的错误消息(如 所示dmesg)报告大小为1953320367 [dm] 扇区:

device-mapper: table: 254:0: sdf too small for target: start=1821353984, len=132169728, dev_size=1953320367
Run Code Online (Sandbox Code Playgroud)

但是 LVM 创建了一个具有 238467 个物理范围的 PV ,即1953521664 [lvm] 个扇区(大约多 100 MB):

$ pvdisplay /dev/sdf
  --- Physical volume ---
  PV Name               /dev/sdf
  VG Name               apu-vg1
  PV Size               931.51 GiB / not usable 1.71 MiB
  Allocatable           yes 
  PE Size               4.00 MiB
  Total PE              238467
  Free PE               100
  Allocated PE          238367
  PV UUID               LrKDDW-4dXz-kDgh-CK78-OWhY-4sCH-rKT0e4
Run Code Online (Sandbox Code Playgroud)

现在,如果我hdparm -gI在设备上运行,我可以看到设备大小的两个值。在geometry 下,设备映射器报告的值与设备的大小相同。但是在LBA48 用户可寻址扇区下,有一个值1953525168 [lba],它比 PV 的 PE 的合并大小还不到一个 PE。这让我觉得这就是LVM看到的价值:

$ hdparm -Ig /dev/sdf

/dev/sdf:
 geometry      = 121588/255/63, sectors = 1953320367, start = 0

ATA device, with non-removable media
          Model Number:       ST1000LM024 HN-M101MBB                  
          Serial Number:      S2RUJ9BC702524      
          Firmware Revision:  2AR10001
          Transport:          Serial, ATA8-AST, SATA 1.0a, SATA II Extensions, SATA Rev 2.5, SATA Rev 2.6, SATA Rev 3.0
Standards:
          Used: unknown (minor revision code 0x0028) 
          Supported: 8 7 6 5 
          Likely used: 8
Configuration:
          Logical         max     current
          cylinders       16383   16383
          heads           16      16
          sectors/track   63      63
          --
          CHS current addressable sectors:   16514064
          LBA    user addressable sectors:  268435455
          LBA48  user addressable sectors: 1953525168
...
Run Code Online (Sandbox Code Playgroud)

现在我的问题:

  • 为什么内核的不同部分使用的设备大小有两个不同的值?
  • 并且,我如何处理/修复这种情况,以便 LVM 不会制作大于设备映射器愿意/能够访问的空间的 PV?

Khr*_*oph 1

这里的关键问题是你的Free PE价值。请注意它是如何表示只有 100 个扩展区是可用的吗?这意味着您将无法扩展它。如果您执行 vgscan、pvscan,然后执行 vgdisplay(也称为 vgs),您可能会看到您的设备已经是 vg 的一部分(也可能是 lv),这就是范围不是免费的原因。

您能否提供以下输出:

vgscan;pvscan;vgdisplay;vgs

根据扩展区的大小和免费的数量,您应该能够获得额外的 400MB。