เหตุใดจึงมีสองค่าที่แตกต่างกันสำหรับขนาดของไดรฟ์และวิธีการปรับยอดด้วยอุปกรณ์ -mapper และ LVM


13

ฉันมีไดรฟ์ 1 TB เชื่อมต่อผ่าน USB มันมีฟิสิคัลวอลุ่ม LVM ที่เติมอุปกรณ์ทั้งหมด (ไม่มีตารางพาร์ติชัน) เมื่อฉันพยายามที่จะขยายปริมาณตรรกะโดยใช้ทั้ง PV, mapper อุปกรณ์เริ่มบ่นว่าส่วนที่จัดสรรโดย LVM บน PV มีขนาดใหญ่กว่าอุปกรณ์ ข้อความแสดงข้อผิดพลาดจากอุปกรณ์ทำแผนที่ (ดังแสดงโดยdmesg) รายงานขนาดของปี1953320367 [dm] เซ็กเตอร์:

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

แต่ LVM สร้าง PV พร้อมขอบเขตทางกายภาพ 238467 ซึ่งเป็นภาค 1953521664 [lvm] (ซึ่งมีประมาณ 100 MB ขึ้นไป):

$ 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

ตอนนี้ถ้าฉันทำงานhdparm -gIบนอุปกรณ์ฉันสามารถดูสองค่าสำหรับขนาดของอุปกรณ์ ภายใต้รูปทรงเรขาคณิตมีค่าเดียวกับที่รายงานโดยตัวทำแผนที่อุปกรณ์เป็นขนาดของอุปกรณ์ แต่ภายใต้ส่วนที่ผู้ใช้กำหนดได้ LBA48นั้นมีค่า1953525168 [lba] ซึ่งน้อยกว่า PE หนึ่งตัวที่ใหญ่กว่าขนาดที่รวมกันของ PE ของ PV นี่ทำให้ฉันคิดว่านี่เป็นค่าที่ 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
...

ตอนนี้คำถามของฉัน:

  • เหตุใดจึงมีสองค่าแตกต่างกันสำหรับขนาดของอุปกรณ์ที่ใช้โดยส่วนต่าง ๆ ของเคอร์เนล?
  • และฉันจะจัดการ / แก้ไขสถานการณ์นี้อย่างไรเพื่อที่ LVM จะไม่ทำให้ PVs มีขนาดใหญ่กว่าพื้นที่ที่ตัวแม็ปอุปกรณ์เต็มใจ / เข้าถึงได้

คำสั่งที่แน่นอนที่คุณใช้เมื่อคุณขยายคืออะไร? หัว LVM มักจะถูกจัดสรร 2MB ซึ่งมีขนาดใกล้เคียงกับความคลาดเคลื่อนของคุณ
Bratchley

7
ขนาดที่เล็กกว่าที่รายงานโดยhdparmเป็นจำนวนที่ใหญ่ที่สุดซึ่งเป็นหลายส่วนของ 255 * 63 และน้อยกว่าขนาดจริง ข้อ จำกัด นี้เกิดจากรูปแบบรูปทรงกระบอก / หัว / ส่วนจาก BIOS อินเตอร์เฟสอายุ 30 ปี อินเทอร์เฟซ LBA48 ที่ใหม่กว่าสามารถรายงานขนาดของดิสก์ของคุณได้ ฉันไม่รู้ว่าทำไม Linux ใช้ขนาด CHS เพื่ออะไร
Gilles 'หยุดความชั่วร้าย'

ฉันระบุค่าต่าง ๆ ในวงเล็บเหลี่ยมเพื่อให้อ้างอิงได้อย่างง่ายดาย
Feuermurmel

1
@JoelDavis ฉันขยาย VG vgextend <vg-name> /dev/sdfโดยใช้ธรรมดา LVM ทำสิ่งที่ฉันคาดหวัง pvdisplayแม้จะบอกว่า1.71 MiBนั้นผิดปกติซึ่งมีขนาดเท่ากับความแตกต่างระหว่าง [lvm] และ [lba]
Feuermurmel

2
@Feuermurmel โปรดแก้ไขคำถามของคุณเพื่อให้ข้อมูลเพิ่มเติม - ไม่ใช้ความคิดเห็น
guntbert

คำตอบ:


1

ปัญหาสำคัญคือFree PEคุณค่าของคุณ สังเกตว่ามันบอกว่ามีเพียง 100 extents เท่านั้นที่ฟรี? นั่นหมายความว่าคุณจะไม่สามารถขยายได้ หากคุณทำ vgscan, pvscan แล้ว vgdisplay (เช่น vgs) คุณอาจเห็นว่าอุปกรณ์ของคุณเป็นส่วนหนึ่งของ vg (และมีแนวโน้มว่า lv (s) ด้วย) ซึ่งเป็นสาเหตุที่ขอบเขตไม่ได้ฟรี

คุณสามารถให้ผลลัพธ์จาก:

vgscan;pvscan;vgdisplay;vgs

คุณควรจะได้รับเพิ่มอีก 400MB ตามขนาดของขอบเขตและจำนวนฟรี


ใช่ PV นั้นมี 238367 PE ที่จัดสรรให้กับ LV แล้ว การขยาย 100 รายการนั้นฟรีเพราะฉันหด LV หลังจากผู้ทำแผนที่อุปกรณ์บ่นเกี่ยวกับการแมปที่ร้องขอโดย LVM อยู่นอกระยะ ปัญหาของฉันคือ PV ที่สร้างขึ้นโดย LVM มีขนาดใหญ่กว่าดิสก์จริง ดิสก์ที่สงสัยนั้นไม่ใช่ส่วนหนึ่งของระบบอีกต่อไปดังนั้นฉันจึงไม่สามารถให้ผลลัพธ์ที่คุณร้องขอได้
Feuermurmel
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.