
다음 명령을 사용하여 USB 스틱에 ISO를 복사하려고 합니다.
sudo dd bs=4M if=lubuntu-17.04-desktop-amd64.iso of=/dev/sdc status=progress
아주 간단합니다. ISO의 크기는 912M입니다. 프로그램이 종료되지 않고 여기서 출력 텍스트가 정지되는 이유는 무엇입니까?
956301312 bytes (956 MB, 912 MiB) copied, 11.216 s, 85.3 MB/s
프로그램 실행을 중지할 수도 없습니다 ctr-c
.
답변1
표시되는 동작은 dd
작업 후에 디스크의 데이터만 동기화하는 것입니다. IO 작업을 최적화하기 위해 Linux는 종종 요청된 것보다 더 큰 청크로 데이터를 읽고(미리 읽기) 결합할 수 있도록 쓰기를 지연합니다(더티 캐시). 작업이 끝나면 dd
디스크에 있는 파일을 동기화하거나 커널이 이를 암시적으로 수행하며 모든 쓰기가 완료될 때까지 프로세스는 활성 상태를 유지합니다.
머신에 다른 대규모 IO 작업이 없는 경우 "Dirty:" 값을 확인하여 쓸 데이터가 얼마나 남아 있는지 추정할 수 있습니다. /proc/meminfo
이는 디스크에 쓰기 위해 보류 중인 총 데이터 양입니다.
시스템이 한 번에 메모리에 기록되지 않은 채로 남겨둘 수 있는 데이터의 양은 다음 sysctl 튜닝 노브를 사용하여 제어할 수 있습니다. 기본적으로 비율만 사용됩니다. 값을 백분율(비율) 또는 바이트 단위로 정의할 수 있습니다.
vm.dirty_background_ratio
vm.dirty_ratio
vm.dirty_background_bytes
vm.dirty_bytes
이러한 매개변수에 대한 공식 문서는 여기에서 찾을 수 있습니다.