У меня есть диск 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].Ответы:
Ключевой проблемой здесь является ваша
Free PE
ценность. Заметьте, как это говорит, что только 100 экстентов являются бесплатными? Это означает, что вы не сможете его расширить. Если вы выполните vgscan, pvscan, а затем vgdisplay (также vgs), вы, вероятно, увидите, что ваше устройство уже является частью vg (и, вероятно, lv (s)), поэтому экстенты не являются бесплатными.Не могли бы вы предоставить выход из:
vgscan;pvscan;vgdisplay;vgs
Вы должны быть в состоянии получить дополнительные 400 МБ в зависимости от размера ваших экстентов и количества бесплатных.
источник