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

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

내 시스템에 인덱싱 엔진이 있다는 것을 알았습니다.상기하다직장에서 많은 디스크를 사용하고 Firefox 추가 기능의 설정을 변경할 때마다 디스크 활동이 발생합니다. 이러한 응용 프로그램이 변경 사항을 즉시 디스크에 동기화하도록 설계되었는지, 아니면 시스템 구성의 일부 설정으로 인한 것인지는 알 수 없습니다.

알아낼 방법이 있나요?

추신. 질문을 남겼어요소프트웨어 추천회상/xapian 문제에 관해.

답변1

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

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

fdatasync과도한 사용이나 그와 유사한 이유로 시스템에서 응용 프로그램의 속도가 느려지는 경우 fsync다음을 사용할 수 있습니다.내 데이터 먹어무효화 fsync/ fdatasync전화. 그러나 시스템이 중간에 충돌하면 일관성 없는 데이터가 남을 수 있다는 점에 유의하십시오.

내 대답이 Firefox 부가 기능의 설정을 기억하거나 변경하는 것과 관련이 있는지 잘 모르겠습니다. 이러한 작업은 다음과 같을 가능성이 높습니다.읽다디스크에서. 특히 생각해 보면 그 역할은 많은 데이터를 읽는 것입니다!

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

1 파일 시스템 설계의 맥락에서 복원력은 시스템 충돌 시 파일 시스템의 변경 사항이 보존되는지 여부에 대한 질문을 나타냅니다.

관련 정보