2014-09-24 8 views
0

fsync를 사용하여 SD 카드에 최대한 빨리 파일을 쓰려고했습니다. 그러나 fsync는 실제로 파일이 SD 카드에 기록되기 전에 차단하지 않습니다. 데이터가 실제로 SD 카드에 저장되기까지는 약 5-6 초가 걸리는 것 같습니다. 그러나 파일 시스템을 마운트 (ext3, ext4 시도) 커밋 = 1 또는 동기화 옵션이 작동하는 것처럼 보이지만 데이터는 1 초 안에 재부팅 한 후에도 안전합니다. 내 질문은 어쨌든 파티션 넓은 솔루션 리조트없이 플러시를 달성하는 것입니다? 나는 리눅스 커널 2.6.37을 사용하고있다. 감사합니다fsync가 ext3 또는 ext4 시스템에서 작동하지 않습니다.

+0

ext3에서 작동하지 않습니까? ext4 문제 [fsync()를 올바르게 사용하지 않는 응용 프로그램의 데이터 손실] (https://www.thomas-krenn.com/en/wiki/Ext4_Filesystem#Data_Loss_with_Applications_that_do_not_use_fsync.28.29_correctly)을 참조하십시오. – pevik

답변

0

내용이 SD 카드에 기록되도록하려면 프로그램을 종료하기 전에 --flushbufs를 사용하여 blockdev를 호출해야합니다. 쓰기 프로세스를 벤치마킹하려면 모든 쓰기 작업 후에 이것을 호출 할 수 있습니다.

/sbin/blockdev --flushbufs $dev