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.