Dlaczego istnieją dwie różne wartości wielkości dysku i jak je pogodzić z mapowaniem urządzeń i LVM?


13

Mam dysk 1 TB podłączony przez USB. Zawiera wolumin fizyczny LVM wypełniający całe urządzenie (bez żadnej tablicy partycji). Kiedy próbowałem rozszerzyć wolumin logiczny przy użyciu całego PV, maper urządzeń zaczął narzekać, że sekcja przydzielona przez LVM na PV jest większa niż urządzenie. Komunikat o błędzie z urządzenia mapującego urządzenia (jak pokazano przez dmesg) zgłasza rozmiar 1953320367 sektorów [dm]:

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

Ale LVM stworzył PV z 238467 zakresami fizycznymi , czyli 1953521664 sektorów [ lvm ] (czyli około 100 MB więcej):

$ 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

Teraz, jeśli uruchomię hdparm -gIna urządzeniu, widzę dwie wartości wielkości urządzenia. W przypadku geometrii istnieje ta sama wartość, która jest zgłaszana przez urządzenie mapujące urządzenie, co rozmiar urządzenia. Ale w sektorach adresowalnych przez użytkownika LBA48 istnieje wartość 1953525168 [lba], która jest mniejsza niż jeden PE większy niż łączny rozmiar PE PV. To sprawia, że ​​myślę, że jest to wartość, którą widzi 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
...

Teraz na moje pytania:

  • Dlaczego istnieją dwie różne wartości rozmiaru urządzenia używane przez różne części jądra?
  • I w jaki sposób poradzić sobie z tą sytuacją / naprawić ją, aby LVM nie tworzył PV, które są większe niż przestrzeń, do której urządzenie mapujące chce / ma dostęp?

jakie jest dokładne polecenie, które uruchamiasz podczas przedłużania? Główkom LVM przydzielane są zwykle 2 MB, co odpowiada wielkości Twojej rozbieżności.
Bratchley,

7
Mniejszy rozmiar zgłoszony przez hdparmto największa liczba będąca wielokrotnością 255 * 63 sektorów i mniejsza niż rzeczywisty rozmiar. Ograniczenie to wynika z formatu cylindra / głowicy / sektorów z 30-letniego interfejsu BIOS. Nowszy interfejs LBA48 może dobrze raportować rozmiar dysku. Nie mam pojęcia, dlaczego Linux do czegoś używa rozmiaru CHS.
Gilles „SO- przestań być zły”

Oznaczałem różne wartości w nawiasach kwadratowych, aby łatwo się do nich odwoływać.
Feuermurmel,

1
@ JoelDavis Rozszerzyłem VG za pomocą zwykłego vgextend <vg-name> /dev/sdf. LVM robi dokładnie to, czego oczekuję. pvdisplaynawet mówi, że 1,71 MiB jest nieusuwalny, co jest dokładnie wielkością różnicy między [lvm] a [lba].
Feuermurmel,

2
@ Feuermurmel, edytuj pytanie, aby podać dodatkowe informacje - nie używaj komentarzy.
guntbert

Odpowiedzi:


1

Kluczowym problemem tutaj jest twoja Free PEwartość. Zauważ, jak to mówi, że tylko 100 zakresów jest bezpłatnych? Oznacza to, że nie będziesz w stanie go przedłużyć. Jeśli wykonujesz vgscan, pvscan, a następnie vgdisplay (także vgs) prawdopodobnie zobaczysz, że twoje urządzenie jest już częścią vg (i prawdopodobnie również lv), dlatego zakresy nie są darmowe.

Czy możesz podać dane wyjściowe z:

vgscan;pvscan;vgdisplay;vgs

powinieneś być w stanie uzyskać dodatkowe 400 MB w oparciu o rozmiar twoich zakresów i ile jest wolnych.


Tak, że PV ma już 238367 PE przydzielonych do LV. Te 100 rozszerzeń jest bezpłatne, ponieważ zmniejszyłem LV po tym, jak mapujący urządzenie narzekał na mapowanie żądane przez LVM poza zasięgiem. Mój problem polega na tym, że PV utworzone przez LVM jest w rzeczywistości większe niż dysk fizyczny. Dysk, o którym mowa, nie jest już częścią systemu, więc nie mogę dostarczyć żądanych danych wyjściowych.
Feuermurmel,
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.