optimize_io_size слишком велик, что приводит к несоответствию выравнивания LVM LV

optimize_io_size слишком велик, что приводит к несоответствию выравнивания LVM LV

Я пытаюсь создать 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это test-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, и --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

Симптомы

  1. Значение lsblk -t OPT-IOбыло действительно высоким (указал frostschutz)

  2. При запуске smartctlна диске я увидел:

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

Причина

Похоже, что это -1возвращается, если оптимальное значение ввода-вывода не может быть прочитано.

Какотметил Стив Ди:

  • 33553920 / 512 (логический размер сектора) = 65535
  • -1 представлено как 16-битное значение = 65535. (2 16 = 65536)

Это 33553920значение затем используется pvcreate/ vgcreateдля выравнивания первого PE ( pe_start), как показано:

sudo pvs -o +pe_start --units b

Обходной путь

Переходим --dataalignment 1mк vgcreateбудем иметь pe_start= 1048576Б = 1МиБ.

Это обеспечит pe_startвыравнивание с сектором диска, но сообщение о (неправильном) смещении все равно будет напечатано.

Устранение первопричины

Отключение БПЛАна диске имел OPT-IOзначение, возвращаемое к 0(согласующееся с моими другими дисками). Он также позволял smartctlзапускаться на диске.

--dataalignment 1mЕсли применяется это исправление, передача не требуется.

Связанный контент