我有一个通过USB连接的1 TB驱动器。它包含一个LVM 物理卷,它填充了整个设备(没有任何分区表)。当我尝试通过使用整个PV 扩展逻辑卷时,设备映射器开始抱怨LVM在PV上分配的部分大于设备。来自设备映射器的错误消息(如所示dmesg
)报告的大小为1953320367 [dm]扇区:
device-mapper: table: 254:0: sdf too small for target: start=1821353984, len=132169728, dev_size=1953320367
但是LVM创建了具有238467个物理范围的PV ,这是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
在设备上运行,则可以看到两个有关设备大小的值。在geometry下,设备映射器报告的值与设备的大小相同。但是在LBA48用户可寻址扇区下,值为1953525168 [lba],该值比PV的PE的合并大小大不到一个PE。这使我认为这是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大于设备映射器愿意/能够访问的空间?
扩展时正在运行的确切命令是什么?LVM磁头通常分配2MB,大约与您的差异大小相同。
—
Bratchley 2014年
报告的较小尺寸
—
吉尔斯(Gillles)“所以-别再邪恶了”
hdparm
是最大数字,它是255 * 63扇区的倍数,小于实际尺寸。此限制是由于具有30年历史的BIOS界面中的柱面/头部/扇区格式所致。较新的LBA48接口可以很好地报告磁盘的大小。我不知道为什么Linux使用CHS大小做任何事情。
我在方括号中标记了不同的值,以方便地引用它们。
—
Feuermurmel 2014年
@JoelDavis我用纯文本扩展了VG
—
Feuermurmel 2014年
vgextend <vg-name> /dev/sdf
。LVM完全符合我的期望。pvdisplay
甚至说1.71 MiB是unusabe,正好是[lvm]和[lba]之差的大小。