SATA 드라이브에 대한 쓰기 캐싱, NCQ, 펌웨어 버그, 장벽 등에 대해 최근에 읽었으며 정전시 데이터를 안전하게 보호 할 수있는 최상의 설정이 무엇인지 잘 모르겠습니다.
내가 이해 한 바에 따르면 NCQ를 통해 드라이브는 쓰기를 재정렬하여 성능을 최적화하고 커널에 어떤 요청이 실제로 작성되었는지 알려줍니다.
쓰기 캐시는 데이터가 물리적 디스크에 기록 될 때까지 기다리지 않기 때문에 드라이브가 훨씬 더 빠르게 요청을 처리하도록합니다.
NCQ와 쓰기 캐시가 어떻게 혼합되어 있는지 잘 모르겠습니다.
특별히 저널링 된 파일 시스템은 특정 요청이 기록 될 때 확인해야합니다. 또한 사용자 공간 프로세스는 fsync ()를 사용하여 특정 파일을 강제로 플러시합니다. 파일 시스템이 데이터가 디스크에 기록되었음을 확신 할 때까지 fsync ()에 대한 호출은 반환되지 않아야합니다.
SAS 드라이브에서만 볼 수있는 기능 (FUA, Force Unit Access)이 있습니다.이 기능은 드라이브가 캐시를 무시하고 디스크에 직접 쓰도록합니다. 다른 모든 것에는 쓰기 장벽이 있는데, 이는 드라이브에서 캐시 플러시를 트리거 할 수있는 커널에서 제공하는 메커니즘입니다. 이렇게 하면 중요한 데이터뿐만 아니라 모든 캐시가 강제 로 기록되므로 남용 된 경우 fsync ()와 같이 전체 시스템 속도가 느려집니다.
펌웨어 버그가 있거나 데이터가 실제로 쓰여졌을 때 의도적으로 거짓말을하는 드라이브가 있습니다.
드라이브 / 파일 시스템을 설정하는 몇 가지 방법이 있습니다. A) NCQ 및 쓰기 캐시 비활성화 B) NCQ 만 활성화 C) 캐시 쓰기 만 활성화 D) NCQ 및 쓰기 캐시 활성화
장벽이 활성화되어 있다고 가정합니다. BTW, 실제로 활성화되어 있는지 확인하는 방법은 무엇입니까?
정전이 발생하면 디스크에 적극적으로 쓰는 동안 옵션 B (NCQ, 캐시 없음)가 파일 시스템 저널 및 데이터 모두에 안전하다고 생각합니다. 성능이 저하 될 수 있습니다.
배리어 또는 FUA를 사용하는 경우 옵션 D (NCQ + 캐시)는 파일 시스템 저널 및 fsync ()를 사용하는 응용 프로그램에 안전합니다. 캐시에서 대기중인 데이터는 좋지 않으며, 파일 시스템이 데이터를 감지하고 (체크섬) 적어도 파일 시스템은 불안정한 상태가 아닙니다. 성능면에서 더 좋습니다.
그러나 내 질문은 의미가 있습니다 ... 나는 아무것도 놓치고 있습니까? 고려해야 할 다른 변수가 있습니까? 이를 확인할 수있는 도구가 있습니까? 드라이브가 정상적으로 작동합니까?