archivemount보다 빠른 이유는 무엇입니까?

archivemount보다 빠른 이유는 무엇입니까?

저는 현재 ArchiveMount3백만 개 이상의 파일이 포함된 123,000kb 아카이브를 마운트하는 데 이를 사용하고 있습니다. 설치한지 5시간이 넘었는데 아직 끝나지 않았습니다.

파일을 마운트하는 더 좋은 방법이 있습니까 .tar.gz? 폴더에 설치하려고 하는데 압축을 푸는 데 시간이 좀 걸립니다. 쓰기 모드도 필요하지 않으며 읽기 전용이면 충분합니다.

답변1

더 빠른 대안을 썼습니다라타마운트, 이 문제가 나를 괴롭혔기 때문에 이것은 "나에게 도움이 되었습니다".

다음과 같이 설치하고 사용할 수 있습니다.

pip3 install --user ratarmount
ratarmount my-huge-tar.tar mount-folder
ls -la mount-folder # will show the contents of the tar top-level

완료되면 FUSE 설치와 마찬가지로 제거할 수 있습니다.

fusermount -u mount-folder

archivemount보다 빠른 이유는 무엇입니까?

다음은 첫 번째 설치에 필요한 메모리 사용량 및 시간의 기준은 물론 하나의 간단한 cat <file-in-tar>명령과 하나의 간단한 명령 find에 대한 액세스 시간 입니다.

벤치마크

각각 1,000개의 파일을 포함하는 폴더가 생성되며 폴더 수는 다양합니다.

왼쪽 하단 패널에는 cat <file>무작위로 선택된 10개 파일에 대한 최소 및 최대 측정 시간을 나타내는 오류 막대가 표시됩니다.

이점

  • 벤치마크에는 표시되지 않았지만 Ratarmount는 다음을 사용하여 파일을 마운트할 수 있습니다.기존 색인 사이드카 파일1초도 안 되어 완료됨효율성이 크게 향상되었습니다.archivemount와 비교하면 각후속 설치.
  • Ratarmount가 함께 제공됩니다.진행 표시기, 따라서 사용자는 archivemount에 비해 피드백을 받지 않고 몇 시간 동안 기다릴 필요가 없습니다.
  • 파일 콘텐츠 가져오기설치된 아카이브는 일반적으로훨씬 더 빨리archivemount 및 fusion-archive와 비교할 때 아카이브 크기나 파일 수에 따라 확장되지 않으므로 최대 약 5배의 속도 향상이 관찰됩니다!
  • 설치하다압축 패키지 2,보관소, 그리고xz아카이브는 효과적으로서둘러요ratarmount -P 0이러한 압축을 디코딩하기 위해 여러 코어를 사용하기 때문에 대부분의 최신 프로세서의 archivemount 및 fusion-archive와 비교됩니다 . indexed_bzip2지지 블록병렬 디코딩버전 1.2.0부터 rapidgzip.
  • 메모리 소비라타몬테의 성장더 적은압축하지 않는 archivemount와 달리 bzip2는 파일 이름이 메모리에 보관되지 않고 SQLite 데이터베이스의 디스크에 저장되기 때문에 아카이브 크기에 따라 전혀 커지지 않습니다.
    • 이것보관소조회되는 데이터가 bzip2에 필요한 단순한 두 개의 64비트 오프셋보다 수천 배 더 크기 때문에 백엔드는 아카이브 크기에 따라 선형적으로 증가합니다. 이것이 문제가 되는 경우 검색 포인트 간격을 늘려 --gzip-seek-point-spacing <spacing in MiB>총 포인트 수를 줄여 생성되는 데이터를 줄일 수 있습니다.
    • 메모리 사용량이것이 표준이다백엔드는 너무 자주 열려 있기 때문에 거대해 보입니다 mmap. 메모리 사용량을 사용하거나 표시할 때 사용된 메모리는 mmap사용된 메모리로 계산되지도 않습니다.freehtop
  • 빈 파일의 경우 Ratarmount 및 archivemount를 사용한 마운트는 압축 해제 또는 I/O 대역폭에 의해 제한되는 것이 아니라 내부 파일 인덱스를 생성하는 데 사용되는 알고리즘에 의해 제한되는 것으로 보입니다.

결점

  • 많은 메타데이터를 얻으세요마운트 지점을 호출하여 find보여주는 아카이브 콘텐츠의 경우 크기 순서입니다.느리게archivemount와 비교하면 주로 Python과 Python의 간접 주소 지정 때문입니다.

보다 심층적인 벤치마킹을 보려면 다음을 참조하세요.Github 페이지.

답변2

압축된 squashfs 이미지를 만들 수도 있습니다.

mksquashfs /etc squashfs.img -comp xz
mkdir img
mount -o squashfs,ro squashfs.img img

이렇게 하려면 tar.gz Archvie를 추출해야 합니다.

장점은 이미지가 gz보다 내결함성이 더 높다는 것입니다.

답변3

여기서 문제는 형식입니다. TAR(Tape Archive) 형식은 무작위 액세스가 아닌 순차 액세스용으로 설계되었습니다. gzip은 스트림 기반 압축 형식이고 임의 액세스용이 아니기 때문에 tar를 보완하는 좋은 방법입니다.

따라서 압축된 청크와 직접 상호 작용하지 않는 고급 도구는 무엇이든 읽어야 할 때마다 전체 파일을 구문 분석하고 먼저 파일 목록을 얻은 다음 캐시를 무효화하고 다시 읽어야 합니다. 복사한 파일을 다시 읽을 수 있습니다. 너할 수 있는각 파일의 위치와 파일을 얻기 위해 어떤 블록을 압축 해제해야 하는지 기억하는 도구를 만드는 것은 귀찮은 사람이 거의 없는 것 같습니다.

더 빠르게 하려면 tar tzf file.tar.gz > filelist이 파일 목록을여 십시오.,편집자아니면 파일에서 불필요한 줄을 삭제하고 저장한 다음 tar xzf file.tar.gz -T filelist -C extracted/.

압축된 파일에 대한 무작위 액세스를 위해서는 posix 확장자, rar 또는 dru8274가 제안한 대로 squashfs가 있는 zip을 사용하거나 압축된 ZFS를 열어야 합니다. 또는 btrfs가 읽을 때 압축이 활성화된 경우 btrfs를 사용해야 합니다.

답변4

텍스트 편집기 사용을 제한하므로 모든 사용 사례를 다루지는 않습니다. 그러나 읽기 액세스에만 관심이 있는 경우 경우에 따라 이 방법이 도움이 될 수 있습니다. vim, tarball에서 실행될 때 아카이브의 내용 계층 구조를 표시합니다(디렉토리에서 실행될 때 파일 계층 구조가 표시되는 방식과 유사). 목록에 있는 파일 중 하나를 선택하면 선택한 파일이 읽기 전용 버퍼에서 열립니다.

다시 말하지만, 이것이 반드시 이미지나 기타 미디어에 대한 액세스를 제공하는 것은 아니지만 필요한 것이 콘텐츠를 보거나 텍스트 기반 파일에 액세스하는 것뿐이라면 이 방법이 도움이 될 것입니다.

노트: 모든 아카이브 형식에서는 작동하지 않습니다.

관련 정보