답변:
이것을 대신 사용하십시오 :
sudo dd if=install57.fs of=/dev/sdc conv=fsync
이렇게하면 fsync()
매회마다 write()
시스템 호출. 이 세력 dd
아무것도 캐시하지 않습니다. fsync 맨 페이지의이 부분을 참조하십시오 ( man 2 fsync
) :
fsync() transfers ("flushes") all modified in-core data of (i.e., modified buffer cache
pages for) the file referred to by the file descriptor fd to the disk device (or other
permanent storage device) where that file resides. The call blocks until the device reports
that the transfer has completed. It also flushes metadata information associated with the
file (see stat(2)).
이것은 커널의 기본 동작입니다. Linux 커널은 다음과 같이 쓰기 및 읽기 캐시를 관리합니다. write()
syscall이 실행되면 데이터가 캐시에 빠르게 기록되고 쓰기 완료 상태가 프로세스로 전송됩니다. 버퍼가 필요할 때나 버스에 여유 시간이있을 때 데이터는 캐시에서 하드 디스크로 기록됩니다.
conv=fsync
다음과 같은 블록 장치에 쓸 때 기본값입니다. dd
아무것도 캐시하지 않습니까? 이것에 대한 좋은 대답을 찾고 : unix.stackexchange.com/questions/312687/...
이것은 Linux 및 대부분의 다른 운영 체제에서 읽기 및 쓰기 캐시를 모두 수행하기 때문에 발생합니다. 대부분의 경우 운영 체제의 응답 성이 향상됩니다.
캐시 된 데이터가 작성되었는지 확인하려면 다음을 사용하십시오. sync
, 아시다시피. Linux는 튜닝 할 수있는 많은 설정을 제공합니다. 이 기사 일부 설정에 대한 개요를 제공합니다. 예를 들어 vm.dirty_background_bytes를 0으로 설정하여 커널이 플러 셔 스레드를 즉시 시작하도록 할 수 있습니다.
커널은 (상대적으로 느린) 디스크를 피하기 위해 메모리에 데이터를 보관합니다. 읽기 및 쓰기. 이렇게하면 성능이 향상되지만 컴퓨터 충돌로 인해 데이터가 손실되거나 파일 시스템이 손상 될 수 있습니다. sync는 메모리의 모든 내용이 디스크에 기록되도록합니다.
노트 : unmount
(또는 추출) 자동 호출 sync
이것은 보통의 파일 시스템 사용법에서 이것을 숨 깁니다.
/dev/sdc
시스템의 실제 장치이며 파일에 쓰지 않습니다./dev/sdc
? ~을해라.ls --color /dev
-/dev/sdc
기기라면 노란색이어야합니다.