
Я пытаюсь создать 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
Симптомы
Значение
lsblk -t
OPT-IO
было действительно высоким (указал frostschutz)При запуске
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
Если применяется это исправление, передача не требуется.