Warum gibt es zwei unterschiedliche Werte für die Größe eines Laufwerks und wie können sie mit Device-Mapper und LVM abgeglichen werden?

13

Ich habe ein 1-TB-Laufwerk über USB angeschlossen. Es enthält ein physisches LVM- Volume, das das gesamte Gerät ausfüllt (ohne Partitionstabelle). Als ich versuchte, ein logisches Volume mithilfe der gesamten PV zu erweitern, beschwerte sich der Geräte-Mapper , dass der von LVM auf der PV zugewiesene Abschnitt größer als das Gerät ist. Die Fehlermeldung vom Geräte-Mapper (wie gezeigt von dmesg) meldet eine Größe von 1953320367 [dm] Sektoren:

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

LVM hat jedoch eine PV mit 238467 physischen Ausdehnungen erstellt , die 1953521664 [lvm] Sektoren entspricht (was ungefähr 100 MB mehr entspricht):

$ 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 , sehe ich zwei Werte für die Größe des Geräts. Unter Geometrie gibt es denselben Wert, der vom Geräte-Mapper gemeldet wird, wie die Größe des Geräts. Unter den vom Benutzer adressierbaren LBA48-Sektoren gibt es jedoch den Wert 1953525168 [lba], der weniger als ein PE größer ist als die Gesamtgröße der PEs der PV. Dies lässt mich denken, 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 Größe des Geräts, die von verschiedenen Teilen des Kernels verwendet werden?
  • Und wie gehe ich mit dieser Situation um / behebe sie, damit der LVM keine PVs erstellt, die größer sind als der Speicherplatz, auf den der Geräte-Mapper zugreifen möchte / kann?
Feuermurmel
quelle
Was ist der genaue Befehl, den Sie ausführen, wenn Sie erweitern? LVM-Köpfe erhalten normalerweise 2 MB, was in etwa der Größe Ihrer Diskrepanz entspricht.
Bratchley
7
Die von angegebene kleinere Größe hdparmist die größte Zahl, die ein Vielfaches von 255 * 63 Sektoren ist und die tatsächliche Größe unterschreitet. Diese Einschränkung ist auf das Zylinder / Kopf / Sektor-Format der 30 Jahre alten BIOS-Oberfläche zurückzuführen. Die neuere LBA48-Schnittstelle kann die Größe Ihrer Festplatte problemlos anzeigen. Ich habe keine Ahnung, warum Linux die CHS-Größe für irgendetwas verwendet.
Gilles 'SO- hör auf böse zu sein'
Ich habe die verschiedenen Werte in eckigen Klammern angegeben, um sie leicht wiederzugeben.
Feuermurmel
1
@JoelDavis Ich habe die VG mit einer Ebene erweitert vgextend <vg-name> /dev/sdf. LVM macht genau das, was ich erwarte. pvdisplaysagt sogar, dass 1,71 MiB ungewöhnlich sind, was genau der Größe des Unterschieds zwischen [lvm] und [lba] entspricht.
Feuermurmel
2
@Feuermurmel Bitte bearbeiten Sie Ihre Frage, um zusätzliche Informationen bereitzustellen. Verwenden Sie keine Kommentare.
guntbert

Antworten:

1

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

Könnten Sie die Ausgabe von:

vgscan;pvscan;vgdisplay;vgs

Sie sollten in der Lage sein, weitere 400 MB zu erhalten, je nachdem, wie groß Ihre Erweiterungen sind und wie viele frei sind.

Khrystoph
quelle
Ja, dieser PV hat bereits 238367 PE, die einem LV zugewiesen sind. Diese 100 Verlängerungen sind kostenlos, da ich die LV verkleinert habe, nachdem sich der Geräte-Mapper über die von LVM angeforderte Zuordnung außerhalb des gültigen Bereichs beschwert hatte. Mein Problem ist, dass die von LVM erstellte PV tatsächlich größer als die physische Festplatte ist. Die betreffende Festplatte ist nicht mehr Teil des Systems, daher kann ich die von Ihnen angeforderte Ausgabe nicht bereitstellen.
Feuermurmel