¿Por qué hay dos valores diferentes para el tamaño de una unidad y cómo conciliarlos con el mapeador de dispositivos y LVM?

13

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 -gIel 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?
Feuermurmel
fuente
¿Cuál es el comando exacto que estás ejecutando cuando extiendes? Los cabezales LVM generalmente se asignan a 2 MB, que es aproximadamente del tamaño de su discrepancia.
Bratchley
77
El tamaño más pequeño reportado por hdparmes 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.
Gilles 'SO- deja de ser malvado'
Etiqueté los diferentes valores entre corchetes para referirme fácilmente a ellos.
Feuermurmel
1
@JoelDavis Extendí el VG usando un plano vgextend <vg-name> /dev/sdf. LVM hace exactamente lo que espero. pvdisplayincluso dice que 1.71 MiB son unusabe, que es exactamente el tamaño de la diferencia entre [lvm] y [lba].
Feuermurmel
2
@Feuermurmel edite su pregunta para proporcionar información adicional; no utilice comentarios.
guntbert

Respuestas:

1

El problema clave aquí es su Free PEvalor. ¿Ves cómo dice que solo 100 extensiones son gratis? Eso significa que no podrás extenderlo. Si hace un vgscan, pvscan y luego un vgdisplay (también vgs), probablemente verá que su dispositivo ya forma parte de un vg (y probablemente también de lv (s)), razón por la cual las extensiones no son gratuitas.

¿Podría proporcionar la salida de:

vgscan;pvscan;vgdisplay;vgs

deberías poder obtener 400 MB adicionales según el tamaño de tus extensiones y cuántos son gratis.

Khrystoph
fuente
Sí, ese PV ya tiene 238367 PE asignados a un LV. Esas 100 extensiones son gratuitas porque reduje el LV después de que el mapeador de dispositivos se quejó de que el mapeo solicitado por LVM estaba fuera de rango. Mi problema es que el PV creado por LVM es en realidad más grande que el disco físico. Ese disco en cuestión ya no es parte del sistema, por lo que no puedo proporcionar el resultado que solicitó.
Feuermurmel