optim_io_size é grande, causando inconsistência no alinhamento do LVM LV

optim_io_size é grande, causando inconsistência no alinhamento do LVM LV

Estou tentando criar um LVM VG e LV, mas o LV não está alinhado.

Esta é minha posição 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

Observe que os ALIGNMENTs são todos 0(corretos).

On sdd2, eu crio um VG teste depois um 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.

No entanto, ALIGNMENTfor test-align--meestá errado:

% 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

Também vejo a seguinte mensagem de log (repetida 4 vezes):

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

Liguei vgcreatecom --dataalignmentoffset 4ke também --dataalignmentcom 1me 4mmas os resultados são os mesmos.

Estou correndo:

LVM version:     2.02.182(2) (2018-10-30)
Library version: 1.02.152 (2018-10-30)
Driver version:  4.39.0

Responder1

Sintomas

  1. O lsblk -t OPT-IOvalor era muito alto (apontado por Frostschutz)

  2. Ao executar smartctlno disco, eu estava vendo:

    Read Device Identity failed: scsi error unsupported field in scsi command
    

Causa

Parece que -1é retornado se um valor de IO ideal não puder ser lido.

Comoapontado por Steve Dee:

  • 33553920/512 (tamanho lógico do setor) = 65535
  • -1 representado como um valor de 16 bits = 65535. (2 16 = 65536)

Este 33553920valor é então usado por pvcreate/ vgcreatepara alinhar o primeiro PE ( pe_start) conforme mostrado por:

sudo pvs -o +pe_start --units b

Gambiarra

Passando --dataalignment 1mpara vgcreateterá pe_start= 1048576B = 1MiB.

Isso garantirá que pe_startesteja alinhado com um setor do disco, mas a mensagem de desalinhamento (incorreto) ainda será impressa.

Correção da causa raiz

Desativando UASna unidade teve o OPT-IOvalor retornado para 0(consistente com minhas outras unidades de disco). Também permitiu smartctlser executado na unidade.

A aprovação --dataalignment 1mnão é necessária se esta correção for aplicada.

informação relacionada