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 -gI
auf 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?
hdparm
ist 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.vgextend <vg-name> /dev/sdf
. LVM macht genau das, was ich erwarte.pvdisplay
sagt sogar, dass 1,71 MiB ungewöhnlich sind, was genau der Größe des Unterschieds zwischen [lvm] und [lba] entspricht.Antworten:
Das Hauptproblem hier ist Ihr
Free PE
Wert. 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.
quelle