zram 파일 시스템은 파일 시스템에서 보고한 것과 장치 수준에서 다른 사용량을 보고합니다.

zram 파일 시스템은 파일 시스템에서 보고한 것과 장치 수준에서 다른 사용량을 보고합니다.

호스트에 80GB zram 장치가 정의되어 있고 이 안에 170GB ext4 파일 시스템이 있습니다.

  echo 170G > /sys/block/zram0/disksize
  echo 80G  > /sys/block/zram0/mem_limit
  /usr/sbin/mkfs.ext4 -q -m 0 /dev/zram0
  /usr/bin/mount /dev/zram0 /var/zram

이 파일 시스템은 대량의 임시 데이터에 빠르게 액세스하기 위해 애플리케이션에서 사용됩니다.

표시된 파일 시스템 크기는 df보고된 zram 크기와 일치합니다./sys/block/zram0/disksize

테스트 데이터를 빈 파일 시스템에 복사하여 2.2:1의 압축 비율이 달성되었음을 확인했으며, 따라서 zramfs 메모리 제한에 도달하기 전에 파일 시스템이 채워집니다. 값 /sys/block/zram0/orig_data_size은 파일 시스템에서 보고한 사용량과 일치합니다.

# expr `cat orig_data_size` / 1024 ; df -k /dev/zram0
112779188
Filesystem     1K-blocks      Used Available Use% Mounted on
/dev/zram0     175329308 112956600  62356324  65% /var/zram

그러나 애플리케이션이 장기간 라이브 데이터로 실행되면 더 이상 일치하지 않는 것으로 나타났습니다.

# expr `cat orig_data_size` / 1024 ; df -k /dev/zram0
173130200
Filesystem     1K-blocks      Used Available Use% Mounted on
/dev/zram0     175329308 112999496  62313428  65% /var/zram

이제 파일 시스템은 약 110GB의 사용량을 보고하지만 zramfs 장치는 165GB를 보고합니다. 동시에 zramfs 메모리는 고갈되고 파일 시스템은 읽기 전용이 됩니다.

zram 수치는 orig_data_size와 compr_data_size 사이의 압축 비율이 2.2:1임을 확인합니다. 하지만,파일 시스템이 zram 장치보다 훨씬 더 많은 여유 공간을 표시하는 이유는 무엇입니까? 파일시스템에서 재사용을 위해 이미 할당된 공간이라 할지라도 새로운 공간을 할당하기보다는 재사용해야 하는 것이 아닐까?

데이터는 불규칙한 간격으로 추가 및 제거되는 다수의 작은 파일로 구성됩니다.

답변1

그 원인은 zram0 장치에 있는 ext4 파일 시스템에서 파일이 삭제될 때 메모리가 시스템으로 다시 해제되지 않기 때문인 것으로 밝혀졌습니다. 즉, 파일 시스템에서 사용할 수 있는 공간( 의 출력 df)이 있음에도 불구하고 여전히 메모리가 할당되어 있습니다( 의 통계 /sys/block/zram0). 결과적으로, 메모리 사용량은 할당량의 100%까지 도달하지만, 파일 시스템은 삭제로 인해 여전히 절반이 채워져 있습니다.

이는 파일 시스템을 계속 채울 수 있으며 새 파일이 새 메모리 공간을 많이 사용하지 않는다는 것을 의미합니다. 그러나 이는 압축률에 부정적인 영향을 미칩니다.

해결책은 discardnoatime옵션을 사용하여 파일 시스템을 마운트하는 것입니다. 해제 discard된 파일 공간이 다시 메모리 장치로 돌아가고 결과적으로 두 항목의 사용량이 다시 일치합니다.

관련 정보