USB를 통해 1TB 드라이브가 연결되어 있습니다. 여기에는 파티션 테이블없이 전체 장치를 채우는 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] 섹터 (약 100MB 이상)입니다.
$ 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
장치에서 실행 하면 장치 크기에 대한 두 가지 값을 볼 수 있습니다. geometry 아래 에는 장치 맵퍼가 장치의 크기와 동일한 값을보고합니다. 그러나 LBA48 사용자 주소 지정 가능 섹터 에서 값 1953525168 [lba]는 PV의 PE 조합 크기보다 PE가 1보다 작습니다. 이것은 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
...
이제 내 질문에 :
- 커널의 다른 부분에서 사용되는 장치 크기에 대해 두 개의 다른 값이있는 이유는 무엇입니까?
- 그리고 LVM이 장치 매퍼가 액세스 할 수있는 공간보다 큰 PV를 만들지 않도록이 상황을 어떻게 처리 / 수정합니까?
hdparm
는 255 * 63 섹터의 배수이고 실제 크기보다 작은 가장 큰 숫자입니다. 이러한 제약은 30 년 된 BIOS 인터페이스의 실린더 / 헤드 / 섹터 형식으로 인한 것입니다. 최신 LBA48 인터페이스는 디스크 크기를 잘보고 할 수 있습니다. 나는 왜 리눅스가 CHS 크기를 사용하는지 이유를 모른다.
vgextend <vg-name> /dev/sdf
. LVM은 내가 기대하는 것을 정확하게 수행합니다. pvdisplay
심지어 1.71 MiB 는 unusabe이며, 이는 [lvm]과 [lba]의 차이의 크기입니다.