
Estoy intentando crear un LVM VG y un LV, pero el LV no está alineado.
Aquí está mi posición inicial:
% 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
Tenga en cuenta que las ALIGNMENT
s son todas 0
(correctas).
En sdd2
, creo un VG test
y luego un 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.
Sin embargo, ALIGNMENT
está test-align--me
mal:
% 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
También veo el siguiente mensaje de registro (repetido 4 veces):
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
He llamado vgcreate
con --dataalignmentoffset 4k
y también --dataalignment
con 1m
y 4m
pero los resultados son los mismos.
Estoy corriendo:
LVM version: 2.02.182(2) (2018-10-30)
Library version: 1.02.152 (2018-10-30)
Driver version: 4.39.0
Respuesta1
Síntomas
El
lsblk -t
OPT-IO
valor era realmente alto (señalado por frostschutz)Al ejecutar
smartctl
en el disco, estaba viendo:Read Device Identity failed: scsi error unsupported field in scsi command
Causa
Parece que -1
se devuelve si no se puede leer un valor de IO óptimo.
- 33553920/512 (tamaño del sector lógico) = 65535
- -1 representado como un valor de 16 bits = 65535. (2 16 = 65536)
Luego, / 33553920
utiliza este valor para alinear el primer PE ( ) como se muestra en:pvcreate
vgcreate
pe_start
sudo pvs -o +pe_start --units b
Solución alterna
Pasando --dataalignment 1m
a vgcreate
tendrá pe_start
= 1048576B = 1MiB.
Esto asegurará que pe_start
esté alineado con un sector del disco, pero aún así se imprimirá el mensaje de desalineación (incorrecta).
Solución de causa raíz
Deshabilitar UASen la unidad tenía el OPT-IO
valor regresado 0
(consistente con mis otras unidades de disco). También permitió smartctl
su ejecución en el disco.
No es necesario aprobar --dataalignment 1m
si se aplica esta solución.