그놈, 노틸러스 복사 파일을 USB로 100 % 가까이에서 멈춤 100 %에서 멈 춥니 다.

전에 비슷한 문제가 있었지만 어떻게 해결했는지 기억하지 못합니다.

FAT를 사용하여 USB 스틱에 무언가를 복사하려고하면 끝 부분 근처에서 때로는 100 %에서 멈 춥니 다. 물론 메모리 스틱을 다른 곳으로 옮길 때 완전한 파일이 포함되어 있지 않습니다. (파일은 영화입니다!)

mount -o flush로 장치를 마운트하려고 시도했지만 동일한 문제가 발생합니다.

또한 새로운 FAT 파티션으로 USB 스틱을 포맷했습니다 …

내가 무슨 추위를 알아?

추신 : 나는 그것이 데비안 인 OS와 관련이 없다고 생각하며 SSD 드라이브에서의 대처가 멈추지 않는다고 생각합니다.



답변

그렇게하는 이유는 프로그램이 “이 데이터 쓰기”라고 말하고 리눅스 커널은 메모리 버퍼에 복사하여 디스크로 이동 한 다음 “ok, done”이라고 말합니다. 그래서 프로그램은 모든 것을 복사했다고 생각합니다. 그런 다음 프로그램이 파일을 닫지 만 갑자기 버퍼가 디스크로 푸시되는 동안 커널이 대기하게됩니다.

따라서 불행히도 프로그램은 버퍼를 모르기 때문에 버퍼를 플러시하는 데 걸리는 시간을 알려줄 수 없습니다.

고급 사용자 트릭을 사용하려면 커널 매개 변수 vm.dirty_bytes15000000(15MB) 로 설정하여 Linux에서 사용하는 버퍼 크기를 줄일 수 있습니다 . 이는 응용 프로그램이 실제 진행보다 15MB를 초과 할 수 없음을 의미합니다. (커널을 사용하여 커널 매개 변수를 즉시 변경할 수 sudo sysctl vm.dirty_bytes=15000000있지만 재부팅을 계속 유지하려면 /etc/sysctl.conf배포판에 따라 구성 파일을 변경해야합니다 .)

부작용은이 설정으로 컴퓨터의 데이터 쓰기 처리량이 낮을 수 있지만 전체적으로 많은 데이터를 쓰는 동안 프로그램이 오래 실행되고 있음을 알면 혼란 스럽습니다. 프로그램은 작업으로 완료된 것으로 보이지만 커널이 실제 작업을 수행함에 따라 시스템이 심하게 지연됩니다. dirty_bytes비교적 작은 값으로 설정 하면 사용 가능한 메모리가 부족하고 갑자기 많은 데이터를 쓰는 프로그램을 실행할 때 시스템이 응답하지 않는 것을 방지 할 수 있습니다.

그러나 너무 작게 설정하지 마십시오! 커널이 1/4 초 이하의 시간에 일반 하드 드라이브로 버퍼를 플러시 할 수 있다고 대략 15MB를 사용합니다. 시스템이 “게으른”느낌이 들지 않게합니다.


답변

오래된 질문이지만 문제가 여전히 발생하는 것처럼 보입니다. 제안한대로 버퍼를 15MB로 설정여기에 Ubuntu 19.04에서 작동하지 않아 시스템이 중단되었습니다.

1.5GB 파일을 빈 (새로 포맷 된) FAT32 16GB 드라이브에 복사하려고했습니다. 나는 그것이 운이 없는지 확인하기 위해 약 10 분 동안 달렸다.

NTFS로 다시 포맷하면 10 초 이내에 작업이 완료됩니다. FAT32가 2GB 미만의 것을 허용해야하기 때문에 이것이 왜 중요한지 모르겠지만 제대로 작동하는 것 같습니다. MacOS와 함께 사용하려는 드라이브에 대한 이상적인 수정은 아니지만 다른 모든 사용 사례에 대한 쉬운 해결 방법입니다. exFAT도 비슷하게 작동했을 것이라고 생각했지만 테스트하지는 않았습니다.


답변