Tengo una unidad de 1 TB conectada a través de USB. Contiene un volumen físico LVM que llena todo el dispositivo (sin ninguna tabla de partición). Cuando intenté extender un volumen lógico usando todo el PV, el mapeador de dispositivos comenzó a quejarse de que la sección asignada por LVM en el PV es más grande que el dispositivo. El mensaje de error del dispositivo mapeador (como se muestra en dmesg
) informa un tamaño de 1953320367 [dm] sectores:
device-mapper: table: 254:0: sdf too small for target: start=1821353984, len=132169728, dev_size=1953320367
Pero LVM creó un PV con 238467 extensiones físicas , que es 1953521664 [lvm] sectores (que es aproximadamente 100 MB más):
$ 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
Ahora, si ejecuto hdparm -gI
el dispositivo, puedo ver dos valores para el tamaño del dispositivo. Bajo geometría , hay el mismo valor que informa el mapeador de dispositivos como el tamaño del dispositivo. Pero bajo los sectores direccionables por el usuario LBA48 , existe el valor 1953525168 [lba], que es menos de un PE más grande que el tamaño de la combinación de los PE del PV. Esto me hace pensar que este es el valor que ve LVM:
$ 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
...
Ahora a mis preguntas:
- ¿Por qué hay dos valores diferentes para el tamaño del dispositivo utilizado por diferentes partes del núcleo?
- Y, ¿cómo manejo / soluciono esta situación para que el LVM no produzca PV que sean más grandes que el espacio al que el mapeador de dispositivos está dispuesto / puede acceder?
hdparm
es el número más grande que es un múltiplo de 255 * 63 sectores y menos que el tamaño real. Esta restricción se debe al formato de cilindro / cabeza / sectores de la interfaz BIOS de 30 años. La nueva interfaz LBA48 puede informar el tamaño de su disco muy bien. No tengo idea de por qué Linux usa el tamaño CHS para nada.
vgextend <vg-name> /dev/sdf
. LVM hace exactamente lo que espero. pvdisplay
incluso dice que 1.71 MiB son unusabe, que es exactamente el tamaño de la diferencia entre [lvm] y [lba].