이 질문은 이전에 스택 오버플로로 요청되었지만 좋은 사람들은 대신 커뮤니티를 사용해 볼 것을 권장했습니다.
다양한 파일 시스템과 관련하여 스파 스 파일을 연구 중이며 스파 스 파일이 NFS (Network File Systems) 또는 SMB (Server Message Block)에서 지원된다는 구체적인 내용을 찾으려고합니다.
SMB는 Windows에서 널리 사용되며이 항목 에 따르면 기본 파일 시스템이 아닌 경우에도 SMB 서버가 스파 스 파일을 지원할 수 있음을 이해합니다 . 그러나 내가 옳다면 스파 스 파일을 지원하지 않는 파일 시스템은 ‘구멍’을 0으로 채우므로 성능 문제가 발생할 수 있습니다.
NFS와 관련하여 NFS 지원 스파 스 파일 사용에 대한 내용을 찾을 수 없었습니다.
따라서 제 질문은
NFS 및 SMB에서 스파 스 파일이 지원됩니까?
답변
NFS : 스파 스 파일을 부분적으로 지원합니다. 기본적으로 희소 파일 작성을 지원하지만 읽을 때 파일이 0을 포함하도록 확장됩니다. 즉, NFS를 통해 스파 스 파일을 만들 수는 있지만 동일한 파일을 다시 읽을 때 전송중인 네트워크 데이터에는 원본 파일에서 찾은 0이 포함됩니다. 간단한 테스트 결과는 다음과 같습니다.
cd /mnt/nfs
truncate test.img -s 1G
ls -lh test.img
-rw-r–r–. 1 루트 루트 1.0G 10 월 26 일 11:29 test.img
du -hs test.img
0 test.img
보다시피 test.img 파일의 디스크 크기는 0 바이트입니다. 그러나 dd if=test.img of=/dev/null bs=1M iflag=direct
쇼를 사용하여 다시 읽으면
1024 + 0 레코드의
1024 + 0 레코드
1073741824 바이트 (1.1GB) 복사, 10.2269 초, 105MB / 초
스파 스 파일을 전송할 때 모든 0을 포함하도록 확장됩니다.
NFSv4.2는 스파 스 파일의 네트워크 전송을위한 특수 처리를 포함하여 확장됩니다. 즉, NFSv4.2를 사용하면 위의 내용 dd
이 거의 즉시 완료됩니다.
SMB : CIFS v1이 설치된 Samba v3.6.x 서버와 mount.cifs를 사용하는 Linux 클라이언트를 사용하는 테스트 환경에서는 NFS와 동일한 동작을 합니다. 아마도 Windows에서는 다르게 동작합니다 …
답변
NFS
예, NFS 4.2는 스파 스 파일을 완벽하게 지원합니다 ( 이 표준 문서 및 이 프레젠테이션 참조 ).
NFS 4.2 이전에는 NFS 클라이언트 / 서버 모델이 API가 모든 POSIX 파일 작업을 지원한다는 의미에서 스파 스 파일을 지원했습니다. 즉, 백업 파일 시스템에서 스파 스 파일을 지원하는 서버에 스파 스 파일을 쓰면 스파 스 파일이 생성됩니다 (많은 0을 저장하지 않음). 그러나 파일을 읽으면 스파 스 요소에 많은 영점이 전송됩니다. IE의 대답은 ‘부분적으로’입니다.
NFS 4.2는 클라이언트가 파일의 홀을 ‘볼’수있는 기능을 추가하여 서버가 모든 0을 전송할 필요가 없습니다. ID에서 :
1.4.3. Sparse Files
Sparse files are ones which have unallocated or uninitialized data
blocks as holes in the file. Such holes are typically transferred as
0s during I/O. READ_PLUS (see Section 15.10) allows a server to send
back to the client metadata describing the hole and DEALLOCATE (see
Section 15.4) allows the client to punch holes into a file. In
addition, SEEK (see Section 15.11) is provided to scan for the next
hole or data from a given location.
사양이 스파 스 파일을 지원한다는 사실에도 불구하고, 게으른 구현자는 클라이언트 또는 서버에서 스파 스 파일에 대한 지원을 구현하지 않을 수 있습니다.
SMB
SMB에 대해서는 잘 모르지만 관련 FS 기능 비트가 설정된 경우 스파 스 파일도 지원한다고 생각합니다. 자세한 내용은 여기 를 참조 하십시오 .