USB経由で1 TBのドライブを接続しています。デバイス全体を占有するLVM 物理ボリュームが含まれています(パーティションテーブルはありません)。PV全体を使用して論理ボリュームを拡張しようとすると、デバイスマッパーは、PVでLVMによって割り当てられたセクションがデバイスよりも大きいと不平を言い始めました。デバイスマッパーからのエラーメッセージ(で示されているdmesg
)は、1953320367 [dm]セクターのサイズを報告します。
device-mapper: table: 254:0: sdf too small for target: start=1821353984, len=132169728, dev_size=1953320367
しかし、LVMは238467の物理エクステントを持つPVを作成しました。これは1953521664 [lvm]セクターです(約100 MB以上)。
$ pvdisplay /dev/sdf
--- Physical volume ---
PV Name /dev/sdf
VG Name apu-vg1
PV Size 931.51 GiB / not usable 1.71 MiB
Allocatable yes
PE Size 4.00 MiB
Total PE 238467
Free PE 100
Allocated PE 238367
PV UUID LrKDDW-4dXz-kDgh-CK78-OWhY-4sCH-rKT0e4
hdparm -gI
デバイスで実行すると、デバイスのサイズの2つの値が表示されます。geometryの下には、device-mapperによって報告されるデバイスのサイズと同じ値があります。ただし、LBA48ユーザーアドレス可能セクターでは、値1953525168 [lba]があります。これは、PVのPEの結合サイズよりも1 PE未満です。これは、これがLVMが見ている値だと思い込ませます。
$ hdparm -Ig /dev/sdf
/dev/sdf:
geometry = 121588/255/63, sectors = 1953320367, start = 0
ATA device, with non-removable media
Model Number: ST1000LM024 HN-M101MBB
Serial Number: S2RUJ9BC702524
Firmware Revision: 2AR10001
Transport: Serial, ATA8-AST, SATA 1.0a, SATA II Extensions, SATA Rev 2.5, SATA Rev 2.6, SATA Rev 3.0
Standards:
Used: unknown (minor revision code 0x0028)
Supported: 8 7 6 5
Likely used: 8
Configuration:
Logical max current
cylinders 16383 16383
heads 16 16
sectors/track 63 63
--
CHS current addressable sectors: 16514064
LBA user addressable sectors: 268435455
LBA48 user addressable sectors: 1953525168
...
今私の質問に:
- カーネルのさまざまな部分で使用されるデバイスのサイズに2つの異なる値があるのはなぜですか?
- そして、この状況をどのように処理/修正して、デバイスマッパーがアクセスできる/許可するスペースよりも大きいPVをLVMが作成しないようにしますか?
hdparm
は、255 * 63セクターの倍数であり、実際のサイズより小さい最大数です。この制約は、30年前のBIOSインターフェースのシリンダー/ヘッド/セクターのフォーマットによるものです。新しいLBA48インターフェイスは、ディスクのサイズを問題なく報告できます。Linuxが何にでもCHSサイズを使用する理由がわかりません。
vgextend <vg-name> /dev/sdf
。LVMはまさに私が期待することをします。1.71 MiBはunusabeであるとpvdisplay
さえ述べており、これはまさに[lvm]と[lba]の差の大きさです。