두 개의 외부 드라이브 간에 파일을 이동할 때 해당 파일이 일시적으로 컴퓨터의 내부 하드 드라이브에 기록됩니까?

두 개의 외부 드라이브 간에 파일을 이동할 때 해당 파일이 일시적으로 컴퓨터의 내부 하드 드라이브에 기록됩니까?

두 개의 외부 USB 드라이브 간에 대량의 데이터를 이동하는 동안 랩톱 속도가 느려지는 것을 발견했습니다. 내가 이해한 바로는 사용 가능한 RAM이 충분하지 않은 한 파일은 중간 위치(예: /tmp 또는 이와 유사한 위치)에 기록되지 않습니다. 내가 잘못?

답변1

이 사본이나 이에 상응하는 GUI 사본이 있는 경우

cp -a /media/external/disk1/. /media/external/disk2/

데이터는 첫 번째 디스크의 파일 시스템에서 읽혀지고 두 번째 디스크에 직접 기록됩니다. 다른 저장 위치에 대한 중간 쓰기는 없습니다. 속도가 느려지는 경우 두 디스크가 동일한 USB 컨트롤러를 공유하고 버스 액세스를 위해 경쟁하고 있을 가능성이 있습니다.

이 외에도 컴퓨터 제조업체/모델, 버스 토폴로지 등과 같은 추가 세부 정보를 제공해야 합니다.

답변2

내부와 외부에 대한 개념이 없습니다. 운영 체제는 상자 안에 무엇이 있는지, 내부에 무엇이 있고 외부에 무엇이 있는지 전혀 모릅니다. 유일한 특수 파일 시스템(약간만)은 읽기 전용으로 마운트할 수 있는 루트 파일 시스템입니다. 읽기 전용 루트 파일 시스템으로 거의 모든 작업을 수행할 수 있습니다(그러나 루트 파일 시스템의 내용은 변경할 수 없습니다).

답변3

TL, DR: 아마도 캐시일 겁니다.

두 개의 이동식 드라이브 간에 데이터를 복사하거나 이동해도 내부 드라이브에 데이터가 저장되지 않습니다. 복사 프로그램은 원본 드라이브에서 데이터 블록을 읽고 이를 대상 드라이브에 쓴 후 다음 데이터 블록에 대해 프로세스를 반복합니다. 복잡한 프로그램은 여러 블록을 병렬로 복사하여 복사 속도를 높이려고 시도할 수 있지만 복사하는 동안 로드가 더 많이 발생합니다.

드라이브에 액세스하려면 파일 시스템과 실제 드라이브 액세스 모두에 대해 약간의 CPU 시간이 필요합니다. 작은 파일이 많으면 파일 시스템 관리 비용이 적고, 큰 파일의 경우 무시할 수 있습니다. 드라이브 액세스 비용은 USB 컨트롤러 및 드라이버의 품질에 따라 다릅니다. USB 컨트롤러와 해당 Linux 드라이버는 일반적으로DMA꽤 효율적이므로 여기에서도 CPU 비용이 많지 않지만 USB에 대해 잘 모르므로 여기서는 틀릴 수 있습니다.

복사되는 데이터는캐시됨디스크에서 읽은 다른 데이터와 같습니다. RAM 크기에 비해 많은 양의 데이터를 복사하는 경우 복사된 데이터가 자주 액세스하는 파일을 대체하거나 응용 프로그램 메모리의 일부가 스왑으로 이동하게 됩니다. 이로 인해 성능이 크게 저하될 수 있습니다. 시스템은 소스 디스크에서 읽은 데이터가 즉시 기록되며 RAM에 보관할 필요가 없다는 사실을 모르기 때문에 캐시 할당과 관련하여 최적의 결정을 내리지 않는 경향이 있습니다.

Linux에서 대량의 데이터를 복사할 때 다음을 사용해 보세요.캐시 없음(주요 배포판에서 패키지로 사용 가능) 읽은 데이터의 대부분이 캐시에 들어 가지 않는 모드에서 명령을 실행하는 명령줄 유틸리티입니다. 예를 들어:

nocache mv /media/source/dir /media/target/dir

nocacheGUI 애플리케이션에서 실행하려면 이 접두어를 사용하십시오 . 단, 애플리케이션이 정상적으로 시작되는 경우에만 해당됩니다. 일부 데스크탑 환경에서는 중앙 프로세스(예: kdeinit를 사용하는 KDE)를 통해 응용 프로그램을 시작하거나 기존 프로세스에서 창을 열 수 있습니다. 이 경우 아무런 nocache효과가 없습니다.

개인 정보 보호가 걱정된다면 이런 일이 일어날 가능성은 없지만 일부 데이터가 스왑 공간에 들어갈 가능성이 있습니다. Replicator는 짧은 기간 동안만 각 데이터 블록을 메모리에 보관하고 오랫동안 액세스되지 않은 메모리 부분에 대해 스왑이 먼저 사용되기 때문에 이런 일이 발생할 가능성은 거의 없습니다.

관련 정보