[go: up one dir, main page]
More Web Proxy on the site http://driver.im/

KR101413899B1 - 스토리지 장치, 스토리지 장치의 제어 방법 및 기억 매체 - Google Patents

스토리지 장치, 스토리지 장치의 제어 방법 및 기억 매체 Download PDF

Info

Publication number
KR101413899B1
KR101413899B1 KR1020120121232A KR20120121232A KR101413899B1 KR 101413899 B1 KR101413899 B1 KR 101413899B1 KR 1020120121232 A KR1020120121232 A KR 1020120121232A KR 20120121232 A KR20120121232 A KR 20120121232A KR 101413899 B1 KR101413899 B1 KR 101413899B1
Authority
KR
South Korea
Prior art keywords
input
unit
lun
output process
output
Prior art date
Application number
KR1020120121232A
Other languages
English (en)
Other versions
KR20130070511A (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 KR20130070511A publication Critical patent/KR20130070511A/ko
Application granted granted Critical
Publication of KR101413899B1 publication Critical patent/KR101413899B1/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/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/10Program control for peripheral devices
    • G06F13/102Program control for peripheral devices where the programme performs an interfacing function, e.g. device driver
    • 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/0653Monitoring storage devices or systems
    • 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
    • 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/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • 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/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating

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)
  • Debugging And Monitoring (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Memory System (AREA)
  • Bus Control (AREA)

Abstract

스토리지의 QoS 기능을 용이하게 실현하는 것이다.
스토리지 장치(100)는, 산출부(505)와, 스케줄부(506)와, 실행부(507)를 갖는다. 산출부(505)는 호스트, 포트, 및 LUN에 설정된 우선도에 기초해서 결정되는 입출력 처리수의 상한값을 산출한다. 스케줄부(506)는 호스트로부터 접수한 입출력 처리수와, 산출된 상한값에 기초하여, 입출력 처리의 실행순을 스케줄한다. 실행부(507)는, 스케줄부(506)에 의해 스케줄된 실행순으로 입출력 처리를 실행한다.

Description

스토리지 장치, 스토리지 장치의 제어 방법 및 기억 매체{STORAGE DEVICE, STORAGE DEVICE CONTROL METHOD, AND RECORDING MEDIUM}
본 발명은, 스토리지 장치, 스토리지 장치의 제어 방법 및 스토리지 장치 제어 프로그램에 관한 것이다
종래, 복수의 서버가 1대의 스토리지 장치를 공유하는 스토리지 시스템에서는, 서버가 요구한 입출력 처리가 스토리지 장치 내에서 경합하여, 입출력 처리마다 안정된 퍼포먼스를 유지할 수 없는 경우가 있다.
이러한 것에서부터, 스토리지 장치는 서버로부터의 처리 요구에 대해 우선 순위를 붙여서 처리를 행함으로써, 입출력 처리마다 우선 순위에 따른 적절한 성능을 유지시키는 QoS(Quality of Service) 기능을 갖는 경우가 있다.
스토리지 장치가 갖는 QoS 기능으로서는, 서버에 의해 지정된 우선도에 기초하여 큐 등의 내부 리소스를 할당하여, 커맨드를 처리하는 기술이 알려져 있다. 일례로서, 서버 A와 서버 B의 2대가, 스토리지 장치를 공유하는 스토리지 시스템에 있어서, 서버 A가 우선도를 지정해서 커맨드를 송신하는 경우를 설명한다.
스토리지 장치는, 서버 A로부터 우선도가 지정된 경우, 우선도의 지정이 없는 처리에 비해서 예를 들면 3배의 내부 리소스를 할당한다. 이 결과, 스토리지 장치는, 서버 A로부터 요구된 입출력 처리를, 서버 B로부터 요구된 입출력 처리보다도 우선해서 실행한다.
또한, 스토리지 장치측에서 서버나 LUN(Logical Unit Number)마다 목표 성능이나 성능 제한을 설정함으로써, 어플리케이션마다 우선 순위에 따른 적절한 성능을 유지시키는 기술도 알려져 있다.
일본 특허 출원 공개 제2007-264751호 공보 일본 특허 출원 공개 제2003-124976호 공보
그러나, 전술한 종래의 기술에서는, 스토리지의 QoS 기능을 용이하게 실현 할 수 없는 경우가 있다.
구체적으로는, 서버 A가 우선도를 지정해서 커맨드를 송신하는 경우, 스토리지 장치는 서버마다 상대적인 성능을 할당한다. 다시 말해서, 우선도는 스토리지 장치를 공유하는 서버의 대수에 의존하여, 절대적인 리소스를 분배할 수는 없다.
이 때문에, 스토리지 장치를 공유하는 서버의 대수가 증가한 경우, 서버 A가 우선도를 지정해서 커맨드를 송신해도, 스토리지 장치가 서버 A의 처리에 할당하는 리소스는 저하한다. 또한, 이 경우, 스토리지 장치와 서버를 제휴하는 전용 소프트웨어도 필요하게 된다.
또한, 스토리지 장치측에서 서버나 LUN마다 목표 성능이나 성능 제한을 설정하는 경우, 우선도가 높은 서버만이 리소스를 점유하고, 우선도가 낮은 서버는 처리를 실행할 수 없는 경우가 일어날 수 있다. 또한, 이 경우, 서버마다 LUN마다 구체적인 성능값을 설정하는 것이 번잡하다.
하나의 측면에서는, 스토리지의 QoS 기능을 용이하게 실현할 수 있는 스토리지 장치, 스토리지 장치의 제어 방법 및 스토리지 장치 제어 프로그램을 제공하는 것을 목적으로 한다.
본건의 스토리지 장치는, 정보 처리 장치, 정보 처리 장치와 자장치 사이의 인터페이스인 포트, 및 자장치가 갖는 기억 장치에 설정된 우선도에 기초해서 결정되는 입출력 처리수의 상한값을 산출한다. 또한, 스토리지 장치는, 정보 처리 장치로부터 접수한 입출력 처리수와, 산출한 상한값에 기초하여, 입출력 처리의 실행순을 스케줄한다. 그리고, 스토리지 장치는, 스케줄된 실행순으로 입출력 처리를 실행한다.
스토리지의 QoS 기능을 용이하게 실현할 수 있다.
도 1은 실시예 1에 따른 스토리지 시스템의 하드웨어 구성의 일례를 도시하는 도면.
도 2는 스토리지 장치에 의해 실행되는 펌웨어에 의해 실현되는 처리부의 기능 구성을 도시하는 기능 블록도.
도 3은 실시예 1에 따른 SCSI 타깃 제어부의 기능 구성을 도시하는 기능 블록도.
도 4는 우선 순위와 성능값의 대응 관계의 일례를 도시하는 도면.
도 5는 QoS 관리 테이블의 일례를 도시하는 도면.
도 6은 실시예 1에 따른 N밀리초 타이머 스케줄 처리의 처리 수순을 나타내는 플로우차트.
도 7은 실시예 1에 따른 QoS IO 스케줄 처리의 처리 수순을 나타내는 플로우차트.
도 8은 스토리지 장치에 의한 커맨드 수신 시의 처리의 처리 수순을 나타내는 플로우차트.
도 9는 실시예 1에 따른 스토리지 장치에 의한 효과의 일례를 도시하는 도면.
도 10은 실시예 2에 따른 SCSI 타깃 제어부의 기능 구성을 도시하는 기능 블록도.
도 11은 실시예 2에 따른 스토리지 장치에 의한 N밀리초 타이머 스케줄 처리의 처리 수순을 나타내는 플로우차트.
도 12는 실시예 2에 따른 스토리지 장치에 의한 한계값 설정 조정 처리의 처리 수순을 나타내는 플로우차트.
도 13은 실시예 2에 따른 스토리지 장치에 의한 효과의 일례를 도시하는 도면.
도 14는 실시예 3에 따른 스토리지 장치에 의한 한계값 설정 조정 처리의 처리 수순을 나타내는 플로우차트.
도 15는 실시예 3에 따른 스토리지 장치에 의한 효과의 일례를 도시하는 도면.
도 16은 실시예 4에 따른 스토리지 장치에 의한 효과의 일례를 도시하는 도면.
도 17은 스토리지 장치 제어 프로그램을 실행하는 컴퓨터를 도시하는 도면.
이하에, 본원이 개시하는 스토리지 장치, 스토리지 장치의 제어 방법 및 스토리지 장치 제어 프로그램의 실시예를 도면에 기초해서 상세하게 설명한다. 또한, 이 실시예에 의해 본 발명이 한정되는 것은 아니다. 그리고, 각 실시예는, 처리 내용을 모순시키지 않는 범위에서 적절히 조합하는 것이 가능하다.
<실시예 1>
[실시예 1에 따른 스토리지 시스템의 구성]
도 1은 실시예 1에 따른 스토리지 시스템의 구성의 일례를 도시하는 도면이다. 도 1에 도시한 바와 같이, 스토리지 시스템(1)은, 호스트(10a), 호스트(10b) 및 스토리지 장치(100)를 갖는다. 또한, 스토리지 시스템(1)에 있어서, 스토리지 장치(100)는 호스트(10a) 및 호스트(10b)와 접속된다. 또한, 스토리지 장치(100)와 접속하는 호스트의 수는 도시에 한정되는 것은 아니고, 변경 가능하다.
[호스트의 구성]
계속해서, 도 1을 이용해서, 호스트(10a) 및 호스트(10b)의 구성을 설명한다. 호스트(10a) 및 호스트(10b)는 서버 등의 정보 처리 장치이다. 호스트(10a)는, FC(Fibre Channel)-A(Adapter)(11a), FC-A(12a), iSCSI(Small Computer System Interface)-A(13a), iSCSI-A(14a)를 갖는다. FC-A는 통상 FC-HBA(Host Bus Adapter)의 형태이며, iSCSI-A는 통상 NIC(Network Interface Card)를 사용하여 거기에서 iSCSI 프로토콜을 동작시키는 형태이다.
FC-A(11a)는, 후술하는 CM(Controller Module)(200a) 내의 FC-CA(201a)와 FC로 접속하는 인터페이스이다. 또한, 마찬가지로, FC-A(12a)은 후술하는 CM(200b) 내의 FC-CA(201b)와 FC로 접속하는 인터페이스이다. 또한, iSCSI-A(13a)는, 후술하는 CM(200a) 내의 iSCSI-CA(202a)와 iSCSI로 접속하는 인터페이스이다. 마찬가지로, iSCSI-A(14a)는, 후술하는 CM(200b) 내의 iSCSI-CA(202b)와 iSCSI로 접속하는 인터페이스이다.
호스트(10b)는 FC-A(11b), FC-A(12b), iSCSI-A(13b), iSCSI-A(14b)를 갖는다. FC-A(11b)는 FC-A(11a)에 대응하고, FC-A(12b)는 FC-A(12a)에 대응한다. 또한, iSCSI-A(13b)는 iSCSI-A(13a)에 대응하고, iSCSI-A(14b)는 iSCSI-A(14a)에 대응한다. 또한, 이하의 설명에서는, 호스트(10a)와 호스트(10b)를 구별하지 않고 일반화해서 칭하는 경우에는 호스트(10)로서 기재한다.
[실시예 1에 따른 스토리지 장치의 구성]
계속해서, 도 1을 이용해서, 실시예 1에 따른 스토리지 장치(100)의 구성을 설명한다. 실시예 1에 따른 스토리지 장치(100)는 HDD(Hard Disk Drive)(101a∼101d)와, CM(200a, 200b)을 갖는다. HDD(101a∼101d)는 RAID(Redundant Arrays of Inexpensive Disks)를 구성하고, 유저 데이터를 기억한다. 또한, 스토리지 장치(100)가 갖는 HDD, CM의 수는 도시한 것에 한정되는 것은 아니고, 변경 가능하다. 또한, 스토리지 장치(100)는 HDD(101a∼101d)를 논리적으로 분할한 LUN으로서 사용된다. 이 LUN은 각각이 논리적인 1대의 HDD로서 호스트(10a, 10b)에 의해 인식된다.
CM(200a)은 FC-CA(201a), iSCSI-CA(202a), SAS(Serial Attached SCSI)(203a), 메모리(210a) 및 CPU(Central Processing Unit)(220a)를 갖는다.
FC-CA(201a)는 호스트(10a) 및 호스트(10b)와 FC로 접속하는 인터페이스이다. iSCSI-CA(202a)는 호스트(10a) 및 호스트(10b)와 iSCSI로 접속하는 인터페이스이다. SAS(203a)는 HDD(101a∼101d)와, SAS로 접속하는 인터페이스이다. 또한, 이하의 설명에서는, FC-CA(201) 및 iSCSI-CA(202)를 일반화해서 칭하는 경우에는 적절히 포트라 기재한다.
메모리(210a)는, 예를 들면 RAM 등의 반도체 메모리 소자이며, 캐쉬 영역(211a)과 제어 영역(212a)을 갖는다. 캐쉬 영역(211a)은 호스트(10a) 또는 호스트(10b)와, HDD(101a∼101d) 중 어느 하나와의 사이에서 주고 받게 되는 데이터를 일시적으로 유지한다. 제어 영역(212a)은 스토리지 장치(100)가 실행하는 각종 처리에 필요로 하는 정보를 보유한다. 또한, 제어 영역(212a)은 각종 프로그램 등도 저장되어 있다.
CPU(220a)는 연산이나 제어 등의 각종 처리를 행하는 전자 회로이다.
CM(200b)은 FC-CA(201b), iSCSI-CA(202b), SAS(203b), 메모리(210b) 및 CPU(220b)를 갖는다. FC-CA(201b)는 FC-CA(201a)에 대응하고, iSCSI-CA(202b)는 iSCSI-CA(202a)에 대응하고, SAS(203b)는 SAS(203a)에 대응한다. 또한, 메모리(210b)는 메모리(210a)에 대응하고, CPU(220b)는 CPU(220a)에 대응한다.
이러한 스토리지 시스템(1)에서는, 스토리지 장치(100)의 CPU(220a, 220b)는 펌웨어에 의해 이하의 처리를 실행한다. 즉, 스토리지 장치(100)는 호스트(10)와, 포트와, LUN에 설정된 우선도에 기초해서 결정되는 입출력 처리수의 상한값을 소정의 시간마다 산출한다. 또한, 스토리지 장치(100)는 호스트(10)로부터 접수한 입출력 처리수와, 산출된 상한값에 기초하여, 입출력 처리의 실행순을 스케줄한다. 그리고, 스토리지 장치(100)는, 스케줄된 입출력 처리를 실행한다. 이와 같이 하여, 스토리지 장치(100)는 호스트 IO의 상황이나 호스트의 접속 환경의 변화에 따라서, 스토리지 성능을 최적으로 제어한다.
[펌웨어에 의해 실현되는 처리부의 기능 구성]
다음으로, 도 2를 이용해서, 스토리지 장치(100)에 의해 실행되는 펌웨어에 의해 실현되는 처리부의 기능 구성을 설명한다. 도 2는 스토리지 장치에 의해 실행되는 펌웨어에 의해 실현되는 처리부의 기능 구성을 도시하는 기능 블록도이다. 또한, 스토리지 장치(100)에 의해 실행되는 펌웨어에 의해 실현되는 처리부(300)는, 메모리(210a) 및 메모리(210b)와, CPU(220a) 및 CPU(220b)가 협동해서 실현된다.
도 2에 도시한 바와 같이, 처리부(300)는 FC I/F 제어부(301), iSCSI I/F 제어부(302), SCSI 타깃 제어부(303), SCSI 커맨드 제어부(304), 리소스 제어부(305), 캐쉬 제어부(306), RAID 제어부(307)를 갖는다. 또한, 처리부(300)는, 디스크 제어부(308), SAS I/F 제어부(309), 메모리 제어부(310), 커널부(311), 시스템 구성 제어부(312), 보수 인터페이스 제어부(313)를 갖는다.
FC I/F 제어부(301)는, 호스트와 FC 접속하는 경우의 FC 프로토콜 칩의 제어를 행한다. iSCSI I/F 제어부(302)는 호스트와 iSCSI 접속하는 경우의 iSCSI 프로토콜 칩의 제어를 행한다.
SCSI 타깃 제어부(303)는 SCSI 타깃의 제어를 행한다. 예를 들면, SCSI 타깃 제어부(303)는, 호스트 관리, LUN 관리, 커맨드 실행 관리, 커맨드 이외의 이상계 이벤트 관리 등을 행한다. 또한, SCSI 타깃 제어부(303)의 상세한 기능에 대해서는 후술한다.
SCSI 커맨드 제어부(304)는, SCSI 커맨드종마다의 제어를 행한다. 리소스 제어부(305)는, 전체 CM을 걸친 논리 볼륨 관리, 호스트 패스 관리, 부하 관리를 행한다. 캐쉬 제어부(306)는 캐쉬 메모리의 관리를 행한다.
RAID 제어부(307)는 RAID 그룹의 관리를 행한다. 디스크 제어부(308)는 디스크 커맨드 제어를 행한다. SAS I/F 제어부(309)는 디스크와 SAS 접속하는 프로토콜 칩의 제어를 행한다.
메모리 제어부(310)는 각 제어부가 사용하는 제어 메모리를 관리한다. 커널부(311)는 기본 소프트부이며, 각 제어부의 하위에 위치한다. 시스템 구성 제어부(312)는 스토리지 장치(100)의 구성 정보를 관리한다. 보수 인터페이스 제어부(313)는 보수용 유저 인터페이스를 제어한다.
[실시예 1에 따른 SCSI 타깃 제어부의 기능 구성]
다음으로, 도 3을 이용해서, SCSI 타깃 제어부(303)의 기능 구성을 설명한다. 도 3은 SCSI 타깃 제어부의 기능 구성을 도시하는 기능 블록도이다. 도 3에 도시한 바와 같이, SCSI 타깃 제어부(303)는, QoS 관리 테이블(501), 대기 큐 저장부(502), 성능 설정부(503), 커맨드 수신부(504), 산출부(505), 스케줄부(506), 실행부(507)를 갖는다.
QoS 관리 테이블(501)은, 대상마다, 「우선 순위」, 「성능값」, 실행 가능한 입출력 처리수, 실행한 입출력 처리수를 대응짓는 정보를 기억한다. 여기에서는, QoS 관리 테이블(501)의 상세한 설명을 하기 전에, 우선, 도 4를 이용해서 「우선 순위」와 「성능값」이라는 대응 관계에 대해서 설명한다.
도 4는 우선 순위와 성능값의 대응 관계의 일례를 도시하는 도면이다. 도 4에 도시한 바와 같이, 「우선 순위」는 우선도를 나타내며, 예를 들면 1부터 15까지 15단계의 레벨이 설정된다. 또한, 우선 순위의 레벨은, 예시에 지나지 않으며, 1부터 15의 15단계로 한정되는 것은 아니다.
또한, 「우선 순위」의 단계마다 「성능값」이 대응지어진다. 다시 말해서, 「우선 순위」는, 성능 제한을 나타낸다. 이 「성능값」으로서, 단위 시간당 통신량인 (MB/s), 단위 시간당 실행 가능한 입출력 처리수인 IOPS(Input Output Per Second)가 이용된다.
도 4에 도시하는 예에서는, 「우선 순위」가 「1」로 설정되는 경우, 단위 시간당 통신량이 「750(MB/s)」이며, 단위 시간당 「37500」의 입출력 처리를 실행하는 것을 나타낸다. 또한, 마찬가지로, 「우선 순위」가 「3」으로 설정되는 경우, 단위 시간당 통신량이 「650(MB/s)」이며, 단위 시간당 「32500」의 입출력 처리를 실행하는 것을 나타낸다.
다음으로, 도 5를 이용해서 QoS 관리 테이블(501)의 일례를 설명한다. 도 5는 QoS 관리 테이블의 일례를 도시하는 도면이다. 도 5에 도시한 바와 같이, QoS 관리 테이블(501)은, 「대상」, 「우선 순위」, 「N밀리초 IO수」, 「N밀리초 블록수」, 「한계 IO수」, 「한계 블록수」, 「현 IO수」 및 「현 블록수」를 대응지은 정보를 기억한다.
여기서, QoS 관리 테이블(501)이 기억하는 「대상」은, 우선 순위를 설정하는 대상을 나타낸다. 여기서, 「포트」, 「호스트」, 「호스트와 LUN의 조합」의 각각이 우선 순위를 설정하는 대상이 된다. 예를 들면, 「대상」에는, 「FC-CA(201a)」, 「호스트(10a)」, 「호스트(10a)-LUN-A」 등이 저장된다. 또한, 이하의 설명에서는, 「대상」으로서 「호스트와 LUN의 조합」을 가리키는 경우에 대해는, 간단히, 「LUN」으로서 적절히 기재한다.
「우선 순위」는 대상으로 설정된 우선도를 나타낸다. 여기에서는, 우선 순위의 레벨이 1부터 15까지 15단계 중 어느 하나의 레벨이 설정되는 것으로 한다. 예를 들면, 「우선 순위」에는, 「3」, 「5」, 「7」 등의 레벨이 저장된다.
「N밀리초 IO수」는, 소정의 시간 동안에 실행 가능한 IO수를 나타낸다. 여기서, 소정의 시간으로서, 예를 들면 10밀리초가 설정된다. 또한, 「N밀리초 IO수」에는, 예를 들면 「325」, 「275」, 「225」 등의 값이 저장된다.
「N밀리초 블록수」는 소정의 시간 동안에 기입 가능한 블록수를 나타낸다. 이 블록수는 1블록을 512Byte로 하여, 단위 시간당 통신량(MB/s)으로부터 산출된다. 또한, 여기서는 소정의 시간으로서, 예를 들면 10밀리초가 설정된다. 즉, 「N밀리초 블록수」에는, 10밀리초 동안에 기입 가능한 블록수로서, 예를 들면 「13312」, 「11264」, 「9216」 등의 값이 저장된다.
「한계 IO수」는, 현 시점에서의 실행 가능한 IO수의 상한값을 나타낸다. 이 한계 IO수는, 「N밀리초 IO수」에 「N밀리초가 경과한 횟수(n)」를 곱한 값으로부터, 후술하는 「현 IO수」를 감산함으로써 산출된다. 예를 들면, 「한계 IO수」에는, 「325×n-a」, 「275×n-b」, 「225×n-c」 등의 값이 저장된다. 또한, 「n」은, 「N밀리초가 경과한 횟수」이며, 「a」부터 「c」는, 후술하는 바와 같이, 대응하는 「현 IO수」의 값이다.
「한계 블록수」는, 현 시점에서의 기입 가능한 블록수의 상한값을 나타낸다. 이 한계 블록수는, 「N밀리초 블록수」에 「N밀리초가 경과한 횟수(n)」을 곱한 값으로부터, 후술하는 「현 블록수」를 감산함으로써 산출된다. 예를 들면, 「한계 블록수」에는, 「13312×n-A」, 「11264×n-B」, 「9216×n-C」 등의 값이 저장된다. 또한, 「n」은, 「N밀리초가 경과한 횟수」이며, 「A」부터 「C」는, 후술하는 바와 같이, 대응하는 「현 블록수」의 값이다.
「현 IO수」는, 소정의 시간까지 요구된 IO수의 누적값을 나타낸다. 예를 들면, 「현 IO수」에는, 「a」, 「b」, 「c」 등이 저장된다. 「현 블록수」는, 소정의 시간까지 요구된 블록수의 누적값을 나타낸다. 예를 들면, 「현 블록수」에는, 「A」, 「B」, 「C」 등이 저장된다.
도 5에 도시하는 예에서는, QoS 관리 테이블(501)은, 「포트」의 우선 순위가 「3」이며, 「N밀리초 IO수」가 「325」이며, 「N밀리초 블록수」가 「13312」인 것을 나타낸다. 또한, QoS 관리 테이블(501)은, 「한계 IO수」가 「325×n-a」이며, 「한계 블록수」가 「13312×n-A」이며, 「현 IO수」가 「a」이며, 「현 블록수」가 「A」인 것을 나타낸다.
또한, QoS 관리 테이블(501)이 기억하는 「대상」, 「우선 순위」, 「N밀리초 IO수」, 「N밀리초 블록수」는 후술하는 성능 설정부(503)에 의해 초기 설정되는 값이다. 또한, QoS 관리 테이블(501)이 기억하는 「한계 IO수」, 「한계 블록수」, 「현 IO수」 및 「현 블록수」는 N밀리초마다 갱신되는 값이다.
대기 큐 저장부(502)는 큐이며, 커맨드 수신부(504)가 수신한 커맨드 중, 소정 시간 경과 후에 스케줄되는 커맨드를 저장한다. 또한, 이 대기 큐 저장부(502)는, 호스트와 LUN의 조합마다 설치된다.
성능 설정부(503)는 QoS 관리 테이블(501)이 기억하는 정보 중, 「대상」, 「우선 순위」, 「N밀리초 IO수」, 「N밀리초 블록수」의 각각에 관리자로부터 접수한 값을 설정한다. 또한, 관리자는 호스트의 성능이나 호스트가 실행하는 어플리케이션 등을 가미해서 우선 순위를 설정한다.
또한, 성능 설정부(503)는, 스토리지 장치(100)에 접속하는 호스트, 호스트가 사용하는 LUN의 조합이 변화한 경우에, QoS 관리 테이블(501)이 기억하는 정보를 갱신한다.
커맨드 수신부(504)는, 어느 하나에서의 호스트로부터 커맨드를 접수함과 함께, 실행 대기의 커맨드가 있는지 여부를 판정한다. 예를 들면, 커맨드 수신부(504)는, 실행 대기의 커맨드가 있다고 판정한 경우, 수신한 커맨드를 대기 큐 저장부(502)에 저장시킨다. 또한, 커맨드 수신부(504)는 실행 대기의 커맨드가 없다고 판정한 경우, 후술하는 스케줄부(506)에 수신한 커맨드의 실행순을 스케줄 시킨다.
산출부(505)는 호스트(10), 포트 및 LUN마다 설정된 우선 순위에 기초해서 결정되는 한계 IO수와 한계 블록수를 소정의 시간마다 산출한다. 여기에서는, 산출부(505)는 10밀리초마다 한계 IO수와 한계 블록수를 산출하는 것으로서 설명한다.
예를 들면, 산출부(505)는 10밀리초마다, 한계 IO수의 값에, N밀리초 IO수를 가산한다. 또한, 산출부(505)는 10밀리초마다, 한계 블록수의 값에, N밀리초 블록수를 가산한다. 산출부(505)는 산출한 한계 IO수와 한계 블록수를 QoS 관리 테이블(501)에 저장시킨다.
스케줄부(506)는 호스트로부터 접수한 커맨드수와, 산출부(505)에 의해 산출된 한계 IO수 및 한계 블록수에 기초하여, 커맨드의 실행순을 스케줄한다. 예를 들면, 스케줄부(506)는 소정의 시간이 경과할 때마다, 커맨드의 실행순을 스케줄한다.
스케줄부(506)는 마크한 호스트와 마크한 LUN을 복원한다. 그리고, 스케줄부(506)는 복원한 호스트와 LUN의 조합으로부터 순서대로, 이하의 처리를 실행한다. 또한, 호스트의 마크 및 LUN의 마크에 대해서는 후술한다.
우선, 스케줄부(506)는 호스트로부터 접수한 커맨드수가 산출부(505)에 의해 산출된 호스트, 포트, LUN 각각의 한계 IO수 및 한계 블록수 이내로 처리 가능한지 여부를 판정한다. 여기서, 스케줄부(506)는 접수한 커맨드수가 한계 IO수 및 한계 블록수 이내이며, 처리 가능하다고 판정한 경우, 실행부(507)에 커맨드를 기동시킨다.
또한, 스케줄부(506)는 처리 가능하다고 판정한 경우, QoS 관리 테이블(501)이 기억하는 「현 IO수」에, 기동한 커맨드분의 IO수를 가산한 값을 저장시킨다. 마찬가지로, 스케줄부(506)는 처리 가능하다고 판정한 경우, QoS 관리 테이블(501)이 기억하는 「현 블록수」에, 기동한 커맨드분의 블록수를 가산한 값을 저장시킨다.
또한, 스케줄부(506)는 처리 가능하다고 판정한 경우, QoS 관리 테이블(501)이 기억하는 「한계 IO수」에, 기동한 커맨드분의 IO수를 감산한 값을 저장시킨다. 마찬가지로, 스케줄부(506)는 처리 가능하다고 판정한 경우, QoS 관리 테이블(501)이 기억하는 「한계 블록수」에, 기동한 커맨드분의 블록수를 감산한 값을 저장시킨다.
한편, 스케줄부(506)는 접수한 커맨드수가 한계 IO수 및 한계 블록수 이내가 아니라고 판정한 경우, 소정의 시간이 경과한 후에, 호스트로부터 접수한 커맨드수가, 새롭게 산출된 한계 IO수 및 한계 블록수 이내인지 여부를 판정한다.
예를 들면, 스케줄부(506)는 접수한 커맨드수가 포트의 한계 IO수 및 한계 블록수 이내가 아니라고 판정한 경우, 호스트와 LUN의 조합을 마크하고, 소정의 시간이 경과 후에, 마크한 호스트와 LUN의 조합으로부터 스케줄을 실행한다. 또한, 예를 들면 스케줄부(506)는 포트의 한계 IO수 및 한계 블록수 이내이기는 하지만, 호스트의 한계 IO수 및 한계 블록수 이내가 아니라고 판정한 경우, LUN을 마크한다. 그리고, 스케줄부(506)는 다음 LUN을 세트하고, 호스트로부터 접수한 커맨드수가, 새롭게 산출된 한계 IO수 및 한계 블록수 이내인지 여부를 판정한다. 여기서, 다음 LUN이 없는 경우, 스케줄부(506)는 다음 호스트를 세트하고, 접수한 커맨드수가 새롭게 산출된 한계 IO수 및 한계 블록수 이내인지 여부를 판정한다.
또한, 스케줄부(506)는 커맨드 수신부(504)에 의해 실행 대기의 커맨드가 없다고 판정된 경우, 소정의 시간이 경과하는 것을 대기하지 않고 커맨드의 실행순을 스케줄한다. 예를 들면, 스케줄부(506)는 호스트로부터 접수한 커맨드수가, 산출부(505)에 의해 산출된 호스트, 포트, LUN 각각의 한계 IO수 및 한계 블록수 이내로 처리 가능한지 여부를 판정한다. 여기서, 스케줄부(506)는 호스트로부터 접수한 커맨드수가, 포트, 호스트, LUN 중 어느 하나의 한계 IO수 및 한계 블록수 이내로 처리 가능하지 않다고 판정한 경우, 커맨드를 대기 큐 저장부(502)에 저장한다. 그리고, 스케줄부(506)는 소정의 시간이 경과한 후에, 호스트로부터 접수한 커맨드수가, 새롭게 산출된 한계 IO수 및 한계 블록수 이내인지 여부를 판정한다.
실행부(507)는 스케줄부(506)에 의해 스케줄된 실행순으로 커맨드를 대기 큐 저장부(502)로부터 디큐하고, 커맨드를 기동해서 입출력 처리를 실행한다.
또한, SCSI 타깃 제어부(303)의 각 기능은 메모리(210a) 및 메모리(210b)와, CPU(220a) 및 CPU(220b)가 협동해서 실현된다.
[실시예 1에 따른 스토리지 장치에 의한 처리의 처리 수순]
다음으로 도 6 내지 도 8을 이용해서, 실시예 1에 따른 스토리지 장치(100)에 의한 처리의 처리 수순을 설명한다. 여기에서는, 도 6을 이용해서, N밀리초 타이머 스케줄 처리의 처리 수순에 대해서 설명하고, 도 7을 이용해서, QoS IO 스케줄 처리의 처리 수순에 대해서 설명하고, 도 8을 이용해서, 스토리지 장치(100)에 의한 커맨드 수신 시의 처리의 처리 수순을 설명한다.
(N밀리초 타이머 스케줄 처리)
도 6은 N밀리초 타이머 스케줄 처리의 처리 수순을 나타내는 플로우차트이다. 도 6에 나타낸 바와 같이, 산출부(505)는 포트 한계값을 가산한다(스텝 S101). 또한, 산출부(505)는 전체 호스트 한계값을 가산한다(스텝 S102). 또한, 산출부(505)는 전체 LUN 한계값을 가산한다(스텝 S103). 그리고, 스케줄부(506)는 QoS IO 스케줄 처리를 실행한다(스텝 S104).
(QoS IO 스케줄 처리)
도 7은 QoS IO 스케줄 처리의 처리 수순을 나타내는 플로우차트이다. N밀리초 타이머 스케줄 처리의 스텝 S104의 상세 처리이다.
도 7에 도시한 바와 같이, 스케줄부(506)는 마크한 호스트를 복원한다(스텝 S201). 계속해서, 스케줄부(506)는 마크한 LUN을 복원한다(스텝 S202). 그리고, 스케줄부(506)는 대기 큐 저장부(502) 내에 다음 커맨드가 있는지 여부를 판정한다(스텝 S203).
여기서, 스케줄부(506)는 대기 큐 저장부(502) 내에 다음 커맨드가 있다고 판정한 경우(스텝 S203, 예), 커맨드수가 포트의 한계 IO수, 한계 블록수 이내인지 여부를 판정한다(스텝 S204). 그리고, 스케줄부(506)는 커맨드수가 포트의 한계 IO수, 한계 블록수 이내라고 판정한 경우(스텝 S204, 예), 커맨드수가 호스트의 한계 IO수, 한계 블록수 이내인지 여부를 판정한다(스텝 S205).
여기서, 스케줄부(506)는 커맨드수가 호스트의 한계 IO수, 한계 블록수 이내라고 판정한 경우(스텝 S205, 예), 커맨드수가 LUN의 한계 IO수, 한계 블록수 이내인지 여부를 판정한다(스텝 S206). 그리고, 스케줄부(506)는 커맨드수가 LUN의 한계 IO수, 한계 블록수 이내라고 판정한 경우(스텝 S206, 예), 포트의 한계값으로부터 커맨드분의 IO수분과 블록수분을 감산한다(스텝 S207).
또한, 스케줄부(506)는 호스트의 한계값으로부터 커맨드분의 IO수분과 블록수분을 감산한다(스텝 S208). 계속해서, 스케줄부(506)는 LUN의 한계값으로부터 커맨드분의 IO수분과 블록수분을 감산한다(스텝 S209). 그리고, 실행부(507)는, 커맨드를 기동한다(스텝 S210). 또한, 커맨드를 기동한 후, 실행부(507)는 커맨드를 대기 큐 저장부(502)로부터 디큐한다(스텝 S211). 이 처리 후, 스토리지 장치(100)는 스텝 S203으로 이행한다.
또한, 스케줄부(506)는 커맨드수가 포트의 한계 IO수, 한계 블록수 이내가 아니라고 판정한 경우(스텝 S204, 아니오), 호스트와 LUN을 마크하고(스텝 S212), 처리를 종료한다. 또한, 스케줄부(506)는 커맨드수가 호스트의 한계 IO수, 한계 블록수 이내가 아니라고 판정한 경우(스텝 S205, 아니오), LUN을 마크하고(스텝 S213), 스텝 S216으로 이행한다.
또한, 스케줄부(506)는 대기 큐 저장부(502) 내에 다음 커맨드가 없다고 판정한 경우(스텝 S203, 아니오), 스텝 S214로 이행한다. 또한, 스케줄부(506)는 커맨드수가 LUN의 한계 IO수, 한계 블록수 이내가 아니라고 판정한 경우(스텝 S206, 아니오), 스텝 S214로 이행한다.
스텝 S214에 있어서, 스케줄부(506)는 다음 LUN을 세트한다. 그리고, 스케줄부(506)는 다음 LUN이 마크한 LUN과 동일한 LUN인지 여부를 판정한다(스텝 S215). 여기서, 스케줄부(506)는 다음 LUN이 마크한 LUN과 동일한 LUN이 아니라고 판정한 경우(스텝 S215, 아니오), 스텝 S203으로 이행한다.
한편, 스케줄부(506)는 다음 LUN이 마크한 LUN과 동일한 LUN이라고 판정한 경우(스텝 S215, 예), 다음 호스트를 세트한다(스텝 S216). 계속해서, 스케줄부(506)는 다음 호스트가 마크한 호스트와 동일한 호스트인지 여부를 판정한다(스텝 S217). 여기서, 스케줄부(506)는 다음 호스트가 마크한 호스트와 동일한 호스트가 아니라고 판정한 경우(스텝 S217, 아니오), 스텝 S202로 이행한다. 한편, 스케줄부(506)는 다음 호스트가 마크한 호스트와 동일한 호스트라고 판정한 경우(스텝 S217, 예), 처리를 종료한다.
(커맨드 수신 시의 처리)
도 8은 스토리지 장치에 의한 커맨드 수신 시의 처리의 처리 수순을 나타내는 플로우차트이다. 스토리지 장치(100)는, 예를 들면 커맨드를 수신한 것을 계기로 이 처리를 실행한다.
도 8에 나타낸 바와 같이, 커맨드 수신부(504)는, 수신한 커맨드의 호스트와 LUN 사이에서 대기 IO가 없는지 여부를 판정한다(스텝 S301). 여기서, 커맨드 수신부(504)에 의해 수신한 커맨드의 호스트와 LUN 사이에서 대기 IO가 없다고 판정된 경우(스텝 S301, 예), 스케줄부(506)는 이하의 처리를 실행한다. 즉, 스케줄부(506)는 커맨드수가 포트의 한계 IO수, 한계 블록수 이내인지 여부를 판정한다(스텝 S302). 그리고, 스케줄부(506)는 커맨드수가 포트의 한계 IO수, 한계 블록수 이내라고 판정한 경우(스텝 S302, 예), 커맨드수가 호스트의 한계 IO수, 한계 블록수 이내인지 여부를 판정한다(스텝 S303).
여기서, 스케줄부(506)는 커맨드수가 호스트의 한계 IO수, 한계 블록수 이내라고 판정한 경우(스텝 S303, 예), 커맨드수가 LUN의 한계 IO수, 한계 블록수 이내인지 여부를 판정한다(스텝 S304). 그리고, 스케줄부(506)는 커맨드수가 LUN의 한계 IO수, 한계 블록수 이내라고 판정한 경우(스텝 S304, 예), 포트의 한계값으로부터 커맨드분의 IO수분과 블록수분을 감산한다(스텝 S305).
또한, 스케줄부(506)는 호스트의 한계값으로부터 커맨드분의 IO수분과 블록수분을 감산한다(스텝 S306). 계속해서, 스케줄부(506)는 LUN의 한계값으로부터 커맨드분의 IO수분과 블록수분을 감산한다(스텝 S307). 또한, 실행부(507)는, 커맨드를 기동한다(스텝 S308). 스토리지 장치(100)는, 스텝 S308의 종료 후, 처리를 종료한다.
커맨드 수신부(504)는 수신한 커맨드의 호스트와 LUN 사이에서 대기 IO가 있다고 판정한 경우(스텝 S301, 아니오), 스텝 S309로 이행한다. 또한, 스케줄부(506)는 커맨드수가 포트의 한계 IO수, 한계 블록수 이내가 아니라고 판정한 경우(스텝 S302, 아니오), 스텝 S309로 이행한다. 또한, 스케줄부(506)는 커맨드수가 호스트의 한계 IO수, 한계 블록수 이내가 아니라고 판정한 경우(스텝 S303, 아니오), 스텝 S309로 이행한다. 또한, 스케줄부(506)는 커맨드수가 LUN의 한계 IO수, 한계 블록수 이내가 아니라고 판정한 경우(스텝 S304, 아니오), 스텝 S309로 이행한다. 그리고, 커맨드 수신부(504)는 스텝 S309에 있어서, 커맨드를 대기 큐 저장부(502)에 인큐하고, 처리를 종료한다.
[실시예 1의 효과]
이와 같이, 실시예 1에 따른 스토리지 장치(100)는, 스토리지의 QoS 기능을 용이하게 실현할 수 있다. 다음으로, 도 9을 이용해서, 실시예 1에 따른 스토리지 장치(100)에 의한 효과의 일례를 설명한다. 도 9는, 실시예 1에 따른 스토리지 장치에 의한 효과의 일례를 도시하는 도면이다. 도 9에 도시하는 예에서는, 호스트 A가 LUN-A, LUN-B에 액세스 가능하고, 호스트 B가 LUN-C에 액세스 가능한 경우를 설명한다. 또한, 여기서는 호스트 A의 성능 제한이 200(MB/s), 호스트 B의 성능 제한이 150(MB/s)인 것으로 가정한다. 또한, LUN-A의 성능 제한이 150(MB/s), LUN-B의 성능 제한이 100(MB/s), LUN-C의 성능 제한이 100(MB/s), 포트의 성능 제한이 250(MB/s)인 것으로 가정한다.
우선, 호스트 A만이 LUN-A만을 150(MB/s)의 통신량으로 사용하는 경우를 설명한다. 이 통신량은 LUN-A의 성능 150(MB/s), 호스트 A의 성능 제한 200(MB/s), 포트의 성능 제한 250(MB/s) 중 어디에도 도달하지 못한다. 이 때문에, 스케줄부(506)는 접수한 커맨드를 소정의 시간을 대기하지 않고, 성능 제한까지 스케줄한다. 이 결과, 스토리지 장치(100)에서는, 호스트 A에 의한 LUN-A로의 액세스를 150(MB/s)으로 처리할 수 있다.
다음으로, 호스트 A만이, LUN-A를 150(MB/s)의 통신량으로 사용하고, LUN-B를 100(MB/s)의 통신량으로 사용하는 경우를 설명한다. 이 통신량의 합은, LUN-A의 성능 150(MB/s), LUN-B의 성능 100(MB/s), 포트의 성능 제한 250(MB/s) 중 어디에도 도달하지 않지만, 호스트 A의 성능 제한 200(MB/s)을 초과한다. 이 때문에, 호스트 A로부터 접수한 커맨드는, 그 자리에서 스케줄되는 것과, 대기 큐 저장부(502)에 저장한 후, 스케줄부(506)에 의해, N밀리초 타이머 스케줄에 의해 스케줄되는 것이 나온다.
이 결과, LUN-A와 LUN-B의 각각의 성능은 대략 아래와 같이 제한된다. 호스트 A에 의한 LUN-A로의 액세스는, 200(MB/s)×150/(150+100)=120(MB/s), 호스트 A에 의한 LUN-B로의 액세스는, 200(MB/s)×100/(150+100)=80(MB/s)으로 된다.
다음으로, 호스트 A가, LUN-A를 150(MB/s)의 통신량으로 사용하고, LUN-B를 100(MB/s)의 통신량으로 사용하고, 호스트 B가 LUN-C를 100(MB/s)의 통신량으로 사용하는 경우를 설명한다. 이 통신량의 총합 350(MB/s)은, 포트의 성능 제한 250(MB/s)을 초과한다. 이 때문에, 호스트 A 및 호스트 B로부터 접수한 커맨드는, 그 자리에서 스케줄되는 것과, 대기 큐 저장부(502)에 저장한 후, 스케줄부(506)에 의해, N밀리초 타이머 스케줄에 의해 스케줄되는 것이 나온다.
이 결과, 스토리지 장치(100)에서는, 예를 들면 대략 이하와 같은 각각의 성능으로 처리를 실행한다. 즉, 호스트 A에 의한 LUN-A로의 액세스는, 250(MB/s)×150/(150+100+100)=107(MB/s)이 된다. 또한, 호스트 A에 의한 LUN-B로의 액세스는, 250(MB/s)×100/(150+100+100)=71(MB/s)이 된다. 또한, 호스트 B에 의한 LUN-C로의 액세스는, 250(MB/s)×100/(150+100+100)=71(MB/s)이 된다.
이와 같이, 실시예 1에 따른 스토리지 장치(100)는, 사용되는 호스트와 LUN의 조합의 성능 레벨에 따라서, 스토리지 장치(100)의 성능을 배분하고, 스토리지의 QoS 기능을 용이하게 실현할 수 있다.
<실시예 2>
실시예 1에서는, 사용되는 호스트와 LUN의 조합의 성능 레벨에 따라서, 스토리지 장치(100)의 성능을 배분하는 예에 대해서 설명했다. 그런데, 스토리지 장치(100)에 있어서, 어떤 시간대에서는 특정한 호스트, 혹은 특정한 LUN만 사용되는 경우가 있다. 이러한 것에서부터, 호스트나 LUN의 사용 상황에 따라서, 성능의 배분을 동적으로 조정해도 되는 것이다.
따라서, 실시예 2에서는, 스토리지 장치(100)가, N밀리초 타이머 스케줄 내의 처리에서, 한계값을 변경하는 경우를 설명한다. 예를 들면, 스토리지 장치(100)는, 소정의 시간 계속해서, 실제의 I/O의 성능이 스토리지 전체의 성능을 계속해서 하회한 것을 검출한 경우, 한계까지 I/O가 있던 LUN 등에서, 설정된 성능 레벨을 승격한다.
[실시예 2에 따른 스토리지 시스템 및 스토리지 장치의 구성]
실시예 2에 따른 스토리지 시스템의 구성은, 스토리지 장치가 실행하는 펌웨어에 있어서, SCSI 타깃 제어부의 기능 구성이 다른 점을 제외하고, 도 1에 도시한 실시예 1에 따른 스토리지 시스템의 구성과 마찬가지이다. 이 때문에, 실시예 2에 따른 스토리지 시스템의 구성, 실시예 2에 따른 스토리지 장치의 구성에 대해서는 설명을 생략한다.
[실시예 2에 따른 SCSI 타깃 제어부의 기능 구성]
다음으로, 도 10을 이용해서, 실시예 2에 따른 SCSI 타깃 제어부의 기능 구성을 설명한다. 도 10은 실시예 2에 따른 SCSI 타깃 제어부의 기능 구성을 도시하는 기능 블록도이다. 또한, 실시예 1에 따른 SCSI 타깃 제어부와 마찬가지의 구성에 대해서는 동일한 부호를 부여하고, 설명을 생략한다.
도 10에 도시한 바와 같이, 실시예 2에 따른 SCSI 타깃 제어부(600)는, QoS 관리 테이블(501), 대기 큐 저장부(502), 성능 설정부(503), 커맨드 수신부(504), 산출부(505), 스케줄부(506), 실행부(507), 판정부(602), 변경부(603)를 갖는다.
판정부(602)는 커맨드의 실행수와, 스토리지 장치(100)의 전체 성능에 기초하여, 입출력 처리의 부하 상황이 변화한 것인지 여부를 판정한다. 또한, 여기서 말하는 스토리지 장치(100)의 전체 성능이란, 스토리지 장치(100)의 물리적인 성능이며, 예를 들면 HDD(101a∼101d)의 전송 속도, RAID의 용량, CPU의 처리 효율 등 스토리지 장치(100)가 갖는 처리 용량을 나타낸다.
예를 들면, 판정부(602)는, 커맨드의 실행수가, 스토리지 장치(100)의 전체 성능에 기초하는 실행 가능한 입출력 처리수를 소정의 시간 계속해서 하회한 경우에, 특정한 입출력 처리의 부하 상황이 변화했다고 판정한다.
일례를 들면, 판정부(602)는, HDD가 원래 갖는 전송 속도와 실제의 기입 처리의 속도를 비교한다. 그리고, 판정부(602)는 HDD가 원래 갖는 전송 속도보다도 실제의 기입 처리의 속도가 소정의 시간 계속해서 느린 경우에, 스토리지 장치(100)의 전체 성능이 발휘되고 있지 않다고 판정한다. 여기서, 소정의 시간으로서 30초를 예로 든다.
계속해서, 판정부(602)는, 스토리지 장치(100)의 전체 성능이 발휘되고 있지 않은 상태가 30초 이상 경과했다고 판정한 경우, 성능값의 한계까지 커맨드를 실행한 LUN이 존재하는지 여부를 판정한다. 예를 들면, 판정부(602)는, 한계 IO수가 0 또는 한계 블록수가 0에 근접해 있는 경우에, 성능값의 한계까지 커맨드를 실행했다고 판정한다. 판정부(602)는 한계 IO수가 0 또는 한계 블록수가 0에 근접해 있다고 판정한 경우, 변경부(601)에 성능값의 한계까지 커맨드를 실행한 LUN의 우선 순위를 예를 들면 1단계 올리는 취지를 통지한다.
또한, 판정부(602)는 우선 순위를 1단계 올리는 취지를 통지한 후, 커맨드의 실행수가, 스토리지 장치(100)의 전체 성능에 기초하는 실행 가능한 입출력 처리수를 소정의 시간 계속해서 하회하고 있는지 여부를 판정한다.
변경부(603)는 판정부(602)에 의해 입출력 처리의 부하 상황이 변화했다고 판정된 경우, QoS 관리 테이블(501)이 기억하는 우선 순위 중, 특정한 LUN을 대상으로 하는 우선 순위를 변경한다. 예를 들면, 변경부(603)는, 판정부(602)에 의해 특정한 입출력 처리의 부하 상황이 변화했다고 판정된 경우, 특정한 LUN을 대상으로 하는 우선 순위를 설정된 값보다 예를 들면 1단계 높은 값으로 변경한다. 또한, 변경부(603)가 격상하는 우선순의 레벨은, 1단계로 한정되는 것은 아니고, 예를 들면 2단계 격상해도 된다.
또한, 변경부(603)는 판정부(602)에 의해 커맨드의 실행수가, 스토리지 장치의 전체 성능에 기초하는 실행 가능한 입출력 처리수를 소정의 시간 계속해서 하회하고 있지 않다고 판정된 경우에, 우선 순위를 1단계 올린 LUN의 우선 순위를, 변경 전의 값으로 되돌린다.
또한, 판정부(602) 및 변경부(603)의 각 기능은, 메모리(210a) 및 메모리(210b)와, CPU(220a) 및 CPU(220b)가 협동해서 실현된다.
[실시예 2에 따른 스토리지 장치에 의한 처리의 처리 수순]
다음으로 도 11과 도 12를 이용해서, 실시예 2에 따른 스토리지 장치(100)에 의한 처리의 처리 수순을 설명한다. 여기에서는, 도 11을 이용해서, 실시예 2에 따른 스토리지 장치(100)에 의한 N밀리초 타이머 스케줄 처리의 처리 수순에 대해서 설명하고, 도 12를 이용해서, 실시예 2에 따른 스토리지 장치(100)에 의한 한계값 설정 조정 처리의 처리 수순에 대해서 설명한다.
(N밀리초 타이머 스케줄 처리)
도 11은 실시예 2에 따른 스토리지 장치에 의한 N밀리초 타이머 스케줄 처리의 처리 수순을 나타내는 플로우차트이다. 또한, 도 11에 도시하는 스텝 S401 내지 스텝 S404까지의 각 처리는, 도 6에 도시하는 스텝 S101 내지 스텝 S104까지의 각 처리에 대응하므로, 여기에서는 설명을 생략한다. 도 11에 도시한 바와 같이, 실시예 2에 따른 스토리지 장치(100)는, 스텝 S404의 종료 후, 한계값 설정 조정 처리를 실행한다(스텝 S405).
(한계값 설정 조정 처리)
도 12는 실시예 2에 따른 스토리지 장치에 의한 한계값 설정 조정 처리의 처리 수순을 나타내는 플로우차트이다.
도 12에 도시한 바와 같이, 판정부(602)는, 스토리지 장치(100)의 전체 성능이 발휘되고 있지 않은 상태가 30초 이상 경과했는지 여부를 판정한다(스텝 S501). 여기서, 판정부(602)는 스토리지 장치(100)의 전체 성능이 발휘되고 있지 않은 상태가 30초 이상 경과했다고 판정한 경우(스텝 S501, 예), 성능 한계값에 도달한 LUN이 존재하는지 여부를 판정한다(스텝 S502).
여기서, 판정부(602)에 의해, 성능 한계값에 도달한 LUN이 존재한다고 판정된 경우(스텝 S502, 예), 변경부(603)는, 성능 한계값에 도달한 LUN의 설정 레벨을 1단계 올리고(스텝 S503), 처리를 종료한다. 한편, 판정부(602)는, 성능 한계값에 도달한 LUN이 존재하지 않는다고 판정한 경우(스텝 S502, 아니오), 처리를 종료한다.
또한, 판정부(602)는, 스토리지 장치(100)의 전체 성능이 발휘되고 있지 않은 상태가 30초 이상 경과하고 있지 않다고 판정한 경우(스텝 S501, 아니오), 설정 레벨을 올린 후에 30초 이상 경과했는지 여부를 판정한다(스텝 S504).
여기서, 판정부(602)에 의해, 설정 레벨을 올린 후에 30초 이상 경과했다고 판정된 경우(스텝 S504, 예), 변경부(603)는, 설정 레벨을 1단계 올린 LUN의 설정 레벨을 1단계 내리고(스텝 S505), 처리를 종료한다. 한편, 판정부(602)는, 설정 레벨을 올린 후에 30초 이상 경과하고 있지 않다고 판정한 경우(스텝 S504, 아니오), 처리를 종료한다.
[실시예 2의 효과]
다음으로, 도 13을 이용해서, 실시예 2에 따른 스토리지 장치(100)에 의한 효과를 설명한다. 도 13은, 실시예 2에 따른 스토리지 장치에 의한 효과의 일례를 도시하는 도면이다. 도 13에서는, 스토리지 장치(100)에는 호스트 A만 접속되고, 호스트 A가 LUN-A, LUN-B에 액세스하는 경우를 예로 설명한다. 또한, 여기서는 호스트 A의 성능 제한이 200(MB/s), LUN-A의 성능 제한이 150(MB/s), LUN-B의 성능 제한이 100(MB/s), 포트의 성능 제한이 250(MB/s)인 것으로 한다.
우선, 호스트 A가 LUN-A와 LUN-B를 동일한 정도로 사용하는 경우를 설명한다. LUN-A와 LUN-B의 성능은 도 9의 설명과 마찬가지로 아래와 같이 제한되어 있는 것으로 한다. 예를 들면, 스토리지 장치(100)는 호스트 A에 의한 LUN-A로의 액세스를 120(MB/s)으로 처리하고, 호스트 A에 의한 LUN-B로의 액세스를 80(MB/s)으로 처리한다.
여기서, 호스트 A가 LUN-A를 사용하는 비율이 현저하게 많아진 경우, 스케줄부(506)는 예를 들면 LUN-A의 성능 제한까지 처리하도록 스케줄한다. 이 결과, 실시예 2에 따른 스토리지 장치(100)에서는, 호스트 A에 의한 LUN-A로의 액세스를 150(MB/s)으로 처리하고, 호스트 A에 의한 LUN-B로의 액세스를 50(MB/s)으로 처리한다.
여기서, 스토리지 장치(100)가, 호스트 A에 의한 LUN-A로의 액세스를 150(MB/s)으로 처리하는 한편, 호스트 A로부터 LUN-B로의 액세스가 30초 이상 없어진 경우에 대해서 설명한다. 이 경우, 판정부(602)는, 스토리지 장치(100)의 전체 성능이 발휘되고 있지 않은 상태가 30초 이상 경과했다고 판정하고, 호스트 A에 의한 LUN-A로의 액세스의 우선 순위를 1단계 올린다. 이 결과, 실시예 2에 따른 스토리지 장치(100)는, LUN-A의 성능 제한 이상으로 성능을 배분하고, 예를 들면 호스트 A에 의한 LUN-A로의 액세스를 200(MB/s)으로 처리할 수 있다.
또한, 이 후, 호스트 A로부터 LUN-B로의 액세스가 발생한 경우에 대해서 설명한다. 이 경우, 실시예 2에 따른 스토리지 장치(100)는, LUN-A로의 액세스의 우선 순위를 1단계 내리고, 호스트 A에 의한 LUN-A로의 액세스를 150(MB/s)으로 처리하고, 호스트 A에 의한 LUN-B로의 액세스를 50(MB/s)으로 처리한다. 또한, 실시예 2에 따른 스토리지 장치(100)는, LUN-A와 LUN-B의 액세스 상황에 따라서, 예를 들면 LUN-A로의 액세스를 120(MB/s)으로 처리하고, 호스트 A에 의한 LUN-B로의 액세스를 80(MB/s)으로 처리하도록 스케줄한다.
<실시예 3>
실시예 2에서는 스토리지 장치(100)의 전체 성능이 발휘되고 있지 않은 상태가 소정의 시간 이상 경과한 경우, 우선 순위를 1단계 올림으로써 성능 제한 이상으로 성능을 배분해서 처리를 실행하는 예에 대해서 설명했다. 그런데, 스토리지 장치(100)에 있어서, 우선도가 높은 처리에 대해서는, 성능 제한을 두지 않고 처리시키고 싶은 경우가 있다.
또한, 한편으로, 성능 제한을 두지 않고 처리한 경우에는, 우선도가 높은 처리가 스토리지 장치의 성능을 점유하여, 다른 처리를 실행할 수 없는 경우가 일어날 수 있다. 따라서, 실시예 3에서는, 우선도가 높은 처리에 대해서는, 각각의 대상을 지정해서 성능 제한을 두지 않는 무제한 설정을 행하고, 우선도가 높은 처리가 스토리지 장치의 성능을 점유한 경우, 무제한 설정을 유한 설정의 최고가까지 격하하는 경우를 예로 설명한다.
[실시예 3에 따른 스토리지 시스템 및 스토리지 장치의 구성]
실시예 3에 따른 스토리지 시스템의 구성은, 스토리지 장치가 실행하는 펌웨어에 있어서, SCSI 타깃 제어부의 기능 구성이 다른 점을 제외하고, 도 1에 도시한 실시예 1에 따른 스토리지 시스템의 구성과 마찬가지이다. 이 때문에, 실시예 3에 따른 스토리지 시스템의 구성, 실시예 3에 따른 스토리지 장치의 구성에 대해서는, 설명을 생략한다.
[실시예 3에 따른 SCSI 타깃 제어부의 기능 구성]
실시예 3에 따른 SCSI 타깃 제어부의 기능 구성은, QoS 관리 테이블이 기억하는 정보, 판정부 및 변경부의 동작이 다른 점을 제외하고, 도 10에 도시한 실시예 2에 따른 SCSI 타깃 제어부의 기능 구성과 마찬가지이다. 이 때문에 실시예 3에서는, 도 10에 있어서, SCSI 타깃 제어부(600)을 SCSI 타깃 제어부(700)로, QoS 관리 테이블(501)을 QoS 관리 테이블(701)로, 판정부(602)를 판정부(702)로, 변경부(603)를 변경부(703)로 치환해서 설명한다.
도 10에 도시한 바와 같이, 실시예 3에 따른 SCSI 타깃 제어부(700)는, QoS 관리 테이블(701), 대기 큐 저장부(502), 성능 설정부(503), 커맨드 수신부(504), 산출부(505), 스케줄부(506), 실행부(507), 판정부(702), 변경부(703)를 갖는다.
QoS 관리 테이블(701)은, 실시예 1에 따른 QoS 관리 테이블이 기억하는 정보에 추가하여, 이하의 정보를 기억한다. 예를 들면, 실시예 3에 따른 QoS 관리 테이블(701)은, 우선 순위로서, 0부터 15의 16단계의 우선도로부터 선택된 값을 기억한다. 여기서, 우선 순위가 「0」으로 설정된 대상은, 한계 IO수 및 한계 블록수가 스토리지 장치(100)의 전체 성능 이내에서 무제한으로 된다. 또한, 우선 순위의 1부터 15에 대해서는, 실시예 1에 따른 우선순과 마찬가지이다.
판정부(702)는, 커맨드의 실행수와, 스토리지 장치(100)의 전체 성능에 기초하여, 입출력 처리의 부하 상황이 변화한 것인지 여부를 판정한다. 예를 들면, 판정부(702)는, 우선 순위가 「0」으로 설정된 LUN의 입출력 처리가, 스토리지 장치(100)의 전체 성능에 기초하는 실행 가능한 입출력 처리수를 소정의 시간 계속해서 점유한 경우에, 입출력 처리의 부하 상황이 변화했다고 판정한다.
일례를 들면, 판정부(702)는, QoS 관리 테이블(701)이 기억하는 우선 순위가 「0」이 아닌 LUN의 「현 IO수」 및 「현 블록수」가 소정의 시간 변화하였는지 여부를 판정한다. 여기서, 소정의 시간으로서 30초를 예로 든다. 또한, 우선 순위가 「0」이 아닌 LUN이란, 즉 성능값이 제한된 LUN을 의미한다.
계속해서, 판정부(702)는, 우선 순위가 「0」으로 설정된 LUN에 의해 스토리지 장치(100)의 전체 성능을 소정의 시간 계속해서 점유된 상태가 30초 이상 경과했다고 판정한 경우, 성능값이 제한된 LUN에 커맨드가 존재하는지 여부를 판정한다. 예를 들면, 판정부(702)는 성능값이 제한된 LUN에 커맨드가 존재하는 경우에, 우선 순위가 「0」으로 설정된 LUN의 우선 순위를 「1」로 내리는 취지를 변경부(703)에 통지한다.
또한, 판정부(702)는, 우선 순위가 「0」으로 설정된 LUN의 우선 순위를 「1」로 내린 후에도, 스토리지 장치(100)의 전체 성능을 소정의 시간 계속해서 점유하고 있는지 여부를 판정한다.
변경부(703)는 판정부(702)에 의해 입출력 처리의 부하 상황이 변화했다고 판정된 경우, 우선 순위가 「0」으로 설정된 LUN의 우선 순위를 「1」로 변경한다. 또한, 여기서는 변경부(703)는 우선 순위가 「0」으로 설정된 LUN의 우선 순위를 「1」로 격하하는 경우를 예로 설명했지만, 이에 한정되는 것은 아니다. 예를 들면, 변경부(703)는 우선 순위가 「0」으로 설정된 LUN의 우선 순위를 「2」로 격하해도 된다.
또한, 변경부(703)는 판정부(702)에 의해 우선 순위가 「0」에서 「1」로 변경된 LUN이, 스토리지 장치(100)의 전체 성능에 기초하는 실행 가능한 입출력 처리수를 소정의 시간 계속해서 점유하고 있지 않다고 판정된 경우에, 우선도를 변경 전의 「0」으로 되돌린다.
또한, QoS 관리 테이블(701), 판정부(702) 및 변경부(703)의 각 기능은, 메모리(210a) 및 메모리(210b)와, CPU(220a) 및 CPU(220b)가 협동해서 실현된다.
[실시예 3에 따른 스토리지 장치에 의한 처리의 처리 수순]
다음으로 도 14를 이용해서, 실시예 3에 따른 스토리지 장치(100)에 의한 처리의 처리 수순을 설명한다. 여기에서는, 도 14를 이용해서, 실시예 3에 따른 스토리지 장치에 의한 한계값 설정 조정 처리의 처리 수순에 대해서 설명한다.
(한계값 설정 조정 처리)
도 14는, 실시예 3에 따른 스토리지 장치에 의한 한계값 설정 조정 처리의 처리 수순을 나타내는 플로우차트이다.
도 14에 도시한 바와 같이, 판정부(702)는, 30초간 스토리지 장치(100)의 전체 성능이 거의 무제한 설정된 LUN만으로 소비되었는지 여부를 판정한다(스텝 S601). 여기서, 판정부(702)는, 30초간 스토리지 장치의 전체 성능(100)이 거의 무제한 설정된 LUN만으로 소비되었다고 판정한 경우(스텝 S601, 예), 유한 설정된 LUN에 IO 액세스가 있는지 여부를 판정한다(스텝 S602).
여기서, 판정부(702)에 의해, 유한 설정된 LUN에 IO 액세스가 있다고 판정된 경우(스텝 S602, 예), 변경부(703)는 무제한 설정된 LUN의 설정 레벨을 레벨 1로 설정하고(스텝 S603), 처리를 종료한다. 한편, 판정부(702)는, 유한 설정된 LUN에 IO 액세스가 없다고 판정한 경우(스텝 S602, 아니오), 처리를 종료한다.
또한, 판정부(702)는, 30초간 스토리지 장치(100)의 전체 성능이 거의 무제한 설정된 LUN만으로 소비되지 않고 있다고 판정한 경우(스텝 S601, 아니오), 설정 레벨을 레벨 1로 설정한 후에 30초 이상 경과했는지 여부를 판정한다(스텝 S604).
여기서, 판정부(702)에 의해, 설정 레벨을 레벨 1로 설정한 후에 30초 이상 경과했다고 판정된 경우(스텝 S604, 예), 변경부(703)는 이하의 처리를 실행한다. 즉, 변경부(703)는 설정 레벨이 1로 설정된 무제한 설정된 LUN의 설정 레벨을 무제한으로 되돌리고(스텝 S605), 처리를 종료한다. 한편, 판정부(702)는, 설정 레벨을 레벨 1로 설정한 후에 30초 이상 경과하고 있지 않다고 판정한 경우(스텝 S604, 아니오), 처리를 종료한다.
[실시예 3의 효과]
다음으로, 도 15를 이용해서, 실시예 3에 따른 스토리지 장치(100)에 의한 효과의 일례를 설명한다. 도 15는 실시예 3에 따른 스토리지 장치에 의한 효과의 일례를 도시하는 도면이다. 도 15에 도시하는 예에서는, 호스트 A가 LUN-A, LUN-B에 액세스 가능하고, 호스트 B가 LUN-C에 액세스 가능한 경우를 설명한다. 또한, 여기서는 호스트 A의 성능 제한이 무제한(MB/s), 호스트 B의 성능 제한이 150(MB/s)인 것으로 한다. 또한, LUN-A의 성능 제한이 무제한(MB/s), LUN-B의 성능 제한이 100(MB/s), LUN-C의 성능 제한이 100(MB/s), 포트의 성능 제한이 무제한(MB/s)인 것으로 한다. 또한, 실제의 스토리지 장치(100)의 전체 성능이 예를 들면 1000(MB/s)인 경우를 가정한다.
우선, 호스트 A가 LUN-A를 사용하는 성능이 800(MB/s) 이하인 경우에 대해서 설명한다. 실시예 3에서는, 무제한 설정과 통상의 성능 제한 설정이 혼재하는 경우, 기본은 무제한 설정된 대상이 사용하는 성능(대역)을 뺀 만큼의 성능을 성능 제한 설정된 대상이 서로 나누는 형태로 한다. 예를 들면, 이 경우, 호스트 A-LUN-B과 호스트 B-LUN-C의 성능은 100(MB/s)으로 배분된다.
다음으로, 호스트 A가 LUN-A를 사용하는 성능이 900(MB/s)이 된 경우에 대해서 설명한다. 이 경우, 호스트 A에 의한 LUN-B로의 액세스와 호스트 B에 의한 LUN-C로의 액세스 성능은 각각 50(MB/s)이 된다.
다음으로, 호스트 A에 의해 LUN-A를 항상 1000(MB/s) 이상 사용하려고 하는 경우에 대해서 설명한다. 이 경우, 판정부(702)는, 호스트 A에 의한 LUN-A로의 액세스만으로 스토리지 장치(100)의 성능이 점유되어 버리는 상태가 일정 시간 이상 경과했다고 판정한다. 그리고, 변경부(703)는 호스트 A에 의한 LUN-A로의 액세스 성능을 우선 순위의 최고가인 750(MB/s)으로 설정을 변경한다. 계속해서, 스케줄부(506)는 변경된 우선 순위에 기초해서 스케줄한다.
이와 같이, 실시예 3에서는, 무제한 설정이 극도로 성능(대역)을 계속해서 사용하는 경우에는, 무제한 설정을 통상의 성능 제한 설정된 최고 레벨과 동등한 성능으로 떨어뜨려서 제어하도록 한다. 예를 들면, 단위 시간 30초 동안 계속해서, 무제한 설정된 LUN에 대한 I/O의 성능이 스토리지 전체의 성능의 대부분을 사용하고 있는 것을 검출한 경우, 무제한 설정된 LUN의 성능 레벨을 유한 설정의 최고 레벨로 격하한다. 이 결과, 실시예 3에 따른 스토리지 장치(100)는 호스트 A에 의한 LUN-A로의 액세스를 우선해서 처리하면서, 호스트 A에 의한 LUN-B로의 액세스와 호스트 B에 의한 LUN-C로의 액세스를 보증할 수 있다.
<실시예 4>
그런데, 본 발명은, 상술한 실시예 이외에도, 여러가지 다른 형태로 실시되어도 된다. 따라서, 실시예 4에서는, 본 발명에 포함되는 다른 실시예에 대해서 설명한다.
(시스템 구성 등)
본 실시예에 있어서 설명한 각 처리 중 자동적으로 행해지는 것으로서 설명한 처리의 전부 또는 일부를 수동적으로 행할 수도 있다. 혹은, 수동적으로 행해지는 것으로서 설명한 처리의 전부 또는 일부를 공지의 방법으로 자동적으로 행할 수도 있다. 그 밖에, 상기 문장 중이나 도면 중에서 나타낸 처리 수순, 제어 수순, 구체적 명칭에 대해서는, 특기하는 경우를 제외하고 임의로 변경할 수 있다.
또한, 스토리지 장치(100)는, LUN 고장 시나 호스트의 로그아웃 시 등 대상이 삭제된 경우, 혹은 LUN 추가 시나 호스트 로그인 시 등 대상이 추가된 경우, 해당 포트에 관련되는 전체 대상에 성능을 동적으로 재배분하도록 해도 된다. 따라서, 스토리지 장치(100)가, 대상을 삭제, 추가한 직후의 N밀리초 타이머 스케줄로, 스케줄 대상을 삭제, 추가하는 기능을 갖는 경우를 실시예 4로서 설명한다. 또한, 이 스케줄 대상을 삭제, 추가하는 기능은 성능 설정부(503)가 갖는 것으로 한다.
도 16을 이용해서, 실시예 4에 따른 스토리지 장치(100)에 의한 효과의 일례를 설명한다. 도 16은 실시예 4에 따른 스토리지 장치에 의한 효과의 일례를 도시하는 도면이다. 도 16에 도시하는 예에서는, 호스트 A가 LUN-A, LUN-B에 액세스 가능하고, 호스트 B가 LUN-C에 액세스 가능하고, 새롭게 호스트 B가 액세스 가능한 LUN-D를 추가하는 경우를 설명한다. 또한, 여기서는 호스트 A의 성능 제한이 200(MB/s), 호스트 B의 성능 제한이 150(MB/s)인 것으로 한다. 또한, LUN-A의 성능 제한이 150(MB/s), LUN-B의 성능 제한이 100(MB/s), LUN-C의 성능 제한이 100(MB/s), LUN-D의 성능 제한이 100(MB/s), 포트의 성능 제한이 250(MB/s)인 것으로 한다.
예를 들면, LUN-D를 추가하기 전에서는, 호스트 A가 LUN-A를 107(MB/s)로 사용하고, LUN-B를 71(MB/s)로 사용한다. 또한, 호스트 B가 LUN-C를 71(MB/s)로 사용한다.
그리고, LUN-D를 추가한 후에는, 호스트 A가 LUN-A를 83(MB/s)으로 사용하고, LUN-B를 56(MB/s)으로 사용한다. 또한, 호스트 B가 LUN-C를 56(MB/s)으로 사용하고, LUN-D를 56(MB/s)으로 사용한다. 또한, 호스트 B가 로그아웃하여, 잠시 재 로그인하지 않은 경우, 호스트 A가 LUN-A를 120(MB/s)으로 사용하고, LUN-B를 80(MB/s)으로 사용한다.
이와 같이, 실시예 4에 따른 스토리지 장치(100)는, 사용되는 호스트와 LUN의 조합이 변경된 경우라도, 스토리지 장치(100)의 성능을 동적으로 배분하여, 스토리지의 QoS 기능을 용이하게 실현할 수 있다.
또한, 도시한 각 구성부는, 기능 개념적인 것이며, 반드시 물리적으로 도시한 바와 같이 구성되어 있는 것을 필요로 하지 않는다. 예를 들면, SCSI 커맨드 제어부(304)에서는, 커맨드 수신부(504)와 스케줄부(506)는 통합되어도 된다. 또한, 각 장치에서 행해지는 각 처리 기능은, 그 전부 또는 임의의 일부가, CPU 및 해당 CPU에서 해석 실행되는 프로그램으로 실현되거나, 혹은 와이어드 로직에 의한 하드웨어로서 실현될 수 있다.
또한, 상기 실시예에서 설명한 각종 처리는, 미리 준비된 프로그램을 스토리지 장치를 갖는 컴퓨터로 실행함으로써 실현될 수 있다. 따라서, 이하에서는, 도 17을 이용해서, 상기 실시예와 마찬가지의 기능을 갖는 스토리지 장치 제어 프로그램을 실행하는 컴퓨터의 일례를 설명한다. 도 17은 스토리지 장치 제어 프로그램을 실행하는 컴퓨터를 도시하는 도면이다.
도 17에 도시한 바와 같이, 컴퓨터(1000)는 호스트와의 인터페이스인 FC-CA(1010), 호스트와의 인터페이스인 iSCSI-CA(1020), 디스크 장치와의 인터페이스인 SAS(1030)를 갖는다. 또한, 컴퓨터(1000)는, 각종 정보를 일시 기억하는 RAM(1040), 재기입 가능하며, 전원을 꺼도 데이터가 꺼지지 않는 불휘발성의 플래시 메모리(1050)를 갖는다. 또한, 컴퓨터(1000)는 판독 전용 메모리인 ROM(Read Only Memory)(1060), 각종 연산 처리를 실행하는 CPU(1070)를 갖는다. 또한, 컴퓨터(1000)가 갖는 각 부는, 버스(1080)로 접속된다.
그리고, 플래시 메모리(1050)에는, 도 3에 도시한 QoS 관리 테이블(501)에 대응하는 QoS 관리 테이블(1051)이 기억된다. 또한, ROM(1060)에는, 도 3에 도시한 산출부(505)와 스케줄부(506)와 실행부(507)와 마찬가지의 기능을 갖는 스토리지 장치 제어 프로그램(1061)이 기억된다.
그리고, CPU(1070)는 플래시 메모리(1050)로부터 판독한 QoS 관리 테이블(1051)을 참조하여, ROM(1060)으로부터 판독한 스토리지 장치 제어 프로그램(1061)을 스토리지 장치 제어 프로세스(1071)로서 실행한다.
또한, 상기한 스토리지 장치 제어 프로그램(1061)은, 반드시 ROM(1060)에 저장되어 있을 필요는 없고, CD-ROM 등의 기억 매체에 기억된 이 프로그램을, 컴퓨터(1000)가 판독하여 실행하도록 해도 된다. 또한, 공중 회선, 인터넷, LAN, WAN(Wide Area Network) 등을 통해서 컴퓨터(1000)에 접속되는 다른 컴퓨터(또는 서버) 등에 이 프로그램을 기억시켜 두고, 컴퓨터(1000)가 이들로부터 프로그램을 판독하여 실행하도록 해도 된다.
1 : 스토리지 시스템
10a, 10b : 호스트
100 : 스토리지 장치
101a∼101d : HDD
200a, 200b : CM
201a, 201b, 1010 : FC-CA
202a, 202b, 1020 : iSCSI-CA
203a, 203b, 1030 : SAS
210a, 210b : 메모리
211a, 211b : 캐쉬 영역
212a, 212b : 제어 영역
220a, 220b, 1070 : CPU
304 : SCSI 커맨드 제어부
501, 701, 1051 : QoS 관리 테이블
502 : 대기 큐 저장부
503 : 성능 설정부
504 : 커맨드 수신부
505 : 산출부
506 : 스케줄부
507 : 실행부
602, 702 : 판정부
603, 703 : 변경부
1000 : 컴퓨터
1040 : RAM
1050 : 플래시 메모리
1060 : ROM
1061 : 스토리지 장치 제어 프로그램
1071 : 스토리지 장치 제어 프로세스

Claims (10)

  1. 정보 처리 장치, 상기 정보 처리 장치와 자장치(自裝置) 사이의 인터페이스인 포트, 및 상기 정보 처리 장치와 자장치가 갖는 기억 장치와의 조합 각각에 설정된, 소정의 성능 제한을 나타내는 우선도에 기초해서 결정되는, 실행 가능한 입출력 처리수의 상한값을 상기 정보 처리 장치, 상기 포트, 상기 조합마다 산출하는 산출부와,
    상기 정보 처리 장치로부터 접수한 입출력 처리수와, 산출된 상기 상한값에 기초하여, 입출력 처리의 실행순을 스케줄하는 스케줄부와,
    상기 스케줄부에 의해 스케줄된 상기 실행순으로 입출력 처리를 실행하는 실행부
    를 갖는 것을 특징으로 하는 스토리지 장치.
  2. 제1항에 있어서,
    상기 스토리지 장치가,
    입출력 처리의 실행수와, 자장치가 갖는 입출력 처리의 처리 용량에 기초하여, 특정한 입출력 처리의 부하 상황이 변화했는지 여부를 판정하는 판정부와,
    상기 판정부에 의해 입출력 처리의 부하 상황이 변화했다고 판정된 경우, 상기 특정한 입출력 처리의 입출력 처리수를 결정하는 상기 우선도를 변경하는 변경부를 더 갖고,
    상기 스케줄부는, 상기 변경부에 의해 변경된 우선도로부터 결정되는 입출력 처리수의 상한값과, 상기 정보 처리 장치로부터 접수한 입출력 처리수에 기초하여, 입출력 처리의 실행순을 스케줄하는 것을 특징으로 하는 스토리지 장치.
  3. 제2항에 있어서,
    상기 판정부는, 특정한 입출력 처리의 실행수가, 상기 처리 용량에 기초하는 실행 가능한 입출력 처리수를 소정의 시간 계속해서 하회한 경우에, 특정한 입출력 처리의 부하 상황이 변화했다고 판정하고,
    상기 변경부는, 상기 판정부에 의해 특정한 입출력 처리의 부하 상황이 변화했다고 판정된 경우, 상기 특정한 입출력 처리의 입출력 처리수를 결정하는 상기 우선도를 변경하는 것을 특징으로 하는 스토리지 장치.
  4. 제3항에 있어서,
    상기 판정부는, 상기 우선도를 변경 후, 특정한 입출력 처리의 실행수가, 상기 처리 용량에 기초하는 실행 가능한 입출력 처리수를 소정의 시간 계속해서 하회하고 있는지 여부를 판정하고,
    상기 변경부는, 상기 판정부에 의해 특정한 입출력 처리의 실행수가, 상기 처리 용량에 기초하는 실행 가능한 입출력 처리수를 소정의 시간 계속해서 하회하고 있지 않다고 판정된 경우에, 상기 우선도를 변경 전의 값으로 변경하는 것을 특징으로 하는 스토리지 장치.
  5. 제2항에 있어서,
    상기 판정부는, 특정한 입출력 처리가, 상기 처리 용량에 기초하는 실행 가능한 입출력 처리수를 소정의 시간 계속해서 점유한 경우에, 특정한 입출력 처리의 부하 상황이 변화했다고 판정하고,
    상기 변경부는, 상기 판정부에 의해 특정한 입출력 처리의 부하 상황이 변화했다고 판정된 경우, 상기 특정한 입출력 처리의 입출력 처리수를 결정하는 상기 우선도를 설정된 값보다 낮은 값으로 변경하는 것을 특징으로 하는 스토리지 장치.
  6. 제5항에 있어서,
    상기 판정부는, 상기 우선도를 설정된 값보다 낮은 값으로 변경 후, 특정한 입출력 처리가, 상기 처리 용량에 기초하는 실행 가능한 입출력 처리수를 소정의 시간 계속해서 점유하고 있는지 여부를 판정하고,
    상기 변경부는 상기 판정부에 의해 특정한 입출력 처리가, 상기 처리 용량에 기초하는 실행 가능한 입출력 처리수를 소정의 시간 계속해서 점유하고 있지 않다고 판정된 경우에, 상기 우선도를 변경 전의 값으로 변경하는 것을 특징으로 하는 스토리지 장치.
  7. 제1항에 있어서,
    상기 스토리지 장치가,
    상기 정보 처리 장치로부터 입출력 처리를 접수함과 함께, 실행 대기의 입출력 처리가 있는지 여부를 판정하는 수신부를 더 갖고,
    상기 스케줄부는, 상기 수신부에 의해 실행 대기의 입출력 처리가 있다고 판정된 경우, 소정의 시간이 경과한 후에 입출력 처리의 실행순을 스케줄하는 것을 특징으로 하는 스토리지 장치.
  8. 제1항에 있어서,
    상기 정보 처리 장치, 상기 포트, 및 상기 조합의 각각에 설정된 우선도를 나타내는 정보를 기억하는 기억부와,
    자장치와 접속하는 정보 처리 장치, 상기 정보 처리 장치가 사용하는 기억 장치가 변화한 경우에, 상기 기억부가 기억하는 정보를 갱신하는 갱신부
    를 더 갖는 것을 특징으로 하는 스토리지 장치.
  9. 스토리지 장치가,
    정보 처리 장치, 상기 정보 처리 장치와 자장치 사이의 인터페이스인 포트, 및 상기 정보 처리 장치와 자장치가 갖는 기억 장치와의 조합 각각에 설정된, 소정의 성능 제한을 나타내는 우선도에 기초해서 결정되는, 실행 가능한 입출력 처리수의 상한값을 상기 정보 처리 장치, 상기 포트, 상기 조합마다 산출하고,
    상기 정보 처리 장치로부터 접수한 입출력 처리수와, 산출한 상기 상한값에 기초하여, 입출력 처리의 실행순을 스케줄하고,
    스케줄된 상기 실행순으로 입출력 처리를 실행하는 것을 특징으로 하는 스토리지 장치의 제어 방법.
  10. 스토리지 장치에,
    정보 처리 장치, 상기 정보 처리 장치와 자장치 사이의 인터페이스인 포트, 및 상기 정보 처리 장치와 자장치가 갖는 기억 장치와의 조합 각각에 설정된, 소정의 성능 제한을 나타내는 우선도에 기초해서 결정되는, 실행 가능한 입출력 처리수의 상한값을 상기 정보 처리 장치, 상기 포트, 상기 조합마다 산출하고,
    상기 정보 처리 장치로부터 접수한 입출력 처리수와, 산출한 상기 상한값에 기초하여, 입출력 처리의 실행순을 스케줄하고,
    스케줄된 상기 실행순으로 입출력 처리를 실행시키기 위한
    스토리지 장치 제어 프로그램을 저장한 기억 매체.
KR1020120121232A 2011-12-19 2012-10-30 스토리지 장치, 스토리지 장치의 제어 방법 및 기억 매체 KR101413899B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JPJP-P-2011-277726 2011-12-19
JP2011277726A JP5903873B2 (ja) 2011-12-19 2011-12-19 ストレージ装置、ストレージ装置の制御方法及びストレージ装置制御プログラム

Publications (2)

Publication Number Publication Date
KR20130070511A KR20130070511A (ko) 2013-06-27
KR101413899B1 true KR101413899B1 (ko) 2014-06-30

Family

ID=47435707

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020120121232A KR101413899B1 (ko) 2011-12-19 2012-10-30 스토리지 장치, 스토리지 장치의 제어 방법 및 기억 매체

Country Status (5)

Country Link
US (1) US8806070B2 (ko)
EP (1) EP2608011B1 (ko)
JP (1) JP5903873B2 (ko)
KR (1) KR101413899B1 (ko)
CN (1) CN103164169A (ko)

Families Citing this family (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5903873B2 (ja) * 2011-12-19 2016-04-13 富士通株式会社 ストレージ装置、ストレージ装置の制御方法及びストレージ装置制御プログラム
JP6179321B2 (ja) * 2013-09-27 2017-08-16 富士通株式会社 ストレージ管理装置、制御方法及び制御プログラム
JP6213148B2 (ja) 2013-10-25 2017-10-18 富士通株式会社 ストレージ装置、ストレージ装置の制御方法およびストレージ装置制御プログラム
US10452306B1 (en) * 2013-12-31 2019-10-22 EMC IP Holding Company LLC Method and apparatus for asymmetric raid
JP6273966B2 (ja) 2014-03-27 2018-02-07 富士通株式会社 ストレージ管理装置、性能調整方法及び性能調整プログラム
JP6394313B2 (ja) 2014-11-19 2018-09-26 富士通株式会社 ストレージ管理装置、ストレージ管理方法及びストレージ管理プログラム
JP6394315B2 (ja) * 2014-11-20 2018-09-26 富士通株式会社 ストレージ管理装置、性能調整方法及び性能調整プログラム
JP6451308B2 (ja) * 2014-12-24 2019-01-16 富士通株式会社 ストレージ装置およびストレージ装置制御プログラム
JP6451307B2 (ja) * 2014-12-24 2019-01-16 富士通株式会社 ストレージ装置およびストレージ装置制御プログラム
KR102317786B1 (ko) 2015-02-02 2021-10-26 삼성전자주식회사 스토리지 디바이스에서의 입출력 처리 방법 및 이를 적용하는 스토리지 디바이스 및 비휘발성 메모리 디바이스
JP6558090B2 (ja) * 2015-06-15 2019-08-14 富士通株式会社 ストレージ管理装置、ストレージ管理方法及びストレージ管理プログラム
CN108241535B (zh) * 2016-12-27 2022-02-22 阿里巴巴集团控股有限公司 资源管理的方法、装置及服务器设备
US10599856B2 (en) 2017-06-07 2020-03-24 International Business Machines Corporation Network security for data storage systems
CN110059037B (zh) * 2018-01-18 2023-02-03 伊姆西Ip控股有限责任公司 用于管理输入/输出的方法、设备和计算机程序产品
CN108494588A (zh) * 2018-03-12 2018-09-04 深圳市瑞驰信息技术有限公司 一种集群块设备动态QoS配置的系统及方法
CN113687796B (zh) * 2021-10-25 2022-02-18 苏州浪潮智能科技有限公司 Io任务处理方法、装置和计算机设备和存储介质

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2011165105A (ja) * 2010-02-15 2011-08-25 Nec Corp 入出力制御装置、入出力制御方法
EP2608011A1 (en) * 2011-12-19 2013-06-26 Fujitsu Limited Storage device, and storage device control method

Family Cites Families (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0770964A1 (en) * 1995-10-26 1997-05-02 Matsushita Electric Industrial Co., Ltd. File system
US6006303A (en) * 1997-08-28 1999-12-21 Oki Electric Industry Co., Inc. Priority encoding and decoding for memory architecture
US7457897B1 (en) * 2004-03-17 2008-11-25 Suoer Talent Electronics, Inc. PCI express-compatible controller and interface for flash memory
JP2002108567A (ja) * 2000-09-28 2002-04-12 Hitachi Ltd 記憶制御装置
JP3879471B2 (ja) 2001-10-10 2007-02-14 株式会社日立製作所 計算機資源割当方法
US6973036B2 (en) 2001-11-01 2005-12-06 International Business Machines Corporation QoS scheduler and method for implementing peak service distance using next peak service time violated indication
US20040098509A1 (en) * 2002-11-14 2004-05-20 Vic Alfano System for reordering sequenced based packet segments in a switching network
FR2854296A1 (fr) 2003-04-24 2004-10-29 France Telecom Procede et dispositif pour differenciation implicite de la qualite de service dans un reseau
US7823154B2 (en) 2005-09-16 2010-10-26 Hewlett-Packard Development Company, L.P. System and method for providing, by a plurality of schedulers, differentiated service to consumers of distributed resources
JP2007264751A (ja) 2006-03-27 2007-10-11 Canon Inc データ転送制御装置
JP2008059478A (ja) * 2006-09-01 2008-03-13 Hitachi Ltd 記憶システム及びデータ入出力制御方法
JP5057792B2 (ja) * 2007-01-29 2012-10-24 株式会社日立製作所 性能ボトルネックを緩和する機能を備えたストレージシステム
JP2008186211A (ja) * 2007-01-30 2008-08-14 Hitachi Ltd 計算機システム
JP2009087175A (ja) * 2007-10-02 2009-04-23 Hitachi Ltd ストレージ装置、処理制御装置、及び記憶システム
TWI353138B (en) * 2007-12-28 2011-11-21 Accton Technology Corp A job management and a scheduling method of networ
JP4701267B2 (ja) * 2008-06-04 2011-06-15 株式会社日立製作所 ストレージシステムおよびその管理方法
US8151008B2 (en) * 2008-07-02 2012-04-03 Cradle Ip, Llc Method and system for performing DMA in a multi-core system-on-chip using deadline-based scheduling
JP4654273B2 (ja) * 2008-07-14 2011-03-16 富士通株式会社 ストレージ装置および制御装置
JP5147584B2 (ja) * 2008-07-23 2013-02-20 株式会社日立製作所 ストレージサブシステム及びコントローラによるコマンド実行方法
JP5471822B2 (ja) * 2010-05-20 2014-04-16 富士通株式会社 入出力制御プログラム、情報処理装置および入出力制御方法

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2011165105A (ja) * 2010-02-15 2011-08-25 Nec Corp 入出力制御装置、入出力制御方法
EP2608011A1 (en) * 2011-12-19 2013-06-26 Fujitsu Limited Storage device, and storage device control method

Also Published As

Publication number Publication date
US8806070B2 (en) 2014-08-12
KR20130070511A (ko) 2013-06-27
JP2013127758A (ja) 2013-06-27
CN103164169A (zh) 2013-06-19
EP2608011A1 (en) 2013-06-26
EP2608011B1 (en) 2018-02-21
US20130159557A1 (en) 2013-06-20
JP5903873B2 (ja) 2016-04-13

Similar Documents

Publication Publication Date Title
KR101413899B1 (ko) 스토리지 장치, 스토리지 장치의 제어 방법 및 기억 매체
US8667494B1 (en) Controlling resource allocation using thresholds and scheduling
US8584128B1 (en) Techniques for adjusting priorities associated with servicing requests
US8850152B2 (en) Method of data migration and information storage system
JP4901310B2 (ja) 記憶制御装置及び記憶制御装置のコマンド実行数制御方法
US10013196B2 (en) Policy based provisioning of storage system resources
US9003150B2 (en) Tiered storage system configured to implement data relocation without degrading response performance and method
US8250257B1 (en) Techniques for balancing system I/O load
US20110225117A1 (en) Management system and data allocation control method for controlling allocation of data in storage system
US20100082900A1 (en) Management device for storage device
US20080059602A1 (en) Load balancing method for data I/O paths between groups in which multi-path management is employed
JP6179321B2 (ja) ストレージ管理装置、制御方法及び制御プログラム
WO2012146998A1 (en) Runtime dynamic performance skew elimination
US7984260B2 (en) Storage system provided with a plurality of controller modules
US10938730B2 (en) Data transmission techniques between systems having different communication speeds
JP6428231B2 (ja) ストレージ管理装置、性能調整方法及び性能調整プログラム
US9459799B1 (en) Identifying problematic application workloads based on associated response times
US8799534B2 (en) Storage apparatus and method for controlling same
US20090144516A1 (en) Systems and methods for managing data storage media
JP4566874B2 (ja) Ipネットワークにおけるストレージアクセス管理機能及びシステム
US10992532B1 (en) Automated network configuration changes for I/O load redistribution
JP6213148B2 (ja) ストレージ装置、ストレージ装置の制御方法およびストレージ装置制御プログラム
JP6451308B2 (ja) ストレージ装置およびストレージ装置制御プログラム
JP6451307B2 (ja) ストレージ装置およびストレージ装置制御プログラム
US7058758B2 (en) Load balancing to support tape and disk subsystems on shared fibre channel adapters

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
LAPS Lapse due to unpaid annual fee