나는 BBWC (Battery-backed write cache)가 무엇을 하려는지 잘 알고 있으며 이전에는 우수한 UPS로도 서버에서 사용했습니다. 보호 기능을 제공하지 않는 명백한 장애가 있습니다. 실제로 실제로 이점을 제공하는지 이해하고 싶습니다.
(NB는 특히 BBWC를 가지고 있고 충돌 / 실패한 사람들과 BBWC가 회복에 도움이되었는지 아닌 사람들의 답변을 찾고 있습니다)
최신 정보
여기에 피드백을 한 후, BBWC가 어떤 가치를 추가하는지에 대해 회의적입니다.
데이터 무결성에 대한 확신을 갖기 위해 파일 시스템은 데이터가 비 휘발성 스토리지에 커밋 된 시점을 반드시 알아야합니다. 데이터가 디스크에 커밋되었을 때 많은 디스크가 놓여 있다는 점에 주목할 가치가 있습니다 ( http://brad.livejournal.com/2116715.html ). 온 디스크 캐시를 비활성화하면 디스크를 더 정직하게 만들 수 있다고 가정하는 것이 합리적이지만 여전히이 경우에 대한 보장은 없습니다.
BBWC의 일반적으로 큰 버퍼로 인해 배리어는 디스크에 커밋하는 데 훨씬 더 많은 데이터가 필요하므로 쓰기 지연이 발생할 수 있습니다. 일반적인 조언은 비 휘발성 쓰기 백 캐시를 사용할 때 배리어를 비활성화하는 것입니다. 디스크 캐싱). 그러나 이는 쓰기 작업의 무결성을 손상시키는 것으로 보입니다. 비 휘발성 스토리지에 더 많은 데이터가 유지된다고해서 더 일관성이 있다는 의미는 아닙니다. 실제로 논리적 트랜잭션들 사이의 경계가 없다면 논란의 여지가없는 것보다 일관성을 보장 할 기회가 적어 보인다.
BBWC가 디스크에 커밋하지 않고 데이터가 비 휘발성 스토리지에 들어가는 시점에서 장벽을 인식해야한다면 성능 저하없이 데이터 무결성 요구 사항을 충족하는 것으로 보이며 장벽이 여전히 활성화되어 있어야 함을 의미합니다. 그러나 이러한 장치는 일반적으로 데이터를 물리적 장치로 플러시 (방벽이 있으면 상당히 느림)하고 방벽을 비활성화하는 광범위한 조언과 일치하는 동작을 나타내므로 이러한 방식으로 작동 할 수 없습니다. 왜 안돼?
OS의 I / O가 일련의 스트림으로 모델링 된 경우 OS에서 쓰기 캐싱을 관리 할 때 쓰기 장벽의 차단 효과를 최소화 할 수있는 범위가 있습니다.이 수준에서는 논리적 트랜잭션 (단일 스트림 만) )를 커밋해야합니다. 반면, 어떤 비트의 데이터가 트랜잭션을 구성하는지 알지 못하는 BBWC는 전체 캐시를 디스크에 커밋해야합니다. 커널 / 파일 시스템이 실제로 이것을 구현하는지 여부는 현재 투자하려는 것보다 훨씬 많은 노력이 필요합니다.
디스크에 결합 된 것을 디스크에 결합하면 커밋 된 내용과 갑작스런 전원 손실로 인해 손상이 발생합니다. 저널링 또는 로그 구조 파일 시스템을 사용하면 정전 후 전체 fsck를 수행하지 않아 손상이 단독으로 감지되지 않을 가능성이 높습니다. 그것을 수리하려는 시도.
고장 모드와 관련하여 필자의 경험에 따르면 대부분의 갑작스런 정전은 주 전원 손실로 인해 발생합니다 (UPS 및 관리 종료로 쉽게 완화됨). 랙에서 잘못된 케이블을 뽑는 사람들은 데이터 센터 위생이 불량하다는 것을 의미합니다 (라벨 및 케이블 관리). UPS에 의해 방지되지 않는 일부 유형의 갑작스런 전원 손실 이벤트가 있습니다. PSU 또는 VRM의 장애로 장애가있는 BBWC는 장애 발생시 데이터 무결성을 제공하지만, 이러한 이벤트가 얼마나 흔한가? 여기에 응답이 없기 때문에 매우 드문 판단입니다.
확실히 내결함성을 스택에서 더 높이 옮기는 것은 BBWC에 비해 훨씬 더 비쌉니다. 그러나 서버를 클러스터로 구현하면 성능 및 가용성에 대한 다른 많은 이점이 있습니다.
갑작스런 전원 손실로 인한 영향을 완화 할 수있는 다른 방법은 SAN을 구현하는 것입니다. AoE는이를 실용적인 제안으로 만들지 만 (실제로 iSCSI의 요점을 볼 수는 없지만) 비용이 더 높습니다.