
Ich versuche, ein LVM VG und LV zu erstellen, aber das LV ist nicht ausgerichtet.
Hier ist meine Ausgangslage:
% 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
Beachten Sie, dass ALIGNMENT
alle S 0
(richtig) sind.
Am sdd2
erstelle ich ein VG test
und dann ein 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.
Allerdings ist ALIGNMENT
for test-align--me
falsch:
% 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
Ich sehe außerdem die folgende Protokollmeldung (4-mal wiederholt):
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
Ich habe vgcreate
mit --dataalignmentoffset 4k
und auch --dataalignment
mit 1m
und angerufen 4m
, aber die Ergebnisse sind dieselben.
Ich renne:
LVM version: 2.02.182(2) (2018-10-30)
Library version: 1.02.152 (2018-10-30)
Driver version: 4.39.0
Antwort1
Problembeschreibung
Der
lsblk -t
OPT-IO
Wert war wirklich hoch (darauf hingewiesen von frostschutz)Beim Ausführen
smartctl
auf der Festplatte habe ich Folgendes gesehen:Read Device Identity failed: scsi error unsupported field in scsi command
Ursache
Es scheint, dass dies -1
zurückgegeben wird, wenn kein optimaler IO-Wert gelesen werden kann.
Alsvon Steve Dee hervorgehoben:
- 33553920 / 512 (logische Sektorgröße) = 65535
- -1 dargestellt als 16-Bit-Wert = 65535. (2 16 = 65536)
Dieser 33553920
Wert wird dann von pvcreate
/ verwendet, um das erste PE ( ) wie folgt vgcreate
auszurichten :pe_start
sudo pvs -o +pe_start --units b
Problemumgehung
Die Übergabe --dataalignment 1m
an vgcreate
ergibt pe_start
= 1048576B = 1MiB.
Dadurch wird sichergestellt, dass pe_start
die Ausrichtung mit einem Festplattensektor erfolgt, die (falsche) Fehlausrichtungsmeldung wird jedoch trotzdem gedruckt.
Behebung der Grundursache
UAS deaktivierenauf dem Laufwerk wurde der OPT-IO
Wert wiederhergestellt 0
(konsistent mit meinen anderen Laufwerken). Es ließ sich auch smartctl
auf dem Laufwerk ausführen.
Eine Weitergabe --dataalignment 1m
ist nicht erforderlich, wenn dieser Fix angewendet wird.