Perché esistono due valori diversi per la dimensione di un'unità e come riconciliarli con Device Mapper e LVM?


13

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 -gIsul 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?

qual è il comando esatto che stai eseguendo quando estendi? Le teste LVM sono generalmente allocate a 2 MB che è circa la dimensione della discrepanza.
Bratchley,

7
La dimensione più piccola riportata da 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.
Gilles 'SO- smetti di essere malvagio' il

Ho etichettato i diversi valori tra parentesi quadre per fare facilmente riferimento ad essi.
Feuermurmel,

1
@JoelDavis Ho esteso il VG usando una pianura vgextend <vg-name> /dev/sdf. LVM fa esattamente quello che mi aspetto. pvdisplaydice anche che 1,71 MiB sono insoliti, che è esattamente la dimensione della differenza tra [lvm] e [lba].
Feuermurmel,

2
@Feuermurmel, modifica la domanda per fornire ulteriori informazioni, non utilizzare commenti.
Guntbert,

Risposte:


1

Il problema chiave qui è il tuo Free PEvalore. Notate come si dice che solo 100 estensioni sono gratuite? Ciò significa che non sarai in grado di estenderlo. Se esegui un vgscan, un pvscan e quindi un vgdisplay (anche vgs) probabilmente vedrai che il tuo dispositivo fa già parte di un vg (e probabilmente anche di un (i)), motivo per cui le estensioni non sono gratuite.

Potresti fornire l'output di:

vgscan;pvscan;vgdisplay;vgs

dovresti essere in grado di ottenere altri 400 MB in base alle dimensioni delle tue estensioni e a quante sono gratuite.


Sì, quel PV ha già 238367 PE assegnati a un LV. Quelle 100 estensioni sono gratuite perché ho ridotto il LV dopo che il mappatore del dispositivo si è lamentato del fatto che il mapping richiesto da LVM è fuori portata. Il mio problema è che il PV creato da LVM è in realtà più grande del disco fisico. Quel disco in questione non fa più parte del sistema, quindi non posso fornire l'output richiesto.
Feuermurmel,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.