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


29

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

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

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

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

내가 무슨 추위를 알아?

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


3
어딘가에서 다음 문제 설명을 만났습니다. 작동 메모리를 통해 복사 한 경우 idicator는 드라이브에서 데이터를 읽는 프로세스를 보여줍니다. 그러나 리눅스에서 FAT 또는 NTFS와 같은 네이티브가 아닌 파일 시스템을 사용하는 경우 wrighting 프로세스는 USB 스틱보다 훨씬 더 길며 (예 : 200Mb / sec의 읽기 속도에 대한 2Mb / sec wrighting과 같이 100 배 느릴 수 있음) . 따라서 100 %에서 중지되었지만 종료되지 않은 경우 (종료를 표시해야 함)에도 거래 종료를 기다리십시오.
Costas

그 상황에서 진행 상황을 확인할 수 있는지 궁금합니다.

종료 데이터를 0으로 덮어 쓰기 옵션을 사용하여 pendrive를 포맷 해보십시오. trancend 8GB pendrive에서 작동합니다
Akshay Daundkar

이 문제를 겪고 계신 분은 드라이브를 NTFS로 포맷하십시오.
Ricky Boyce

답변:


37

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

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

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

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

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


나는 1 년 이상이 문제에 대한 해결책을 찾고 있었고, 그것이 리눅스의 버그라고 생각했습니다. 고마워
Sidahmed

1
리눅스 멍청한 놈, 누군가 <dirty_bytes> 값을 변경하는 방법을 게시 할 수 있습니까?
Brofessor

@Brofessor 아, 죄송합니다. / proc 세부 정보 대신 공식 이름으로 설명해야합니다. 답변이 업데이트되었습니다.
데이터가없는

1
이것은 unix.stackexchange.com/questions/107703/… 와 유사합니다 . --- 수정 되었어야한다고 믿습니다. 그렇지 않습니다. 웃긴 행동을 멈추기 위해 우분투 18.04에 추가해야했습니다 ...
Rmano

Fedora 30에서도 작동합니다. 현대 리눅스 배포판에서도 그러한 어리석은 행동을보고 놀랐습니다.
sziraqui

0

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

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

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

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