
我正在嘗試建立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
fortest-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
and 打電話了--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
值確實很高(由弗羅斯特舒茨指出)smartctl
在磁碟上運行時,我看到:Read Device Identity failed: scsi error unsupported field in scsi command
原因
-1
如果無法讀取最佳 IO 值,則似乎會傳回該值。
作為史蒂夫迪伊指出:
- 33553920 / 512(邏輯磁區大小)= 65535
- -1 表示為16位元值 = 65535 。
然後/33553920
使用該值來對齊第一個 PE ( ),如下所示:pvcreate
vgcreate
pe_start
sudo pvs -o +pe_start --units b
解決方法
傳遞--dataalignment 1m
到vgcreate
將有pe_start
= 1048576B = 1MiB。
這將確保pe_start
與磁碟區對齊,但仍會列印(不正確的)未對齊訊息。
根本原因修復
禁用無人機系統驅動器上的OPT-IO
值返回到0
(與我的其他磁碟機一致)。它還允許smartctl
在驅動器上運行。
--dataalignment 1m
如果套用此修復,則不需要通過。