我正在尝试创建 LVM VG 和 LV,但 LV 未对齐。
这是我的起始位置:
% lsblk -t /dev/sdd
NAME ALIGNMENT MIN-IO OPT-IO PHY-SEC LOG-SEC ROTA SCHED RQ-SIZE RA WSAME
sdd 0 4096 33553920 4096 512 1 mq-deadline 60 128 32M
├─sdd1 0 4096 33553920 4096 512 1 mq-deadline 60 128 32M
├─sdd2 0 4096 33553920 4096 512 1 mq-deadline 60 128 32M
└─sdd3 0 4096 33553920 4096 512 1 mq-deadline 60 128 32M
注意ALIGNMENT
s 都是0
(正确的)。
在 上sdd2
,我创建了一个 VG test
,然后创建了一个 LV align-me
:
% sudo vgcreate --pvmetadatacopies 2 --vgmetadatacopies 2 test /dev/6TBd1p2
Physical volume "/dev/6TBd1p2" successfully created.
Volume group "test" successfully created
% sudo lvcreate -L 64g -n align-me test
Logical volume "align-me" created.
然而,ALIGNMENT
fortest-align--me
是错误的:
% lsblk -t /dev/sdd
NAME ALIGNMENT MIN-IO OPT-IO PHY-SEC LOG-SEC ROTA SCHED RQ-SIZE RA WSAME
sdd 0 4096 33553920 4096 512 1 mq-deadline 60 128 32M
├─sdd1 0 4096 33553920 4096 512 1 mq-deadline 60 128 32M
├─sdd2 0 4096 33553920 4096 512 1 mq-deadline 60 128 32M
│ └─test-align--me -1 4096 0 4096 512 1 128 128 32M
└─sdd3 0 4096 33553920 4096 512 1 mq-deadline 60 128 32M
我还看到以下日志消息(重复 4 次):
kernel: device-mapper: table: 254:6: adding target device sdd2 caused an alignment inconsistency: physical_block_size=4096, logical_block_size=512, alignment_offset=0, start=33553920
我已经vgcreate
用--dataalignmentoffset 4k
and 打电话了--dataalignment
,1m
但4m
结果是一样的。
我在跑:
LVM version: 2.02.182(2) (2018-10-30)
Library version: 1.02.152 (2018-10-30)
Driver version: 4.39.0
答案1
症状
颜
lsblk -t
OPT-IO
值确实很高(由弗罗斯特舒茨指出)smartctl
在磁盘上运行时,我看到:Read Device Identity failed: scsi error unsupported field in scsi command
原因
-1
如果无法读取最佳 IO 值,则似乎会返回该值。
作为史蒂夫·迪伊指出:
- 33553920 / 512(逻辑扇区大小)= 65535
- -1 表示为 16 位值 = 65535。 (2 16 = 65536)
然后/33553920
使用该值来对齐第一个 PE ( ),如下所示:pvcreate
vgcreate
pe_start
sudo pvs -o +pe_start --units b
解决方法
传递--dataalignment 1m
到vgcreate
将有pe_start
= 1048576B = 1MiB。
这将确保pe_start
与磁盘扇区对齐,但仍会打印(不正确的)未对齐消息。
根本原因修复
禁用无人机系统驱动器上的OPT-IO
值返回到0
(与我的其他磁盘驱动器一致)。它还允许smartctl
在驱动器上运行。
--dataalignment 1m
如果应用此修复,则不需要通过。