У меня есть диск 1 ТБ, подключенный через USB. Он содержит физический том LVM, заполняющий все устройство (без таблицы разделов). Когда я попытался расширить логический том , используя весь PV, устройство отображения устройств начало жаловаться, что раздел, выделенный LVM на PV, больше, чем устройство. Сообщение об ошибке от устройства отображения (как показано dmesg
) сообщает о размере 1953320367 [дм] секторов:
device-mapper: table: 254:0: sdf too small for target: start=1821353984, len=132169728, dev_size=1953320367
Но LVM создал PV с 238467 физическими экстентами , что составляет 1953521664 [lvm] секторов (что примерно на 100 МБ больше):
$ 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 не создавал PV больше, чем пространство, к которому устройство / устройство доступа может / может получить доступ?
hdparm
является наибольшим числом, кратным 255 * 63 секторам, и меньше фактического размера. Это ограничение связано с форматом цилиндра / головки / сектора из 30-летнего интерфейса BIOS. Более новый интерфейс LBA48 может сообщить размер вашего диска просто отлично. Я понятия не имею, почему Linux использует размер CHS для чего-либо.
vgextend <vg-name> /dev/sdf
. LVM делает именно то, что я ожидаю. pvdisplay
даже говорит, что 1.71 MiB - непривычно, что в точности соответствует разнице между [lvm] и [lba].