KR20130070525A - 스토리지 장치 및 커맨드 실행 제어 방법 - Google Patents

스토리지 장치 및 커맨드 실행 제어 방법 Download PDF

Info

Publication number
KR20130070525A
KR20130070525A KR1020120141246A KR20120141246A KR20130070525A KR 20130070525 A KR20130070525 A KR 20130070525A KR 1020120141246 A KR1020120141246 A KR 1020120141246A KR 20120141246 A KR20120141246 A KR 20120141246A KR 20130070525 A KR20130070525 A KR 20130070525A
Authority
KR
South Korea
Prior art keywords
command
storage device
copy
limit value
commands
Prior art date
Application number
KR1020120141246A
Other languages
English (en)
Other versions
KR101461284B1 (ko
Inventor
마사요시 미즈마끼
Original Assignee
후지쯔 가부시끼가이샤
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 후지쯔 가부시끼가이샤 filed Critical 후지쯔 가부시끼가이샤
Publication of KR20130070525A publication Critical patent/KR20130070525A/ko
Application granted granted Critical
Publication of KR101461284B1 publication Critical patent/KR101461284B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/067Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Software Systems (AREA)
  • Computer Hardware Design (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Communication Control (AREA)

Abstract

본 발명의 과제는, 통신 인터페이스를 복수의 용도로 사용하는 경우에 있어서의 특정한 용도의 처리 증가에 기인하는 다른 용도의 처리 효율의 저하를 억지 가능하게 한다.
판별 수단(1-3b)은, 통신 인터페이스(1-2)를 통하여 수신한 커맨드의 종별을 판별한다. 계수 수단(1-3c)은, 통신 인터페이스(1-2)를 통하여 수신한 커맨드로서, 실행중인 커맨드의 수를 계수한다. 제어 수단(1-3d)은, 실행중인 커맨드의 수가 통신 인터페이스(1-2)를 통하여 수신한 커맨드(8, 9)의 종별에 대응하는 제한값 이하이면, 수신한 커맨드에 따른 데이터 액세스를 기억 장치(1-1)에 대하여 실행한다. 또 제어 수단(1-3d)은, 실행중인 커맨드의 수가 수신한 커맨드의 종별에 대응하는 제한값을 초과한 경우, 수신한 커맨드(8, 9)에 따른 데이터 액세스를 억지한다.

Description

스토리지 장치 및 커맨드 실행 제어 방법{STORAGE APPARATUS AND COMMAND EXECUTION CONTROL METHOD}
본 발명은 입력된 커맨드의 실행 제어를 행하는 스토리지 장치, 커맨드 실행 제어 방법 및 프로그램에 관한 것이다.
RAID(Redundant Arrays of Inexpensive Disks) 장치 등의 스토리지 장치는 호스트 컴퓨터와 접속하는 통신 인터페이스로서, 예를 들면 채널 어댑터(CA: Channel Adapter)를 갖고 있다. CA는 채널 스위치 등을 경유해서 호스트 컴퓨터의 호스트 버스 어댑터(HBA: Host Bus Adapter)에 접속된다. 호스트 컴퓨터는 HBA에 의해 CA와 통신하고, 스토리지 장치 내의 데이터에 액세스한다.
스토리지 장치 내의 CA는 호스트 컴퓨터와의 통신에 한정하지 않고, 스토리지 장치간의 통신에도 이용할 수 있다. 예를 들면, 스토리지·셀간에서 데이터 복사를 행하는 플렉시블 데이터 리플리케이션 메커니즘이 생각될 수 있다.
미국 특허 출원 공개 제2003/0187945호 명세서
그러나, 호스트 컴퓨터로부터의 스토리지 장치에의 액세스의 용도와, 스토리지 장치간의 액세스의 용도로 CA를 공용하면, 한쪽의 액세스의 증가로 인해 다른 쪽의 액세스의 처리가 지연된다. 예를 들면 데이터의 신뢰성을 높이기 위해서, 어떤 스토리지 장치에 대하여 호스트 컴퓨터로부터 기입된 데이터를 다른 스토리지 장치에 복사하는 경우가 있다. 이 경우, 호스트 컴퓨터로부터의 복사처의 스토리지 장치에의 액세스가 많으면, 스토리지 장치간의 복사 처리가 기다리게 된다. 그러면, 복사원의 스토리지 장치에의 호스트 컴퓨터로부터의 기입 커맨드의 완료도 지연되고, 시스템 전체로서의 성능이 저하된다.
이와 같이, 스토리지 장치의 1개의 통신 인터페이스를 복수의 용도로 사용한 경우, 1개의 용도로의 데이터 액세스량의 증가가 다른 용도로의 데이터 액세스 효율을 저하시켜 버리는 경우가 있다. 이러한 의존 관계에 의한 데이터 액세스 효율의 저하가 무질서하게 발생하면, 시스템 전체로서의 처리 효율이 저하된다.
1개의 측면에서는, 본 발명은 처리 종별에 따른 처리 증가에 기인하는 처리 효율의 저하를 억지 가능한 스토리지 장치, 커맨드 실행 제어 방법 및 프로그램을 제공하는 것을 목적으로 한다.
본원에서는 기억 장치, 통신 인터페이스, 판별 수단, 계수 수단 및 제어 수단을 갖는 스토리지 장치가 제공된다. 통신 인터페이스는 기억 장치에의 데이터 액세스를 지시하는 커맨드를 수신한다. 판별 수단은 통신 인터페이스를 통하여 수신한 커맨드의 종별을 판별한다. 계수 수단은 통신 인터페이스를 통하여 수신한 커맨드이며, 실행중인 커맨드의 수를 계수한다. 제어 수단은 실행중인 커맨드의 수가 통신 인터페이스를 통하여 새롭게 수신한 커맨드의 종별에 대응하는 제한값 이하이면, 상기 새롭게 수신한 커맨드에 따른 데이터 액세스를 기억 장치에 대하여 실행하는 제어를 행한다. 또 제어 수단은 실행중인 커맨드수가 상기 새롭게 수신한 커맨드의 종별에 대응하는 제한값을 초과한 경우, 상기 새롭게 수신한 커맨드에 따른 데이터 액세스를 억지하는 제어를 행한다.
일양태에 따르면, 처리 종별에 따른 처리 증가에 기인하는 처리 효율의 저하가 억지 가능하게 된다.
도 1은 제1 실시 형태에 관한 장치의 기능 구성의 일례를 나타내는 도면이다.
도 2는 제2 실시 형태의 시스템 구성의 일례를 나타내는 도면이다.
도 3은 제2 실시 형태에 사용하는 스토리지 장치의 하드웨어 구성의 일례를 나타내는 도면이다.
도 4는 제2 실시 형태에 있어서의 커맨드의 유량 제어 상황의 일례를 나타내는 도면이다.
도 5는 제2 실시 형태에 있어서의 RA처의 스토리지 장치에서의 커맨드 제한의 실시 상황을 나타내는 도면이다.
도 6은 커맨드의 데이터 포맷의 일례를 나타내는 도면이다.
도 7은 커맨드 관리 테이블의 일례를 나타내는 도면이다.
도 8은 제2 실시 형태의 커맨드 실행 처리의 순서를 나타내는 플로우차트이다.
도 9는 제3 실시 형태에 있어서의 커맨드의 유량 제어 상황의 일례를 나타내는 도면이다.
도 10은 제3 실시 형태에 있어서의 세션 관리 테이블의 일례를 나타내는 도면이다.
도 11은 제3 실시 형태의 커맨드 실행 처리의 순서를 나타내는 플로우차트이다.
도 12는 제4 실시 형태에 있어서의 커맨드의 유량 제어 상황의 일례를 나타내는 도면이다.
도 13은 제4 실시 형태의 커맨드 관리 테이블의 일례를 나타내는 도면이다.
도 14는 제4 실시 형태의 커맨드 관리 테이블 갱신 처리의 순서를 나타내는 플로우차트이다.
도 15는 제4 실시 형태의 커맨드 실행 처리의 순서의 일례를 나타내는 플로우차트이다.
도 16은 제5 실시 형태에 있어서의 커맨드 유량 제어 상황의 일례를 나타내는 도면이다.
도 17은 RA원 커맨드 관리 테이블의 일례를 나타내는 도면이다.
도 18은 RA처 커맨드 관리 테이블의 일례를 나타내는 도면이다.
도 19는 스토리지 장치간의 정보 교환 순서의 일례를 나타내는 순서도이다.
도 20은 RA원에 있어서의 커맨드 실행 상황 통지 처리의 순서의 일례를 나타내는 플로우차트이다.
도 21은 제5 실시 형태의 RA원의 스토리지 장치에 있어서의 커맨드 실행 처리의 순서의 일례를 나타내는 도면이다.
도 22은 RA처에 있어서의 커맨드 제한값 결정 처리의 순서의 일례를 나타내는 도면이다.
도 23은 제6 실시 형태에 있어서의 커맨드 유량 제어 상황의 일례를 나타내는 도면이다.
도 24는 제6 실시 형태의 RA원 커맨드 관리 테이블의 일례를 나타내는 도면이다.
도 25는 제6 실시 형태의 RA처 커맨드 관리 테이블의 일례를 나타내는 도면이다.
도 26은 제6 실시 형태의 RA원의 커맨드 실행 처리의 순서의 일례를 나타내는 플로우차트이다.
도 27은 제6 실시 형태의 RA원에 있어서의 커맨드 실행 상황 통지 처리의 순서의 일례를 나타내는 플로우차트이다.
도 28은 제6 실시 형태의 RA처에 있어서의 커맨드 제한값 결정 처리의 순서의 일례를 나타내는 플로우차트이다.
도 29은 적용 기술 판정 처리의 순서의 일례를 나타내는 플로우차트이다.
이하, 본 실시 형태에 대해서 도면을 참조하여 설명한다. 또 각 실시 형태는, 모순이 없는 범위에서 복수의 실시 형태를 조합해서 실시할 수 있다.
〔제1 실시 형태〕
제1 실시 형태는, 통신 인터페이스에 입력되는 커맨드에 대해서, 커맨드의 용도를 나타내는 종별마다 상이한 제한값으로 커맨드의 유량 제어를 행하는 것이다. 제한값은 실행중인 커맨드의 수가 어느 정도가 되면, 대응하는 종별의 커맨드의 실행을 억지하는 것일지를 나타내는 한계이다.
예를 들면, 시스템 전체의 처리 효율의 저하에의 영향이 큰 용도에 대응하는 종별의 커맨드만큼 제한값을 높게 설정할 수 있다. 이에 의해, 시스템 전체의 처리 효율의 저하에의 영향이 작은 용도의 커맨드가 증가해도 당해 커맨드는 선행해서 실행이 억지된다. 그 결과, 시스템 전체의 처리 효율의 저하에의 영향이 큰 용도의 커맨드의 처리 효율의 저하가 억지된다.
도 1은 제1 실시 형태에 관한 장치의 기능 구성의 일례를 나타내는 도면이다. 스토리지 장치(1)는, 네트워크(2) 상의 스위치(3)를 통하여 스토리지 장치(5)나 컴퓨터(6)에 접속되어 있다. 도 1의 예에서는, 스토리지 장치(5)는 스토리지 장치(1)에 대하여 멀리 설치되어 있다. 또 컴퓨터(6)는 스위치(3)만을 통하여 스토리지 장치(1)에 접속되어 있다. 또 스토리지 장치(5)에는 컴퓨터(4)가 접속되어 있다.
예를 들면, 스토리지 장치(5)는 컴퓨터(4)로부터의 데이터 기입의 커맨드(7)(종별: 라이트 커맨드)에 의해, 소정의 기억 영역에 대한 데이터의 기입이 있으면, 기입된 데이터의 용장화 처리를 행한다. 예를 들면, 스토리지 장치(5)는 기입된 데이터를 스토리지 장치(1) 내의 기억 장치(1-1)에 복사하기 위한 커맨드(8)(종별: 복사 커맨드)를 출력한다. 이 경우, 커맨드(7)가 스토리지 장치(5)에 의한 복사 커맨드 출력이 원인으로 되어 있다.
컴퓨터(6)는 예를 들면 스토리지 장치(1)의 기억 장치(1-1)에 액세스하기 위해서 스토리지 장치(5)가 출력하는 커맨드(8)와는 별종의 커맨드(9)(종별: 비복사 커맨드)를 출력한다.
스토리지 장치(1)는 기억 장치(1-1), 통신 인터페이스(1-2), 관리부(1-3)를 갖고 있다. 통신 인터페이스(1-2)는 기억 장치(1-1)에의 데이터 액세스를 지시하는 커맨드를 수신한다. 또 통신 인터페이스(1-2)에 입력되는 커맨드에는 복수의 종별이 있다.
관리부(1-3)는 기억 수단(1-3a), 판별 수단(1-3b), 계수 수단(1-3c) 및 제어 수단(1-3d)을 갖고 있다.
기억 수단(1-3a)은 예를 들면 커맨드의 종별마다의 제한값을 기억한다. 제한값은 대응하는 종별의 커맨드를 실행할지의 여부를 판단할 때의 실행중인 커맨드의 수의 한계이다. 기억 수단(1-3a)으로서는 예를 들면 관리부(1-3) 내의 메모리가 이용된다.
판별 수단(1-3b)은 통신 인터페이스(1-2)를 통하여 수신한 커맨드의 종별을 판별한다. 예를 들면 판별 수단(1-3b)은 수신한 커맨드가 스토리지 장치(5)로부터의 데이터 복사를 지시하는 복사 커맨드인지, 복사 커맨드 이외의 비복사 커맨드인지를 판별한다.
계수 수단(1-3c)은 통신 인터페이스(1-2)를 통하여 수신한 커맨드이며, 실행중인 커맨드의 수를 계수한다. 예를 들면 계수 수단(1-3c)은 통신 인터페이스(1-2)를 통하여 커맨드를 수신할 때마다 실행중인 커맨드의 수를 나타내는 카운터를 증가시키고, 수신한 커맨드에 대한 응답을 송신할 때마다 카운터를 감소시킨다.
제어 수단(1-3d)은 기억 수단(1-3a)를 참조하고, 실행중인 커맨드의 수가 통신 인터페이스(1-2)를 통하여 수신한 커맨드의 종별에 대응하는 제한값 이하인지 어떤지를 판단한다. 그리고 제어 수단(1-3d)은 실행중인 커맨드의 수가 제한값 이하이면, 수신한 커맨드에 따른 데이터 액세스를 기억 장치(1-1)에 대하여 실행한다. 또 제어 수단(1-3d)은 실행중인 커맨드의 수가 수신한 커맨드의 종별에 대응하는 제한값을 초과한 경우, 당해 커맨드에 따른 데이터 액세스를 억지한다. 예를 들면 제어 수단(1-3d)은 커맨드에 따른 데이터 액세스를 실행한 경우에는 액세스 완료 후에 당해 커맨드에 대한 응답을 한다. 또 제어 수단(1-3d)은 커맨드에 따른 데이터 액세스를 억지한 경우에는 억지 결정 후에 액세스 불능을 나타내는 응답을 한다.
이러한 시스템에 있어서, 예를 들면 기억 수단(1-3a)에는 복사 커맨드에 대응하는 제한값으로서 「1024」, 비복사 커맨드에 대응하는 제한값으로서 「768」이 설정되어 있는 것으로 한다.
여기서 예를 들면 컴퓨터(4)가 데이터 기입의 커맨드(7)를 출력하고, 스토리지 장치(5)에 있어서 커맨드(7)에 따른 데이터 기입이 행해진 것으로 한다. 이 경우, 스토리지 장치(5)로부터 스토리지 장치(1)에 기입된 데이터의 복사를 지시하는 커맨드(8)가 송신된다.
커맨드(8)는 스토리지 장치(1)의 통신 인터페이스(1-2)에서 수신된다. 그러면, 관리부(1-3)의 판별 수단(1-3b)이 수신한 커맨드(8)의 종별이 복사 커맨드인 것을 판별한다. 또 계수 수단(1-3c)이 커맨드를 수신함으로써 실행중인 커맨드의 수를 증가시킨다. 예를 들면, 실행중인 커맨드의 수가 「80O」이 된 것으로 한다.
제어 수단(1-3d)은 수신한 커맨드(8)의 종별 「복사 커맨드」에 대응하는 제한값 「1024」와 실행중인 커맨드의 수 「80O」을 비교한다. 이 예에서는 실행중인 커맨드수는 제한값 이하이다. 그래서 제어 수단(1-3d)은 수신한 커맨드(8)에 따라서 데이터를 기억 장치(1-1)에 기입한다. 기입이 완료되면, 제어 수단(1-3d)은 완료 응답을 스토리지 장치(5)에 송신한다. 그러면, 계수 수단(1-3c)에 있어서 실행중인 커맨드수가 감소된다.
또한, 예를 들면 컴퓨터(6)로부터 스토리지 장치(1)에, 기억 장치(1-1)에의 데이터의 기입의 커맨드(9)가 송신된 것으로 한다. 이 커맨드(9)의 종별은 복사 커맨드 이외의 비복사 커맨드이다. 커맨드(9)는 스토리지 장치(1)의 통신 인터페이스(1-2)에서 수신된다. 그러면, 관리부(1-3)의 판별 수단(1-3b)이 수신한 커맨드(9)의 종별이 비복사 커맨드인 것을 판별한다. 또 계수 수단(1-3c)이 커맨드를 수신함으로써 실행중인 커맨드의 수를 증가시킨다. 예를 들면, 실행중인 커맨드의 수가 「800」이 된 것으로 한다.
제어 수단(1-3d)은 수신한 커맨드(9)의 종별 「비복사 커맨드」에 대응하는 제한값 「768」과 실행중인 커맨드의 수 「80O」을 비교한다. 이 예에서는 실행중인 커맨드의 수는 제한값을 초과하고 있다. 그 때문에, 제어 수단(1-3d)에 있어서 커맨드(9)의 실행은 억지된다. 예를 들면 제어 수단(1-3d)은 커맨드(9)에 따른 데이터 액세스를 실행하지 않고, 컴퓨터(6)에 대하여 커맨드 실행 불능을 나타내는 응답을 송신한다. 그러면, 계수 수단(1-3c)에 있어서 실행중인 커맨드수가 감소된다.
이와 같이, 스토리지 장치(1)에 있어서, 커맨드의 종별에 따라서 상이한 제한값을 적용하여 수신한 커맨드를 실행할지의 여부를 결정함으로써, 통신 인터페이스(1-2)를 복수의 용도로 사용한 경우의 시스템 전체에서의 처리 효율의 저하를 억지할 수 있다.
예를 들면 도 1에서는, 스토리지 장치(1)에 대하여 스토리지 장치(5)는 원격지에 있지만, 컴퓨터(6)는 근처에 있다. 이 경우, 스토리지 장치(1)와 스토리지 장치(5)간의 통신은 스토리지 장치(1)와 컴퓨터(6)간의 통신보다도 시간이 걸린다.
여기서 제1 실시 형태의 기술을 적용하지 않고, 모든 종별의 커맨드에 동일한 제한값을 적용한 경우에 대해 고찰한다. 이 경우, 실행중인 커맨드의 수가 당해 제한값을 초과하는 상황 하에서는, 스토리지 장치(5)와 컴퓨터(6) 중 어느 커맨드도 스토리지 장치(1)에서는 실행할 수 없다. 이 때, 컴퓨터(6)는 거리가 가깝기 때문에 커맨드 실행 불능의 응답을 신속하게 수취하여 커맨드의 재송신을 행할 수 있다. 한편, 스토리지 장치(5)는 컴퓨터(6)보다도 커맨드 실행 불능의 응답의 수신에 시간이 걸리고, 커맨드의 재송신도 늦어진다. 게다가 스토리지 장치(5)로부터 재송신된 커맨드는 컴퓨터(6)로부터 재송신된 커맨드보다도 시간을 들여서 스토리지 장치(1)에 도달한다. 그 결과, 스토리지 장치(1)에서는 컴퓨터(6)로부터 송신된 커맨드가 먼저 실행되고, 스토리지 장치(5)로부터의 복사 커맨드의 실행은 기다리게되어버린다. 스토리지 장치(5)로부터의 복사 커맨드를 완료할 수 없으면, 당해 복사 커맨드 출력이 원인으로 된 라이트 커맨드도 완료할 수 없어 처리 지연의 영향이 컴퓨터(4)에까지 미친다.
한편, 제1 실시 형태의 기술을 적용하고, 예를 들면, 복사 커맨드의 제한값을 비복사 커맨드의 제한값보다도 높게 설정한 경우를 생각한다. 이 경우, 스토리지 장치(1)에 있어서의 실행중인 커맨드의 수가 증가해가면, 복사 커맨드를 실행할 수 없게 되기 전에 컴퓨터(6)로부터 출력되는 비복사 커맨드의 실행이 억지된다. 예를 들면, 도 1의 예에서는, 실행중인 커맨드의 수가 768을 초과한 후는 스토리지 장치(5)로부터의 복사 커맨드만이 실행된다. 이에 의해, 커맨드의 전송 지연 시간의 관계에서 불리하게 있는 스토리지 장치(5)로부터의 복사 커맨드를 효율적으로 처리할 수 있다. 그 결과, 스토리지 장치(1)에 대한 컴퓨터(6)로부터의 커맨드의 증가에 의한 악영향이 컴퓨터(4)에 파급되는 것을 억지할 수 있다.
또한, 판별 수단(1-3b), 계수 수단(1-3c), 제어 수단(1-3d)은 스토리지 장치(1)가 갖는 CPU(Central Processing Unit)에 의해 실현할 수 있다. 예를 들면 관리부(1-3) 내의 CPU가 관리부(1-3) 내의 RAM(Random Access Memory) 등의 메모리에 저장된 프로그램을 실행함으로써 판별 수단(1-3b), 계수 수단(1-3c), 제어 수단(1-3d)이 실현된다. 또한, 기억 수단(1-3a)은 스토리지 장치(1)가 갖는 RAM이나 하드디스크 드라이브(HDD: Hard Disk Drive) 등에 의해 실현할 수 있다.
또한, 도 1에 도시한 각 요소간을 접속하는 선은 통신 경로의 일부를 나타내는 것이며, 도시한 통신 경로 이외의 통신 경로도 설정 가능하다.
〔제2 실시 형태〕
다음에 제2 실시 형태에 대해서 설명한다. 제2 실시 형태는, 호스트 컴퓨터로부터의 스토리지 장치 내의 데이터에의 액세스를 요구하는 호스트 커맨드에 관한 커맨드수의 제한값을 설치함으로써, 스토리지 장치간의 데이터의 복사를 효율적으로 실행하는 것이다.
도 2는 제2 실시 형태의 시스템 구성의 일례를 나타내는 도면이다. 네트워크(10)를 통하여 스위치(11, 12)가 접속되어 있다. 스위치(11, 12)는, 예를 들면 파이버 채널 스위치이다. 스위치(11)에는 호스트 컴퓨터(21)와 스토리지 장치(100)가 접속되어 있다. 스위치(12)에는 호스트 컴퓨터(22)와 스토리지 장치(200)가 접속되어 있다.
예를 들면 호스트 컴퓨터(21)와 스토리지 장치(100)는 동일한 시설에 설치되어 있다. 그 때문에, 호스트 컴퓨터(21)로부터 스토리지 장치(100)에의 데이터 기입, 또는 데이터 판독의 액세스는 적은 지연 시간으로 실행할 수 있다. 또 호스트 컴퓨터(22)와 스토리지 장치(200)는 동일한 시설에 설치되어 있다. 그 때문에, 호스트 컴퓨터(22)로부터 스토리지 장치(200)에의 데이터 기입, 또는 데이터 판독의 액세스는 적은 지연 시간으로 실행할 수 있다.
또한, 호스트 컴퓨터(21) 및 스토리지 장치(100)가 설치된 시설과 호스트 컴퓨터(22) 및 스토리지 장치(200)가 설치된 시설은 지리적으로 떨어져 있다. 그 때문에, 예를 들면 스토리지 장치(100)로부터 스토리지 장치(200)에의 데이터 복사는, 호스트 컴퓨터(22)로부터 스토리지 장치(200)에의 액세스보다도 시간이 걸린다. 그러면, 호스트 컴퓨터(22)로부터 스토리지 장치(200)에의 액세스가 대량으로 발생하면, 스토리지 장치(100)로부터 스토리지 장치(200)에의 데이터 복사가 정지될 우려가 있다. 그래서 제2 실시 형태에서는, 스토리지 장치(200)에 있어서, 호스트 커맨드를 실행할지의 여부의 판단 기준으로서 복사 커맨드보다도 엄격한 기준을 적용한다. 이에 의해, 스토리지 장치(100)로부터 스토리지 장치(200)에의 데이터 복사의 처리 효율의 저하를 억지한다.
또한, 스토리지 장치(100)로부터 스토리지 장치(200)에의 데이터 복사의 액세스를 리모트 액세스(RA)라고 부른다. 또한, 호스트 컴퓨터가 스토리지 장치에 대하여 데이터 액세스를 지시하는 커맨드를 호스트 커맨드라고 부른다. 또 스토리지 장치(100, 200)간의 데이터 복사에 사용하는 커맨드를 복사 커맨드라고 부른다.
도 3은, 제2 실시 형태에 사용하는 스토리지 장치의 하드웨어 구성의 일례를 나타내는 도면이다. 스토리지 장치(100)는 복수의 HDD(111, 112,···), 복수의 통신 인터페이스(I/F)(121, 122,···) 및 제어 모듈(CM: Controller Module)(130)을 갖고 있다.
HDD(111, 112,···)는 기억 장치의 일례이다. 또한, 스토리지 장치(100)에서는 HDD(111, 112,···) 대신에 SSD(Solid-State Drive)를 사용할 수도 있다.
복수의 통신 I/F(121, 122,···)는 호스트 컴퓨터(21)와 통신하는 CA이다. 또한 통신 I/F(121, 122,···)는 스토리지 장치(200)와의 통신에 사용할 수도 있다. 또 통신 I/F(121, 122,···)는 각각 호스트 컴퓨터(21)와의 통신 및 스토리지 장치(200)의 통신의 양방에서 사용할 수도 있다. 이하, 호스트 컴퓨터와의 통신(호스트 접속)에만 사용되는 통신 I/F를 CA 포트라고 부른다. 또한, 호스트 컴퓨터와의 통신 및 스토리지 장치끼리의 데이터 복사에 사용하는 통신 I/F를 CARA 포트라고 부른다.
CM(130)은 스토리지 장치(100) 내장의 컴퓨터이며, 스토리지 장치(100) 내의HDD 등의 자원 관리를 행한다. 예를 들면 CM(130)에는 HDD(111, 112, . ··)가 접속되어 있다. CM(130)은 접속된 HDD(111, 112,···)에서 제공되는 리소스(기억 기능)를 관리한다. CM(130)은 담당하는 복수의 HDD를 조합해서 RAID 그룹을 생성하고, 생성한 RAID 그룹을 논리적으로 1개의 볼륨으로 할 수 있다.
CM(130)은 CPU(131), 메모리(132), 캐쉬 메모리(133) 및 복수의 DA(Device Adapter)(134, 135,···)를 갖는다. CM(130) 내의 각 구성 요소는 CM(130)의 내부 패스(139)에 의해 서로 접속되어 있다.
CPU(131)는 CM(130) 전체를 제어한다. 예를 들면 CPU(131)는 각 통신 I/F(121, 122,···)로부터 입력되는 커맨드수를 제한한다. 또한 CM(130)은 복수의 CPU를 갖고 있어도 된다. 그 경우, 복수의 CPU가 연휴(連携)해서 CM(130) 전체를 제어한다.
메모리(132)는 CM(130)의 제어에 사용되는 각종 정보를 기억한다. 또 메모리(132)는 CPU(131)에 실행시키는 처리가 기술된 프로그램도 기억한다. 메모리(132)로서는, 예를 들면 플래시 메모리 등의 불휘발성의 메모리를 사용할 수 있다.
캐쉬 메모리(133)는 HDD(111, 112,···)에 입출력하는 데이터를 일시적으로 보존하는 메모리이다. DA(134, 135,···)는 각각 HDD(111, 112,···)에 접속되고, 접속된 HDD에의 데이터의 입출력을 행한다.
스토리지 장치(200)는 복수의 HDD(211, 212,···), 복수의 통신 인터페이스(I/F)(221, 222,···) 및 제어 모듈(CM)(230)을 갖고 있다. 또 CM(230)은 CPU(231), 메모리(232), 캐쉬 메모리(233) 및 복수의 DA(234, 235,···)를 갖는다. CM(230) 내의 각 구성 요소는 CM(230)의 내부 패스(239)에 의해 서로 접속되어 있다. 스토리지 장치(200) 내의 각 구성 요소는 스토리지 장치(100) 내의 동일한 이름의 구성 요소와 동일한 기능을 갖고 있다. 또 스토리지 장치(200) 내의CM(230)은 도 1에 도시한 관리부(1-3)의 일례이다. 즉, 제1 실시 형태에 있어서의 기억 수단(1-3a), 판별 수단(1-3b), 계수 수단(1-3c) 및 제어 수단(1-3d)의 기능이 CM(230)에 의해 실현되고 있다.
이상과 같은 하드웨어 구성에 의해 제2 실시 형태의 처리 기능을 실현할 수 있다. 또한, 제1 실시 형태에 나타낸 스토리지 장치(1)도, 도 3에 도시한 스토리지 장치(100, 200)와 동일한 하드웨어에 의해 실현할 수 있다. 또한, 도 3에 도시한 각 요소간을 접속하는 선은 통신 경로의 일부를 나타내는 것이며, 도시한 통신 경로 이외의 통신 경로도 설정 가능하다.
다음에, 제2 실시 형태에 있어서의 커맨드수 제한에 대해서 설명한다.
도 4는, 제2 실시 형태에 있어서의 커맨드의 유량 제어 상황의 일례를 나타내는 도면이다. 스토리지 장치(100)는 CARA 포트(151)와 CA 포트(152)를 갖는다. CARA 포트(151)는, 예를 들면 도 3에 도시한 통신 I/F(121)에 의해 실현되는 통신 포트이다. 또 스토리지 장치(100)는 복수의 볼륨(141, 142, 143)을 갖는다. 볼륨(141, 142, 143)은, 예를 들면 RAID 그룹 내에 설치된 논리 볼륨이다. 또 볼륨(141, 142, 143)은 각각이 1대의 HDD이어도 된다.
스토리지 장치(200)는 CARA 포트(251)와 CA 포트(252)를 갖는다. CARA 포트(251)는, 예를 들면 도 3에 도시한 통신 I/F(221)에 의해 실현되는 통신 포트이다. 또 스토리지 장치(200)는 복수의 볼륨(241, 242, 243)을 갖는다. 볼륨(241, 242, 243)은, 예를 들면 RAID 그룹 내에 설치된 논리 볼륨이다. 또 볼륨(241, 242, 243)은 각각이 1대의 HDD이어도 된다.
도 4의 예에서는 스토리지 장치(100)의 볼륨(143)과 스토리지 장치(200)의 볼륨(241)의 사이에 RA 세션이 확립되어 있다. RA 세션은 스토리지 장치(100)로부터 스토리지 장치(200)에 리모트 액세스 하고, 볼륨(143)에 기입된 데이터의 볼륨(241)에의 복사를 지시하는 복사 커맨드(32)의 송신에 사용하는 통신 경로이다. RA 세션에 의해 스토리지 장치간 복사의 대상 볼륨이 정의된다.
호스트 컴퓨터(21)는 스위치(11)를 통하여 CARA 포트(151)에 접속되어 있다. 호스트 컴퓨터(21)는 스토리지 장치(100) 내의 볼륨(141, 142, 143) 내의 데이터에 액세스하는 경우, 호스트 커맨드(31)를 출력한다. 호스트 커맨드(31)는 스위치(11)을 통하여 스토리지 장치(100)의 CARA 포트(151)에 입력된다. 스토리지 장치(100)에서는 CARA 포트(151)에 입력된 호스트 커맨드(31)를 CM(130)이 수신한다. CM(130)은 어느 하나의 볼륨(141, 142, 143)에 대하여 호스트 커맨드(31)에 나타내진 데이터 액세스 처리를 실행한다.
또 호스트 커맨드 중 RA 세션이 짜여진 볼륨에의 커맨드를, 특히 RA 커맨드라고 부른다. 또 RA 세션이 짜여져 있지 않은 볼륨에의 커맨드를, 특히 CA 커맨드라고 부른다. 복사 커맨드(32)는 초기 복사를 제외하고, 볼륨(143)에 대하여 RA 커맨드에 의한 데이터 갱신이 있었던 경우에, RA 세션이 짜여진 상대 케이스의 볼륨(241)을 등가 상태로 하기 위해서 발행된다. 즉, RA 세션이 짜여진 볼륨(143)에 데이터 갱신이 일어나지 않는 한 복사 커맨드(32)는 발행되지 않는다. 또 초기 복사란, RA 세션이 짜여진 시점에서 서로의 디스크를 등가 상태로 하는 복사 동작이다.
예를 들면 CM(130)은 호스트 커맨드(31)가 볼륨(143)에의 데이터 기입 지시의 경우, 볼륨(143)에 데이터를 기입하는 동시에, 기입한 데이터를 스토리지 장치(200) 내의 볼륨(241)에 복사하는 복사 커맨드(32)를 생성한다. 그리고 CM(130)은 생성한 복사 커맨드(32)를 CARA 포트(151)로부터 출력한다. 복사 커맨드(32)는 스위치(11, 12)를 통하여 스토리지 장치(200)의 CARA 포트(251)에 입력된다. 스토리지 장치(200)에서는 CARA 포트(251)에 입력된 복사 커맨드(32)를 CM(230)이 수신한다. CM(230)은 복사 커맨드(32)에 따라서 볼륨(241)에 데이터를 기입한다.
또한, 볼륨(241)은 스토리지 장치(100) 내의 볼륨(143)의 복사 데이터 저장용으로 사용되고 있고, 통상적인 운용중에는 호스트 컴퓨터(22)로부터의 액세스는 행해지지 않는 것으로 한다.
호스트 컴퓨터(22)는 스위치(12)를 통하여 CARA 포트(251)에 접속되어 있다. 호스트 컴퓨터(22)는 스토리지 장치(200) 내의 볼륨(242, 243) 내의 데이터에 액세스할 경우, 호스트 커맨드(33)를 출력한다. 호스트 커맨드(33)는 스위치(12)를 통하여 스토리지 장치(200)의 CARA 포트(251)에 입력된다. 스토리지 장치(200)에서는 CARA 포트(251)에 입력된 호스트 커맨드(33)를 CM(230)이 수신한다. CM(230)은 어느 하나의 볼륨(242, 243)에 대하여 호스트 커맨드(33)에 나타내진 데이터 액세스 처리를 실행한다.
도 4의 예에서는 각 스토리지 장치(100, 200)는 통신 포트(CARA 포트(151, 251), CA 포트(152, 252))마다 커맨드의 종별에 관계없이 최대 1024개의 커맨드를 동시에 처리할 수 있는 것으로 한다.
예를 들면 CM(130)은 CARA 포트(151)로부터 입력된 실행중인 커맨드의 수(커맨드 실행수)를 최대 1024로 제한한다. 또한, CARA 포트(151)는 복사 커맨드(32)의 송신에도 사용되지만, 송신할 수 있는 커맨드수에 대해서는 관리하지 않아 수신 커맨드수에 영향을 주는 것은 아니다.
CM(230)은 CARA 포트(251)로부터 입력된 실행중인 커맨드의 수를 최대 1024로 제한한다. 또 CM(230)은 CARA 포트(251)로부터 입력된 실행중인 커맨드수가 소정의 한계 이상으로 된 경우, 호스트 커맨드의 실행을 억지한다. 예를 들면 CM(230)은 커맨드수가 768 이상으로 되면, 호스트 커맨드의 실행을 억지한다. 또 CM(230)은 커맨드 실행수가 1024에 달하지 않으면, 커맨드 실행수가 768 이상이어도 복사 커맨드는 실행한다.
도 5는 제2 실시 형태에 있어서의 RA처의 스토리지 장치에서의 커맨드 제한의 실시 상황을 나타내는 도면이다. RA원의 스토리지 장치(100)의 RA 세션이 짜여진 볼륨(143)에 데이터의 기입이 행해질 때마다 스토리지 장치(100)로부터 RA처의 스토리지 장치(200)에 복사 커맨드가 송신된다. 또 호스트 컴퓨터(22)로부터 스토리지 장치(200)에는 스토리지 장치(200) 내의 볼륨(242, 243)에의 데이터 액세스를 지시하는 호스트 커맨드가 송신된다.
스토리지 장치(200)에서는 CARA 포트(251)를 통하여 입력된 커맨드 중 현재 실행중인 커맨드의 수(커맨드 실행수)가 카운트되고 있다. 호스트 커맨드의 커맨드 제한값이 「768」인 경우, 커맨드 실행수가 「768」 미만의 기간은, 스토리지 장치(200)에서는 새롭게 입력된 커맨드가 복사 커맨드이어도 호스트 커맨드이어도 당해 커맨드에 따른 데이터 액세스가 실행된다. 스토리지 장치(200)는 커맨드에 따라서 실행한 데이터 액세스가 정상적으로 완료되면, 커맨드의 송신원에 대하여 정상 응답을 송신한다.
스토리지 장치(200)에 대하여 복사 커맨드와 호스트 커맨드가 단기간에 대량으로 입력되면, 커맨드 실행수가 「768」 이상으로 되는 경우가 있다. 커맨드 실행수가 「768」 이상이 되면, 스토리지 장치(200)는 스토리지 장치(100)로부터 입력된 복사 커맨드에 대해서는 당해 복사 커맨드에 따른 데이터 액세스를 실행한다. 한편, 스토리지 장치(200)는 호스트 컴퓨터(22)로부터 입력된 호스트 커맨드에 대해서는 당해 호스트 커맨드에 따른 데이터 액세스를 실행하지 않고, QFULL 응답을 호스트 컴퓨터(22)에 송신한다. QFULL 응답은 커맨드의 송신원에 대하여 커맨드 실행수 과다에 의한 실행 불능을 통지하는 메시지이다. QFULL 응답을 수신한 호스트 컴퓨터(22)는 예를 들면 소정 시간 경과 후에 호스트 커맨드를 재송신할 수 있다. 이와 같이 하여 호스트 커맨드의 실행이 억지된다.
그 후, 스토리지 장치(200)에 대하여 복사 커맨드가 단기간에 대량으로 입력 되면, 커맨드 실행수가 「1024」에 달하는 경우가 있다. 커맨드 실행수가 「1024」에 도달하면, 스토리지 장치(200)는 커맨드의 종별에 관계없이 새롭게 입력된 커맨드에 따른 데이터 액세스를 실행하지 않고, QFULL 응답을 당해 커맨드의 송신원에 송신한다. 즉 스토리지 장치(200)는 스토리지 장치(100)로부터 입력된 복사 커맨드에 대해서도 당해 복사 커맨드에 따른 데이터 액세스를 실행하지 않고, QFULL 응답을 스토리지 장치(100)에 송신한다. QFULL 응답을 수신한 스토리지 장치(100)는, 예를 들면 소정 시간 경과 후에 복사 커맨드를 재송신할 수 있다. 이와 같이 하여 모든 커맨드의 실행이 억지된다.
스토리지 장치(200)에 있어서 실행중인 데이터 액세스가 완료할 때마다 커맨드 실행수는 감소된다. 커맨드 실행수가 1024 이하가 되면, 스토리지 장치(200)는 이후 복사 커맨드가 입력되면, 당해 복사 커맨드에 따른 데이터 액세스를 실행한다. 또 커맨드 실행수가 768 이하가 되면, 스토리지 장치(200)는 이후 호스트 커맨드가 입력되면, 당해 호스트 커맨드에 따른 데이터 액세스를 실행한다.
도 5에 도시한 바와 같이, 스토리지 장치(200)에서는 입력된 커맨드가 복사 커맨드인지 호스트 커맨드인지에 따라 당해 커맨드에 따른 데이터 액세스의 실행 유무가 상이하다. 그 때문에, 스토리지 장치(200)에서는 커맨드가 입력되면, 입력된 커맨드가 복사 커맨드인지 호스트 커맨드인지를 판별한다. 커맨드 종별의 판별은 커맨드에 포함되는 오퍼레이션 코드의 내용에 기초해서 행할 수 있다.
도 6은 커맨드의 데이터 포맷의 일례를 나타내는 도면이다. 예를 들면, 스토리지 장치(100, 200)는 SCSI(Small Computer System Interface)의 규약에 따른 CDB(Command Descriptor Block)라고 불리는 커맨드를 수신한다. CDB의 커맨드에는 6바이트·10바이트·12바이트·16바이트의 커맨드가 존재한다.
커맨드(40)의 선두에는 1바이트의 오퍼레이션 코드(41)가 설정되어 있다. 오퍼레이션 코드(41)에는 커맨드의 사이즈나 종별을 식별하는 코드가 설정된다. 일반적인 코드로서는 리드 요구인지 라이트 요구인지를 나타내는 코드나, 커맨드의 사이즈를 식별하는 코드가 설정된다. 예를 들면 코드 「08」은 6바이트의 리드 요구인 것을 나타내고 있다. 코드 「0A」는 6바이트의 라이트 요구인 것을 나타내고 있다. 코드 「28」은 10바이트의 리드 요구인 것을 나타내고 있다. 코드 「2A」는 10바이트의 라이트 요구인 것을 나타내고 있다. 코드 「A8」은 12바이트의 리드 요구인 것을 나타내고 있다. 코드 「AA」는 12바이트의 라이트 요구인 것을 나타내고 있다. 코드 「88」은 16바이트의 리드 요구인 것을 나타내고 있다. 코드 「8A」는 16바이트의 라이트 요구인 것을 나타내고 있다. 호스트 컴퓨터(21, 22)는 데이터의 리드 또는 데이터의 라이트를 요구하는 호스트 커맨드를 송신할 때에 오퍼레이션 코드(41)로서 일반적인 코드 중 어느 하나를 설정한다.
「D0」 이후의 오퍼레이션 코드(41)는 벤더 유니크에 사용 가능한 코드이다. 그래서 제2 실시 형태에서는, 예를 들면 코드 「D9」를 복사 커맨드인 것의 지정에 사용한다. 또 코드 「DD」를 경로 감시 커맨드인 것의 지정에 사용한다. 또한, 경로 감시 커맨드의 경우, 예를 들면 10바이트째 내지 13바이트째에 부가 정보(42)가 저장된다. 부가 정보(42)는 예를 들면 커맨드의 실행 상황이나 커맨드 제한값 등이다.
스토리지 장치(100)는 송신하는 복사 커맨드의 오퍼레이션 코드(41)에 「D9」를 설정하고, 다른 영역에 복사하는 데이터를 설정한다. 또 호스트 컴퓨터(21, 22)는 송신하는 호스트 커맨드의 오퍼레이션 코드(41)에 「08」, 「0A」 등의 리드 요구 또는 라이드 요구를 나타내는 값을 설정한다.
또한, CM(230)은 입력된 커맨드의 커맨드 제한값과 현재 실행중인 커맨드의 수(커맨드 실행수)를, 예를 들면 커맨드 관리 테이블을 사용해서 관리한다.
도 7은 커맨드 관리 테이블의 일례를 나타내는 도면이다. 커맨드 관리 테이블(50)에는 커맨드 제한값과 커맨드 실행수가 설정되어 있다. 또 커맨드 관리 테이블(50)은 예를 들면 CM(230)의 메모리(232) 내에 저장되어 있다.
커맨드 제한값은 입력된 커맨드를 실행할지의 여부의 판단 기준이 되는 커맨드 실행수의 한계이다. 커맨드 실행수가 커맨드 제한값에 달하고 있는 경우, 입력된 커맨드의 실행이 억지된다. 커맨드 제한값은 CM(230)이 커맨드를 수신할 때마다 수신한 커맨드의 종별에 따른 값이 설정된다. 예를 들면 복사 커맨드를 수신한 경우, CM(230)은 커맨드 제한값으로서 「1024」를 설정한다. 또 호스트 커맨드를 수신한 경우, CM(230)은 커맨드 제한값으로서 「768」을 설정한다.
커맨드 실행수는 실행중인 커맨드의 수이다. 실행중인 커맨드란, 스토리지 장치(200)에 입력되어 있지만, 송신원에 응답을 주지 않고 있는 커맨드이다. 커맨드 실행수는 CM(230)이 커맨드를 수신했을 때에 1만 증가되고, CM(230)이 응답을 송신했을 때에 1만 감소된다.
다음에, 스토리지 장치(200)의 CM(230)에 있어서의 커맨드 실행 처리의 순서에 대해서 설명한다.
도 8은 제2 실시 형태의 커맨드 실행 처리의 순서를 나타내는 플로우차트이다. 이하, 도 8에 나타내는 처리를 스텝 번호에 따라 설명한다.
[스텝S101] CM(230)은 커맨드를 수신한다.
[스텝S102] CM(230)은 커맨드 관리 테이블(50)의 커맨드 실행수의 값을 1만 증가시킨다.
[스텝S103] CM(230)은 수신한 커맨드의 종별이 호스트 커맨드인지 복사 커맨드인지를 판단한다. 예를 들면 CM(230)은 수신한 커맨드의 오퍼레이션 코드를 참조하고, 오퍼레이션 코드가 「08」, 「0A」, 「28」, 「2A」, 「A8」, 「AA」, 「88」, 「8A」 중 어느 하나의 값이면 호스트 커맨드라고 판단한다. 또 CM(230)은 수신한 커맨드의 오퍼레이션 코드가 「D9」이면 복사 커맨드라고 판단한다. 수신한 커맨드가 복사 커맨드이면, CM(230)은 처리를 스텝S104로 진행한다. 또한 수신한 커맨드가 호스트 커맨드이면, CM(230)은 처리를 스텝S111로 진행한다.
[스텝S104] CM(230)은 복사 커맨드를 수신한 경우, 커맨드 관리 테이블(50)의 커맨드 제한값으로 「1024」를 설정한다.
[스텝S105] CM(230)은 커맨드 관리 테이블(50)을 참조하고, 커맨드 실행수가 커맨드 제한값 이하인지 아닌지를 판단한다. CM(230)은 커맨드 실행수가 커맨드 제한값 이하이면, 처리를 스텝S108로 진행한다. 또 CM(230)은 커맨드 실행수가 커맨드 제한값을 초과하면, 처리를 스텝S106으로 진행한다.
[스텝S106] CM(230)은 커맨드 실행수가 커맨드 제한값을 초과한 경우, 커맨드 실행수를 1만 감소시킨다.
[스텝S107] CM(230)은 QFULL응답을 스토리지 장치(100)에 송신한다. 그 후, 커맨드 실행 처리가 종료한다.
[스텝S108] 커맨드 실행수가 커맨드 제한값 이하이면, CM(230)은 복사 커맨드에 따른 처리를 실행한다. 예를 들면 CM(230)은 복사 커맨드에 포함되는 데이터를 볼륨(241)에 기입한다.
[스텝S109] CM(230)은 커맨드 실행수를 1만 감소시킨다.
[스텝S110] CM(230)은 스토리지 장치(100)에, 복사 커맨드에 따른 데이터 기입이 정상적으로 완료한 것을 나타내는 정상 응답을 송신한다. 그 후, 커맨드 실행 처리가 종료된다.
[스텝S111] CM(230)은 호스트 커맨드를 수신한 경우, 커맨드 관리 테이블(50)의 커맨드 제한값으로 「768」을 설정한다.
[스텝S112] CM(230)은 커맨드 관리 테이블(50)을 참조하고, 커맨드 실행수가 커맨드 제한값 이하인지 아닌지를 판단한다. CM(230)은 커맨드 실행수가 커맨드 제한값 이하이면, 처리를 스텝S115로 진행한다. 또 CM(230)은 커맨드 실행하지만 커맨드 제한값을 초과하면, 처리를 스텝S113으로 진행한다.
[스텝S113] CM(230)은 커맨드 실행수가 커맨드 제한값을 초과한 경우, 커맨드 실행수를 1만 감소시킨다.
[스텝S114] CM(230)은 QFULL응답을 호스트 컴퓨터(22)에 송신한다. 그 후, 커맨드 실행 처리가 종료된다.
[스텝S115] 커맨드 실행수가 커맨드 제한값 이하이면, CM(230)은 호스트 커맨드에 따른 처리를 실행한다. 예를 들면 CM(230)은 호스트 커맨드가 리드 요구이면, 호스트 커맨드에서 지정된 데이터를 볼륨(242) 또는 볼륨(243)으로부터 판독한다. 또 CM(230)은 호스트 커맨드가 라이트 요구이면, 호스트 커맨드에서 지정된 데이터를 볼륨(242) 또는 볼륨(243)에 기입한다.
[스텝S116] CM(230)은 커맨드 실행수를 1만 감소시킨다.
[스텝S117] CM(230)은 호스트 컴퓨터(22)에, 호스트 커맨드에 따른 데이터 액세스가 정상으로 완료된 것을 나타내는 정상 응답을 송신한다. 또한, 호스트 커맨드가 리드 요구인 경우, 정상 응답에는 판독 데이터가 포함된다. 그 후, 커맨드 실행 처리가 종료된다.
이와 같이, 제2 실시 형태에서는, RA처가 되는 스토리지 장치(200)에 있어서, 복사 커맨드에서는 1포트당의 커맨드 제한값을 1024로 제한하고 있는 바, 호스트 커맨드의 경우, 커맨드 제한값을 768로 하고 있다. 그렇게 함으로써, 호스트 커맨드에 의한 부하가 높은 경우에도 최저 256개는 복사 커맨드의 처리에 할당되므로, 스토리지 장치(100, 200)간의 복사 처리가 정지된다는 사태가 억지된다. 즉, 복사 처리의 처리 효율의 저하가 억지된다. 또 호스트 커맨드수가 768에 미치지 않을 경우에는 복사 커맨드를 256개 이상 실행하는 것도 가능하다.
〔제3 실시 형태〕
제3 실시 형태는, 호스트 커맨드와 복사 커맨드의 동적인 유량 제어를 행하는 것이다. 또한, 제3 실시 형태에 있어서의 시스템 구성은 도 2, 도 3에 나타낸 제2 실시 형태의 구성과 동일하다. 또한, 제3 실시 형태에 있어서의 스토리지 장치(200)의 CM(230)의 메모리(232)에는 도 7과 동일한 커맨드 관리 테이블(50)이 저장되어 있다.
상기 제2 실시 형태에서는, 단위 시간당 수신하는 복사 커맨드의 수가 적은 경우, 호스트 커맨드가 대량으로 발생해도 커맨드 실행수의 총수가 1024 미만이 된다. 그 때문에, 호스트 커맨드의 커맨드 제한값을 복사 커맨드와 동일한 값으로 한 경우(예를 들면 1024)에 비해, 복사 커맨드가 적은 경우의 1포트당의 성능이 저하된다. 예를 들면 호스트 커맨드의 커맨드 제한값이 768인 경우, 복사 커맨드의 실행수가 256 미만일 때, 전체에서 1024의 커맨드를 실행할 수 있는 성능을 갖고 있음에도 불구하고, 1024개의 커맨드를 실행할 수 없다.
그래서 제3 실시 형태에서는, 바로 복사 커맨드가 발행되지 않는 경우에는 호스트 커맨드의 제한값을 768개로 하지 않고 1024개로 한다. 바로 복사 커맨드가 발행되지 않는 경우란, 복사 커맨드의 송신을 위해서 사전에 행하는 처리가 아직 행해지지 않고 있는 경우이다. 예를 들면, 복사 커맨드의 송신에는 스토리지 장치간의 복사를 행하는 RA 세션을 설정하는 복사 커맨드의 통신 경로의 설정이 사전에 행해진다. 이러한 RA 세션의 설정 등의 통신 경로의 설정이 행해지지 않고 있는 경우, 바로 복사 커맨드가 발행되는 경우는 없다고 판단할 수 있다.
도 9는 제3 실시 형태에 있어서의 커맨드의 유량 제어 상황의 일례를 나타내는 도면이다. 도 9에서는 상단에 RA 세션이 설정되어 있지 않을 때의 커맨드 유량 제어 상황을 나타내고 있고, 하단에 RA 세션이 설정되어 있을 때의 커맨드 유량 제어 상황을 나타내고 있다.
RA 세션이 설정되어 있지 않은 경우, 각 스토리지 장치(100, 200)는 CARA 포트(151, 251)를 통하여 입력되는 모든 종별의 커맨드에 대한 커맨드 제한값으로서 1024을 적용한다.
RA 세션이 설정되어 있는 경우, 스토리지 장치(200)는 호스트 커맨드의 커맨드 제한값만 768로 한다. 호스트 커맨드 이외의 커맨드의 커맨드 제한값은 1024이다.
RA 세션이 설정되어 있는지의 여부는 예를 들면 세션 관리 테이블에서 관리되고 있다.
도 10은 제3 실시 형태에 있어서의 세션 관리 테이블의 일례를 나타내는 도면이다. 세션 관리 테이블(60)에는 RA원 볼륨 번호, RA처 볼륨 번호 및 세션 종별의 란이 설치되어 있다.
RA원 볼륨 번호의 란에는 복사의 RA원이 되는 볼륨의, 당해 볼륨이 속하는 스토리지 장치 내에서의 식별 번호(볼륨 번호)가 설정된다.
RA처 볼륨 번호의 란에는, 복사의 RA처가 되는 볼륨의, 당해 볼륨이 속하는 스토리지 장치 내에서의 식별 번호(볼륨 번호)가 설정된다.
세션 종별의 란에는 세션의 종별이 설정되어 있다. 상이한 스토리지 장치 각각의 볼륨간에서의 데이터 복사(리모트 복사)에 사용하는 세션의 경우, 세션 종별의 란에 「리모트 복사 세션」으로 설정된다. 동일한 스토리지 장치 내의 상이한 볼륨간에서의 데이터 복사(로컬 복사)에 사용하는 세션의 경우, 세션 종별의 란에 「로컬 복사 세션」으로 설정된다. 또 리모트 복사 세션의 경우, 복사 상대가 되는 장치의 식별자(장치ID)가 설정된다.
도 10에 도시한 바와 같은 세션 관리 테이블은 예를 들면 스토리지 장치(200)의 CM(230) 내의 메모리(232)에 저장되어 있다.
다음에, 스토리지 장치(200)에 있어서의 커맨드 실행 처리에 대해서 설명한다.
도 11은 제3 실시 형태의 커맨드 실행 처리의 순서를 나타내는 플로우차트이다. 이하, 도 11에 나타내는 처리를 스텝 번호에 따라 설명한다. 도 11에 나타내는 스텝 중 스텝S201 내지 S210, S214 내지 S219의 각 처리는 각각 도 8에 나타낸 제2 실시 형태의 스텝S101 내지 S110, S112 내지 S117의 처리와 동일하다. 따라서, 제2 실시 형태와 상이한 처리인 스텝S211 내지 S213에 대해서 설명한다.
[스텝S211] 스토리지 장치(200)의 CM(230)은 수신한 커맨드가 호스트 커맨드인 경우, RA 세션의 유무를 판단한다. 예를 들면 CM(230)은 세션 관리 테이블(60)을 참조하고, RA 세션이 적어도 1개 설정되어 있는 경우, RA 세션이 있다고 판단한다. CM(230)은 RA 세션이 있는 경우, 처리를 스텝S212로 진행한다. 또 CM(230)은 RA 세션이 없는 경우, 처리를 스텝S213으로 진행한다.
[스텝S212] CM(230)은 RA 세션이 설정되어 있는 경우, 호스트 커맨드의 커맨드 제한값을 768로 설정한다. 그 후, CM(230)은 처리를 스텝S214로 진행한다.
[스텝S213] CM(230)은 RA 세션이 설정되어 있지 않은 경우, 호스트 커맨드의 커맨드 제한값을 1024로 설정한다.
그 후, 스텝S214의 처리에 의해, 커맨드 실행수가 설정된 커맨드 제한값 이하인지 아닌지에 따라서 수신한 호스트 커맨드의 실행의 유무가 판단된다. 그 결과, RA 세션이 없는 경우에는, 호스트 커맨드에 대하여도 복사 커맨드와 동일한 커맨드 제한값이 적용된다.
이와 같이 커맨드의 유량 제어를 행함으로써, 복사 커맨드를 수신하는 상황에 없는 경우에는 호스트 커맨드이어도 커맨드 제한값으로서 1024가 적용되어 처리 효율을 향상시킬 수 있다.
〔제4 실시 형태〕
다음에 제4 실시 형태에 대해서 설명한다. 제4 실시 형태는, 복사 커맨드와 호스트 커맨드의 비율을 고려한 동적인 유량 제어를 행하는 것이다. 또한, 제4 실시 형태에 있어서의 시스템 구성은 도 2, 도 3에 나타낸 제2 실시 형태의 구성과 동일하다.
제2·제3 실시 형태에서는, RA처측의 스토리지 장치(200)에 대한 호스트 커맨드수가 과대해진 경우에 있어서의 복사 커맨드의 처리 효율 저하를 억지한 것이지만, 복사 커맨드수가 과대해지는 경우에 대해 고려되지 않고 있다. 그 때문에 RA처의 스토리지 장치(200)에 있어서, 복사 커맨드에서 커맨드 제한값 1024를 다 쓰고, 호스트 커맨드를 1개도 실행할 수 없는 상황에 빠질 가능성도 있다.
따라서, 제4 실시 형태에서는, 스토리지 장치(200)가 수신한 복사 커맨드수와 호스트 커맨드수의 비율에 기초하여 복사 커맨드와 호스트 커맨드의 각각의 커맨드 제한값을 설정한다. 이에 의해, 복사 커맨드가 많아진 경우에 있어서의 복사 커맨드와 호스트 커맨드의 처리 효율의 치우침의 증가가 억지된다.
도 12는 제4 실시 형태에 있어서의 커맨드의 유량 제어 상황의 일례를 나타내는 도면이다. 제4 실시 형태에서는, RA처의 스토리지 장치(200)에 있어서, 어떤 일정 시간(예를 들면 10초간)의 RA처 호스트 커맨드 누적수(tc)와 RA처 복사 커맨드 누적수(tr)를 카운트한다. 또한, RA처 호스트 커맨드 누적수(tc)는 일정 기간 내에 스토리지 장치(200)가 수신한 호스트 커맨드의 수이며, 실행되지 않고 QFULL 응답이 온 호스트 커맨드도 포함된다. 마찬가지로 RA처 복사 커맨드 누적수(tr)는 일정 기간 내에 스토리지 장치(200)가 수신한 복사 커맨드의 수이며, 실행되지 않고 QFULL 응답이 온 복사 커맨드도 포함된다.
또 RA원측의 스토리지 장치(100)에서는 CARA 포트(151)로부터 수신된 커맨드의 커맨드 제한값이 1024로 설정되어 있는 것으로 한다. 호스트 컴퓨터(21)로부터 CARA 포트(151)에 입력된 호스트 커맨드(31)가 볼륨(143)에의 기입인 경우, 그 호스트 커맨드(31)에 따른 데이터 복사가 발생한다. 이 때, 호스트 커맨드(31)에 대한 응답은 대응하는 복사 커맨드(32)에의 스토리지 장치(200)로부터의 응답을 스토리지 장치(100)가 수신한 후에 출력된다. 그 때문에, 입력된 호스트 커맨드(31)는 데이터 복사 처리가 완료될 때까지 커맨드 실행중인 상태가 된다.
스토리지 장치(200)의 CM(230)은 RA처 호스트 커맨드 누적수(tc)와 RA처 복사 커맨드 누적수(tr)의 비율에 따라서, RA처 호스트 커맨드 제한값(tcs)과 RA처 복사 커맨드 제한값(trs)의 비율을 결정한다. 계산식은 이하와 같다.
Figure pat00001
Figure pat00002
예를 들면, RA처 호스트 커맨드 누적수(tc)가 「2000」, RA처 복사 커맨드 누적수(tr)가 「1024」인 경우를 생각한다. 이 경우, RA처 호스트 커맨드 제한값(tcs)과 RA처 복사 커맨드 제한값(trs)은 이하와 같은 값이 된다.
tcs=677
trs=347
이와 같이 제어함으로써, 복사 커맨드를 다수 수신한 경우에도 호스트 커맨드와 평등에 처리하는 것이 가능해진다. 복사 커맨드와 호스트 커맨드의 비율을 고려한 동적인 유량 제어에 사용되는 정보는 커맨드 관리 테이블에 설정된다.
도 13은 제4 실시 형태의 커맨드 관리 테이블의 일례를 나타내는 도면이다. 커맨드 관리 테이블(51)에는 호스트 커맨드 실행수, RA처 호스트 커맨드 누적수(tc), RA처 호스트 커맨드 제한값(tcs), 복사 커맨드 실행수, RA처 복사 커맨드 누적수(tr) 및 RA처 복사 커맨드 제한값(trs)이 설정되어 있다. 또 커맨드 관리 테이블(51)은 예를 들면 CM(230)의 메모리(232) 내에 저장되어 있다.
호스트 커맨드 실행수는 실행중인 호스트 커맨드의 수이다. RA처 호스트 커맨드 누적수(tc)는 일정 시간 내에 수신한 호스트 커맨드의 수이다. RA처 호스트 커맨드 제한값(tcs)은 스토리지 장치(200)에 있어서의 호스트 커맨드의 실행수의 상한을 나타내는 값이다. 호스트 커맨드 실행수가 RA처 호스트 커맨드 제한값(tcs)에 달하고 있는 경우, 입력된 호스트 커맨드의 실행이 억지된다.
복사 커맨드 실행수는 실행중인 복사 커맨드의 수이다. RA처 복사 커맨드 누적수(tr)는 일정 시간 내에 수신한 복사 커맨드의 수이다. RA처 복사 커맨드 제한값(trs)은 스토리지 장치(200)에 있어서의 복사 커맨드의 실행수의 상한을 나타내는 값이다. 복사 커맨드 실행수가 RA처 복사 커맨드 제한값(trs)에 달하고 있는 경우, 입력된 복사 커맨드의 실행이 억지된다.
도 13에 도시한 커맨드 관리 테이블(51)의 RA처 호스트 커맨드 제한값(tcs)과 RA처 복사 커맨드 제한값(trs)은 예를 들면 10초 간격으로 갱신된다. 이하, 커맨드 관리 테이블(51)의 갱신 처리에 대해서 설명한다.
도 14는 제4 실시 형태의 커맨드 관리 테이블 갱신 처리의 순서를 나타내는 플로우차트이다. 이하, 도 14에 나타내는 처리를 스텝 번호에 따라 설명한다.
[스텝S301] CM(230)은 타이머를 리세트하고, 시간 계측(타이머 카운트)을 개시한다.
[스텝S302] CM(230)은 타이머가 10초 경과했는지의 여부를 판단한다. 10초 경과되어 있지 않으면, CM(230)은 처리를 스텝S301로 진행한다. 10초 경과되면, CM(230)은 처리를 스텝S303으로 진행한다.
[스텝S303] CM(230)은, RA처 호스트 커맨드 제한값(tcs)을 갱신한다. 예를 들면 CM(230)은 커맨드 관리 테이블(51)을 참조하고, RA처 호스트 커맨드 누적수(tc)와 RA처 복사 커맨드 누적수(tr)를 취득한다. 다음으로 CM(230)은 식(1)에 기초해서 RA처 호스트 커맨드 제한값(tcs)을 계산한다. 그리고 CM(230)은 계산한 RA처 호스트 커맨드 제한값(tcs)으로, 커맨드 관리 테이블(51)에 저장되어 있는 RA처 호스트 커맨드 제한값(tcs)의 값을 갱신한다.
[스텝S304] CM(230)은 RA처 복사 커맨드 제한값(trs)을 갱신한다. 예를 들면 CM(230)은 커맨드 관리 테이블(51)을 참조하고, RA처 호스트 커맨드 제한값(tcs)을 취득한다. 다음으로 CM(230)은 식(2)에 기초해서 RA처 복사 커맨드 제한값(trs)을 계산한다. 그리고 CM(230)은 계산한 RA처 복사 커맨드 제한값(trs)으로, 커맨드 관리 테이블(51)에 저장되어 있는 RA처 복사 커맨드 제한값(trs)의 값을 갱신한다.
[스텝S305] CM(230)은 커맨드 관리 테이블(51)의 RA처 호스트 커맨드 누적수(tc)와 RA처 복사 커맨드 누적수(tr)를 O으로 초기화한다. 그 후, CM(230)은 처리를 스텝S301로 진행한다.
이와 같이 하여 직전의 10초간에 있어서의 RA처 호스트 커맨드 누적수(tc)와 RA처 복사 커맨드 누적수(tr)에 기초하는 RA처 호스트 커맨드 제한값(tcs)과 RA처 복사 커맨드 제한값(trs)의 갱신이 10초 간격으로 반복 실행된다.
다음에, 제4 실시 형태의 스토리지 장치(200)에 있어서의 커맨드 실행 처리에 대해서 설명한다.
도 15는 제4 실시 형태의 커맨드 실행 처리의 순서의 일례를 나타내는 플로우차트이다. 이하, 도 15에 나타내는 처리를 스텝 번호에 따라 설명한다.
[스텝S311] CM(230)은 커맨드를 수신한다.
[스텝S312] CM(230)은 수신한 커맨드의 종별이 호스트 커맨드인지 복사 커맨드인지를 판단한다. 커맨드의 종별은, 예를 들면 수신한 커맨드의 오퍼레이션 코드에 기초해서 판단할 수 있다. 수신한 커맨드가 복사 커맨드이면, CM(230)은 처리를 스텝S313으로 진행한다. 또한 수신한 커맨드가 호스트 커맨드이면, CM(230)은 처리를 스텝S320으로 진행한다.
[스텝S313] CM(230)은 복사 커맨드를 수신한 경우, 커맨드 관리 테이블(51)의 복사 커맨드 실행수의 값을 1만 증가시킨다. 또 CM(230)은 RA처 복사 커맨드 누적수(tr)의 값을 1만 증가시킨다.
[스텝S314] CM(230)은 커맨드 관리 테이블(51)을 참조하고, 복사 커맨드 실행수가 RA처 복사 커맨드 제한값(trs) 이하인지 아닌지를 판단한다. 복사 커맨드 실행수가 RA처 복사 커맨드 제한값(trs) 이하이면, CM(230)은 처리를 스텝S317로 진행한다. 또 복사 커맨드 실행수가 RA처 복사 커맨드 제한값(trs)을 초과하면, CM(230)은 처리를 스텝S315로 진행한다.
[스텝S315] CM(230)은 복사 커맨드 실행수가 RA처 복사 커맨드 제한값(trs)을 초과한 경우, 복사 커맨드 실행수를 1만 감소시킨다.
[스텝S316] CM(230)은 QFULL 응답을 스토리지 장치(100)에 송신한다. 그 후, 커맨드 실행 처리가 종료된다.
[스텝S317] 커맨드 실행수가 커맨드 제한값 이하이면, CM(230)은 복사 커맨드에 따른 처리를 실행한다.
[스텝S318] CM(230)은 복사 커맨드 실행수를 1만 감소시킨다.
[스텝S319] CM(230)은 스토리지 장치(100)에, 복사 커맨드에 따른 데이터 기입이 정상적으로 완료된 것을 나타내는 정상 응답을 송신한다. 그 후, 커맨드 실행 처리가 종료된다.
[스텝S320] CM(230)은 호스트 커맨드를 수신한 경우, 커맨드 관리 테이블(51)의 호스트 커맨드 실행수의 값을 1만 증가시킨다. 또 CM(230)은 RA처 호스트 커맨드 누적수(tc)의 값을 1만 증가시킨다.
[스텝S321] CM(230)은 커맨드 관리 테이블(51)을 참조하고, 호스트 커맨드 실행수가 RA처 호스트 커맨드 제한값(tcs) 이하인지 아닌지를 판단한다. 호스트 커맨드 실행수가 RA처 호스트 커맨드 제한값(tcs) 이하이면, CM(230)은 처리를 스텝S324로 진행한다. 또 호스트 커맨드 실행수가 RA처 호스트 커맨드 제한값(tcs)을 초과하면, CM(230)은 처리를 스텝S322로 진행한다.
[스텝S322] CM(230)은 호스트 커맨드 실행수가 RA처 호스트 커맨드 제한값(tcs)을 초과한 경우, 호스트 커맨드 실행수를 1만 감소시킨다.
[스텝S323] CM(230)은 QFULL 응답을 호스트 컴퓨터(22)에 송신한다. 그 후, 커맨드 실행 처리가 종료된다.
[스텝S324] 커맨드 실행수가 커맨드 제한값 이하이면, CM(230)은 호스트 커맨드에 따른 처리를 실행한다.
[스텝S325] CM(230)은 호스트 커맨드 실행수를 1만 감소시킨다.
[스텝S326] CM(230)은 호스트 컴퓨터(22)에, 호스트 커맨드에 따른 데이터 액세스가 정상적으로 완료된 것을 나타내는 정상 응답을 송신한다. 그 후, 커맨드 실행 처리가 종료된다.
이와 같이 제어함으로써, 복사 커맨드를 다수 수신한 경우에도 복사 커맨드와 호스트 커맨드를 평등하게 처리하는 것이 가능해진다.
〔제5 실시 형태〕
다음에 제5 실시 형태에 대해서 설명한다. 제5 실시 형태는, RA원측의 커맨드 누적수도 고려해서 동적인 유량 제어를 행하는 것이다. 또한, 제5 실시 형태에 있어서의 시스템 구성은 도 2, 도 3에 나타낸 제2 실시 형태의 구성과 동일하다.
제4 실시 형태에서는, RA처측의 스토리지 장치(200)에 있어서의 RA처 복사 커맨드 제한값(trs)과 RA처 호스트 커맨드 제한값(tcs)의 산출 시에 RA원의 커맨드 누적수가 고려되지 않고 있다. 스토리지 장치(200)에 있어서의 RA처 복사 커맨드 제한값(trs)과 RA처 호스트 커맨드 제한값(tcs)의 산출 시에 고려되었던 RA처 복사 커맨드 누적수(tr)는, RA원의 CARA 포트(151)에 있어서 1024로 제한된 후의 값이다. 이에 대하여, 스토리지 장치(200)에 입력된 호스트 커맨드에 관한 RA처 호스트 커맨드 누적수(tc)에는 QFULL 응답이 온 호스트 커맨드도 포함되어 있고, 커맨드 제한의 영향을 받지 않고 있다. 그 때문에, 스토리지 장치(100)에 입력된 호스트 커맨드수가 1024 이상이 되고, RA처 복사 커맨드 누적수(tr)가 제한 후의 상황 하에서 계수된 경우로, 또 스토리지 장치(200)에 입력되는 호스트 커맨드가 1024 이상인 경우에 공평한 실행은 되지 않는다. 즉, 스토리지 장치(200)에 있어서, 복사 커맨드보다도 호스트 커맨드 쪽이 우선해서 실행되어버린다. 이 문제를 해결하기 위해서, 제5 실시 형태에서는, RA처측의 스토리지 장치(200)에 있어서의 RA처 복사 커맨드 제한값(trs)과 RA처 호스트 커맨드 제한값(tcs)의 산출에 RA원의 호스트 커맨드 누적수를 사용하도록 한다.
도 16은 제5 실시 형태에 있어서의 커맨드 유량 제어 상황의 일례를 나타내는 도면이다. 제5 실시 형태에서는, RA원의 스토리지 장치(100)에 있어서, RA 커맨드수를 나타내는 정보를 RA처의 스토리지 장치(200)에 통지한다.
예를 들면 스토리지 장치(100)의 CM(130)은 일정 시간(예를 들면 10초)마다 스토리지 장치(100)에 입력된 호스트 커맨드의 수(RA원 호스트 커맨드 누적수: ic)를 카운트한다.
또 CM(130)은 볼륨(141 내지 143)에의 액세스가 실행된 호스트 커맨드(31)의 액세스처를 판별한다. 그리고 CM(130)은 액세스처가 RA 세션이 짜여져 있지 않은 볼륨(141, 142)이면, 실행된 호스트 커맨드(31)는 CA 커맨드(34)라고 판단한다. 또 CM(130)은 액세스처가 RA 세션이 짜여진 볼륨(143)이면, 실행된 호스트 커맨드(31)는 RA 커맨드(35)라고 판단한다. 그리고 CM(130)은 일정 시간(예를 들면 10초) 내에 실행된 호스트 커맨드(31)의 총수 중 RA 커맨드(35)의 비율(RA 커맨드율: p)을 계산한다.
또 RA 커맨드(35)가 실행된 경우, RA 커맨드가 데이터의 기입을 요구하는 라이트 커맨드이면, CM(130)에 의해 볼륨(143)에 데이터가 기입된다. 그리고, CM(130)이 복사 커맨드(32)를 발행한다. 발행된 복사 커맨드(32)는 스위치(11, 12) 등을 경유하여 스토리지 장치(200)에 송신된다.
그리고 CM(130)은 RA원 호스트 커맨드 누적수(ic)와 RA 커맨드율(p)을 포함하는 경로 감시 커맨드(36)를 스토리지 장치(200)에 송신한다. 예를 들면 CM(130)은 일정 시간(예를 들면 10초)마다 부가 정보(42)(도 6 참조)를 추가한 경로 감시 커맨드(36)를 송신한다. 부가 정보(42)에는 RA원 호스트 커맨드 누적수(ic)와 RA 커맨드율(p)이 포함된다.
RA원 호스트 커맨드 누적수(ic)와 RA 커맨드율(p)을 포함하는 경로 감시 커맨드(36)에 의해, RA처의 스토리지 장치(200)에 있어서 RA원의 커맨드의 입력 상황을 알 수 있다.
RA처의 스토리지 장치(200)에서는, CM(230)이 CARA 포트(251)에 입력된 커맨드에 기초하여 RA처 호스트 커맨드 누적수(tc)를 카운트한다. 그리고 CM(230)은 RA처 호스트 커맨드 누적수(tc)와 경로 감시 커맨드(36)에 나타내진 정보에 기초하여 RA처 호스트 커맨드 제한값(tcs)과 RA처 복사 커맨드 제한값(trs)을 계산한다. 계산식은 이하와 같다.
Figure pat00003
Figure pat00004
이 2식으로부터 이하의 결과가 얻어진다.
Figure pat00005
Figure pat00006
또한, 이들의 정보를 사용함으로써, RA원의 스토리지 장치(100)에 있어서의 RA원 호스트 커맨드 제한값(ics)도 RA처의 스토리지 장치(200)의 상황에 따른 값으로 할 수 있다. 예를 들면 이하의 계산식에서 스토리지 장치(100)에 있어서의 RA원 호스트 커맨드 제한값(ics)을 산출할 수 있다.
Figure pat00007
예를 들면 스토리지 장치(200)가 RA원 호스트 커맨드 제한값(ics)을 계산하고, 계산한 RA원 호스트 커맨드 제한값(ics)을 부가 정보로서 포함하는 경로 감시 커맨드(37)를 스토리지 장치(100)에 송신한다. 경로 감시 커맨드(37)를 수신한 스토리지 장치(100)는 경로 감시 커맨드(37)에서 나타내진 RA원 호스트 커맨드 제한값(ics)을 CARA 포트(151)로부터 입력되는 호스트 커맨드의 실행 제한에 적용한다.
이와 같이, RA원의 커맨드 입력의 상태를 고려함으로써, 스토리지 장치(100, 200) 각각에 1024를 초과하는 커맨드가 입력된 경우라도 스토리지 장치(100, 200) 각각에 있어서 호스트 커맨드가 동등하게 처리된다.
이하에, 제5 실시 형태에 있어서의 각 스토리지 장치(100, 200)에서의 호스트 커맨드의 실행 성능에 대해서 구체예를 이용하여 설명한다.
제1 예는, 「ic×(1-p)≤tc」인 경우이다. 「ic×(1-p)」는 일정 시간 내에 RA원의 스토리지 장치(100)에 입력된 CA 커맨드의 수(CA 커맨드 누적수)를 나타내고 있다. 즉 「ic×(1-p)≤tc」는 스토리지 장치(100)에 입력된 CA 커맨드 누적수가 스토리지 장치(200)에 입력된 RA처 호스트 커맨드 누적수(tc) 이하인 경우를 나타내고 있다.
여기서, 각 측정값을 이하와 같은 것으로 한다.
RA원 호스트 커맨드 누적수(ic): 3000
RA 커맨드율(p): O.5
RA처 호스트 커맨드 누적수(tc): 2000
그러면, RA처 호스트 커맨드 제한값(tcs), RA처 복사 커맨드 제한값(trs) 및 RA원 호스트 커맨드 제한값(ics)은 이하와 같이 된다.
tcs=(2000/(2000+3000×O.5))×1024=585
trs=1024-585=439
ics=439/0.5=878
이 경우, 호스트 컴퓨터(21)로부터 단위 시간당 출력되는 호스트 커맨드의 수가 거의 일정하면, 스토리지 장치(100)에 대하여 RA원 호스트 커맨드 제한값(ics)을 초과하여 입력되는 호스트 커맨드의 수는 ic-ics=2122가 된다. 마찬가지로, 호스트 컴퓨터(22)로부터 단위 시간당 출력되는 호스트 커맨드의 수가 거의 일정하면, 스토리지 장치(200)에 대하여 RA처 호스트 커맨드 제한값(tcs)을 초과하여 입력되는 호스트 커맨드의 수는 「tc-tcs=1415」가 된다. 그러면, 호스트 커맨드를 송신한 각 호스트 컴퓨터(21, 22)에 QFULL이 응답되는 확률(QFULL율)은 아래와 같이 되며, 동등한 성능으로 되는 것을 알 수 있다.
2122/3000=0.707=70.7%
1415/2000=0.707=70.7%
제2 예는 「ic×(1-p)>tc」인 경우이다. 「ic×(1-p)>tc」는 스토리지 장치(100)에 입력된 CA 커맨드의 수가 스토리지 장치(200)에 입력된 RA처 호스트 커맨드 누적수(tc)보다도 많은 경우를 나타내고 있다.
여기서, 각 측정값을 이하와 같은 것으로 한다.
RA원 호스트 커맨드 누적수(ic): 2000
RA 커맨드율: O.4
RA처 호스트 커맨드 누적수(tc): 1000
그러면, RA처 호스트 커맨드 제한값(tcs), RA처 복사 커맨드 제한값(trs) 및 RA원 호스트 커맨드 제한값(ics)은 아래와 같이 된다.
tcs=(1000/(1000+2000×O.4))×1024=568
trs=1024-568=456
ics=456/0.4=1140>1024
이와 같이 ics가 1024를 초과해버린다. 그 때문에, 「ic×(1-p)>tc」인 경우에는 ics를 1024에 맞추도록 이하의 계산식을 사용한다.
Figure pat00008
Figure pat00009
그러면, RA처 복사 커맨드 제한값(trs)과 RA처 호스트 커맨드 제한값(tcs)은 이하와 같은 값으로 변경된다.
trs=1024×O.4=409
tcs=1000/2000×1024=512
이 경우, ic-ics=976, tc-tcs=488이며, QFULL율로서는 각각 아래와 같이 되며, 동등한 성능이 된다.
976/2000=0.488=48.8%
488/1000=0.488=48.8%
또 제5 실시 형태는, RA원의 스토리지 장치(100)의 CARA 포트(151)에 호스트 커맨드(31)가 입력되고, CARA 포트(151)로부터 출력된 복사 커맨드(32)가 스토리지 장치(200)의 CARA 포트(251)에서 수신된다. 이와 같이 CARA 포트를 통하여 입출력된 커맨드가 각 스토리지 장치에의 커맨드 상태의 감시 대상이 된다.
호스트 커맨드(31)는 CARA 포트(151) 이외에 CA 포트(152)에 입력되는 경우가 있을 수 있다. CA 포트(152)에 입력된 호스트 커맨드에 관해서는 제5 실시 형태에 있어서의 감시 대상외가 된다.
또 복사 커맨드(32)는 스토리지 장치(100)의 CARA 포트(151)로부터 출력되는 경우 이외에 RA 포트로부터 출력되는 경우가 있을 수 있다. RA 포트로부터 출력된 복사 커맨드에 관해서는 제5 실시 형태에 있어서의 감시 대상외가 된다.
또한 RA처의 스토리지 장치(200)에서는, 복사 커맨드(32)를 CARA 포트(251)에서 수신하는 경우 이외에 RA 포트에서 수신하는 경우도 있을 수 있다. RA 포트에서 수신된 복사 커맨드에 관해서는 제5 실시 형태에 있어서의 감시 대상외가 된다.
이와 같이, 전용 포트를 통하여 입출력되는 커맨드에 관해서는, 제5 실시 형태에 따른 스토리지 장치의 커맨드 입출력 상황을 판단하는 상태에서의 감시 대상외가 된다.
다음에, 제5 실시 형태의 기능을 실현하기 위해서 RA원과 RA처의 각 스토리지 장치(100, 200)가 갖는 커맨드 관리 테이블에 대해서 설명한다.
도 17은 RA원 커맨드 관리 테이블의 일례를 나타내는 도면이다. 스토리지 장치(100)는 RA원 커맨드 관리 테이블(52)을 갖는다. 예를 들면 CM(130)의 메모리 내에 RA원 커맨드 관리 테이블(52)이 저장된다.
RA원 커맨드 관리 테이블(52)에는 호스트 커맨드 실행수, RA원 호스트 커맨드 누적수(ic), RA원 호스트 커맨드 제한값(ics), RA 커맨드수 및 RA 커맨드율(p)이 설정되어 있다.
호스트 커맨드 실행수는 RA원의 스토리지 장치(100)에서 실행하고 있는 호스트 커맨드의 수이다.
RA원 호스트 커맨드 누적수(ic)는 일정 시간 내에 RA원의 스토리지 장치(100)에 입력된 호스트 커맨드의 수이다.
RA원 호스트 커맨드 제한값(ics)은 RA원의 스토리지 장치(100)에 있어서의 호스트 커맨드 실행수의 상한을 나타내는 값이다.
RA 커맨드수는 일정 시간 내에 RA원의 스토리지 장치(100)에 입력된 호스트 커맨드 중 RA 세션이 짜여진 볼륨에의 액세스 요구인 RA 커맨드의 수이다.
RA 커맨드율(p)은 일정 시간 내에 RA원의 스토리지 장치(100)에 입력된 호스트 커맨드 중의 RA 커맨드의 비율이다.
도 18은 RA처 커맨드 관리 테이블의 일례를 나타내는 도면이다. 스토리지 장치(200)는 RA처 커맨드 관리 테이블(53)을 갖는다. 예를 들면 CM(230)의 메모리 내에 RA처 커맨드 관리 테이블(53)이 저장된다. RA처 커맨드 관리 테이블(53)에는 호스트 커맨드 실행수, RA처 호스트 커맨드 누적수(tc), RA처 호스트 커맨드 제한값(tcs), 복사 커맨드 실행수, RA처 복사 커맨드 누적수(tr), RA처 복사 커맨드 제한값(trs), RA원 호스트 커맨드 누적수(ic) 및 RA 커맨드율(p)이 설정되어 있다.
호스트 커맨드 실행수는 스토리지 장치(200)에서 실행중인 호스트 커맨드의 수이다. RA처 호스트 커맨드 누적수(tc)는 일정 시간 내에 스토리지 장치(200)가 수신한 호스트 커맨드의 수이다. RA처 호스트 커맨드 제한값(tcs)은 스토리지 장치(200)에 있어서의 호스트 커맨드의 실행수의 상한을 나타내는 값이다.
복사 커맨드 실행수는 스토리지 장치(200)에서 실행중인 복사 커맨드의 수이다. RA처 복사 커맨드 누적수(tr)는 일정 시간 내에 스토리지 장치(200)가 수신한 복사 커맨드의 수이다. RA처 복사 커맨드 제한값(trs)은 스토리지 장치(200)에 있어서의 복사 커맨드의 실행수의 상한을 나타내는 값이다. 복사 커맨드 실행수가 RA처 복사 커맨드 제한값(trs)에 달하고 있는 경우, 입력된 복사 커맨드의 실행이 억지된다.
RA원 호스트 커맨드 누적수(ic)는 일정 시간 내에 RA원의 스토리지 장치(100)에 입력된 호스트 커맨드의 수이다. RA 커맨드율(p)은 스토리지 장치(100)에 입력된 호스트 커맨드 중 RA 커맨드의 비율이다.
다음에 경로 감시 커맨드를 사용한 스토리지 장치간의 정보 교환 순서에 대해서 설명한다.
도 19는 스토리지 장치간의 정보 교환 순서의 일례를 나타내는 순서도이다. 이하, 도 19에 나타내는 처리를 스텝 번호에 따라 설명한다.
[스텝S401] RA원의 스토리지 장치(100)는 경로 감시 커맨드에 의해 RA원 호스트 커맨드 누적수(ic)와 RA 커맨드율(p)을 스토리지 장치(200)에 통지한다. 예를 들면 스토리지 장치(100)는 전회의 RA원 호스트 커맨드 누적수(ic)와 RA 커맨드율(p)의 통지로부터 10초가 경과되면, 스텝S401의 처리를 실행한다.
[스텝S402] 스토리지 장치(200)는 취득한 RA원 호스트 커맨드 누적수(ic)와 RA 커맨드율(p)에 의해 RA처 커맨드 관리 테이블(53) 내의 RA원 호스트 커맨드 누적수(ic)와 RA 커맨드율(p)의 값을 갱신한다.
[스텝S403] 스토리지 장치(200)는 RA처 커맨드 제한값 결정 처리를 행한다. 예를 들면 스토리지 장치(200)는 전회의 RA처 커맨드 제한값 결정 처리로부터 10초가 경과되면, RA처 호스트 커맨드 제한값(tcs)과 RA처 복사 커맨드 제한값(trs)을 계산한다.
[스텝S404] 스토리지 장치(200)는 갱신된 RA처 복사 커맨드 제한값(trs)에 기초하여 RA원 호스트 커맨드 제한값(ics)을 결정한다.
[스텝S405] 스토리지 장치(200)는 경로 감시 커맨드를 이용하고, 결정한 RA원 호스트 커맨드 제한값(ics)을 스토리지 장치(100)에 통지한다.
[스텝S406] 스토리지 장치(100)는 취득한 RA원 호스트 커맨드 제한값(ics)에 의해 RA원 커맨드 관리 테이블(52)의 RA원 호스트 커맨드 제한값(ics)의 값을 갱신한다.
이후, 스텝S401 내지 S406과 동일한 처리(스텝S407 내지 S412)가 10초 간격으로 반복 실행된다.
이와 같이 2대의 스토리지 장치(100, 200)가 정보를 교환함으로써, 어느 종류의 커맨드만이 돌출해서 우선 실행되는 경우가 없도록 공평한 커맨드 실행이 가능해진다.
다음에, RA원의 스토리지 장치(100)에 있어서의 커맨드 실행 상황 통지 처리(스텝S401의 처리)에 대해서 상세하게 설명한다.
도 20은 RA원에 있어서의 커맨드 실행 상황 통지 처리의 순서의 일례를 나타내는 플로우차트이다. 이하, 도 20에 나타내는 처리를 스텝 번호에 따라 설명한다.
[스텝S421] 스토리지 장치(100)의 CM(130)은 타이머를 리세트하고, 시간 계측(타이머 카운트)을 개시한다.
[스텝S422] CM(130)은 타이머가 10초 경과하였는지의 여부를 판단한다. 10초 경과되어 있지 않으면, CM(130)은 처리를 스텝S421로 진행한다. 10초 경과되면, CM(130)은 처리를 스텝S423으로 진행한다.
[스텝S423] CM(130)은 RA원 호스트 커맨드 누적수(ic)와 RA 커맨드율(p)을 스토리지 장치(200)에 통지한다. 예를 들면 CM(130)은 RA원 커맨드 관리 테이블(52)로부터 RA원 호스트 커맨드 누적수(ic)와 RA 커맨드율(p)을 취득한다. 다음으로 CM(130)은 취득한 RA원 호스트 커맨드 누적수(ic)와 RA 커맨드율(p)을 헤더에 포함하는 제어 패킷을 생성한다. 그리고 CM(130)은 생성한 제어 패킷을, CARA 포트(151)를 통하여 스토리지 장치(200) 앞으로 송신한다.
[스텝S424] CM(130)은 RA원 커맨드 관리 테이블(52)의 RA 커맨드수, RA 커맨드율(p) 및 RA원 호스트 커맨드 누적수(ic) 각각의 값을 O으로 초기화한다. 그 후, CM(130)은 처리를 스텝S421로 진행한다.
이와 같이 하여 10초 간격으로 스토리지 장치(100)로부터 스토리지 장치(200)에의 정보 송신이 행해진다.
다음에 RA원의 스토리지 장치에 있어서의 커맨드 실행 처리에 대해서 설명한다.
도 21은 제5 실시 형태의 RA원의 스토리지 장치에 있어서의 커맨드 실행 처리의 순서의 일례를 나타내는 도면이다. 이하, 도 21에 나타내는 처리를 스텝 번호에 따라 설명한다.
[스텝S431] CM(130)은 호스트 커맨드를 수신한다.
[스텝S432] CM(130)은 호스트 커맨드 실행수와 RA원 호스트 커맨드 누적수(ic)의 각각을 1씩 증가시킨다. 예를 들면 CM(130)은 RA원 커맨드 관리 테이블(52)의 호스트 커맨드 실행수의 값에 1을 가산한다. 또 CM(130)은 RA원 커맨드 관리 테이블(52)의 RA원 호스트 커맨드 누적수(ic)의 값에 1을 가산한다.
[스텝S433] CM(130)은 수신한 호스트 커맨드가 RA 커맨드인지 아닌지를 판단한다. 예를 들면 CM(130)은 호스트 커맨드가 RA 세션이 짜여진 볼륨(143)에의 액세스이면, RA커맨드라고 판단한다. CM(130)은 RA 커맨드이면 처리를 스텝S434로 진행한다. 또 CM(130)은 CA 커맨드이면 처리를 스텝S441로 진행한다.
[스텝S434] CM(130)은 RA 커맨드수를 1만 증가시킨다. 또 CM(130)은 증가 후의 RA 커맨드수에 기초하여 RA 커맨드율(p)을 계산한다. 예를 들면 CM(130)은 RA원 커맨드 관리 테이블(52)의 RA 커맨드수의 값에 1을 가산한다. 다음으로 CM(130)은 RA원 커맨드 관리 테이블(52)로부터 RA 커맨드수와 RA원 호스트 커맨드 누적수(ic)를 취득한다. 그리고 CM(130)은 RA 커맨드수를 RA원 호스트 커맨드 누적수(ic)로 나누고, 나눈 결과를 RA 커맨드율(p)로 한다. CM(130)은 계산한 RA 커맨드율(p)에 의해 RA원 커맨드 관리 테이블(52)의 RA 커맨드율(p)을 갱신한다.
[스텝S435] CM(130)은 호스트 커맨드 실행수가 RA원 호스트 커맨드 제한값(ics) 이하인지 아닌지를 판단한다. 예를 들면 CM(130)은 RA원 커맨드 관리 테이블(52)로부터 호스트 커맨드 실행수와 RA원 호스트 커맨드 제한값(ics)을 취득하고, 취득한 값의 대소를 비교한다. CM(130)은 호스트 커맨드 실행수가 RA원 호스트 커맨드 제한값(ics) 이하이면, 처리를 스텝S436으로 진행한다. 또 CM(130)은 호스트 커맨드 실행수가 RA원 호스트 커맨드 제한값(ics)을 초과하면, 처리를 스텝S445로 진행한다.
[스텝S436] CM(130)은 수신한 호스트 커맨드에 따른 처리를 실행한다. 예를 들면 CM(130)은 볼륨(143)에 데이터를 기입한다.
[스텝S437] CM(130)은 스텝S436에서 기입한 데이터를 스토리지 장치(200)에 복사하기 위한 복사 커맨드(32)를 스토리지 장치(200) 앞으로 송신한다.
[스텝S438] CM(130)은 스토리지 장치(200)로부터의 응답이 정상 응답인지, 혹은 QFULL 응답인지를 판단한다. 스토리지 장치(200)로부터 정상 응답을 수신한 경우, CM(130)은 처리를 스텝S439로 진행한다. 또 스토리지 장치(200)로부터 QFULL 응답을 수신한 경우, CM(130)은 처리를 스텝S437로 진행하고, 복사 커맨드(32)를 다시 송신한다.
[스텝S439] CM(130)은 RA원 커맨드 관리 테이블(52)의 호스트 커맨드 실행수의 값을 1만 감소시킨다.
[스텝S440] CM(130)은 호스트 컴퓨터(21)에 정상 응답을 송신한다. 그 후, 커맨드 실행 처리가 종료된다.
[스텝S441] CM(130)은 수신한 호스트 커맨드가 CA 커맨드인 경우, 호스트 커맨드 실행수가 RA원 호스트 커맨드 제한값(ics) 이하인지 아닌지를 판단한다. CM(130)은 호스트 커맨드 실행수가 RA원 호스트 커맨드 제한값(ics) 이하이면, 처리를 스텝S442로 진행한다. 또 CM(130)은 호스트 커맨드 실행수가 RA원 호스트 커맨드 제한값(ics)을 초과하면, 처리를 스텝S445로 진행한다.
[스텝S442] CM(130)은 수신한 호스트 커맨드에 따른 처리를 실행한다. 예를 들면 CM(130)은 볼륨(141) 또는 볼륨(142)에 데이터를 기입한다.
[스텝S443] CM(130)은 RA원 커맨드 관리 테이블(52)의 호스트 커맨드 실행수의 값을 1만 감소시킨다.
[스텝S444] CM(130)은 호스트 컴퓨터(21)에 정상 응답을 송신한다. 그 후, 커맨드 실행 처리가 종료된다.
[스텝S445] 호스트 커맨드 실행수가 RA원 호스트 커맨드 제한값(ics)을 초과하고 있는 경우, CM(130)은 RA원 커맨드 관리 테이블(52)의 호스트 커맨드 실행수의 값을 1만 감소시킨다.
[스텝S446] CM(130)은 호스트 컴퓨터(21)에 QFULL 응답을 송신한다. 그 후, 커맨드 실행 처리가 종료된다.
이와 같이 하여, RA원의 스토리지 장치(100)에 있어서도, RA처 복사 커맨드 제한값(trs)에 따라서 동적으로 변경되는 RA원 호스트 커맨드 제한값(ics)에 의해 호스트 커맨드의 실행수가 적절하게 제한된다.
다음에, RA처의 스토리지 장치(200)에 있어서의 처리에 대해서 설명한다.
도 22는 RA처에 있어서의 커맨드 제한값 결정 처리의 순서의 일례를 나타내는 도면이다. 이하, 도 22에 나타내는 처리를 스텝 번호에 따라 설명한다.
[스텝S451] 스토리지 장치(200)의 CM(230)은 타이머를 리세트하고, 시간 계측(타이머 카운트)을 개시한다.
[스텝S452] CM(230)은 타이머가 10초 경과하였는지의 여부를 판단한다. 10초 경과되어 있지 않으면, CM(230)은 처리를 스텝S451로 진행한다. 10초 경과되면, CM(230)은 처리를 스텝S453으로 진행한다.
[스텝S453] CM(230)은 RA원의 스토리지 장치(100)에 있어서의 CA 커맨드수가 RA처 호스트 커맨드 누적수(tc)보다도 큰지 아닌지를 판단한다. RA원의 CA 커맨드수는 RA원 호스트 커맨드 누적수(ic)에 1-RA 커맨드율(p)을 곱함으로써 산출할 수 있다. 예를 들면 CM(230)은 RA처 커맨드 관리 테이블(53)로부터 RA처 호스트 커맨드 누적수(tc), RA원 호스트 커맨드 누적수(ic) 및 RA 커맨드율(p)을 취득한다. 그리고 CM(230)은 RA원 호스트 커맨드 누적수(ic)에 1-RA 커맨드율(p)을 곱한 값과 RA처 호스트 커맨드 누적수(tc)의 대소 관계를 비교함으로써, CA 커맨드수가 RA처 호스트 커맨드 누적수(tc)보다도 큰지 아닌지를 판단한다. CM(230)은 CA 커맨드수가 RA처 호스트 커맨드 누적수(tc)보다도 큰 경우, 처리를 스텝S456으로 진행한다. 또 CM(230)은 CA커맨드수가 RA처 호스트 커맨드 누적수(tc) 이하인 경우, 처리를 스텝S454로 진행한다.
[스텝S454] CA 커맨드수가 RA처 호스트 커맨드 누적수(tc) 이하인 경우, CM(230)은 RA처 호스트 커맨드 제한값(tcs)과 RA처 복사 커맨드 제한값(trs)을 계산한다. 예를 들면 CM(230)은 RA처 커맨드 관리테이블(53)로부터 RA원 호스트 커맨드 누적수(ic), RA 커맨드율(p) 및 RA처 호스트 커맨드 누적수(tc)를 취득한다. 그리고 CM(230)은 상기의 식(5)·식(6)에 따라서 RA처 호스트 커맨드 제한값(tcs)과 RA처 복사 커맨드 제한값(trs)을 계산한다. 또한 CM(230)은 계산한 RA처 호스트 커맨드 제한값(tcs)과 RA처 복사 커맨드 제한값(trs)에 의해, RA처 커맨드 관리 테이블(53)의 RA처 호스트 커맨드 제한값(tcs)과 RA처 복사 커맨드 제한값(trs)의 값을 갱신한다.
[스텝S455] CM(230)은 RA원 호스트 커맨드 제한값(ics)을 계산한다. 예를 들면 CM(230)은 RA처 커맨드 관리테이블(53)로부터 RA처 복사 커맨드 제한값(trs)과 RA 커맨드율(p)을 취득한다. 그리고 CM(230)은 상기의 식(7)에 따라서 RA원 호스트 커맨드 제한값(ics)을 계산한다. CM(230)은 그 후 처리를 스텝S458로 진행한다.
[스텝S456] CA 커맨드수가 RA처 호스트 커맨드 누적수(tc)보다도 큰 경우, CM(230)은 RA원 호스트 커맨드 제한값(ics)을 「1024」로 결정한다.
[스텝S457] CM(230)은 RA처 호스트 커맨드 제한값(tcs)과 RA처 복사 커맨드 제한값(trs)을 계산한다. 예를 들면 CM(230)은 RA처 커맨드 관리 테이블(53)로부터 RA원 호스트 커맨드 누적수(ic), RA 커맨드율(p) 및 RA처 호스트 커맨드 누적수(tc)를 취득한다. 그리고 CM(230)은 취득한 값과 스텝S456에서 결정한 RA원 호스트 커맨드 제한값 「ics=1024」를 이용하여, 상기의 식(9), 식(10)에 따라서 RA처 호스트 커맨드 제한값(tcs)과 RA처 복사 커맨드 제한값(trs)을 계산한다. 또한 CM(230)은 계산한 RA처 호스트 커맨드 제한값(tcs)과 RA처 복사 커맨드 제한값(trs)에 의해, RA처 커맨드 관리 테이블(53)의 RA처 호스트 커맨드 제한값(tcs)과 RA처 복사 커맨드 제한값(trs)의 값을 갱신한다.
[스텝S458] CM(230)은 RA처 커맨드 관리 테이블(53)의 RA처 호스트 커맨드 누적수(tc)와 RA처 복사 커맨드 누적수(tr)를 O으로 초기화한다.
[스텝S459] CM(230)은 스텝S455에서 계산한 RA원 호스트 커맨드 제한값(ics) 또는 스텝S456에서 결정한 RA원 호스트 커맨드 제한값(ics)을 RA원인 스토리지 장치(100)에 통지한다. 예를 들면 CM(230)은 헤더에 RA원 호스트 커맨드 제한값(ics)을 포함하는 경로 감시 커맨드(37)를 스토리지 장치(100) 앞으로 송신한다. 그 후, CM(230)은 처리를 스텝S451로 진행한다.
이와 같이 하여, 스토리지 장치(200)에 있어서, RA원과 RA처의 양쪽의 커맨드 제한값이 계산된다.
또한, 제5 실시 형태에 있어서의 RA처의 스토리지 장치(200)의 커맨드 실행 처리는 도 15에 나타낸 제4 실시 형태의 커맨드 실행 처리와 동일하다.
이와 같이 하여, RA처의 스토리지 장치(200)에 있어서 결정된 커맨드 제한값이 스토리지 장치(100, 200) 각각에서 적용된다. 그 결과, 스토리지 장치(100)에 입력된 호스트 커맨드수가 RA원 호스트 커맨드 제한값(ics)을 초과한 경우라도 스토리지 장치(100, 200) 각각에 있어서의 호스트 커맨드의 처리 효율을 동등하게 할 수 있다. 즉, RA원의 스토리지 장치(100)에의 호스트 커맨드의 입력이 과대해진 것도 고려하여 RA 세션에 의한 데이터의 복사를 행하는 것에 의한 호스트 커맨드의 처리 효율의 저하를 RA원과 RA처로 동등하게 하여 공평성을 담보할 수 있다.
또 제5 실시 형태는, 스토리지 장치가 일대일로 접속되어 있는 경우의 예이지만, 일대다나 다대다의 접속에도 사용하는 것이 가능하다. 또한, 호스트 컴퓨터(21, 22) 각각으로부터 출력되는 호스트 커맨드를 평등하게 취급하지 않고, 호스트 컴퓨터(21, 22) 각각의 호스트 커맨드의 실행에 우선도에 따라 가중치를 붙일 수도 있다. 가중치를 붙임으로써, 호스트 컴퓨터(21, 22)에 QFULL 응답이 오는 확률을 제어하는 것도 가능하다.
〔제6 실시 형태〕
다음에 제6 실시 형태에 대해서 설명한다. 제6 실시 형태는, RA원의 스토리지 장치(100)에 있어서의 CA 커맨드와 RA 커맨드의 처리 시간의 차이를 고려한 것이다. 또한, 제6 실시 형태에 있어서의 시스템 구성은 도 2, 도 3에 나타낸 제2 실시 형태의 구성과 동일하다.
RA 커맨드는 볼륨(143)에의 데이터 기입 처리의 연장으로 기동되는 리모트 복사의 종료 후에 응답이 호스트 컴퓨터(21)에 송신된다. 그 때문에 RA 커맨드는 CA 커맨드보다도 처리 완료까지 시간이 오래 걸린다. 그런데 제5 실시 형태에서는 상기의 CA 커맨드와 RA 커맨드의 처리 시간의 차이가 고려되어 있지 않다. 그 때문에 RA원의 스토리지 장치(100)에 있어서 CA 커맨드만이 처리되고, RA 커맨드의 처리가 미완료의 상태에서 쌓여가서 CA 커맨드조차 수신할 수 없게 될 가능성이 있다. 그래서 제6 실시 형태에서는, 커맨드 처리 시간의 차이에 의한 가중치 부여를 행하고, RA 커맨드의 처리가 체류되지 않도록 커맨드 제한값을 변화시킨다.
도 23은 제6 실시 형태에 있어서의 커맨드 유량 제어 상황의 일례를 나타내는 도면이다. 제6 실시 형태에서는, RA원의 스토리지 장치(100)에 있어서, CA 커맨드 처리 시간(cT)과 RA 커맨드 처리 시간(rT)을 계측한다. 계측된 CA 커맨드 처리 시간(cT)과 RA 커맨드 처리 시간(rT)은 RA원 호스트 커맨드 누적수(ic)와 RA 커맨드율(p)과 함께 경로 감시 커맨드(38)에 의해 RA처의 스토리지 장치(200)에 송신된다.
스토리지 장치(200)에서는 CA 커맨드 처리 시간(cT)과 RA 커맨드 처리 시간(rT)을 사용해서 커맨드 제한값을 결정한다. 예를 들면 이하와 같은 계산을 행한다.
Figure pat00011
Figure pat00012
이 2식으로부터 이하의 결과가 얻어진다.
Figure pat00013
Figure pat00014
또한, 이하의 계산식에서 스토리지 장치(100)에 있어서의 RA원 호스트 커맨드 제한값(ics)을 산출한다.
Figure pat00015
이하에, 제6 실시 형태에 있어서의 각 스토리지 장치(100, 200)에서의 호스트 커맨드의 실행 성능에 대해서 구체예를 사용하여 설명한다.
여기서, 각 측정값을 이하와 같은 것으로 한다.
RA원 호스트 커맨드 누적수(ic): 3000
RA커맨드율(p): O.5
RA처 호스트 커맨드 누적수(tc): 2000
CA 커맨드 처리 시간(cT): 1ms
RA 커맨드 처리 시간(rT): 4ms
그러면, RA처 호스트 커맨드 제한값(tcs), RA처 복사 커맨드 제한값(trs) 및 RA원 호스트 커맨드 제한값(ics)은 아래와 같이 된다.
tcs=(2000/(2000+3000×O.5×1/4))×1024=862
trs=1024-862=162
ics=162/0.5=324
RA원 호스트 커맨드 제한값(ics)은 1024를 크게 하회하고 있지만, 324 이상의 커맨드를 받아도 RA 커맨드의 처리가 시간에 맞지 않게 되어 체류되어버린다. RA원 호스트 커맨드 제한값(ics)을 낮게 억제할 수 있는만큼 RA처의 호스트 커맨드를 많이 처리할 수 있다. 이와 같이 하여 RA원 호스트 커맨드 제한값(ics)을 324까지 억제함으로써 시스템 전체로서의 효율의 향상이 가능해진다.
또 제6 실시 형태에서는, 구해진 RA원 호스트 커맨드 제한값(ics)과 CARA 포트(151)의 상한인 1024의 차분을 고려하여 RA 커맨드율(p)을 줄이도록 하고 있다. 이에 의해, CA 커맨드를 늘릴 수 있고, RA원 호스트 커맨드 제한값(ics)을 1024에 가까이해서 RA원의 스토리지 장치(100)의 성능을 높이는 것이 가능해진다.
다음에, 제6 실시 형태의 기능을 실현하기 위해서 RA원과 RA처의 각 스토리지 장치(100, 200)가 갖는 커맨드 관리 테이블에 대해서 설명한다.
도 24는 제6 실시 형태의 RA원 커맨드 관리 테이블의 일례를 나타내는 도면이다. 제6 실시 형태에서는, 도 24에 도시한 바와 같은 RA원 커맨드 관리 테이블(55)이 예를 들면 CM(130)의 메모리 내에 저장된다. RA원 커맨드 관리 테이블(55)에는 호스트 커맨드 실행수, RA원 호스트 커맨드 누적수(ic), RA원 호스트 커맨드 제한값(ics), RA 커맨드수, RA 커맨드율(p), CA 커맨드 처리 시간(cT) 및 RA 커맨드 처리 시간(rT)이 설정되어 있다.
도 25는 제6 실시 형태의 RA처 커맨드 관리 테이블의 일례를 나타내는 도면이다. 제6 실시 형태에서는, 도 25에 도시한 바와 같은 RA처 커맨드 관리 테이블(56)이 예를 들면 CM(230)의 메모리 내에 저장된다. RA처 커맨드 관리 테이블(56)에는 호스트 커맨드 실행수, RA처 호스트 커맨드 누적수(tc), RA처 호스트 커맨드 제한값(tcs), 복사 커맨드 실행수, RA처 복사 커맨드 누적수(tr), RA처 복사 커맨드 제한값(trs), RA원 호스트 커맨드 누적수(ic), RA 커맨드율(p), CA 커맨드 처리 시간(cT) 및 RA 커맨드 처리 시간(rT)이 설정되어 있다. 이 중 RA원 호스트 커맨드 누적수(ic), RA 커맨드율(p), CA 커맨드 처리 시간(cT) 및 RA 커맨드 처리 시간(rT)에 대해서는, 스토리지 장치(100)로부터 경로 감시 커맨드(38)로 해당 정보가 통지될 때마다 CM(230)에 의해 갱신된다.
다음에, 제6 실시 형태의 RA원의 스토리지 장치(100)에 있어서의 커맨드 실행 처리에 대해서 설명한다. 제6 실시 형태에서는, RA원의 스토리지 장치(100)는 커맨드 실행 시에 CA 커맨드 처리 시간(cT)과 RA 커맨드 처리 시간(rT)을 계측한다.
도 26은 제6 실시 형태의 RA원의 커맨드 실행 처리의 순서의 일례를 나타내는 플로우차트이다. 이하, 도 26에 나타내는 처리 중 스텝S501, S503 내지 S508, S510 내지 S513, S515 내지 S518은 각각 도 21에 나타내는 제5 실시 형태의 처리의 스텝S431, S433 내지 S446의 처리와 동일하다. 그래서 제5 실시 형태와 상이한 스텝S502, S509, S514의 처리에 대해서 이하에 설명한다.
[스텝S502] CM(130)은 호스트 커맨드 실행수와 RA원 호스트 커맨드 누적수(ic)의 각각을 1씩 증가시킨다. 또 CM(130)은 타이머를 리세트하고, 시간 계측(타이머 카운트)을 개시한다.
[스텝S509] CM(130)은 수신한 호스트 커맨드가 RA 커맨드인 경우, 스토리지 장치(200)로부터의 정상 응답을 수신한 후에 타이머를 정지시킨다. 다음으로 CM(130)은 RA 커맨드 처리 시간 평균값을 계산한다. 계산된 RA 커맨드 처리 시간 평균값이 RA 커맨드 처리 시간(rT)이 된다.
예를 들면 CM(130)은 실행 완료 RA 커맨드수를 메모리 내에 유지하고, RA 커맨드가 실행될 때마다 실행 완료 RA 커맨드수를 증가시킨다. 또 CM(130)은 RA 커맨드의 실행 시간 합계를 메모리 내에 유지하고, RA 커맨드가 실행될 때마다 타이머로 계측한 실행 시간을 실행 완료 RA 커맨드의 실행 시간 합계에 가산한다. 그리고 CM(130)은 RA 커맨드의 실행 시간 합계를 실행 완료 RA 커맨드수로 나눈 값을 RA 커맨드 처리 시간 평균값으로 한다. CM(130)은 계산한 RA 커맨드 처리 시간 평균값에 의해, RA원 커맨드 관리 테이블(55)의 RA 커맨드 처리 시간(rT)을 갱신한다.
[스텝S514] CM(130)은 수신한 호스트 커맨드가 CA 커맨드인 경우, 호스트 커맨드 처리 완료 후에 타이머를 정지시킨다. 다음으로 CM(130)은 CA 커맨드 처리 시간 평균값을 계산한다. 계산된 CA 커맨드 처리 시간 평균값이 CA 커맨드 처리 시간(cT)이 된다.
예를 들면 CM(130)은 실행 완료 CA 커맨드수를 메모리 내에 유지하고, CA 커맨드가 실행될 때마다 실행 완료 CA 커맨드수를 증가시킨다. 또 CM(130)은 CA 커맨드의 실행 시간 합계를 메모리 내에 유지하고, CA 커맨드가 실행될 때마다 타이머로 계측한 실행 시간을 실행 완료 CA 커맨드의 실행 시간 합계에 가산한다. 그리고 CM(13O)은 CA 커맨드의 실행 시간 합계를 실행 완료 CA 커맨드수로 나눈 값을 CA 커맨드 처리 시간 평균값으로 한다. CM(130)은 계산한 CA 커맨드 처리 시간 평균값에 의해, RA원 커맨드 관리 테이블(55)의 CA 커맨드 처리 시간(cT)을 갱신한다.
이와 같이 스토리지 장치(100)에서는, 커맨드 실행마다 CA 커맨드 처리 시간(cT) 또는 RA 커맨드 처리 시간(rT)이 계산된다. 계산된 CA 커맨드 처리 시간(cT) 또는 RA 커맨드 처리 시간(rT)은 경로 감시 커맨드에 의해 RA처의 스토리지 장치(200)에 통지된다.
다음에, RA원의 스토리지 장치(100)에 있어서의 커맨드 실행 상황 통지 처리에 대해서 설명한다.
도 27은 제6 실시 형태의 RA원에 있어서의 커맨드 실행 상황 통지 처리의 순서의 일례를 나타내는 플로우차트이다. 이하, 도 27에 나타내는 처리를 스텝 번호에 따라 설명한다.
[스텝S521] 스토리지 장치(100)의 CM(130)은 타이머를 리세트하고, 시간 계측(타이머 카운트)을 개시한다.
[스텝S522] CM(130)은 타이머가 10초 경과하였는지의 여부를 판단한다. 10초 경과되어 있지 않으면, CM(130)은 처리를 스텝S521로 진행한다. 10초 경과되면, CM(130)은 처리를 스텝S523으로 진행한다.
[스텝S523] CM(130)은 RA원 호스트 커맨드 누적수(ic), RA 커맨드율(p), CA 커맨드 처리 시간(cT) 및 RA 커맨드 처리 시간(rT)을 스토리지 장치(200)에 통지한다. 예를 들면, CM(130)은 RA원 커맨드 관리 테이블(55)로부터 RA원 호스트 커맨드 누적수(ic), RA 커맨드율(p), CA 커맨드 처리 시간(cT) 및 RA 커맨드 처리 시간(rT)을 취득한다. 다음으로 CM(130)은 취득한 RA원 호스트 커맨드 누적수(ic), RA커맨드율(p), CA 커맨드 처리 시간(cT) 및 RA 커맨드 처리 시간(rT)을 헤더에 포함하는 제어 패킷을 생성한다. 그리고 CM(130)은 생성한 제어 패킷을 CARA 포트(151)를 통하여 스토리지 장치(200) 앞으로 송신한다.
[스텝S524] CM(130)은 RA원 커맨드 관리 테이블(55)의 RA 커맨드수, RA 커맨드율(p), RA원 호스트 커맨드 누적수(ic), CA 커맨드 처리 시간(cT) 및 RA 커맨드 처리 시간(rT) 각각의 값을 O으로 초기화한다. 그 후, CM(130)은 처리를 스텝S521로 진행한다.
이와 같이 하여 10초 간격으로 스토리지 장치(100)로부터 스토리지 장치(200)에, CA 커맨드 처리 시간(cT)이나 RA 커맨드 처리 시간(rT)을 포함하는 정보가 송신된다.
다음에, RA처의 스토리지 장치(200)에 있어서의 커맨드 제한값 결정 처리의 순서에 대해서 설명한다.
도 28은 제6 실시 형태의 RA처에 있어서의 커맨드 제한값 결정 처리의 순서의 일례를 나타내는 플로우차트이다. 이하, 도 28에 나타내는 처리를 스텝 번호에 따라 설명한다.
[스텝S531] CM(230)은 타이머를 리세트하고, 시간 계측(타이머 카운트)을 개시한다.
[스텝S532] CM(230)은 타이머가 10초 경과하였는지의 여부를 판단한다. 10초 경과되어 있지 않으면, CM(230)은 처리를 스텝S531로 진행한다. 10초 경과되어 있으면, CM(230)은 처리를 스텝S533으로 진행한다.
[스텝S533] CM(230)은 RA처 호스트 커맨드 제한값(tcs)과 RA처 복사 커맨드 제한값(trs)을 계산한다. 예를 들면 CM(230)은 RA처 커맨드 관리 테이블(53)로부터 RA원 호스트 커맨드 누적수(ic), RA 커맨드율(p), RA처 호스트 커맨드 누적수(tc), CA 커맨드 처리 시간(cT) 및 RA 커맨드 처리 시간(rT)을 취득한다. 그리고 CM(230)은 상기의 식(13)·식(14)에 따라서 RA처 호스트 커맨드 제한값(tcs)과 RA처 복사 커맨드 제한값(trs)을 계산한다. 또한 CM(230)은 계산한 RA처 호스트 커맨드 제한값(tcs)과 RA처 복사 커맨드 제한값(trs)에 의해, RA처 커맨드 관리 테이블(56)의 RA처 호스트 커맨드 제한값(tcs)과 RA처 복사 커맨드 제한값(trs)의 값을 갱신한다.
[스텝S534] CM(230)은 RA원 호스트 커맨드 제한값(ics)을 계산한다. 예를 들면 CM(230)은 RA처 커맨드 관리 테이블(53)로부터 RA처 복사 커맨드 제한값(trs)과 RA 커맨드율(p)을 취득한다. 그리고 CM(230)은 상기의 식(15)에 따라서 RA원 호스트 커맨드 제한값(ics)을 계산한다.
[스텝S535] CM(230)은 RA처 커맨드 관리 테이블(53)의 RA처 호스트 커맨드 누적수(tc)와 RA처 복사 커맨드 누적수(tr)를 0으로 초기화한다.
[스텝S536] CM(230)은 스텝S534에서 계산한 RA원 호스트 커맨드 제한값(ics)을 RA원인 스토리지 장치(100)에 통지한다. 그 후, CM(230)은 처리를 스텝S531로 진행한다.
이와 같이 하여 RA원의 스토리지 장치(100)에 있어서의 CA 커맨드 처리 시간(cT)과 RA 커맨드 처리 시간(rT)의 차이를 고려하여 적절한 커맨드 제한값을 설정할 수 있다. 그 결과, 처리 시간이 긴 RA 커맨드를 전부 처리할 수 없어 체류되어, 스토리지 장치(100)에 있어서의 처리 효율이 저하되는 것을 억지할 수 있다.
〔제7 실시 형태〕
다음에, 제7 실시 형태에 대해서 설명한다. 제7 실시 형태는, 커맨드의 입력 상황에 따라서 커맨드 유량 제어 기술을 동적으로 변경하고, 스토리지 장치가 커맨드 유량 제어에 필요로 하는 처리 부하를 억지하는 것이다. 또한, 제7 실시 형태에 있어서의 시스템 구성은 도 2, 도 3에 나타낸 제2 실시 형태의 구성과 동일하다.
예를 들면 제7 실시 형태에서는, 커맨드의 처리 효율 및 RA원과 RA처에 있어서의 호스트 커맨드의 공평한 실행에 관해서 우열이 없는 경우, 스토리지 장치에 대한 처리 부하가 가능한 한 적은 기술로 커맨드 유량 제어를 행한다.
또한, 커맨드 유량 제어 기술의 절환에는 스토리지 장치(100, 200)에서의 커맨드 실행 상황의 파악이 필요해진다. 그 때문에, 어느 쪽의 커맨드 유량 제어 기술을 적용하는 경우에 있어서도, 스토리지 장치(100, 200)간에서는 제6 실시 형태 와 동일하게 경로 감시 커맨드에 의한 정보 교환이 행해지고 있는 것으로 한다.
상기 제2 내지 제6 실시 형태의 처리 부하를 비교하면, 가장 스토리지 장치에의 처리 부하가 낮은 것은 제2 실시 형태이다. 단, 제2 실시 형태에서는, 커맨드의 실행 상황 등의 감시를 행하지 않아 커맨드의 입력 상황에 따른 커맨드 유량 제어 기술의 절환에는 적응할 수 없다.
예를 들면 스토리지 장치간에 RA 세션이 설정되어 있지 않은 경우, 제3 실시 형태의 커맨드 유량 제어 기술을 적용함으로써, RA처에 있어서의 커맨드 실행 처리를 도 8에 도시한 바와 같이 단순화할 수 있다. 게다가 커맨드 유량 제어에 사용하는 정보도 도 7에 도시한 바와 같이 적으며, 제4 내지 제6 실시 형태보다도 스토리지 장치의 처리 부하는 적다.
스토리지 장치간에 RA 세션이 설정되어 있는 경우에는, 커맨드의 처리 효율의 관점에서 제3 실시 형태의 커맨드 유량 제어 기술로는 불충분하다. RA 세션이 설정되어 있고, RA원의 스토리지 장치(100)가 저부하(예를 들면 RA원 호스트 커맨드 누적수(ic)가 1024 이하)이면, RA원의 스토리지 장치(100)에 입력된 호스트 커맨드는 QFULL 응답되지 않고 실행된다. 그 때문에 제4 실시 형태의 커맨드 유량 제어 기술에 의해 적절한 커맨드 처리가 가능하다. 제4 실시 형태의 커맨드 유량 제어 기술은 제5 내지 제6 실시 형태에 있어서의 커맨드 유량 제어 기술보다도 스토리지 장치(100, 200)에의 부하가 적다. 그 때문에 RA 세션이 설정되어 있고, RA원의 스토리지 장치(100)가 저부하이면, 제4 실시 형태가 적절해진다.
RA원의 스토리지 장치(100)가 고부하(예를 들면 RA원 호스트 커맨드 누적수(ic)가 1024를 초과)가 된 경우, 호스트 컴퓨터(21, 22) 각각이 출력한 호스트 커맨드의 공평한 실행을 위해서는 제4 실시 형태는 부적절해진다. 그래서 제5 또는 제6 실시 형태에 따른 커맨드 유량 제어 기술이 적절해진다. 예를 들면, RA원의 스토리지 장치(100)에 있어서의 CA 커맨드 실행 시간과 RA 커맨드 실행 시간이 거의 동일하면 제5 실시 형태가 적절해진다. CA 커맨드 실행 시간과 RA 커맨드 실행 시간에 차이가 있으면 제6 실시 형태가 적절해진다. 단, 제5 실시 형태가 적절할지 제6 실시 형태가 적절할지의 판단에는 CA 커맨드 처리 시간(cT)과 RA 커맨드 처리 시간(rT)의 계측 및 계측값의 비교 처리가 필요해진다. 그러면 스토리지 장치(100, 200)에 있어서의 처리 부하는 제6 실시 형태에 따른 커맨드 유량 제어 기술을 적용한 경우와 동일해진다. 따라서, 제7 실시 형태에서는, RA원의 스토리지 장치(100)가 고부하가 된 경우에는 제6 실시 형태에 따른 커맨드 유량 제어 기술을 적용한다.
적용하는 커맨드 유량 기술의 판정은, 예를 들면 스토리지 장치(200)에 있어서 실행된다. 이하, 스토리지 장치(200)에 의한 적용 기술 판정 처리에 대해서 설명한다.
도 29는 적용 기술 판정 처리의 순서의 일례를 나타내는 플로우차트이다. 이하, 도 29에 나타내는 처리를 스텝 번호에 따라 설명한다.
[스텝S601] 스토리지 장치(200)의 CM(230)은 타이머를 리세트하고, 시간 계측(타이머 카운트)을 개시한다.
[스텝S602] CM(230)은 타이머가 소정 시간(예를 들면 10초) 경과하였는지의 여부를 판단한다. 소정 시간 경과되어 있지 않으면, CM(230)은 처리를 스텝S601로 진행한다. 소정 시간 경과되어 있으면, CM(230)은 처리를 스텝S603으로 진행한다.
[스텝S603] CM(230)은 스토리지 장치(100)와의 사이에 RA 세션이 설정되어 있는지의 여부를 판단한다. CM(230)은 RA 세션이 설정되어 있으면, 처리를 스텝S605로 진행한다. 또 CM(230)은 RA 세션이 설정되어 있지 않으면, 처리를 스텝S604로 진행한다.
[스텝S604] CM(230)은 제3 실시 형태에 나타낸 커맨드 유량 제어 기술을 적용하는 것을 결정한다. 그 후, CM(230)은 처리를 스텝S608로 진행한다.
[스텝S605] CM(230)은 RA원 호스트 커맨드 누적수(ic)가 1024 이하인지 아닌지를 판단한다. CM(230)은 RA원 호스트 커맨드 누적수(ic)가 1024 이하이면 처리를 스텝S606으로 진행한다. 또 CM(230)은 RA원 호스트 커맨드 누적수(ic)가 1024를 초과하면, 처리를 스텝S607로 진행한다.
[스텝S606] CM(230)은 제4 실시 형태에 나타낸 커맨드 유량 제어 기술을 적용하는 것을 결정한다. 그 후, CM(230)은 처리를 스텝S608로 진행한다.
[스텝S607] CM(230)은 제6 실시 형태에 나타낸 커맨드 유량 제어 기술을 적용하는 것을 결정한다.
[스텝S608] CM(230)은 RA원의 스토리지 장치(100)에 대하여 적용하는 커맨드 유량 제어 기술을 통지한다.
[스텝S609] CM(230)은 적용하는 것으로서 결정된 기술에 의한 커맨드 유량 제어를 개시한다. 그 후, CM(230)은 처리를 스텝S601로 진행한다.
이와 같이 하여, 커맨드의 입력 상황에 따라서 적절한 커맨드 유량 제어 기술을 적용하는 것이 가능해진다. 그 결과, 스토리지 장치(100, 200)의 처리 부하를 저감시킬 수 있다. 스토리지 장치(100, 200)의 처리 부하가 저감되면, 소비 전력도 저감된다.
〔그 밖의 실시 형태〕
상기의 각 실시 형태에 나타낸 처리 기능은 컴퓨터에 의해 실현할 수 있다. 당해 경우, 스토리지 장치의 CM이 갖는 기능의 처리 내용을 기술한 프로그램이 제공된다. 당해 프로그램을 컴퓨터로 실행함으로써, 상기 처리 기능이 컴퓨터 상에서 실현된다. 처리 내용을 기술한 프로그램은 컴퓨터로 판독 가능한 기록 매체에 기록해 둘 수 있다. 컴퓨터로 판독 가능한 기록 매체로서는 자기 기억 장치, 광 디스크, 광 자기 기록 매체, 반도체 메모리 등이 있다. 자기 기억 장치에는 하드 디스크 장치(HDD), 플렉시블 디스크(FD), 자기 테이프 등이 있다. 광 디스크에는 DVD, DVD-RAM, CD-ROM/RW 등이 있다. 광 자기 기록 매체에는 MO(Magneto-Optical disk) 등이 있다. 또 프로그램을 기록하는 기록 매체에는 일시적인 전파 신호 자체는 포함되지 않는다.
프로그램을 유통시킬 경우에는, 예를 들면, 당해 프로그램이 기록된 DVD, CD-ROM 등의 가반형 기록 매체가 판매된다. 또한, 프로그램을 서버 컴퓨터의 기억 장치에 저장해 놓고, 네트워크를 통하여 서버 컴퓨터로부터 다른 컴퓨터에 당해 프로그램을 전송할 수도 있다.
프로그램을 실행하는 컴퓨터는, 예를 들면, 가반형 기록 매체에 기록된 프로그램 혹은 서버 컴퓨터로부터 전송된 프로그램을 자기의 기억 장치에 저장한다. 그리고, 컴퓨터는 자기의 기억 장치로부터 프로그램을 판독하고, 프로그램에 따른 처리를 실행한다. 또한, 컴퓨터는 가반형 기록 매체로부터 직접 프로그램을 판독하고, 당해 프로그램에 따른 처리를 실행할 수도 있다. 또한, 컴퓨터는 서버 컴퓨터로부터 프로그램이 전송될 때마다 순차적으로 수취한 프로그램에 따른 처리를 실행할 수도 있다.
또한, 상기의 처리 기능의 적어도 일부를 DSP(Digital Signal Processor), ASIC(Application Specific Integrated Circuit), PLD(Programmable Logic Device) 등의 전자 회로로 실현할 수도 있다.
이상, 실시 형태를 예시했지만, 실시 형태에서 나타낸 각 부의 구성은 동일한 기능을 갖는 다른 것으로 치환할 수 있다. 또한, 다른 임의의 구성물이나 공정이 부가되어도 된다. 또한, 상술한 실시 형태 중의 임의의 2 이상의 구성(특징)을 조합한 것이어도 된다.
1 스토리지 장치
1-1 기억 장치
1-2 통신 인터페이스
1-3 관리부
1-3a 기억 수단
1-3b 판별 수단
1-3c 계수 수단
1-3d 제어 수단
2 네트워크
3 스위치
4 컴퓨터
5 스토리지 장치
6 컴퓨터
7~9 커맨드

Claims (10)

  1. 기억 장치와,
    상기 기억 장치에의 데이터 액세스를 지시하는 커맨드를 수신하는 통신 인터페이스와,
    상기 통신 인터페이스를 통하여 수신한 커맨드의 종별을 판별하는 판별 수단과,
    상기 통신 인터페이스를 통하여 수신한 커맨드로서, 실행중인 커맨드의 수를 계수하는 계수 수단과,
    상기 실행중인 커맨드의 수가, 상기 통신 인터페이스를 통하여 새롭게 수신한 커맨드의 종별에 대응하는 제한값 이하이면, 그 새롭게 수신한 커맨드에 따른 데이터 액세스를 상기 기억 장치에 대하여 실행하고, 상기 실행중인 커맨드의 수가 그 새롭게 수신한 커맨드의 종별에 대응하는 제한값을 초과한 경우, 그 새롭게 수신한 커맨드에 따른 데이터 액세스를 억지하는 제어를 행하는 제어 수단
    을 갖는 스토리지 장치.
  2. 제1항에 있어서,
    상기 판별 수단은, 상기 통신 인터페이스를 통하여 수신한 커맨드가, 다른 스토리지 장치로부터 송신된 복사 커맨드인지, 그 복사 커맨드 이외의 비복사 커맨드인지를 판별하고,
    상기 제어 수단은, 복사 커맨드의 제한값보다도, 비복사 커맨드의 제한값을 낮은 값으로 하는 것을 특징으로 하는 스토리지 장치.
  3. 제2항에 있어서,
    상기 제어 수단은,
    비복사 커맨드의 제한값으로서, 상기 다른 스토리지 장치와의 사이의 데이터 복사용의 통신 경로가 설정되어 있는 경우에 적용하는 제1 제한값과, 그 통신 경로가 설정되어 있지 않은 경우에 적용하는, 상기 제1 제한값보다 높은 값의 제2 제한값이 설정되어 있고,
    그 데이터 복사용의 통신 경로가 설정되어 있는 경우에는, 상기 실행중인 커맨드의 수가 상기 제1 제한값 이하이면, 상기 통신 인터페이스를 통하여 수신한 비복사 커맨드에 따른 데이터 액세스를 상기 기억 장치에 대하여 실행하고, 상기 실행중인 커맨드의 수가 상기 제1 제한값을 초과하면, 그 비복사 커맨드에 따른 데이터 액세스를 억지하고,
    그 데이터 복사용의 통신 경로가 설정되어 있지 않은 경우에는, 상기 실행중인 커맨드의 수가 상기 제2 제한값 이하이면, 상기 통신 인터페이스를 통하여 수신한 비복사 커맨드에 따른 데이터 액세스를 상기 기억 장치에 대하여 실행하고, 상기 실행중인 커맨드의 수가 상기 제2 제한값을 초과하면, 그 비복사 커맨드에 따른 데이터 액세스를 억지하는 것을 특징으로 하는 스토리지 장치.
  4. 제1항에 있어서,
    상기 계수 수단은, 또한 커맨드의 종별마다, 일정 시간 내에 수신한 커맨드의 수를 계수하고,
    상기 제어 수단은, 커맨드의 종별마다의 일정 시간 내에 수신한 커맨드의 수의 비율에 따라, 커맨드의 종별마다의 제한값을 결정하는 것을 특징으로 하는 스토리지 장치.
  5. 제1항에 있어서,
    상기 판별 수단은, 상기 통신 인터페이스를 통하여 수신한 커맨드가, 다른 스토리지 장치로부터 송신된 복사 커맨드인지, 그 복사 커맨드 이외의 비복사 커맨드인지를 판별하고,
    상기 계수 수단은, 또한 일정 시간 내에 수신한 비복사 커맨드의 수를 계수하고,
    상기 제어 수단은,
    상기 다른 스토리지 장치에 의한 복사 커맨드 출력의 원인이 되는 원인 커맨드의, 일정 시간 내에서의 수신수를 나타내는 정보를, 상기 다른 스토리지 장치로부터 취득하고,
    상기 다른 스토리지 장치에서의 원인 커맨드의 수신수와 비복사 커맨드의 수의 비율에 따라, 복사 커맨드와 비복사 커맨드의 제한값을 결정하는 것을 특징으로 하는 스토리지 장치.
  6. 제1항에 있어서,
    상기 판별 수단은, 상기 통신 인터페이스를 통하여 수신한 커맨드가, 다른 스토리지 장치로부터 송신된 복사 커맨드인지, 그 복사 커맨드 이외의 비복사 커맨드인지를 판별하고,
    상기 계수 수단은, 또한 일정 시간 내에 수신한 비복사 커맨드의 수를 계수하고,
    상기 제어 수단은,
    상기 다른 스토리지 장치에 의한 복사 커맨드 출력의 원인이 되는 원인 커맨드의, 일정 시간 내에서의 수신수를 나타내는 정보, 상기 다른 스토리지 장치가 원인 커맨드를 실행하는데에 필요한 시간을 나타내는 제1 시간 정보, 및 상기 다른 스토리지 장치가 원인 커맨드 이외의 커맨드를 실행하는데에 필요한 시간을 나타내는 제2 시간 정보를, 상기 다른 스토리지 장치로부터 취득하고,
    상기 제2 시간 정보에 나타내지는 시간을 제1 시간 정보에 나타내지는 시간으로 나눈 보정값을, 상기 다른 스토리지 장치에서의 원인 커맨드의 수신수에 곱하고, 곱한 결과와 비복사 커맨드의 수의 비율에 따라서, 복사 커맨드와 비복사 커맨드의 제한값을 결정하는 것을 특징으로 하는 스토리지 장치.
  7. 제5항 또는 제6항에 있어서,
    상기 다른 스토리지 장치에 의한 복사 커맨드 출력이 원인이 되는 원인 커맨드는, 상기 기억 장치와의 사이에서 데이터의 다중화를 행하는 것이 설정되어 있는 상기 다른 스토리지 장치 내의 볼륨에의, 데이터의 기입을 지시하는 커맨드인 것을 특징으로 하는 스토리지 장치.
  8. 제5항에 있어서,
    상기 제어 수단은, 결정한 복사 커맨드의 제한값에 따른 값으로 상기 다른 스토리지 장치가 실행하는 커맨드수를 제한하도록, 상기 다른 스토리지 장치에 지시하는 것을 특징으로 하는 스토리지 장치.
  9. 스토리지 장치가,
    통신 인터페이스를 통하여 수신한, 기억 장치에의 데이터 액세스를 지시하는 커맨드의 종별을 판별하고,
    상기 통신 인터페이스를 통하여 수신한 커맨드로서, 실행중인 커맨드의 수를 계수하고,
    상기 실행중인 커맨드의 수가, 상기 통신 인터페이스를 통하여 새롭게 수신한 커맨드의 종별에 대응하는 제한값 이하이면, 그 새롭게 수신한 커맨드에 따른 데이터 액세스를 상기 기억 장치에 대하여 실행하고, 상기 실행중인 커맨드의 수가 그 새롭게 수신한 커맨드의 종별에 대응하는 제한값을 초과한 경우, 그 새롭게 수신한 커맨드에 따른 데이터 액세스를 억지하는 것을 특징으로 하는 커맨드 실행 제어 방법.
  10. 스토리지 장치에 내장된 컴퓨터에,
    통신 인터페이스를 통하여 수신한, 기억 장치에의 데이터 액세스를 지시하는 커맨드의 종별을 판별하고,
    상기 통신 인터페이스를 통하여 수신한 커맨드로서, 실행중인 커맨드의 수를 계수하고,
    상기 실행중인 커맨드의 수가, 상기 통신 인터페이스를 통하여 새롭게 수신한 커맨드의 종별에 대응하는 제한값 이하이면, 그 새롭게 수신한 커맨드에 따른 데이터 액세스를 상기 기억 장치에 대하여 실행하고, 상기 실행중인 커맨드의 수가 그 새롭게 수신한 커맨드의 종별에 대응하는 제한값을 초과한 경우, 그 새롭게 수신한 커맨드에 따른 데이터 액세스를 억지하는 처리를 실행시키는 프로그램을 기록한 컴퓨터 판독가능한 기록 매체.
KR1020120141246A 2011-12-19 2012-12-06 스토리지 장치 및 커맨드 실행 제어 방법 KR101461284B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JPJP-P-2011-277303 2011-12-19
JP2011277303A JP5899893B2 (ja) 2011-12-19 2011-12-19 ストレージ装置、コマンド実行制御方法、およびプログラム

Publications (2)

Publication Number Publication Date
KR20130070525A true KR20130070525A (ko) 2013-06-27
KR101461284B1 KR101461284B1 (ko) 2014-11-12

Family

ID=47681507

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020120141246A KR101461284B1 (ko) 2011-12-19 2012-12-06 스토리지 장치 및 커맨드 실행 제어 방법

Country Status (5)

Country Link
US (1) US8838839B2 (ko)
EP (1) EP2608012A3 (ko)
JP (1) JP5899893B2 (ko)
KR (1) KR101461284B1 (ko)
CN (1) CN103164171A (ko)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9093160B1 (en) * 2014-05-30 2015-07-28 Sandisk Technologies Inc. Methods and systems for staggered memory operations
US10587688B2 (en) * 2014-09-19 2020-03-10 Netapp, Inc. Techniques for coordinating parallel performance and cancellation of commands in a storage cluster system
US10453460B1 (en) * 2016-02-02 2019-10-22 Amazon Technologies, Inc. Post-speech recognition request surplus detection and prevention
CN111448543B (zh) * 2017-12-07 2021-10-01 华为技术有限公司 内存访问技术及计算机系统
US11893280B2 (en) * 2021-08-27 2024-02-06 Micron Technology, Inc. Concurrent command limiter for a memory system

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3317873B2 (ja) 1997-05-07 2002-08-26 甲府日本電気株式会社 データ転送制御装置
US20030046568A1 (en) * 2001-09-06 2003-03-06 Riddick Christopher J. Media protection system and method and hardware decryption module used therein
US6947981B2 (en) 2002-03-26 2005-09-20 Hewlett-Packard Development Company, L.P. Flexible data replication mechanism
US6910087B2 (en) * 2002-06-10 2005-06-21 Lsi Logic Corporation Dynamic command buffer for a slave device on a data bus
JP4322068B2 (ja) * 2003-03-07 2009-08-26 富士通株式会社 ストレージシステム及びそのデイスク負荷バランス制御方法
JP2005190057A (ja) 2003-12-25 2005-07-14 Hitachi Ltd ディスクアレイ装置及びディスクアレイ装置のリモートコピー制御方法
US7254768B2 (en) * 2005-02-18 2007-08-07 Broadcom Corporation Memory command unit throttle and error recovery
JP2007079885A (ja) 2005-09-14 2007-03-29 Hitachi Ltd データ入出力負荷分散方法、データ入出力負荷分散プログラム、計算機システムおよび管理サーバ
JP2008217855A (ja) * 2007-02-28 2008-09-18 Fujitsu Ltd 記憶装置用制御装置、記憶装置およびそのデータ記憶制御方法
US7840720B2 (en) * 2008-03-31 2010-11-23 International Business Machines Corporation Using priority to determine whether to queue an input/output (I/O) request directed to storage
JP5345679B2 (ja) * 2008-05-13 2013-11-20 ラムバス・インコーポレーテッド メモリデバイス用の部分プログラムコマンド
JP5147584B2 (ja) * 2008-07-23 2013-02-20 株式会社日立製作所 ストレージサブシステム及びコントローラによるコマンド実行方法

Also Published As

Publication number Publication date
US20130159556A1 (en) 2013-06-20
KR101461284B1 (ko) 2014-11-12
US8838839B2 (en) 2014-09-16
EP2608012A3 (en) 2016-07-27
JP2013127726A (ja) 2013-06-27
EP2608012A2 (en) 2013-06-26
JP5899893B2 (ja) 2016-04-06
CN103164171A (zh) 2013-06-19

Similar Documents

Publication Publication Date Title
US7716381B2 (en) Method for tracking and storing time to complete and average completion time for storage area network I/O commands
US7685342B2 (en) Storage control apparatus and method for controlling number of commands executed in storage control apparatus
JP4744171B2 (ja) 計算機システム及び記憶制御方法
US8095822B2 (en) Storage system and snapshot data preparation method in storage system
KR20130070525A (ko) 스토리지 장치 및 커맨드 실행 제어 방법
US7434012B1 (en) Techniques for media scrubbing
WO2011141961A1 (en) Storage apparatus and method for controlling the same
US20080104259A1 (en) Methods and systems for communicating with storage devices in a storage system
US8122151B2 (en) Storage system for optimally controlling a plurality of data transfer paths and method therefor
WO2012127529A1 (en) Storage apparatus and failure detection method
US20050210144A1 (en) Load balancing method and system
US7194562B2 (en) Method, system, and program for throttling data transfer
US9459799B1 (en) Identifying problematic application workloads based on associated response times
EP2866136B1 (en) Storage apparatus, method of controlling storage apparatus, and storage apparatus control program
US20110289273A1 (en) Disk array device and method for controlling disk array device
WO2010079535A1 (en) Storage system having plural microprocessors, and processing allotment method for storage system having plural microprocessors
US9990148B2 (en) Storage control device and storage system for data backup
JP2013515292A (ja) 複数のマイクロプロセッサを有するストレージシステム、及び、そのストレージシステムにおける処理分担方法
US8195847B2 (en) Storage control apparatus, storage system and method
US11232036B2 (en) Managing write access to data storage devices for spontaneous de-staging of cache
JP2006031335A (ja) 情報処理システム及び方法
US11144242B2 (en) Distributed storage system
JP6502879B2 (ja) 記憶装置
TWI718642B (zh) 記憶體裝置管理方法及記憶體裝置管理系統
JP5338367B2 (ja) 通信制御装置、障害検出方法、通信制御回路及びプログラム

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20171018

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20181018

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20191016

Year of fee payment: 6