스파스 파일

Sparse file
스파스 파일:빈 바이트는 저장할 필요가 없으므로 메타데이터로 나타낼 수 있습니다.

컴퓨터 과학에서 스파스 파일은 파일 자체가 부분적으로 비어 있을 때 파일 시스템 공간을 더 효율적으로 사용하려고 시도하는 컴퓨터 파일의 한 유형입니다.이는 블록을 구성하는 실제 "빈" 공간이 아닌 빈 블록을 나타내는 간략한 정보(메타데이터)를 데이터 스토리지 미디어에 기록함으로써 이루어지며, 따라서 더 적은 스토리지 공간을 사용합니다.전체 블록 크기는 블록에 "실제"(비어 있지 않은) 데이터가 포함되어 있는 경우에만 실제 크기로 미디어에 기록됩니다.

스파스 파일을 읽을 때 파일 시스템은 빈 블록을 나타내는 메타데이터를 런타임에 늘 바이트로 채워진 "실제" 블록으로 투명하게 변환합니다.응용 프로그램은 이 변환을 인식하지 않습니다.

대부분의 최신 파일 시스템은 대부분의 Unix 변형 및 [1]NTFS를 포함하여 스파스 파일을 지원합니다.Apple의 HFS+는 스파스 파일을 지원하지 않지만 OS X에서는 가상 파일 시스템 계층이 HFS+[citation needed]를 포함한 지원되는 파일 시스템에 파일을 저장할 수 있습니다.2016년 6월 WWDC에서 발표된 Apple File System(APFS)도 이를 [2]지원합니다.스파스 파일은 일반적으로 디스크 이미지, 데이터베이스 스냅샷, 로그 파일 및 과학 애플리케이션에 사용됩니다.

이점

스파스 파일의 장점은 스토리지 공간이 실제로 필요할 때만 할당된다는 것입니다.스토리지 용량은 절약되며, 스토리지 미디어에서 원본 파일을 위한 사용 가능한 공간이 부족하더라도 대용량 파일이 생성될 수 있습니다.또한 시스템이 "건너뛰기" 공간에 블록을 할당할 필요가 없기 때문에 첫 번째 쓰기 시간도 단축됩니다.초기 할당에서 공간에 모든 0을 써야 하는 경우 시스템이 "건너뛰기" 공간에 두 번 쓸 필요가 없습니다.

예를 들어 실제로 2GB의 파일이 기록된 최대 크기가 100GB인 가상 시스템 이미지의 경우 사전 할당된 스토리지로 백업할 경우 전체 100GB가 필요하지만 스파스 파일에서는 2GB만 필요합니다.파일 시스템이 홀 펀치를 지원하고 게스트 운영 체제가 TRIM 명령을 실행하는 경우 게스트에서 파일을 삭제하면 필요한 공간이 줄어듭니다.

단점들

단점은 스파스 파일이 fragment화될 수 있다는 점, 파일 시스템의 빈 공간 보고서가 오해를 일으킬 수 있다는 점, 스파스 파일이 포함된 파일 시스템을 가득 채우면 예기치 않은 영향이 발생할 수 있다는 점(파일의 기존 부분을 덮어쓸 때 디스크 가득 또는 할당량 초과 오류 등), 스파스 파일을 복사하는 경우명시적으로 지원하지 않는 프로그램은 스토리지 미디어에 할당되지 않은 0 섹션을 포함하여 파일의 전체 크기를 압축하지 않은 상태로 복사할 수 있습니다. 따라서 파일에 있는 스파스 속성의 이점을 누릴 수 있습니다.또한 스파스 파일은 모든 백업 소프트웨어 또는 애플리케이션에서 완전히 지원되는 것은 아닙니다.다만, VFS 실장에서는, 앞의 2개의 단점을 회피하고[citation needed] 있습니다.32비트 Windows(exe 또는 dll)에서 sparse 실행 파일을 로드하는 것은 파일을 4GB 주소 공간에 메모리 매핑할 수 없고 32비트 sparse 실행 파일을 캐시하기 위한 코드 패스가 없기 때문에 캐시되지 않기 때문에 시간이 오래 걸립니다(64비트 아키텍처의 Windows는 sparse [citation needed]실행 파일을 매핑할 수 있습니다.NTFS 스파스 파일(또는 0이 아닌 영역)에서는 압축할 수 없습니다.NTFS는 특수 압축 유형으로 희소성을 구현하므로 파일이 스파스 또는 압축될 수 있습니다.

UNIX의 스파스 파일

스파스 파일은 일반적으로 사용자에게 투과적으로 처리됩니다.그러나 일반 파일과 스파스 파일의 차이는 상황에 따라 명확하게 나타납니다.

창조.

Unix 명령어

 dd of=sysk-file bs=5M seek=1 count=0

는 크기가 5메비바이트인 파일을 생성하지만 미디어에는 데이터가 저장되지 않습니다(메타데이터만).(GNU) dd이 동작을 하는 것은, 콜을 발신하기 위해서입니다.ftruncate파일 크기를 설정합니다.다른 구현에서는 빈 파일만 작성될 수 있습니다.)

마찬가지로 truncate 명령도 사용할 수 있는 경우 사용할 수 있습니다.

 truncate -s 5M <파일명>

Linux 에서는 다음과 같이 기존 파일을 스파스로 변환할 수 있습니다.

 fallocate -d <fallocate>

구멍을 뚫기 위한 휴대용 시스템 호출은 없습니다.Linux는 fallocate(FALLOC_FL_POUNCH_HOLE), Solarisfcntl(F_FREESP)을 제공합니다.

검출

-s의 옵션ls명령어는 점유된 공간을 블록 단위로 표시합니다.

 ls - ls sparse-file

또는du명령어는 점유된 공간을 인쇄합니다.ls겉보기 크기를 인쇄합니다.일부 비표준 버전에서는du, 옵션--block-size=1블록이 아닌 바이트 단위로 점유된 공간을 인쇄하여ls출력:

 du --block-size=1 sparse-file ls -l sparse-file

또, 툴은filefrag부터e2fsprogs패키지는 파일의 블록 할당 세부사항을 표시하기 위해 사용할 수 있습니다.

 filefrag -v sparse-file

카피

보통 GNU 버전의cp파일이 스퍼스인지 아닌지를 잘 검출하기 때문에

cp sparse-file new-file

는 sparse가 되는 새로운 파일을 만듭니다.단, GNU cp에는--sparse옵션을 선택합니다.[3]이 기능은 긴 제로 블록을 포함하는 파일이 비소수 방식으로 저장되는 경우(즉, 제로 블록이 스토리지 미디어에 완전히 기록됨) 특히 유용합니다.스토리지 공간은 다음 방법으로 절약할 수 있습니다.

cp --pars=항상 file1 file1_sparsed

일부 CP 구현(예: FreeB)SD의 cp에서는,--sparsesparse 파일을 항상 확장합니다.이러한 시스템에서 부분적으로 실행 가능한 대안으로 rsync를 사용하는 것이 있습니다.--sparse옵션을[4] 지정합니다.불행하게도--sparse와 조합할 수 없다--inplace를 클릭합니다.[5][6]

표준 입력 경유

cp --syslog=항상 /syslog/self/syslog/0 new-syslog-file < somefile

「 」를 참조해 주세요.

레퍼런스

  1. ^ Giampaolo, Dominic (1999). Practical File System Design with the Be File System (PDF). Morgan Kaufmann Publishers. ISBN 9781558604971.
  2. ^ "Apple File System Guide". Apple's Developer Site. Apple Inc. Retrieved 27 April 2017.
  3. ^ Meyering, Jim (1995-12-21). "GNU coreutils/cp: Accept new option, --sparse={never,auto,always}, to control creation of sparse files". Retrieved 2016-06-17.
  4. ^ Tridgell, Andrew (1996-06-29). "rsync: hard links, better sparse handling, FERROR and FINFO". Retrieved 2016-06-17.
  5. ^ Tridgell, Andrew (2016-06-30). "rsync manpage". Retrieved 2017-01-19.
  6. ^ Davison, Wayne (2005-08-30). "rsync: Reject attempts to combine --sparse with --inplace". Retrieved 2017-01-19.

외부 링크