Mengapa ada dua nilai berbeda untuk ukuran drive dan bagaimana merekonsiliasi dengan device-mapper dan LVM?

13

Saya memiliki drive 1 TB yang terpasang melalui USB. Ini berisi volume fisik LVM yang mengisi seluruh perangkat (tanpa tabel partisi). Ketika saya mencoba memperluas volume logis dengan menggunakan seluruh PV, the mapper-perangkat mulai mengeluh bahwa bagian yang dialokasikan oleh LVM pada PV lebih besar dari perangkat. Pesan kesalahan dari device-mapper (seperti yang ditunjukkan oleh dmesg) melaporkan ukuran sektor 1953320367 [dm]:

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

Tapi LVM membuat PV dengan 238467 luasan fisik , yaitu 1953521664 [ lvm ] sektor (yaitu sekitar 100 MB lebih banyak):

$ 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

Sekarang jika saya menjalankan hdparm -gIperangkat, saya bisa melihat dua nilai untuk ukuran perangkat. Di bawah geometri , ada nilai yang sama yang dilaporkan oleh device-mapper dengan ukuran perangkat. Tapi di bawah LBA48 sektor yang dapat dialamatkan pengguna , ada nilai 1953525168 [lba], yang kurang dari satu PE lebih besar dari ukuran gabungan PE dari PV. Ini membuat saya berpikir bahwa ini adalah nilai yang dilihat 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
...

Sekarang untuk pertanyaan saya:

  • Mengapa ada dua nilai berbeda untuk ukuran perangkat yang digunakan oleh berbagai bagian kernel?
  • Dan, bagaimana saya menangani / memperbaiki situasi ini sehingga LVM tidak akan membuat PV yang lebih besar dari ruang yang bersedia / dapat diakses oleh perangkat-mapper?
Feuermurmel
sumber
apa perintah tepat yang Anda jalankan saat Anda memperpanjang? Kepala LVM biasanya dialokasikan 2MB yang sekitar ukuran perbedaan Anda.
Bratchley
7
Ukuran yang lebih kecil yang dilaporkan oleh hdparmadalah angka terbesar yang merupakan kelipatan dari 255 * 63 sektor dan kurang dari ukuran sebenarnya. Kendala ini disebabkan oleh format silinder / kepala / sektor dari antarmuka BIOS yang berusia 30 tahun. Antarmuka LBA48 yang lebih baru dapat melaporkan ukuran disk Anda dengan baik. Saya tidak tahu mengapa Linux menggunakan ukuran CHS untuk apa pun.
Gilles 'SANGAT berhenti menjadi jahat'
Saya memberi label nilai yang berbeda dalam tanda kurung siku agar mudah merujuknya.
Feuermurmel
1
@ JoelDavis Saya memperpanjang VG menggunakan dataran vgextend <vg-name> /dev/sdf. LVM melakukan apa yang saya harapkan. pvdisplaybahkan mengatakan bahwa 1,71 MiB tidak dapat digunakan, yang persis berukuran perbedaan antara [lvm] dan [lba].
Feuermurmel
2
@Feuermurmel harap edit pertanyaan Anda untuk memberikan informasi tambahan - jangan gunakan komentar.
guntbert

Jawaban:

1

Masalah utama di sini adalah masalah Anda Free PE nilai . Perhatikan bagaimana dikatakan bahwa hanya 100 perpanjangan yang gratis? Itu berarti bahwa Anda tidak akan dapat memperpanjangnya. Jika Anda melakukan vgscan, pvscan, dan kemudian vgdisplay (juga vgs), Anda mungkin akan melihat bahwa perangkat Anda sudah menjadi bagian dari vg (dan kemungkinan juga lv), itulah sebabnya luasannya tidak gratis.

Bisakah Anda memberikan output dari:

vgscan;pvscan;vgdisplay;vgs

Anda harus bisa mendapatkan 400MB tambahan berdasarkan ukuran luasan Anda dan berapa banyak yang gratis.

Khrystoph
sumber
Ya, PV itu sudah memiliki 238.367 PE yang dialokasikan untuk LV. 100 ekstensi itu gratis karena saya menyusut LV setelah device-mapper mengeluh tentang pemetaan yang diminta oleh LVM berada di luar jangkauan. Masalah saya adalah bahwa PV yang dibuat oleh LVM sebenarnya lebih besar dari disk fisik. Disk yang dimaksud bukan lagi bagian dari sistem jadi saya tidak dapat memberikan output yang Anda minta.
Feuermurmel