여러 개의 개별 파일에 분산 된 경우 동일한 양의 데이터를 복사하는 데 시간이 더 걸리는 이유는 무엇입니까?


12

한 폴더에서 다른 폴더로 24Mb 상당의 데이터를 복사하는 데 약 30 초가 걸린다는 것을 알았습니다 (이 이유라고 가정). 24Mb를 복사하는 데 시간이 오래 걸리지 않습니다. 파일 수가 다른 이유는 무엇입니까?

MacBook에서 Windows 7을 실행하고 있습니다 (4GB 램, Intel® Core ™ 2 Duo CPU P7450 @ 2.13GHz, 32 비트 운영 체제)

편집 : NTFS는 드라이브에서 사용되는 파일 시스템입니다

답변:


5

HDD는 정확한 전송 속도를 가지고 있지 않습니다. 적절한 유지 보수, 즉 조각화되지 않았거나 불량 섹터 등이 있는지에 따라 다릅니다.

HDD가 SATA 2이고 동일한 파티션 인 경우 데이터 전송 속도 일뿐입니다.

동일한 HDD에 두 개의 파티션이있는 경우 버스와 마더 보드간에이 데이터 전송이 필요하지 않습니다. 즉, 버퍼에로드됩니다. (hdd 버퍼 크기에 따라 다릅니다.)

그러나 복사 된 모든 파일에 대해 시스템은 인덱스를 HDD의 MFT (마스터 파일 테이블)에 유지해야하므로 많은 파일을 복사하면 복사 프로세스가 느려집니다. 안티 바이러스가 있으면 복사 된 각 파일을 검사합니다. 그리고 Microsoft 검색 파일 인덱싱 (또는 다른 파일 인덱싱 서비스)을 활성화하면 결과가 더 나빠질 수 있습니다.

많은 파일의 복사본이 느린 이유는 여러 가지가 있다고 생각하지만 이것이 주된 이유입니다.


안티 바이러스 프로그램을 비활성화하면 추출 속도가 10 배 빨라졌습니다. 그런 다음 파일에서 바이러스를 검사했습니다.
fat_mike

30

파일 수가 다른 이유는 무엇입니까?

분명히 "파일 복사"의 "데이터 복사"측면에만 초점을 맞추고 있습니다. 파일은 단순한 데이터 그 이상입니다. 파일 시스템 의 엔티티입니다 . 파일 이름과 속성 및 권한이 있습니다. 파일에 대한이 모든 추가 정보는 "파일이 복사 될 때"데이터와 함께 복제되어야합니다. 이 파일 시스템 오버 헤드를 수행하기 위해 상당한 양의 디스크 I / O가 있습니다.

일반 파일 시스템에서 하나의 파일을 복사하는 절차는 다음과 같습니다.

  • 파일 시스템에서 소스 파일을 찾으십시오. (ㅏ)
  • 디스크에서 소스 파일의 디렉토리 항목을 읽으십시오.
  • 읽기 권한을 확인하십시오.
  • 파일 시스템에서 대상 파일을 찾으십시오. (비)
  • 대상 디렉토리에서 쓰기 권한을 확인하십시오.
  • 새 파일을 수용하기 위해 필요한 경우 디렉토리를 펼치십시오. (씨)
  • 디스크의 디렉토리를 업데이트하십시오. (c1)
  • 사용 가능한 블록을 찾아 할당하고 테이블을 다시 업데이트하십시오. (디)
  • 파일 데이터를 읽고 대상 파일로 복사하십시오 (예 : "파일"복사).
  • 새 파일의 디렉토리 항목을 (크기 및 시간)으로 업데이트하십시오. (이자형)
  • 소스 디렉토리 항목의 액세스 시간을 업데이트하십시오. (에프)

(a) 최소한 이것은 현재 디렉토리를 검색하는 것을 의미합니다. 또는 경로가 파일 시스템의 루트에서 시작될 수 있으며 여러 레벨의 디렉토리를 통과해야합니다.

(b) 최소한 이것은 현재 디렉토리를 검색하는 것을 의미합니다. 또는 경로가 파일 시스템의 루트에서 시작될 수 있으며 여러 레벨의 디렉토리를 통과해야합니다. 대상 파일이 이미 존재하면 복사 진행 또는 중단 방법을 결정하십시오. 대상 파일이 존재하지 않으면 새 디렉토리 항목을 작성해야하며 디렉토리 확장 (즉, 파일 블록 (일명 클러스터) 할당 오버 헤드 ) 이 필요할 수 있습니다 .

(c) 디렉토리를 확장해야하는 경우 사용 가능한 블록을 찾아서 새 블록을 할당하고 새 할당으로 할당 테이블을 수정 한 다음 블록을 디스크에 씁니다 . 대부분의 파일 시스템은 할당 테이블의 여러 복사본을 유지하므로 디스크에 여러 번 쓰는 것을 의미합니다.
(c1) 대상 디렉토리가 발견되면 디스크에서 디렉토리 블록을 읽고 복사 된 파일의 새 디렉토리 항목으로 수정 한 다음 블록을 디스크에 씁니다 .

(d) 파일을 복사하려면 사용 가능한 블록을 찾아 블록을 할당하고 새 할당으로 할당 테이블을 수정 한 다음 블록을 디스크에 씁니다 . 대부분의 파일 시스템은 할당 테이블의 여러 복사본을 유지하므로 디스크에 여러 번 쓰는 것을 의미합니다. 데이터 무결성을 유지하기 위해 파일 시스템은 디렉토리 및 할당 테이블에 대한 디스크 쓰기 작업 을 통합 (지연 및 병합) 하지 않고 새 파일을 작성하고 블록 할당 할 때 즉시 쓰기 작업을 수행 할 수 있습니다.

(예) 데이터가 complele입니다 복사하면 업데이트 적절한 파일 길이와 타임 스탬프와 함께 복사 된 파일에 대한 새로운 디렉토리 항목을 다음 쓰기 디스크에 디렉토리 블록을.

(f) 새로운 "액세스"타임 스탬프로 소스 디렉토리 항목을 업데이트 한 다음 디렉토리 블록을 디스크에 씁니다 .

따라서 하나의 파일 대신 천 개의 파일에 대해이 모든 작업을 수행하면 파일의 데이터 부분을 복사하는 데 시간이 더 걸릴 수 있습니까? 24MB의 파일 하나만 복사하면 1,000 개 파일의 복사 시간과 비교할 내용이 있습니다.

파일 시스템을 백업 할 때 개별 파일을 디스크 나 파티션의 다른 파일 시스템에 복사하는 것은 거의 느리게 사용됩니다. 더 빠른 방법은 소스 디렉토리 항목과 파일 내용을 특수 파일 형식으로 보유 하는 단일 아카이브 파일 을 작성하고 작성하는 것 입니다. 백업 프로그램 및 * nix 명령 'tar'은 이러한 아카이브 파일을 출력 할 수 있습니다. ( 'tar'는 아카이브 파일 만 처리하며 보관 + 압축 유틸리티와 같은 압축을 사용하지 않습니다.) 가장 빠른 백업 방법은 장치의 파일 시스템이 아닌 블록 장치에 쓰는 것이므로 소스 파일 시스템은 다음과 같습니다. 무시되고 (더 많은 데이터로 처리됨) 소스 장치의 블록 별 이미지 복사가 수행 될 수 있습니다.


-1

개념적 비유는 다음과 같습니다.

(비유에 결함이 있음을 명심하십시오. 의견에 의견을 남겨주세요.)

가정 :

  • 정보 전송 에이전트가 == 샘이라고 부르 자. 한 바구니에서 다른 바구니로 계란을 옮기고있다.
  • 정보 전달 매체는 == 내가 추측하는 것입니다. 여기서 중요하지 않습니다.
  • 계란은 ... 공룡과 ... 신화적인 해저 및 용과 같은 다양한 종에서 나옵니다. (알은 정말 클 수 있습니다)
  • 파일 크기 == 계란 볼륨. robbin의 계란 대 draggon의 계란을 생각하십시오.

유추:

그래서 샘은 농장에서 일하는 사람이 있기 때문에 계란을 한 바구니에서 다른 바구니로 옮겨야합니다. 이 농장에는 용과 신화적인 바다 짐승을 포함하여 다양한 알을 낳는 동물들이 있습니다. 샘은 이것이 몇 가지 이유로 굉장하다고 생각합니다. (정말 중요하지는 않지만 이것은 내 비유입니다)
Sam은 2 개의 바구니로 강가에 오한을합니다. 바구니 중 하나는 계란이 들어있는 바구니입니다. 바구니에 든 계란의 크기는

  • 100 bytes바구니 안에 공간 처럼 차지하는 로빈 알

  • 크라켄 계란, 크기는 약 2.7Gb.

샘은 알을 움직이기 시작해야하기 때문에 알을 잡아 움직이기 시작합니다. 그가 용의 달걀을 먼저 옮기기로 결정했다고 가정 해 봅시다. 이제 계란은 매우 거대하고 밀도가 높기 때문에 물건을 다른 바구니에 넣는 데 시간이 걸립니다.
샘은 용의 알을 다른 바구니에 넣고 화나게합니다. 일이 너무 많은 공간을 차지했기 때문에 힘들었습니다. 그것의 이동은 단 하나의 알을 위해 오래 걸렸습니다.

샘은 바보 야

샘은 첫 번째 바구니로 돌아가서 다른 알을 gra습니다. 그는 자신이 정말로 큰 것을 1 개만 가지고 있다는 것을 알고 있습니다. 그러나 100,000,000,000 개의 로빈 알이 남아 있습니다.

보다시피, 샘의 오후는 망가졌습니다. 그의 자연적인 성향은 디노-에그가 움직여야하는 것이 더 나빠질 것이라는 점입니다. 계란과 바구니에 대해 이야기 할 때 의미가 있지만 컴퓨터는 100,000,000,000과 같은 숫자를 처리합니다.

한마디로 :

작은 파일 몇 개를 큰 파일 몇 개에 비해 이동하는 데 시간이 오래 걸리는 이유에 대한 답은 파일 이동 작업과 관련된 비용과 관련이 있습니다. 작은 파일이 많을수록 해당 작업을 수행하는 데 더 많은 시간이 필요합니다. 이것을 보는 또 다른 방법은 정보 밀도에 대해 이야기하는 것입니다.


-2

FAT 읽기, 헤드 위치 변경, 파일 변경시 파일 열기-모두 시간이 필요합니다


그것은 NTFS 드라이브입니다
Trindaz

NTFS에서는 모든 파일 데이터 (파일 이름, 생성 날짜, 액세스 권한 및 내용)가 마스터 파일 테이블에 메타 데이터로 저장됩니다. 마스터 파일 테이블 (MFT)은 NTFS 볼륨의 모든 파일, 디렉토리 및 메타 파일에 대한 메타 데이터를 포함합니다. 파일 이름, 위치, 크기 및 권한이 포함됩니다. 디렉토리 항목은 파일 이름과 "파일 ID"로 구성되며 마스터 파일 테이블의 파일을 나타내는 레코드 번호입니다. 파일 ID에는 오래된 참조를 감지하기위한 재사용 횟수도 포함됩니다.
게으른 오소리

파일 이름, 위치, 크기, 권한 등에 대한 레코드를 작성하는 데 많은 추가 작업이 필요하다는 사실에 근거하여 질문에 대한 귀하의 대답은 무엇입니까? 그곳에서 모든 추가 작업이 시작됩니다.
Trindaz

새로운 만들기 읽기 기존
게으른 오소리
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.