FlexCache 후기입 아키텍처
FlexCache는 쓰기 작업 모드인 Write-back 및 Write-around를 포함하여 강력한 일관성을 염두에 두고 설계되었습니다. 기존의 Write-Around 작동 모드와 ONTAP 9.15.1에 도입된 새로운 Write-back 작동 모드 모두 액세스된 데이터가 항상 100% 일관적이고, 최신 상태이며, 정합성이 보장됩니다.
다음 개념은 FlexCache Write-Back 작동 방식을 자세히 설명합니다.
위임
잠금 위임 및 데이터 위임을 통해 FlexCache는 Write-back 및 Write-around 캐시를 모두 유지할 수 있으며, 데이터의 정합성이 보장되고 최신 상태를 유지할 수 있습니다. 오리진은 두 대표단을 조율합니다.
잠금 위임
잠금 위임은 프로토콜 수준 잠금 권한입니다. 오리진에서 필요에 따라 클라이언트에 프로토콜 잠금을 발급하기 위해 파일별로 캐시에 권한을 부여합니다. 여기에는 배타적 잠금 위임(XLD) 및 SLD(공유 잠금 위임)가 포함됩니다.
ONTAP가 충돌하는 쓰기를 조정할 필요가 없도록 하기 위해 클라이언트가 파일에 쓰기를 요청하는 캐시에 XLD가 부여됩니다. 중요한 것은 모든 파일에 대해 XLD가 한 번에 하나만 존재할 수 있다는 것입니다. 즉, 한 파일에 대해 한 번에 여러 writer가 있을 수 없습니다.
파일 쓰기 요청이 다시 쓰기 가능 캐시에 들어오면 다음 단계가 수행됩니다.
-
캐시는 요청된 파일에 대한 XLD가 이미 있는지 확인합니다. 이 경우 다른 클라이언트가 캐시의 파일에 쓰지 않는 한 클라이언트에 쓰기 잠금을 부여합니다. 요청된 파일에 대한 XLD가 캐시에 없는 경우 오리진에서 해당 파일을 요청합니다. 이것은 클러스터 간 네트워크를 통과하는 독점 호출입니다.
-
캐쉬로부터 XLD 요청을 수신하면 오리진에서 다른 캐쉬에 해당 파일에 대해 미처리 XLD가 있는지 확인합니다. 이 경우 해당 파일의 XLD를 호출하면 해당 캐시에서 오리진으로 플러시를 트리거합니다. 더티 데이터
-
해당 캐시의 더티 데이터가 다시 플러시되고 오리진의 안정적인 스토리지로 커밋되면 오리진에서 해당 파일에 대한 XLD를 요청 캐시에 부여합니다.
-
파일의 XLD가 수신되면 캐시는 클라이언트에 잠금을 부여하고 쓰기가 시작됩니다.
이러한 단계 중 일부를 다루는 상위 수준 시퀀스 다이어그램은 시퀀스 [write-back-sequence-diagram] 다이어그램에서 다룹니다.
클라이언트 관점에서 볼 때 모든 잠금은 쓰기 잠금이 요청될 때 약간의 지연이 발생할 수 있는 표준 FlexVol 또는 FlexGroup에 쓰는 것처럼 작동합니다.
현재 반복에서 쓰기 저장 가능 캐시에 파일의 XLD가 있는 경우 ONTAP는 작업을 포함하여 다른 캐시에 있는 해당 파일에 대한 * 모든 * 액세스를 차단합니다. READ
원점 구성요소당 170개의 XLD 제한이 있습니다. |
데이터 위임
데이터 위임은 해당 파일에 대해 캐시된 데이터가 최신 상태임을 오리진에서 캐시에 제공하는 파일별 보증입니다. 캐시에 파일에 대한 데이터 위임이 있는 한, 오리진에 연결할 필요 없이 해당 파일에 대한 캐시된 데이터를 클라이언트에 제공할 수 있습니다. 캐시에 파일에 대한 데이터 위임이 없는 경우 클라이언트에서 요청한 데이터를 받으려면 원본에 연결해야 합니다.
다시 쓰기 모드에서는 다른 캐시나 오리진에서 해당 파일에 대해 XLD를 사용하는 경우 파일의 데이터 위임이 취소됩니다. 이렇게 하면 다른 모든 캐시 및 오리진에 있는 클라이언트에서 파일을 효과적으로 차단하고 읽기 작업을 수행할 수도 있습니다. 이는 오래된 데이터에 절대 액세스하지 못하도록 하기 위해 반드시 해결해야 하는 절충입니다.
Write-back이 설정된 캐시에서 읽기는 일반적으로 Write-around 캐시의 읽기처럼 작동합니다. Write-Around 및 Write-back이 설정된 캐시 모두에서 요청된 파일이 읽기가 실행되는 위치와 다른 Write-back이 설정된 캐시에 단독 쓰기 잠금이 있는 경우 초기 성능 저하가 발생할 수 READ
있습니다. XLD를 해지해야 하며, 다른 캐시의 읽기를 서비스하기 전에 더티 데이터를 오리진으로 커밋해야 합니다.
더티 데이터 추적
캐시에서 오리진으로 다시 쓰기는 비동기적으로 수행됩니다. 즉, 더티 데이터는 오리진에 즉시 다시 기록되지 않습니다. ONTAP는 파일당 더티 데이터를 추적하기 위해 더티 데이터 레코드 시스템을 사용합니다. 각 DDR(더티 데이터 레코드)은 특정 파일에 대해 약 20MB의 더티 데이터를 나타냅니다. 파일이 활발하게 작성되면 ONTAP는 두 개의 DDR이 채워지고 세 번째 DDR이 쓰여진 후에 더티 데이터를 다시 플러시하기 시작합니다. 따라서 쓰기 중에 캐시에 약 40MB의 더티 데이터가 남아 있습니다. 상태 저장 프로토콜(NFSv4.x, SMB)의 경우 파일을 닫을 때 나머지 40MB의 데이터가 오리진으로 다시 플러시됩니다. 상태 비저장 프로토콜(NFSv3)의 경우, 다른 캐시에서 파일에 대한 액세스를 요청하거나 파일이 2분 이상 유휴 상태가 되면 최대 5분 동안 40MB의 데이터가 다시 플러시됩니다. 타이머가 트리거되거나 공간이 트리거되는 더티 데이터 플러싱에 대한 자세한 내용은 을 참조하십시오. 캐시 스크러버
DDR 및 스크러버 외에도 일부 프런트엔드 NAS 작업은 파일에 대한 모든 더티 데이터를 플러시합니다.
-
SETATTR
-
mtime, atime 및/또는 ctime만 수정하는 SETATTR은 캐시에서 처리할 수 있으므로 WAN의 페널티를 피할 수 있습니다.
-
-
CLOSE
-
OPEN
확인할 수 있습니다 -
READ
확인할 수 있습니다 -
READDIR
확인할 수 있습니다 -
READDIRPLUS
확인할 수 있습니다 -
WRITE
확인할 수 있습니다
연결 해제 모드
파일의 XLD가 write-around 캐시에 보관되고 해당 캐시가 오리진에서 연결이 끊기면 해당 파일에 대한 읽기는 다른 캐시와 오리진에서 계속 허용됩니다. 이 동작은 다시 쓰기 가능 캐시에 의해 XLD가 유지되는 경우에 다릅니다. 이 경우 캐시의 연결이 끊긴 경우 파일 읽기가 모든 곳에서 중단됩니다. 이를 통해 100% 일관성, 통화 및 일관성을 유지할 수 있습니다. 오리진에서 클라이언트에 쓰기 승인되어 있는 모든 데이터를 사용할 수 있으므로 읽기는 write-around 모드로 허용됩니다. 연결 해제 중 Write-back 모드에서는 오리진에서 다시 쓰기 가능 캐시에 기록되고 인식되는 모든 데이터가 연결 해제되기 전에 오리진으로 만들어지는 것을 보장할 수 없습니다.
파일에 대한 XLD가 있는 캐시의 연결이 장시간 끊어진 경우 시스템 관리자는 원본에서 XLD를 수동으로 취소할 수 있습니다. 이렇게 하면 정상적인 캐시 및 오리진에서 파일에 대한 입출력이 재개됩니다.
XLD를 수동으로 해지하면 연결이 끊어진 캐시에서 파일에 대한 더티 데이터가 손실됩니다. XLD를 수동으로 취소하는 작업은 캐시와 원본 간에 심각한 장애가 발생한 경우에만 수행해야 합니다. |
캐시 스크러버
ONTAP에는 타이머 만료 또는 공간 임계값이 위반되는 것과 같은 특정 이벤트에 대한 응답으로 실행되는 스크러버가 있습니다. 스크러버는 스크러브되는 파일에 대해 배타적인 잠금을 가지고 스크럽이 완료될 때까지 해당 파일에 대한 입출력을 효과적으로 동결합니다.
스크러버에는 다음이 포함됩니다.
-
*mtime-based scrubber on the cache: * 이 스크러버는 5분마다 시작되며 2분 동안 수정되지 않은 모든 파일을 스크러브합니다. 파일에 대한 더티 데이터가 여전히 캐시에 있는 경우 해당 파일에 대한 입출력이 정지되고 다시 쓰기가 트리거됩니다. 다시 쓰기가 완료된 후 IO가 재개됩니다.
-
* mtime-based scrubber on origin: * 캐시의 mtime 기반 scrubber와 마찬가지로 5분마다 실행됩니다. 하지만 수정되지 않은 파일을 15분 동안 스크럽하여 inode의 위임을 불러옵니다. 이 스크러버는 다시 쓰기를 시작하지 않습니다.
-
* RW limit-based scrubber on origin: * ONTAP는 오리진 구성요소당 얼마나 많은 RW 잠금 위임이 처리되는지 모니터링합니다. 이 숫자가 170을 초과하면 ONTAP는 LRU(Least-Recently-Used)를 기준으로 쓰기 잠금 위임을 스크럽하기 시작합니다.
-
* 캐시 상의 공간 기반 스크러버: * FlexCache 볼륨이 90%에 도달하면 캐시가 스크러빙되어 LRU 기준으로 제거됩니다.
-
* 오리진에서 공간 기반 스크러버: * FlexCache 오리진 볼륨이 90%에 도달하면 캐시가 스크러빙되어 LRU 기준으로 제거됩니다.
시퀀스 다이어그램
이러한 시퀀스 다이어그램은 write-around 모드와 write-back 모드 간의 쓰기 확인의 차이를 나타냅니다.