Ho un'unità da 1 TB collegata tramite USB. Contiene un volume fisico LVM che riempie l'intero dispositivo (senza alcuna tabella delle partizioni). Quando ho cercato di estendere un volume logico utilizzando l'intero PV, il dispositivo mappatore ha iniziato a lamentarsi del fatto che la sezione allocata da LVM sul PV è più grande del dispositivo. Il messaggio di errore del Device Mapper (come mostrato da dmesg
) riporta una dimensione di 1953320367 settori [dm]:
device-mapper: table: 254:0: sdf too small for target: start=1821353984, len=132169728, dev_size=1953320367
Ma LVM ha creato un PV con 238467 estensioni fisiche , ovvero 1953521664 [lvm] settori (che è di circa 100 MB in più):
$ 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
Ora, se corro hdparm -gI
sul dispositivo, posso vedere due valori per le dimensioni del dispositivo. Sotto la geometria , c'è lo stesso valore riportato dal device-mapper delle dimensioni del dispositivo. Ma sotto i settori indirizzabili dall'utente LBA48 , esiste il valore 1953525168 [lba], che è inferiore di un PE in più rispetto alla dimensione combinata dei PE del PV. Questo mi fa pensare che questo sia il valore che LVM vede:
$ 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
...
Ora alle mie domande:
- Perché ci sono due valori diversi per le dimensioni del dispositivo utilizzati da diverse parti del kernel?
- E come posso gestire / risolvere questa situazione in modo che LVM non realizzi PV più grandi dello spazio a cui il device-mapper è disposto / in grado di accedere?
hdparm
è il numero più grande che è un multiplo di 255 * 63 settori e inferiore alla dimensione effettiva. Questo vincolo è dovuto al formato cilindro / testa / settori dell'interfaccia BIOS di 30 anni. La più recente interfaccia LBA48 può riportare bene le dimensioni del tuo disco. Non ho idea del perché Linux usi la dimensione CHS per qualsiasi cosa.
vgextend <vg-name> /dev/sdf
. LVM fa esattamente quello che mi aspetto. pvdisplay
dice anche che 1,71 MiB sono insoliti, che è esattamente la dimensione della differenza tra [lvm] e [lba].