내 Linux 시스템이 변경 사항을 디스크에 즉시 동기화하도록 구성되었는지 어떻게 확인할 수 있나요?

내 Linux 시스템이 변경 사항을 디스크에 즉시 동기화하도록 구성되었는지 어떻게 확인할 수 있나요?

내 시스템에 인덱싱 엔진이 있다는 것을 알았습니다.회상하다작동할 때 많은 디스크를 사용하고 Firefox 애드온 설정을 변경할 때마다 디스크 활동이 있었다는 것입니다. 해당 응용 프로그램이 변경 사항을 즉시 디스크에 동기화하도록 설계되었는지, 아니면 시스템 구성의 일부 설정으로 인한 것인지는 알 수 없습니다.

알아낼 수 있는 방법이 있나요?

추신. 에 질문을 남겼습니다소프트웨어 추천회상/xapian 문제에 대해.

답변1

의 출력에 파일 시스템이 나타나는지 확인하십시오 grep -w sync /proc/mounts. 스포일러: 대답은 '아니요'입니다. 즉시 동기화로 파일 시스템을 마운트하는 것은 매우 느립니다. (또한 작은 쓰기가 많이 발생하여 플래시 장치의 수명이 단축됩니다.)

일부 애플리케이션은 다음을 호출하여 데이터를 디스크에 플러시합니다.fdatasync. 불행히도 Unix API는 복원력1과 관련하여 잘 설계되지 않았습니다. 애플리케이션 관점에서 일부 변경 사항은 복원력이 있어야 합니다. 애플리케이션이 변경 사항이 저장되었음을 나타내는 데이터를 원격 시스템으로 전송했기 때문입니다. 이 경우 fdatasync올바른 인터페이스입니다. 그러나 많은 애플리케이션에는 뭔가 다른 것이 필요합니다. 즉, 1을 변경한 후 변경 2를 수행하고 시스템이 중간에 충돌하면 다시 시작한 후 변경 1 없이는 변경 2가 발생하지 않는다는 보장이 필요합니다. (예: 변경 1 = 새 버전 작성) 파일 변경 2 = 이전 버전 삭제.) 파일 시스템은 성능을 위해 파일 시스템 쓰기를 재정렬합니다. 일반적으로 이는 애플리케이션에 표시되는 내용이 아니라 파일 시스템 캐시/버퍼와 디스크 사이에서 발생하는 일에 관한 것이므로 애플리케이션에 표시되지 않습니다. 그러나 시스템 충돌이 발생하는 경우 디스크 내용은 실제 디스크 쓰기 순서를 반영합니다. "이 변경 사항은 해당 변경 사항이 발생하기 전에 발생해야 합니다"라고 말하는 API가 없으므로 애플리케이션은 fdatasync가난한 사람의 대체 수단으로 사용됩니다(변경 사항 1을 수행하고 fdatasync디스크에 전파되었는지 확인하기 위해 호출한 다음 변경 2를 수행함). 이는 특히 플래시와 같이 쓰기 속도가 느린 미디어의 경우 성능에 부정적인 영향을 미칠 수 있습니다.

fdatasync또는 그 사촌 의 과도한 사용으로 인해 시스템에서 응용 프로그램이 지나치게 느린 경우 fsync다음을 사용할 수 있습니다.먹다 데이터fsync/ 호출 을 무효화합니다 fdatasync. 그러나 시스템이 중간에 충돌하는 경우 일관성 없는 데이터가 남을 수 있다는 점에 유의하세요.

내 답변이 회상과 관련이 있는지 또는 Firefox 애드온 설정 변경과 관련이 있는지 잘 모르겠습니다. 그 수술은 아마도독서디스크에서. 특히 기억해 보세요. 이 작업은 많은 양의 데이터를 읽는 것입니다!

또한 변경 사항이 즉시 디스크에 동기화되지 않더라도 일부 데이터가 기록될 것으로 예상할 수 있습니다. 데이터가 디스크에 기록되지 않으면 메모리에 남아 있어야 하며, 그동안 메모리는 더 유용한 다른 용도로 사용될 수 없습니다. 더욱이, 디스크를 바쁘게 유지하지 않는 것은 낭비입니다. 기록할 데이터가 있으면 커널은 이를 쓰기 시작하고 애플리케이션은 계속해서 실행되어 더 많은 데이터를 생성합니다.

¹ 파일 시스템 설계 측면에서 복원력은 시스템이 충돌할 경우 파일 시스템에 대한 변경 사항이 유지되는지 여부에 대한 문제입니다.

관련 정보