다음을 통해 공유


쓰기 캐시 속성 쿼리

스토리지 디바이스는 디스크 플래터와 같은 비휘발성 미디어에 데이터를 쓰기 전에 쓰기 캐시의 데이터를 버퍼링하는 경우가 많습니다. 이 유형의 버퍼는 디바이스 성능을 개선하지만 데이터 무결성도 감소합니다. 쓰기 캐시에 배터리 백업이 없으면 정전으로 인해 캐시된 데이터가 손실될 수 있습니다.

데이터 손실 문제에 대한 한 가지 해결 방법은 쓰기 캐시를 플러시하는 것입니다(SCSI 디바이스의 SCSI SYNCHRONIZE CACHE 명령 사용). 그러나 쓰기 캐시를 플러시하는 것은 비용이 많이 드는 작업이며, 자주 수행하면 성능이 크게 저하 될 수 있습니다. 쓰기 캐시를 플러시하는 대신 많은 스토리지 디바이스에서 쓰기 요청을 허용합니다. 쓰기 요청은 쓰기 캐시를 무시하고 데이터를 미디어에 직접 보냅니다.

예를 들어 데이터베이스 애플리케이션은 쓰기 요청을 사용하여 트랜잭션 로그가 미디어에 도달하도록 할 수 있으며 파일 시스템 드라이버는 쓰기-통과 요청을 사용하여 파일 시스템 메타데이터가 미디어에 도달하도록 할 수 있습니다.

그러나 쓰기 캐시가 있는 모든 스토리지 디바이스가 쓰기 요청 또는 SYNCHRONIZE CACHE를 지원하지는 않습니다. 일부 디바이스는 전원 오류 발생 시 데이터 손상을 방지하는 배터리 백업 시스템이 있으므로 캐시된 데이터를 우회하거나 플러시할 필요가 없습니다. 애플리케이션 및 드라이버에는 디바이스의 쓰기 캐시 속성에 대한 정보가 있어야 효과적으로 사용할 수 있습니다.

Windows Vista에서 StorageDeviceWriteCacheProperty 속성 식별자와 함께 IOCTL_STORAGE_QUERY_PROPERTY 요청을 사용하여 디바이스의 쓰기 캐시 특성을 지정하는 쓰기 캐시 속성에 대한 스토리지 클래스 드라이버를 쿼리할 수 있습니다. 쓰기 캐시 속성에는 디바이스의 캐싱 기능에 대한 다음 정보가 포함됩니다.

  • 쓰기 캐시의 존재. 쓰기 캐시 속성은 디바이스에 쓰기 캐시가 있는지 여부를 지정합니다.

  • 쓰기 캐시 유형입니다. 쓰기 캐시에는 쓰기 저장 및 쓰기의 두 가지 기본 유형이 있습니다. 쓰기 저장 캐시를 사용하면 디바이스는 절대적으로 필요할 때까지 캐시 데이터를 비휘발성 미디어에 복사하지 않습니다. 이 작업은 쓰기 작업의 성능을 향상시킵니다. 쓰기 캐시를 사용하면 디바이스가 캐시 및 미디어에 데이터를 병렬로 씁니다. 이렇게 하면 쓰기 성능이 향상되지 않지만 후속 읽기 작업이 더 빨라집니다.

    쓰기-통과 캐시 와 쓰기-통과 요청을 혼동하지 마세요. 디바이스에서 쓰기 저장 요청을 지원하는 경우 쓰기 저장 캐시를 비롯한 모든 종류의 캐시에서 쓰기 통과 요청을 사용할 수 있습니다. 예를 들어 대상이 쓰기 저장 캐시가 있는 SCSI 디바이스라고 가정합니다. 디바이스가 쓰기 요청을 지원하는 경우 초기자는 쓰기 명령의 CDB(명령 설명자 블록)에서 FUA(force unit Access) 비트를 설정하여 쓰기 캐시를 무시할 수 있습니다.

  • 동기화 캐시 지원. 쓰기 캐시 속성은 디바이스가 SCSI SYNC CACHE 명령을 지원하는지 또는 다른 버스에서 동등한 명령을 지원하는지 여부를 나타냅니다.

  • 배터리 백업. 쓰기 캐시 속성은 전원 오류가 발생하는 동안 캐시 데이터의 무결성을 보호하는 배터리 백업이 디바이스에 있는지 여부를 나타냅니다.

쓰기 캐시 속성이 보고하는 정보에 대한 전체 설명은 STORAGE_WRITE_CACHE_PROPERTY 참조하세요.

쓰기 캐시 속성 메커니즘(즉, IOCTL_STORAGE_QUERY_PROPERTY 요청 및 StorageDeviceWriteCacheProperty 속성 식별자 사용)이 없으면 애플리케이션 및 드라이버는 모든 버스에 대해 다른 명령 시퀀스를 사용하여 디바이스의 쓰기 캐시 특성을 쿼리해야 합니다. 예를 들어 대상 디바이스가 IEEE 1394 버스에 연결되어 있고 RBC(Reduced Block Command) 프로토콜을 사용하는 경우 초기자는 디바이스 모드 데이터의 6페이지를 검색하여 쓰기 캐시가 사용하도록 설정되어 있는지 확인해야 합니다. 그러나 대상 디바이스가 SCSI 규격인 경우 초기자는 모드 데이터의 8페이지를 검색해야 합니다. 쓰기 캐시 속성 메커니즘은 초기자에서 이러한 작업의 세부 정보를 숨기고 여러 버스에서 동일한 스토리지 디바이스의 쓰기 캐시 특성을 쿼리하는 기술을 제공합니다.

쓰기 캐시 속성 메커니즘은 RAID 디바이스(이러한 디바이스를 쿼리하는 표준 기술이 없기 때문에) 또는 플래시 메모리 디바이스에 대해 지원되지 않습니다.

쓰기 캐시 속성은 64비트 버전의 Windows에서 지원됩니다.