У мене приєднаний накопичувач на 1 ТБ через USB. Він містить фізичний об'єм LVM, що заповнює весь пристрій (без будь-якої таблиці розділів). Коли я спробував розширити логічний об'єм за допомогою всього ПВ, пристрій-картограф почав скаржитися, що розділ, виділений 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 не робив ПВ, які перевищують простір, до якого готовий / спроможний отримати доступ до пристрою-картографа?
hdparm
- це найбільше число, яке кратне 255 * 63 секторам і менше фактичного розміру. Це обмеження пов'язане з форматом циліндр / головка / сектори з 30-річного інтерфейсу BIOS. Новий інтерфейс LBA48 може чудово повідомити про розмір вашого диска. Я поняття не маю, чому Linux використовує розмір CHS ні для чого.
vgextend <vg-name> /dev/sdf
. LVM робить саме те, що я очікую. pvdisplay
навіть говорить про те, що 1,71 МіБ - це unusabe, що є саме величиною різниці між [lvm] та [lba].