대규모 USB 복제를 위한 동기식 또는 비동기식?

대규모 USB 복제를 위한 동기식 또는 비동기식?

저는 하나의 "소스" pendrvie에서 다른 여러 파일로 파일을 복사하는 bash 스크립트를 작성 중입니다(설치되지 않은 경우 드라이브를 FAT32로 포맷합니다).

rsync를 사용하여 파일을 복사하고 있습니다.

나는 rsync가 매우 빠르게 완료되고 때로는 500MB/s와 같은 터무니없는 쓰기 속도를 보고하지만 일반적으로 15MB/s로 유지되는 것을 확인했습니다.

문제는 나중에 드라이브를 마운트 해제하는 데 최대 몇 분이 걸릴 수 있다는 것입니다. 이는 시스템 디스크 캐싱 및 비동기 I/O 때문이었습니다.

기본 "비동기" 모드 대신 "동기화" 모드로 드라이브를 마운트하면 rsync 프로세스가 실제 쓰기 속도를 표시하고 쉽게 모니터링할 수 없는 긴 언로드를 피할 수 있는지 궁금합니다.

실제 진행 상황을 추적하고 합리적인 ETA를 생성하는 것이 더 쉬울 것 같지만 어떻게든 성능이 저하되고 드라이브가 아닌 일부 멋진 기능(모든 복사본을 소스에서 다시 읽도록 강제하는 등)을 비활성화할까봐 걱정됩니다. RAM 캐시).

이 특정 사용 사례에서 동기식은 비동기식에 비해 어떤 장점과 단점이 있습니까?

답변1

예, 디스크 캐싱 때문입니다. 보류 중인 모든 쓰기는 마운트 해제 전에 완료되어야 합니다.

이를 설치해도 필요한 전체 시간이 단축되지는 않습니다. 작성해야 하는 내용은 종료 여부에 sync관계없이 작성해야 합니다 . rsync실제로 마운트하면 sync특정 블록(예: 디렉터리)을 불필요하게 여러 번 작성하게 되어 스틱의 수명이 약간 단축되고 필요한 총 시간도 늘어납니다.

모니터링하고 싶다면실제atop쓰기 속도, 또는 같은 다른 도구를 사용하면 iotop특정 장치의 쓰기 속도가 표시됩니다.

전체 거래를 모니터링하거나 스크립트하는 것도 쉽습니다. 최종 반환을 기다리면 완료될 umount때까지 걱정할 필요가 없습니다 .rsync

그래서 나는 그것을 사용하지 않는 것이 좋습니다 sync.

관련 정보