는 --write-mostly
, --write-behind
에 의해 처리됩니다 md
내부적으로 드라이버. md
기본적으로 어떤 데이터가 작성되었지만 아직 누락 된 데이터를 기록하는 쓰기 의도 비트 맵 (쓰기 방지 기능의 필수)과 같은 메타 데이터를 유지합니다. 데이터가 쓰기 장치에 아직 도달하지 않은 경우 전원 손실 이벤트가 발생하는 경우에 필요합니다. 이 경우 영향을받는 데이터 영역이 다시 동기화됩니다 (이 경우 SSD에서 읽고 HDD에 씁니다).
그러나 커널 수준에서 어떻게 캐시됩니까?
후기 쓰기의 경우 md 드라이버는 기본적으로 쓰기 요청을 내부적으로 복제합니다. 마스터 쓰기 요청은 기본 드라이브로 가서 상위 계층에 "이미 완료했습니다"라고 알려줍니다. 복사 된 쓰기 요청은 RAID의 가장 뒤에있는 쓰기 쪽을 유지하며 아무 것도 모르게 완료되기까지 더 오래 걸릴 수 있습니다.
그런 다음 레이드 계층은 대기중인 쓰기 대기 요청이 여전히 큐에있는 동안 대부분의 쓰기 장치에서 데이터를 읽지 않도록하기 위해 많은 단계를 수행합니다. 대부분의 쓰기 장치에서 데이터를 읽는 이유는 무엇입니까? 글쎄, SSD가 고장 났기 때문에 남아있는 전부입니다. 복잡하고 write-behind는 몇 가지 경우를 소개합니다.
그렇기 때문에 RAID-1 수준에서만 지원되며 다른 것은 지원하지 않습니다. 이론적으로 SSD를 기본적으로 RAID-0으로, 2 개의 패리티 HDD를 쓰기-비하 모드로 설정하는 것이 의미가있을 수 있지만, 이와 같은 쓰기-비하 인 RAID-6은 지원되지 않습니다. RAID-1 전용이며 거의 사용되지 않습니다.
다른 캐시 설정은 이것에 의해 영향을받지 않습니다. 기본적으로 전체 캐싱 메커니즘은 md
드라이버가 내부적으로 구현 한 방식에 대해서는 거의 신경 쓰지 않습니다 . 캐시는 그 일을하고 md는 그 일을합니다. 따라서 파일 시스템 캐시는 md 이상의 파일 시스템과 베어 드라이브의 파일 시스템에 대해 동일하게 작동합니다. (현실은 그보다 더 복잡하지만이 방법으로 생각할 수 있습니다.)