Por que existem dois valores diferentes para o tamanho de uma unidade e como reconciliá-los com o device-mapper e o LVM?

13

Eu tenho um drive de 1 TB conectado via USB. Ele contém um volume físico LVM preenchendo todo o dispositivo (sem qualquer tabela de partição). Quando tentei estender um volume lógico usando todo o PV, o device-mapper começou a reclamar que a seção alocada pelo LVM no PV é maior que o dispositivo. A mensagem de erro do mapeador de dispositivo (conforme mostrado por dmesg ) relata um tamanho de 1953320367 [dm] setores:

device-mapper: table: 254:0: sdf too small for target: start=1821353984, len=132169728, dev_size=1953320367

Mas o LVM criou um PV com 238467 extensões físicas , que é 1953521664 [lvm] setores (que é cerca de 100 MB a mais):

$ 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

Agora, se eu executar hdparm -gI no dispositivo, posso ver dois valores para o tamanho do dispositivo. Em geometria , o mesmo valor é informado pelo mapeador de dispositivos como o tamanho do dispositivo. Mas sob setores endereçáveis pelo usuário do LBA48 , existe o valor 1953525168 [lba], que é menor que um PE maior que o tamanho combinado dos PEs do PV. Isso me faz pensar que este é o valor que o LVM vê:

$ 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
...

Agora, minhas perguntas:

  • Por que existem dois valores diferentes para o tamanho do dispositivo usados por diferentes partes do kernel?
  • E como lidei / corrijo esta situação para que o LVM não faça PVs maiores que o espaço que o mapeador de dispositivos está disposto / apto a acessar?
por Feuermurmel 28.06.2014 / 22:23

1 resposta

1

O principal problema aqui é o valor Free PE . Observe como apenas 100 extensões são gratuitas? Isso significa que você não poderá estendê-lo. Se você fizer um vgscan, pvscan e, em seguida, um vgdisplay (também vgs), provavelmente verá que seu dispositivo já faz parte de um vg (e provavelmente lv (s) também), e é por isso que as extensões não estão livres. / p>

Você poderia fornecer a saída de:

vgscan;pvscan;vgdisplay;vgs

você deve conseguir 400 MB adicionais com base no tamanho de suas extensões e quantas são gratuitas.

    
por 09.09.2015 / 19:31