나는 이것에 대한 정답을 찾으려고 노력해 왔으며 애매한 것으로 판명되었습니다. 이 질문 과 답변 은 가깝지만 실제로 원하는 세부 사항을 제공하지는 않습니다. 내가 아는 것부터 시작해 봅시다.
표준 블록 장치가 있고 실행 sudo blockdev --report
하면 다음과 같은 결과가 나타납니다.
RO RA SSZ BSZ StartSec Size Device
rw 256 512 4096 0 500107862016 /dev/sda
rw 256 512 4096 2048 399999238144 /dev/sda1
rw 256 512 1024 781252606 1024 /dev/sda2
이제 --setra
파티션 중 하나를 사용하여 기본 256을 128로 변경하기로 결정하면 다음 과 같이 전체 블록 장치에서 발생합니다.
sudo blockdev --setra 128 /dev/sda1
sudo blockdev --report
RO RA SSZ BSZ StartSec Size Device
rw 128 512 4096 0 500107862016 /dev/sda
rw 128 512 4096 2048 399999238144 /dev/sda1
rw 128 512 1024 781252606 1024 /dev/sda2
이것은 나에게 완벽하게 이해됩니다. 블록 레벨 장치는 파티션이 아닌 설정이있는 곳이므로 모든 것이 변경됩니다. 또한 RA 설정과 장치 사이의 기본 관계는 나에게 의미가 있습니다. 일반적으로 다음과 같습니다.
RA * sector size (default = 512 bytes)
따라서 기본 섹터 크기를 사용하여 위에서 변경 한 내용은 미리 읽기가 128k에서 64k로 떨어집니다. 지금까지는 모든 것이 좋았습니다.
그러나 소프트웨어 RAID 또는 LVM 및 장치 매퍼를 추가하면 어떻게됩니까? 보고서가 다음과 같다고 상상해보십시오.
RO RA SSZ BSZ StartSec Size Device
rw 256 512 4096 0 10737418240 /dev/xvda1
rw 256 512 4096 0 901875499008 /dev/xvdb
rw 256 512 4096 0 108447924224 /dev/xvdj
rw 256 512 4096 0 108447924224 /dev/xvdi
rw 256 512 4096 0 108447924224 /dev/xvdh
rw 256 512 4096 0 108447924224 /dev/xvdg
rw 4096 512 4096 0 433787502592 /dev/md0
rw 4096 512 512 0 429496729600 /dev/dm-0
이 경우 mdadm으로 만든 md0 위에 장치 매핑 된 dm-0 LVM 장치가 있습니다. 이는 실제로 4 개의 장치 xvdg-j에 걸쳐 RAID0 스트라이프입니다.
md0과 dm-0은 모두 블록 장치보다 훨씬 높은 RA에 대해 4096으로 설정되어 있습니다. 여기 몇 가지 질문이 있습니다.
- RA 설정은 가상 블록 장치 체인으로 어떻게 전달됩니까?
- dm-0은 실제로 액세스하는 최상위 블록 장치이기 때문에 모든 것을 능가합니까?
- 것인가
lvchange -r
는 DM-0 장치에 영향을하고 여기에 표시하지?
간단하다면 사용중인 가상 블록 장치의 RA 설정이 전달됩니다. 이는 dm-0 (또는 md0)의 읽기가 4 x 4096 RA 읽기로 변환됨을 의미합니까? (각 블록 장치에 하나씩). 그렇다면 이러한 설정이 위 시나리오에서 미리 읽기의 크기를 폭발적으로 의미합니다.
그런 다음 미리 읽기 설정이 실제로 수행하는 작업을 파악하는 관점에서 :
가상 장치의 실제 미리 읽기 값을 결정하기 위해 위의 섹터 크기에 해당하는 것을 사용하십시오.
- RAID의 스트라이프 크기 (md0)?
- 다른 섹터 크기에 해당합니까?
- 구성 가능하고 어떻게?
- FS가 중요한 역할을합니까 (주로 ext4 및 XFS에 관심이 있습니까)?
- 또는 방금 전달 된 경우 최상위 장치의 RA 설정에 실제 블록 장치의 섹터 크기를 곱한 것입니까?
마지막으로 스트라이프 크기와 RA 설정간에 선호되는 관계가 있습니까? 여기서 스트라이프가 RAID 장치에서 제거 될 가장 작은 요소 인 경우 최소 데이터 단위를 서비스하기 위해 2 개의 디스크 액세스가 필요하지 않으며 RA를 만들고 싶을 것입니다. 단일 액세스로 요청을 수행 할 수있을만큼 큽니다.