Tôi có ổ đĩa 1 TB được gắn qua USB. Nó chứa một khối lượng vật lý LVM lấp đầy toàn bộ thiết bị (không có bất kỳ bảng phân vùng nào). Khi tôi cố gắng mở rộng âm lượng hợp lý bằng cách sử dụng toàn bộ PV, trình ánh xạ thiết bị bắt đầu phàn nàn rằng phần được phân bổ bởi LVM trên PV lớn hơn thiết bị. Thông báo lỗi từ trình ánh xạ thiết bị (như được hiển thị bởi dmesg
) báo cáo kích thước của 1953320367 [dm] sector:
device-mapper: table: 254:0: sdf too small for target: start=1821353984, len=132169728, dev_size=1953320367
Nhưng LVM đã tạo ra một PV với 238467 mức độ vật lý , đó là 1953521664 [lvm] sector (tức là khoảng 100 MB nữa):
$ 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
Bây giờ nếu tôi chạy hdparm -gI
trên thiết bị, tôi có thể thấy hai giá trị cho kích thước của thiết bị. Trong hình học , có cùng giá trị được báo cáo bởi người lập bản đồ thiết bị với kích thước của thiết bị. Nhưng trong các lĩnh vực địa chỉ người dùng LBA48 , có giá trị 1953525168 [lba], nhỏ hơn một PE lớn hơn kích thước kết hợp của PE của PV. Điều này khiến tôi nghĩ rằng đây là giá trị mà LVM thấy:
$ 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
...
Bây giờ cho câu hỏi của tôi:
- Tại sao có hai giá trị khác nhau cho kích thước của thiết bị được sử dụng bởi các phần khác nhau của kernel?
- Và, làm cách nào để xử lý / khắc phục tình huống này để LVM sẽ không tạo ra các PV lớn hơn không gian mà trình ánh xạ thiết bị sẵn sàng / có thể truy cập?
hdparm
số lượng lớn nhất là bội số của 255 * 63 ngành và nhỏ hơn kích thước thực tế. Hạn chế này là do định dạng hình trụ / đầu / cung từ giao diện BIOS 30 năm tuổi. Giao diện LBA48 mới hơn có thể báo cáo kích thước đĩa của bạn tốt. Tôi không biết tại sao Linux sử dụng kích thước CHS cho bất cứ điều gì.
vgextend <vg-name> /dev/sdf
. LVM làm chính xác những gì tôi mong đợi. pvdisplay
thậm chí nói rằng 1,71 MiB là unusabe, đó chính xác là kích thước của sự khác biệt giữa [lvm] và [lba].