LVM 캐시에서 블록 크기를 늘린 후 파일이 더 이상 캐시로 승격되지 않습니다.

LVM 캐시에서 블록 크기를 늘린 후 파일이 더 이상 캐시로 승격되지 않습니다.

커널 메모리 고갈 문제가 발생한 후 lvmcache의 블록 크기를 기본값(64k라고 생각함)에서 8M 이상으로 늘렸습니다.

이렇게 변경한 후에는 지속적인 읽기 및 쓰기 사용에도 불구하고 블록이 캐시로 승격되지 않는 것 같습니다. 그러나 메타캐시가 사용되고 있습니다(블록 크기 변경 전과 거의 동일한 속도로). 캐시는 후기입 모드로 생성됩니다.

media-media: 0 46883430400 cache 8 277/2621440 16384 0/56320 0 2903157 0 1259187 0 0 0 1 writeback 2 migration_threshold 2048 smq 0 rw -

블록이 승격되지 않는 이유를 조사할 수 있는 방법이 있나요? 일반적으로 이렇게 큰 블록 크기는 효율성을 감소시킬 수 있지만 확실히 일부 블록을 강화해야 한다는 것을 알고 있습니다.

답변1

이것은 적어도 RedHat에서는 버그입니다.이제 수정됨RHEL 7.7부터. migration_threshold블록 크기가 1MB를 초과하면 블록 크기가 블록 크기보다 작은 문제가 발생합니다. 블록은 의 배수만큼 증가합니다 migration_threshold.

LVM2는 이제 8개의 블록이 항상 최소값을 갖도록 보장합니다.

바라보다:

답변2

LVM 캐시는 캐시 블록 크기가 1M보다 큰 경우 문제가 있는 것 같습니다. (https://marc.info/?l=linux-lvm&m=152948734523317&w=2)

제 경우에는 블록 크기가 1.06M로 lvcreate 명령에 의해 자동으로 결정됩니다. 캐시는 연속 기입 모드로 생성됩니다. 그런 다음 쓰기 저장으로 변경했고 블록이 승격되었지만 캐시를 플러시하려고 하면 더티 블록을 디스크에 쓸 수 없었습니다.

캐시를 안전하게 분할할 수 없기 때문에 전체 LV를 파괴해야 합니다. --chunksize=512k를 사용하여 캐시 풀을 다시 생성하면 캐시 새로 고침이 작동합니다. 아직도 LVM 캐싱을 사용하고 계십니까? 현재 캐시 블록 크기는 얼마입니까?

관련 정보