ReFS 무결성 스트림

적용 대상: Windows Server 2022, Windows Server 2019, Windows Server 2016, Windows Server 2012 R2, Windows Server 2012, Windows 10

무결성 스트림은 체크섬을 사용하여 데이터 무결성의 유효성을 검사하고 유지하는 ReFS의 선택적 기능입니다. ReFS는 항상 메타데이터에 체크섬을 사용하지만, ReFS는 기본적으로 파일 데이터에 대한 체크섬을 생성하거나 유효성을 검사하지 않습니다. 무결성 스트림은 사용자가 파일 데이터에 체크섬을 활용할 수 있는 선택적 기능입니다. 무결성 스트림을 사용하도록 설정하면 ReFS에서 데이터가 유효한지 또는 손상되었는지 명확하게 확인할 수 있습니다. 또한 ReFS 및 저장소 공간 손상된 메타데이터와 데이터를 자동으로 공동으로 수정할 수 있습니다.

작동 방식

개별 파일, 디렉터리 또는 전체 볼륨에 대해 무결성 스트림을 사용하도록 설정할 수 있으며 언제든지 무결성 스트림 설정을 전환할 수 있습니다. 또한 파일 및 디렉터리에 대한 무결성 스트림 설정은 부모 디렉터리에서 상속됩니다.

무결성 스트림을 사용하도록 설정하면 ReFS는 해당 파일의 메타데이터에서 지정된 파일에 대한 체크섬을 만들고 유지 관리합니다. 이 체크섬을 사용하면 ReFS에서 데이터에 액세스하기 전에 데이터의 무결성에 대한 유효성을 검사할 수 있습니다. 무결성 스트림을 사용하도록 설정된 데이터를 반환하기 전에 ReFS는 먼저 해당 체크섬을 계산합니다.

Compute checksum for file data

그런 다음, 이 체크섬은 파일 메타데이터에 포함된 체크섬과 비교됩니다. 체크섬이 일치하면 데이터가 유효한 것으로 표시되고 사용자에게 반환됩니다. 체크섬이 일치하지 않으면 데이터가 손상됩니다. 볼륨의 복원력은 ReFS가 손상에 대응하는 방법을 결정합니다.

  • ReFS가 복원력이 없는 단순 공간 또는 베어 드라이브에 탑재된 경우 ReFS는 손상된 데이터를 반환하지 않고 사용자에게 오류를 반환합니다.
  • ReFS가 복원력 있는 미러 또는 패리티 공간에 탑재된 경우 ReFS는 손상을 수정하려고 시도합니다.
    • 시도가 성공하면 ReFS는 정정 쓰기를 적용하여 데이터의 무결성을 복원하고 유효한 데이터를 애플리케이션에 반환합니다. 애플리케이션은 손상을 인식하지 못합니다.
    • 시도가 실패하면 ReFS에서 오류를 반환합니다.

ReFS는 시스템 이벤트 로그의 모든 손상을 기록하며, 로그는 손상이 수정되었는지 여부를 반영합니다.

Corrective write restores data integrity

성능

무결성 스트림은 시스템에 더 큰 데이터 무결성을 제공하지만 성능 비용도 발생합니다. 여기에는 몇 가지 다른 이유가 있습니다.

  • 무결성 스트림을 사용하도록 설정하면 모든 쓰기 작업이 쓰기에 할당된 작업이 됩니다. ReFS는 기존 데이터를 읽거나 수정할 필요가 없으므로 읽기-수정-쓰기 병목 현상을 방지하지만 파일 데이터는 자주 조각화되어 읽기가 지연됩니다.
  • 시스템의 워크로드 및 기본 스토리지에 따라 체크섬을 계산하고 유효성을 검사하는 계산 비용으로 인해 IO 대기 시간이 증가할 수 있습니다.

무결성 스트림은 성능 비용을 수반하므로 성능에 중요한 시스템에서 무결성 스트림을 사용하지 않도록 하는 것이 좋습니다.

무결성 스크러버

위에서 설명한 대로 ReFS는 데이터에 액세스하기 전에 데이터 무결성의 유효성을 자동으로 검사합니다. 또한 ReFS는 ReFS가 자주 액세스하지 않는 데이터의 유효성을 검사할 수 있도록 하는 백그라운드 스크러버를 사용합니다. 이 스크러버는 주기적으로 볼륨을 검사하고, 잠재적 손상을 식별하고, 손상된 데이터의 복구를 사전에 트리거합니다.

참고

데이터 무결성 스크러버는 무결성 스트림이 사용하도록 설정된 파일의 파일 데이터만 유효성을 검사할 수 있습니다.

기본적으로 스크러버는 4주마다 실행되지만 이 간격은 Microsoft\Windows\Data Integrity Scan의 작업 스케줄러 내에서 구성할 수 있습니다.

파일 데이터 무결성 설정을 모니터링하고 변경하기 위해 ReFS는 Get-FileIntegritySet-FileIntegrity cmdlet을 사용합니다.

Get-FileIntegrity

파일 데이터에 대해 무결성 스트림을 사용할 수 있는지 확인하려면 Get-FileIntegrity cmdlet을 사용합니다.

PS C:\> Get-FileIntegrity -FileName 'C:\Docs\TextDocument.txt'

Get-Item cmdlet을 사용하여 지정된 디렉터리의 모든 파일에 대한 무결성 스트림 설정을 가져올 수도 있습니다.

PS C:\> Get-Item -Path 'C:\Docs\*' | Get-FileIntegrity

Set-FileIntegrity

파일 데이터에 대한 무결성 스트림을 사용하거나 사용하지 않도록 설정하려면 Set-FileIntegrity cmdlet을 사용합니다.

PS C:\> Set-FileIntegrity -FileName 'H:\Docs\TextDocument.txt' -Enable $True

Get-Item cmdlet을 사용하여 지정된 폴더의 모든 파일에 대한 무결성 스트림 설정을 설정할 수도 있습니다.

PS C:\> Get-Item -Path 'H\Docs\*' | Set-FileIntegrity -Enable $True

Set-FileIntegrity cmdlet은 볼륨 및 디렉터리에서도 직접 사용할 수 있습니다.

PS C:\> Set-FileIntegrity H:\ -Enable $True
PS C:\> Set-FileIntegrity H:\Docs -Enable $True

추가 참조