SquashFS는 압축 해제를 어떻게 처리합니까?

SquashFS는 압축 해제를 어떻게 처리합니까?

SquashFS는 압축 해제를 어떻게 처리합니까? 나는 SquashFS 파일 시스템에서 LZ4의 오버헤드에 관심이 있습니다. 내 이론은 SquashFS 파일 시스템의 파일이 읽기 프로세스 중에 압축이 풀린다는 것입니다. 디렉토리 목록은 어떻습니까?

답변1

SquashFS에는 몇 가지 자세한 문서가 있습니다.커널 문서에서. inode 및 디렉터리 항목을 포함하여 SquashFS 파일 시스템의 모든 콘텐츠를 압축할 수 있으며, inode 및 디렉터리 항목도 압축률을 향상시키도록 설계되었습니다.

즉, 파일 시스템에서 읽은 모든 데이터나 메타데이터에는 압축 해제가 포함되지만 오버헤드가 줄어듭니다.캐싱 사용:

  • 파일 데이터는 페이지 캐시로 압축 해제되므로 동일한 페이지를 여러 번 읽을 때 데이터의 압축을 여러 번 풀 필요가 없습니다.
  • 메타데이터 및 조각(테일 엔드 팩 청크)은 작은 특정 메타데이터 및 조각 캐시로 압축 해제되므로 동일한 메타데이터 청크를 여러 번 읽을 수 있습니다(예를 들어디렉터리의 내용을 나열할 때) 동일한 블록을 여러 번 압축 해제할 필요가 없습니다.

다양한 인덱스(블록, 사용자 및 그룹 식별자, 조각)와 관련된 작업 속도를 높이기 위한 다양한 조회 테이블도 있습니다.

답변2

man mksquashfs(강조 내) 에서 :

quashfs는 Linux용 고도로 압축된 읽기 전용 파일 시스템입니다. gzip/xz/lzo/lz4/zstd 압축을 사용합니다.압축된 파일, inode 및 디렉터리.

따라서 디렉터리 내용도 압축합니다.

그런데 플래그를 사용하여 inode, uid/gid 테이블, 데이터 또는 데이터 조각 블록, 확장 속성이 압축되는지 여부를 제어할 수 있습니다 -no{I,Id,D,F,X}.

답변: 오버헤드: 많은 시스템에서 압축 해제가 영구 저장소에서 읽는 것보다 훨씬 빠르므로 속도 측면에서 오버헤드는 사실상 음수입니다.

관련 정보