x86_64 장치에서 Ubuntu 18.04를 사용하고 있습니다.
알 수 없는 문제가 몇 달 동안 저를 괴롭혀왔고 재현할 수 없습니다. 즉, 애플리케이션의 구성 파일이 손상되었다는 것입니다. 어제 마침내 이런 일이 두 번 발생하는 것을 확인하고 문제의 원인을 확인했습니다. 사용자가 SFTP를 통해 새 프로필을 업로드한 후 장치를 분리했다가 다시 연결하여 다시 시작했습니다.
나는 OS가 디스크 쓰기를 버퍼링한 다음 이를 디스크에 커밋할 시기를 선택한다고 생각합니다. 버퍼가 플러시되기 전에 장치의 전원이 꺼지면 쓰기가 손실됩니다. 이는 손상된 파일로 나타납니다. 크기는 0입니다.
확실한 해결책은 이 (끔찍한) 관행을 중단하고 사용자가 장치를 안전하게 재부팅하도록 권장하는 것입니다(재부팅하면 쓰기가 플러시되므로). 나는 이를 장려하려고 노력하지만 불행하게도 사용자는 장치를 재부팅하기 위해 플러그를 뽑는 데 익숙합니다. 모든 사람에게 올바른 방법으로 시작하라고 말하는 것은 쉽지 않습니다.
따라서 첫 번째 질문은 쓰기가 디스크에 더 빨리 플러시될 가능성이 높도록 쓰기를 적극적으로 플러시하는 방법이 있는지입니다. 이 동작에 영향을 미치기 위해 커널 매개변수를 조정할 수 있는 방법이 있다고 생각합니다.
거의 모든 중요한 파일 업로드가 응용 프로그램별 디렉터리에 있다는 것을 알고 있으므로 해당 디렉터리에 대한 쓰기를 수신하고 강제로 디스크 동기화를 수행하는 프로그램을 사용할 수 있는지도 알고 싶습니다. 이는 전체 운영 체제가 아닌 해당 디렉터리에 대해서만 빠른 새로 고침을 강제하므로 바람직할 수 있습니다. 마찬가지로, 디스크의 단일 파티션에만 영향을 미치는 솔루션이 있다면 그것으로 충분할 것입니다. 응용 프로그램별 파일을 전용 파티션으로 이동하는 것이 쉽지 않기 때문입니다.
Linux에 디스크 쓰기를 사전에 플러시하도록 지시하는 가장 좋은 방법은 무엇입니까? 특정 디렉터리나 디스크 파티션에 대해서만 이 작업을 효율적으로 수행할 수 있는 솔루션이 있습니까?
답변1
파일 하나만 동기화할 수 있습니다.동기화또는 (메타데이터 변경 없음)데이터 동기화, 단지 파일 시스템파일 시스템 동기화또는 다음과 관련된 모든 것동기화. 하지만 그냥 디렉토리인가요? sync /var/log/syslog
디렉토리만 동기화하는 예입니다.