%20BBU%EB%9E%80%20%EB%AC%B4%EC%97%87%EC%9E%85%EB%8B%88%EA%B9%8C%3F.png)
BBU의 목적이 무엇인지 궁금합니다. 내가 처음 이해한 것은 정전 중에 캐시가 디스크에 데이터를 쓸 수 있다는 것이었습니다. 그러나 일부 사양에 따르면 BBU는 최대 72시간 동안 데이터를 보관할 수 있습니다. 나는 데이터가 밀리초 내에 디스크에 기록될 것으로 예상합니다(디스크에 여전히 전원이 있다는 점을 감안할 때).
그렇다면 BBU는 캐시뿐만 아니라 몇 초 동안 전체 디스크도 보호해야 할까요? 캐시에 남아서 전원이 다시 들어올 때까지 기다리는 대신 캐시 데이터가 디스크에 기록되기 때문에 훨씬 더 안전하지 않을까요? 약 1초 후에 디스크가 종료될 수 있습니다.
답변1
디스크에 전원을 공급하지 않고 시스템을 다시 온라인 상태로 전환할 때까지 (이 경우) 최대 72시간 동안 캐시에 데이터를 보관합니다. 머신 백업의 전원을 켜면 캐시 내용이 다시 디스크에 기록됩니다.
그것이 하는 일은 정전으로부터 보호하는 것뿐입니다. (어떤 이유로) 데이터를 디스크에 완전히 플러시하지 않고 시스템의 전원이 꺼지면 배터리는 시스템을 다시 시작할 수 있을 때까지 캐시 내용을 활성 상태로 유지합니다.
디스크가 외부 디스크 어레이에 있거나 다른 전원 회로에 있을 수 있으므로 이는 디스크용 UPS가 아닙니다. UPS도 고장날 수 있습니다.
답변2
다음과 같이 작동합니다:
대부분의 운영 체제에는 소위 "동기 쓰기"를 허용하는 시스템 호출이 있습니다. 이는 쓰기 작업 중에 쓰기가 완료되면 해당 쓰기가 디스크에 커밋되었음을 보장한다는 의미입니다.
따라서 동기 쓰기는 캐시되지 않습니다. 완료될 때까지 애플리케이션을 차단합니다. 이러한 종류의 작업은 디스크가 충분히 유휴 상태가 될 때까지 OS 메모리에 데이터를 보관한 다음 데이터를 쓰는 캐시된 쓰기보다 확실히 느립니다.
데이터베이스 소프트웨어와 같은 일부 중요한 소프트웨어는 정전 시 절반만 작성된 업데이트가 데이터베이스 무결성에 해로울 수 있으므로 중요한 데이터에 대해 동기식 쓰기를 수행합니다.
RAID 컨트롤러는 RAID-5 쓰기 속도가 느리기로 악명 높으므로 응용 프로그램 소프트웨어가 동기식 쓰기를 많이 사용하는 경우 문제가 됩니다. 이러한 이유로 RAID-5 컨트롤러에는 자체 캐시가 장착되어 있습니다.
RAID 컨트롤러가 하는 일은 데이터를 캐시에 기록하는 대신 OS에 LIES를 기록하여 데이터가 실제로 RAID 캐시에 남아 있지만 디스크에 데이터를 커밋했음을 알리는 것입니다.
하지만 데이터가 RAID 컨트롤러의 버퍼에 있는 동안 전원이 끊긴다면 어떻게 될까요? 디스크에 절반만 기록되고 일관성이 없는 데이터가 있을 수 있습니다.
이 동작은 동기 쓰기의 목적에 어긋난다고 말할 수 있습니다. 캐시된 쓰기가 괜찮다면 앱 소프트웨어는 애초에 동기 쓰기를 요청하지 않을 것입니다.
타협점은 다음과 같습니다. RAID 컨트롤러는 여전히 데이터를 디스크에 커밋하는 OS에 속하지만 정전 시 중요한 데이터를 보호하기 위해 RAID 컨트롤러에는 전원이 공급될 때까지 캐시를 일정 시간 동안 유지하는 배터리가 있습니다. 복원되었습니다.
따라서 전원이 다시 들어오고 디스크가 회전하고 초기화된 후에도 컨트롤러는 배터리 덕분에 캐시에 해당 데이터를 계속 유지하고 디스크에 트랜잭션 쓰기를 완료할 수 있습니다.
모두가 행복해요.
이것이 바로 RAID 컨트롤러가 정상적으로 작동하고 충전된 배터리 장치가 없으면 쓰기 캐시를 활성화할 수 없는 이유입니다.
답변3
일부 최신 디스크 컨트롤러에는 일반적인 72시간보다 훨씬 오랫동안 데이터를 보관하는 고속 플래시 캐시가 탑재되어 있으며 그 용량도 훨씬 더 큽니다(~1GB). 부품 세부정보가 필요하면 알려주세요.
답변4
특히 DB 서버에서는 정전이 거의 발생하지 않지만 100달러짜리 배터리를 구입하는 것은 필수입니다.거래가 활성화된 경우에도, 변경 사항이 캐시를 떠나 디스크에 커밋되기 전에 서버의 전원이 꺼지면 불완전한 쿼리나 손상된 데이터가 남게 됩니다.