스토리지 관리 공급자

스토리지 공급업체는 Windows Storage 관리 API를 지원하여 스토리지 하위 시스템의 Windows 기반 관리를 포함할 수 있습니다. Windows 관리 애플리케이션은 이 API를 사용하고 통합 스토리지 관리 서비스를 제공할 수 있습니다.

Windows 8 Windows Storage 관리 API는 VDS(가상 디스크 서비스), 해당 API 및 관련 유틸리티를 대체합니다. 또한 Windows 8 도입된 스토리지 관리 유틸리티 중 어느 것도 VDS를 사용하지 않습니다. 따라서 스토리지 공급업체는 Windows Storage 관리 API를 채택하고 이 API를 지원하는 적절한 공급자를 개발하는 것이 좋습니다.

Windows Storage 관리 API를 지원하기 위해 스토리지 공급업체는 다음 중 하나를 선택할 수 있습니다.

  • SMP(스토리지 관리 공급자)를 개발합니다.
  • SMI-S 공급자를 개발합니다. 이 공급자는 기본 제공 Windows Storage 관리 서비스를 통해 액세스됩니다. 스토리지 관리 서비스는 SMP로 구현됩니다.

두 메커니즘을 모두 사용하면 새 API를 통해 스토리지 하위 시스템을 쉽게 관리할 수 있습니다. 또한 두 메커니즘 모두 잘 정의된 통과 인터페이스를 통해 쉽게 확장할 수 있습니다.

앞서 설명한 대로 Windows Storage 관리 API 는 포괄적인 스토리지 프로비저닝 및 관리 기능을 제공하는 것을 목표로 합니다. 또한 이 API는 필요에 따라 연속 Windows 버전으로 발전하도록 설계되었습니다. 통과 인터페이스를 사용하면 스토리지 관리 애플리케이션이 호환되는 스토리지 하위 시스템에 대한 작업을 수행할 수 있으며, 다양한 이유로 잘 정의된 API를 통해 직접 사용하도록 설정되지 않았습니다. 이는 쉬운 확장성을 위한 중요한 메커니즘이지만 통과 메커니즘은 API를 통해 노출되지 않는 기능에만 사용되며 API를 통해 관리할 수 있는 기능에는 사용하지 않아야 합니다.

아키텍처

SMP 아키텍처 모델은 다음 기능으로 구성됩니다.

  • 기본 제공 PowerShell commandlet을 비롯한 Windows 관리 애플리케이션은 Windows Storage 관리 API를 사용합니다. API를 통해 아직 노출되지 않은 (예상되는) 작은 기능 하위 집합의 경우 Windows 스토리지 관리 애플리케이션은 통과 메커니즘을 사용할 수 있습니다. 예를 들어 이 기능을 사용하면 필요한 경우 전체 SMI-S 클래스 및 메서드 제품군을 사용할 수 있으며 애플리케이션과 스토리지 공급자 간의 독점 통신도 가능합니다.

  • 스토리지 하위 시스템은 새 API에 응답하도록 커밋하여 Windows 관리 애플리케이션에서 관리할 수 있도록 할 수 있습니다. 이 작업은 SMP를 제공하거나 SMI-S 공급자를 제공하여 수행되며, 이 공급자는 Windows Storage 관리 서비스를 통해 호출됩니다. 스토리지 공급업체가 SMP를 개발하기로 선택한 경우 공급업체 SMP와 연결된 스토리지 하위 시스템 간의 통신은 독점적일 수 있습니다. 스토리지 공급업체가 SMI-S 서비스를 활용하도록 선택하는 경우 Windows Storage 관리 서비스에서 발급한 SMI-S 명령에 응답해야 합니다.

  • SMP 인터페이스는 WMI를 사용합니다.

스토리지 관리 API 클래스 및 SMP 인터페이스와 비슷한 메서드와 속성을 가진 API 집합이 있습니다. 스토리지 관리 API 클래스는 파일 서버 관리자 및 System Center Virtual Machine Manager 같은 애플리케이션에서 사용하는 클래스 집합입니다. 여기에는 Partition, Volume 및 InitiatorPort와 같은 더 많은 호스트 쪽 전용 클래스가 포함됩니다. 스토리지 관리 API 클래스의 특정 메서드에는 추가 입력 매개 변수 "RunAsJob"이 포함되어 있습니다(자세한 내용은 "비동기 작업" 섹션 참조). 한편 SMP 인터페이스에는 호스트 쪽 전용 클래스가 없으며 InitiatorPort가 아닌 InitiatorId를 사용합니다. 특정 차이점에도 불구하고 스토리지 관리 API 클래스 및 SMP 인터페이스의 대부분의 클래스 정의는 동일합니다.