디스크 쓰기 캐싱이 활성화되면 데이터 손상

디스크 쓰기 캐싱이 활성화되면 데이터 손상

최근에 디스크 쓰기 캐싱을 활성화하면 시스템 성능이 크게 향상될 수 있다는 사실을 알게 되었습니다. 하지만 갑작스러운 정전이 발생할 경우 데이터가 손상되거나 손실될 수 있는 위험이 우려됩니다.

내 설정에 대한 몇 가지 맥락은 다음과 같습니다.

운영 체제: 윈도우 서버 2012 R2

디스크 유형: SATA 3.0 HDD

목적: 성능 향상을 위해 디스크에 쓰기 캐싱을 활성화하는 것을 고려하고 있습니다. 쓰기 캐시의 데이터가 아직 디스크에 커밋되지 않은 경우, 운영 체제가 충돌하거나 데이터에 액세스하는 응용 프로그램이 충돌할 때 정전이 발생하면 데이터가 손상될 수 있다는 것을 알고 있습니다.

조사하는 동안 이 내용에서 다음과 같은 세부 정보를 발견했습니다.기사, 그들은 "활성 디스크 쓰기 캐시가 활성화되고 디스크가 조기에 종료되는 RLA(Read Look Ahead)를 수행하는 경우 사용자가 인식하지 못하는 사이에 데이터 손상이 발생합니다."라고 언급했습니다. . 나는 이 말의 정확한 의미를 이해할 수 없었다.

정전 시 데이터 쓰기가 진행되지 않는 경우에도 쓰기 캐싱을 활성화한 후 데이터 손상/파일 손상이 발생하는 경우가 있습니까?

답변1

최신 파일 시스템(XFS, ZFS, JFS, ext4, APFS, NTFS 등)은 모두 저널링을 사용하므로 일부 데이터(최신 커밋 및 아직 커밋되지 않고 캐시에 저장된 데이터)가 손실됩니다. 아니요, 데이터 손상이 발생하지 않습니다.

다음은 IBM JFS에 대한 많은 다이어그램과 자세한 설명이 포함된 좋은 자료입니다. 기사 내의 모든 내용은 다른 저널링 파일 시스템과 100% 관련됩니다.

https://www.ibm.com/docs/en/aix/7.2?topic=types-journaled-file-system-jfs

어느 쪽이든… 백업을 해야 합니다! 소위 '3-2-2 백업 원칙'을 따라야 한다.

https://www.starwindsoftware.com/blog/3-2-1-backup-strategy-why-your-data-always-survives

이것이 도움이 되었기를 바랍니다!

답변2

짧은 버전:아니요, 최신 SATA 디스크와 저널 파일 시스템을 사용하면 디스크 캐시가 활성화된 경우에도 승인된(즉, 동기화된) 쓰기가 손상될 수 없습니다. 반면, 동기화되지 않은(버퍼링된) 쓰기는 정전 시 손실/손상될 수 있습니다. 그러나 귀하가 링크한 기사는특정 펌웨어 문제디스크 캐싱을 사용할 때의 일반적인 동작에 대해서는 설명하지 않습니다.

확장된 디스크 테스트 연습을 수행하는 동안,잠재적인 펌웨어 문제가 발견되었습니다.

긴 답변:두 가지 종류의 쓰기가 실행될 수 있습니다.

  • ATA FLUSH 또는 FUA를 활용하여 지속성(및 순서)을 보장하는 동기화 쓰기
  • 동기화되지 않은(버퍼된) 쓰기는 디스크 DRAM 캐시에 의해 캐시, 집계 및 재정렬될 수 있습니다.

HDD 및 소비자 SSD를 처리할 때 동기화 쓰기는 매우 느립니다. 단일 쓰기를 플러시하는 프로세스는 각 단일 쓰기에서 IO당 대기 시간이 지불됨을 의미합니다. 따라서 동기화 쓰기는 일반적으로 가장 중요한 IO(저널 커밋, 데이터베이스, 이메일 전달 등)를 위해 예약됩니다. 기타 모든 덜 중요한 쓰기(예: 사용자 파일 복사본)는 캐시/버퍼링된 쓰기로 실행되며 정전 시 데이터가 손실됩니다. 적절한 순간에 발생합니다(원본 쓰기 후 최대 30~60초).

고대 PATA 및 SATA 드라이브는 OS에 거짓말을 하여 동기화를 존중하는 척하면서 실제로 필요한 플러시 동작을 폐기했습니다. 이로 인해 디스크 DRAM 캐시를 완전히 비활성화(또는 읽기 전용 모드로 설정)하여 기록된 모든 데이터가 실제로 (내구성 있는) 디스크 플래터에 저장되도록 하는 제안이 나왔습니다. 캐시가 비활성화된 디스크는 각 쓰기를 동기화로 효과적으로 처리하여 뛰어난 성능 비용으로 최대한의 안전을 보장합니다.

이렇게 되니 참고하세요~ 아니다이는 버퍼링된 쓰기가 손실될 수 없음을 의미합니다. OS가 버퍼를 플러시하기 전에 충돌이 발생하면 동기화되지 않은 모든 데이터가 손실됩니다. 이러한 이유로 최신(2008년 이후) 디스크가 ATA FLUSH 또는(2015년 이후) FUA를 존중한다는 점을 고려하면 현재 일반적인 조언은 디스크 캐시를 활성화하고 OS에 의존하여 중요한 쓰기를 플러시하는 것입니다.

전력 손실 보호 기능이 있는 SSD 및 HW RAID 카드안전하게 캐시할 수 있는 온보드 회로를 사용하여 이러한 성능/안전성 균형을 피하세요.어느쓰기(동기화도 가능). 어쨌든, HW RAID 카드를 사용할 때 디스크 캐시가 관리되는 방법은 구현에 따라 다릅니다(예: PERC는 SAS 디스크에 대해 비활성화하지만 SATA 디스크에 대해서는 비활성화하지 않음).

관련 정보