Warum gibt es zwei unterschiedliche Werte für die Größe eines Laufwerks und wie lassen sich diese mit Device-Mapper und LVM in Einklang bringen?

Warum gibt es zwei unterschiedliche Werte für die Größe eines Laufwerks und wie lassen sich diese mit Device-Mapper und LVM in Einklang bringen?

Ich habe ein 1 TB Laufwerk über USB angeschlossen. Es enthält ein LVMphysisches Volumendas gesamte Gerät ausfüllt (ohne Partitionstabelle). Als ich versuchte, einLogisches VolumenDurch die Nutzung des gesamten PV, derGerätemapperbegann sich zu beschweren, dass der von LVM auf dem PV zugewiesene Abschnitt größer als das Gerät ist. Die Fehlermeldung des Gerätemappers (wie in angezeigt dmesg) meldet eine Größe von1953320367[dm] Sektoren:

device-mapper: table: 254:0: sdf too small for target: start=1821353984, len=132169728, dev_size=1953320367

Aber LVM erstellte ein PV mit 238467physische Ausmaße, welches ist1953521664[lvm] Sektoren (das sind etwa 100 MB mehr):

$ 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

Wenn ich jetzt hdparm -gIauf dem Gerät laufe, kann ich zwei Werte für die Größe des Geräts sehen. UnterGeometriegibt es den gleichen Wert, der vom Device-Mapper als Gerätegröße gemeldet wird. Aber unterLBA48 benutzeradressierbare Sektoren, da ist der Wert1953525168[lba], was weniger als ein PE größer ist als die kombinierte Größe der PEs des PV. Das lässt mich vermuten, dass dies der Wert ist, den LVM sieht:

$ 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
...

Nun zu meinen Fragen:

  • Warum gibt es zwei unterschiedliche Werte für die Gerätegröße, die von verschiedenen Teilen des Kernels verwendet werden?
  • Und wie gehe ich mit dieser Situation um bzw. wie behebe ich sie, sodass der LVM keine PVs erstellt, die größer sind als der Speicherplatz, auf den der Geräte-Mapper zugreifen möchte/kann?

Antwort1

Das Hauptproblem hier ist Ihr Free PEWert. Beachten Sie, dass nur 100 Extents frei sind? Das bedeutet, dass Sie es nicht erweitern können. Wenn Sie einen vgscan, pvscan und dann ein vgdisplay (auch vgs) ausführen, werden Sie wahrscheinlich feststellen, dass Ihr Gerät bereits Teil eines vg (und wahrscheinlich auch eines lv(s)) ist, weshalb die Extents nicht frei sind.

Könnten Sie die Ausgabe von Folgendem bereitstellen:

vgscan;pvscan;vgdisplay;vgs

Sie sollten in der Lage sein, zusätzliche 400 MB zu erhalten, abhängig von der Größe Ihrer Extents und davon, wie viele frei sind.

verwandte Informationen