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


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.