(57)【要約】【課題】  新規に追加交換されるFMPK１３０を含む複数のFMPK１３０の間で効率的な平準化を行うこと。【解決手段】  ストレージコントローラ１１０は、実FMPK１３０内に空きブロックが不足した場合、実FMPK１３０の中のいずれかのFMPK１３０および追加された代替用FMPK１３０を平準化対象のデバイスとするときに、平準化対象のデバイスに属する実FMPK１３０のブロックの属性が、Hotであるときには、当該ブロックに属するデータのうち閾値より大きいデータを代替用FMPK１３０のブロックに移動させ、平準化対象のデバイスに属する実FMPK１３０のブロックの属性が、Coldであるときには、当該ブロックに属するデータのうち閾値より小さいデータを代替用FMPK１３０のブロックに移動させる。【選択図】        図１
2012505441.tif 000002
【特許請求の範囲】
【請求項１】
チップにデータの記憶単位であるブロック群（BLK）が形成された複数のフラッシュメモリ（１３２）を収納するフラッシュメモリパッケージとして既設されている実フラッシュメモリパッケージと、前記実フラッシュメモリパッケージの代替となる代替用フラッシュメモリパッケージを含む複数のフラッシュメモリパッケージ（１３０）と、
前記複数のフラッシュメモリパッケージ（１３０）の各ブロック内のデータをその属性に基づいて管理するとともに、前記複数のフラッシュメモリパッケージ（１３０）を構成するデバイスのうち平準化対象のデバイス（１３６）に属するブロック内のデータに対する平準化処理を行う平準化処理部（１１０）を備え、
前記平準化処理部は、前記平準化対象のデバイス（１３６）に属する前記実フラッシュメモリパッケージのブロック内のデータをその属性に基づいて前記代替用フラッシュメモリパッケージ（１３０）のブロックに移動させる、ストレージ装置。
【請求項２】
前記平準化処理部は、ネットワークを介してホスト（３００）に接続されたストレージコントローラ（１１０）で構成され、
前記ストレージコントローラ（１１０）は、マイクロコードプログラム（１６０）に基づいて前記複数のフラッシュメモリパッケージ（１３０）の各ブロック内のデータのライトアクセス頻度を判別し、アクセス頻度の高いデータを含むブロックに高アクセスの属性を付与し、アクセス頻度の低いデータを含むブロックに低アクセスの属性を付与し、
前記実フラッシュメモリパッケージ内に空きブロックが不足して、前記実フラッシュメモリパッケージの中のいずれかと前記代替用フラッシュメモリパッケージに属するデバイスを前記平準化対象のデバイス（１３６）とするときに、前記平準化対象のデバイス（１３６）に属する前記実フラッシュメモリパッケージのブロックの属性が前記高アクセスであるときには、当該ブロックに属するデータのうち前記閾値より大きいデータを前記代替用フラッシュメモリパッケージのブロックに移動させ、
前記平準化対象のデバイス（１３６）に属する前記実フラッシュメモリパッケージのブロックの属性が前記低アクセスであるときには、当該ブロックに属するデータのうち前記閾値より小さいデータを前記代替用フラッシュメモリパッケージ（１３０）のブロックに移動させる、請求項１に記載のストレージ装置。
【請求項３】
前記前記平準化処理部は、
前記複数のフラッシュメモリパッケージ（１３０）の各ブロック内のデータのライトアクセス頻度を計測し、前記ライトアクセス頻度の計測値が閾値より大きいデータを含むブロックに対しては、高アクセスの属性を付与し、前記ライトアクセス頻度の計測値が前記閾値よりも小さいデータを含むブロックに対しては、低アクセスの属性を付与し、前記実フラッシュメモリパッケージの中のいずれかと前記代替用フラッシュメモリパッケージに属するデバイスを前記平準化対象のデバイス（１３６）とするときに、前記平準化対象のデバイス（１３６）に属する前記実フラッシュメモリパッケージのブロックの属性が前記高アクセスであるときには、当該ブロックに属するデータのうち前記閾値より大きいデータを前記代替用フラッシュメモリパッケージ（１３０）のブロックに移動させる、請求項１に記載のストレージ装置。
【請求項４】
前記前記平準化処理部は、
前記複数のフラッシュメモリパッケージ（１３０）の各ブロック内のデータのライトアクセス頻度を計測し、前記ライトアクセス頻度の計測値が閾値より大きいデータを含むブロックに対しては、高アクセスの属性を付与し、前記ライトアクセス頻度の計測値が前記閾値よりも小さいデータを含むブロックに対しては、低アクセスの属性を付与し、前記実フラッシュメモリパッケージの中のいずれかと前記代替用フラッシュメモリパッケージに属するデバイスを前記平準化対象のデバイス（１３６）とするときに、前記平準化対象のデバイス（１３６）に属する前記実フラッシュメモリパッケージのブロックの属性が前記低アクセスであるときには、当該ブロックに属するデータのうち前記閾値より小さいデータを前記代替用フラッシュメモリパッケージ（１３０）のブロックに移動させる、請求項１に記載のストレージ装置。
【請求項５】
前記複数のフラッシュメモリパッケージ（１３０）は、前記複数のフラッシュメモリ（１３２）のデータに対するアクセスを制御するフラッシュメモリアダプタ（１３１）を備え、前記フラッシュメモリアダプタ（１３１）は、前記平準化処理部の代替として、前記複数のフラッシュメモリパッケージ（１３０）の各ブロック内のデータをその属性に基づいて管理するとともに、前記平準化対象のデバイス（１３６）に属するブロック内のデータに対する平準化処理を実行する、請求項１に記載のストレージ装置。
【請求項６】
前記平準化処理部は、ネットワーク（４００）を介して管理端末（５００）に接続され、前記管理端末（５００）からの指示情報を基に前記複数のフラッシュメモリパッケージ（１３０）の各ブロックに対して、当該ブロックに属するデータの特性を示すための属性を付与する、請求項１に記載のストレージ装置。
【請求項７】
前記平準化対象のデバイス（１３６、１３５）は、前記複数のフラッシュメモリパッケージ（１３０）に属するフラッシュメモリ（１３２）の論理的記憶領域を形成する複数の物理デバイス（１３３）で構成されたカラムデバイス（１３６）または複数の前記カラムデバイス（１３６）に亘って形成された複数の論理デバイス（１３５）である、請求項１に記載のストレージ装置。
【請求項８】
チップにデータの記憶単位であるブロック群（BLK）が形成された複数のフラッシュメモリ（１３２）を収納するフラッシュメモリパッケージとして既設されている実フラッシュメモリパッケージと、前記実フラッシュメモリパッケージの代替となる代替用フラッシュメモリパッケージを含む複数のフラッシュメモリパッケージ（１３０）と、
前記複数のフラッシュメモリパッケージ（１３０）の各ブロック内のデータをその属性に基づいて管理するとともに、前記複数のフラッシュメモリパッケージ（１３０）を構成するデバイスのうち平準化対象のデバイス（１３６）に属するブロック内のデータに対する平準化処理を行う平準化処理部を備え、
前記平準化処理部は、前記平準化対象のデバイス（１３６）に属する前記実フラッシュメモリパッケージのブロック内のデータをその属性に基づいて前記代替用フラッシュメモリパッケージ（１３０）のブロックに移動させるステップを実行する、ストレージ装置のデータ制御方法。
【請求項９】
前記前記平準化処理部は、
前記複数のフラッシュメモリパッケージ（１３０）の各ブロック内のデータのライトアクセス頻度を計測するステップと、
前記ライトアクセス頻度の計測値が閾値より大きいデータを含むブロックに対しては、高アクセスの属性を付与し、前記ライトアクセス頻度の計測値が前記閾値よりも小さいデータを含むブロックに対しては、低アクセスの属性を付与するステップと、
前記実フラッシュメモリパッケージの中のいずれかと前記代替用フラッシュメモリパッケージに属するデバイスを前記平準化対象のデバイス（１３６）とするときに、前記平準化対象のデバイス（１３６）に属する前記実フラッシュメモリパッケージのブロックの属性が前記高アクセスであるときには、当該ブロックに属するデータのうち前記閾値より大きいデータを前記代替用フラッシュメモリパッケージ（１３０）のブロックに移動させるステップを実行する、請求項８に記載のストレージ装置のデータ制御方法。
【請求項１０】
前記前記平準化処理部は、
前記複数のフラッシュメモリパッケージ（１３０）の各ブロック内のデータのライトアクセス頻度を計測するステップと、
前記ライトアクセス頻度の計測値が閾値より大きいデータを含むブロックに対しては、高アクセスの属性を付与し、前記ライトアクセス頻度の計測値が前記閾値よりも小さいデータを含むブロックに対しては、低アクセスの属性を付与するステップと、
前記実フラッシュメモリパッケージの中のいずれかと前記代替用フラッシュメモリパッケージに属するデバイスを前記平準化対象のデバイス（１３６）とするときに、前記平準化対象のデバイス（１３６）に属する前記実フラッシュメモリパッケージのブロックの属性が前記低アクセスであるときには、当該ブロックに属するデータのうち前記閾値より小さいデータを前記代替用フラッシュメモリパッケージ（１３０）のブロックに移動させるステップを実行する、請求項８に記載のストレージ装置のデータ制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ストレージ装置の記憶媒体を構成するフラッシュメモリに格納されたデータに対する平準化処理技術に関するものである。
【背景技術】
【０００２】
フラッシュメモリは、書換えを行う際、フラッシュメモリの記憶単位であるブロックと呼ばれる単位で、消去と呼ばれる操作の後、データを書き換える必要がある。このブロックに対する消去の操作は、物理的な制約から寿命があり、Multi Level Cell(MLC型)のフラッシュメモリでは約5,000回、Single Level Cell(SLC)型のメモリでは、約100,000回の消去回数の限界がある。
【０００３】
このフラッシュメモリの各々ブロックに対して書換えを行った場合、消去回数のばらつきが生じてしまい、効率的な使いかたができなかった。このばらつきを平準化（平滑化）する技術として、ウエアレベリングと呼ばれる技術がある。ウエアレベリング方式には様々なものがあるが、代表的なウエアレベリング方式として、消去回数が多いものをHotなブロックとし、少ないものをColdなブロックとしてデータを入れ替えるHot-Cold(HC)ウエアレベリングと呼ばれるものがある（非特許文献１参照）。
【０００４】
これらのウエアレベリング方式では、複数のフラッシュメモリブロックを搭載したフラッシュメモリパッケージ内のデータの平準化を行う。
【０００５】
また、ストレージ装置において、複数のフラッシュメモリモジュールを一つのグループとして扱うウエアレベリング方式が提案されている（特許文献１参照）。この方式では、複数のフラッシュメモリモジュールをグループとして、前述のウエアレベリングを行っている。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開2007-265265号公報
【非特許文献１】On efficient Wear-leveling for Large Scale Flash Memory Storage System http://www.cis.nctu.edu.tw/~lpchang/papers/crm_sac07.pdf
【発明の開示】
【発明が解決しようとする課題】
【０００７】
しかし、特許文献１に記載された方式においては、フラッシュメモリモジュール（フラッシュメモリパッケージ）が故障し、新たなフラッシュメモリモジュールに交換すると、フラッシュメモリモジュールの中から、消去回数が少ないブロックをウエアレベリングの対象となるブロックとして選定する際に、ウエアレベリングの対象となるブロックの選定が新たなフラッシュメモリモジュールのフラッシュメモリに集中し、交換後のフラッシュメモリパッモジュール内のデータに対する平準化が十分なものでは無くなる可能性がある。
【０００８】
すなわち、従来技術では、複数のフラッシュメモリモジュールにおいて、フラッシュメモリモジュールを交換したり、追加したりした際、消去回数の偏りから、フラッシュメモリモジュール間でフラッシュメモリに寿命のばらつきが生じることがある。
【０００９】
本発明は、前記従来技術の課題に鑑みて為されたものであり、新規に追加される代替用フラッシュメモリパッケージを含む複数のフラッシュメモリパッケージの間で効率的な平準化を行うことができるストレージ装置およびそのデータ制御方法を提供することを目的とするものである。
【課題を解決するための手段】
【００１０】
前記目的を達成するために、本発明は、新規に追加される代替用フラッシュメモリパッケージを含む複数のフラッシュメモリパッケージに対して、平準化するときのブロックの選定の集中を避けるために、複数のフラッシュメモリパッケージ内のデータの特性を属性として扱い、その属性に基づき、複数のフラッシュメモリパッケージ間でデータの移動を行うことを特徴とする。
【発明の効果】
【００１１】
本発明によれば、新規に追加される代替用フラッシュメモリパッケージを含む複数のフラッシュメモリパッケージの間で効率的な平準化を行うことができる。
【図面の簡単な説明】
【００１２】
【図１】本実施例におけるストレージ装置の物理的な構成と本ストレージ装置に接続される装置の物理的な構成を示す構成図である。
【図２】本実施例におけるストレージ装置の論理的な構成と本ストレージ装置に接続される装置の論理的な構成を示す構成図である。
【図３】本実施例におけるフラッシュメモリパッケージとその管理単位である物理デバイスとの対応関係を示すPDEV-FMPKテーブルの構成図である。
【図４】本実施例におけるフラッシュメモリパッケージの管理単位であるPDEV内のフラッシュメモリブロックを管理するためのPDEV  Formatテーブルの構成図である。
【図５】本実施例におけるパッケージの交換や追加時にFM-PK間のデータの移動の範囲を規定するカラムデバイステーブルの構成図である。
【図６】本実施例におけるRAID保護を行うPDEV群のグループを示すRAID  Groupテーブルの構成図である。
【図７】本実施例における論理デバイス(LDEV)内の記憶空間とPDEV上のブロックの対応関係を示すLSEG-PBLKテーブルの構成図である。
【図８】本実施例における論理デイバスに対して外部ホストを接続する為のLogical Unit(LU)とポート(Port）との関係を示すマッピングテーブルの構成図である。
【図９】本実施例のストレージ装置においてストレージの保守員が初期設定を行うプロセスを説明するためのフローチャートである。
【図１０】本発明のストレージ装置においてストレージの保守員もしくは管理者がLDEVを作成する処理を説明するためのフローチャートである。
【図１１】本実施例におけるFMPKに対するライト時の動作を説明するためのフローチャートである。
【図１２】本実施例におけるFMPKに対するリード時の動作を説明するためのフローチャートである。
【図１３】本実施例における新ブロックを割り当てる際の動作を説明するためのフローチャートである。
【図１４】本実施例におけるパッケージ間の移動時の動作を説明するためのフローチャートである。
【図１５】本実施例における管理GUIを示す図である。
【図１６】本実施例における概要を説明するための図である。
【図１７】本実施例におけるブロックに対する後処理を説明するためのフローチャートである。
【図１８】本実施例におけるウエアレベリングを実施する際のWL(Wearleveling)対象ブロックリストの構成図である。
【発明を実施するための形態】
【実施例】
【００１３】
本実施例は、新規に追加される代替用フラッシュメモリパッケージを含む複数のフラッシュメモリパッケージに対して、平準化するときのブロックの選定の集中を避けるために、複数のフラッシュメモリパッケージ内のデータの特性を属性として扱い、その属性に基づき、複数のフラッシュメモリパッケージ間でデータの移動を行うようにしたものである。
【００１４】
図１は、本実施例におけるストレージ装置の物理的な構成と本ストレージ装置に接続される装置の物理的な構成を示す。
【００１５】
ストレージ装置１００は、ストレージサブシステムとして、複数のストレージコントローラ１１０、内部バスネットワーク１２０、フラッシュメモリパッケージ１３０、サービスプロセッサSVP(Service Processor)１４０から構成される。
【００１６】
ストレージコントローラ１１０は、Ethernet（IBMの登録商標）やFibre Channel等でホスト３００と接続する為のチャネル I/F１１１、IO(Input  Output)を処理するCPU（Central  Processing  Unit）１２、プログラムや制御情報を保管するメモリ(Mem)１１３、ストレージ内部のバスと接続するI/F１１４、サービスプロセッサ１４０と接続するためのネットワークインターフェイスカード(NIC)１１５から構成される。なお、I/F１１４は、本実施例では、PCI-Expressを用いるが、SAS（Serial  Attached  SCSI）、Fibre Channel等のI/F、Ethernet等のネットワークを用いてもよい。
【００１７】
内部バスネットワーク１２０は、PCI-Express等が接続可能なスイッチで構成される。なお、内部バスネットワーク１２０としては、必要に応じてバス型ネットワークをつかってもよい。
【００１８】
フラッシュメモリパッケージ（以下FMPKと呼ぶ)１３０は、複数のフラッシュメモリ１３２と、内部I/F１１４からのアクセスに基づきフラッシュメモリ１３２のデータに対するアクセスを制御するフラッシュメモリアダプタ（FMA)１３１から構成される。このFMPK１３０は、メモリアクセスを行うものでもよいし、Solid State Disk(SSD)のような、Fibre  Channel、もしくはSAS等のディスクI/Fを持つものでもよい。
【００１９】
サービスプロセッサ（SVP）１４０は、ストレージコントローラ１１０にロードするためのプログラムをストレージコントローラ１１０にロードし、初期設定や装置の管理をする。このサービスプロセッサ１４０は、プロセッサ１４１、メモリ１４２、OS（Operating  System）やストレージコントローラ１１０向けのマイクロコードプログラムを保管するディスク１４３、ストレージコントローラ１１０と接続するためのネットワークインターフェイスカード(NIC) １４４、外部の管理コンソール（管理端末）５００に接続する為のEthernet等のネットワークインターフェイスカード(NIC)１４４から構成される。
【００２０】
このストレージ装置１００は、ホスト３００とSAN（Storage  Area  Network）２００経由で接続し、また管理コンソール５００とLAN（Local  Area  Network）４００経由で接続する。
【００２１】
ホスト３００は、サーバ用計算機で、CPU３０１、メモリ(MEM）３０２、ディスク(HDD)３０３を内蔵している。また、ホスト３００は、ストレージ装置１００とSCSI（Small  Computer  System  Interface）等のデータ転送を行うホストバスアダプタ(HBA)３０４を有している。
【００２２】
SAN２００はSCSIコマンドが転送可能なプロトコルを用いる。例えば、Fibre Channel、iSCSI、SCSI over Ethernet、SAS等のプロトコルを用いることができる。本実施例では、Fibre Channelネットワークを用いている。
【００２３】
管理コンソール５００は、サーバ用計算機で、CPU５０１、メモリ(MEM）５０２、ディスク(HDD)５０３を内蔵している。また、管理コンソール５００は、サービスプロセッサ１４０とTCP/IP（Transmission  Control  Protocol  /  Internet  Protocol）で通信可能なネットワークインターフェイスカード(NIC)５０４を有している。ネットワークインターフェイスカード(NIC)５０４としては、サーバとクライアント間で通信可能なネットワーク、例えば、Ethernetのネットワークを用いることができる。
【００２４】
LAN４００は、TCP/IP等で、IP（Internet  Protocol）プロトコルが動作し、サーバとクライアント間で通信可能なネットワーク、例えば、Ethernetのネットワークを利用して接続する。
【００２５】
図２は、本実施例におけるストレージ装置の論理的な構成と本ストレージ装置に接続される装置の論理的な構成を示す。
【００２６】
ストレージコントローラ１１０は、サービスプロセッサ（SVP）１４０より提供されるマイクロコードプログラム１６０を実行する。マイクロコードプログラム１６０は、サービスプロセッサ（SVP）１４０が有するCD-ROM（Compact  Disc  Read  only  Memory）、DVD-ROM（Digital  Versatile  Disc−Read  only  Memory）、USB（Universal  Serial  Bus）メモリ等の記憶媒体を保守員がサービスプロセッサ（SVP）１４０に転送して提供される。
【００２７】
この際、ストレージコントローラ１１０は、マイクロコードプログラム１６０に基づいて、複数のFMPK１３０の各ブロック内のデータをその属性に基づいて管理するとともに、平準化対象のデバイスに属するブロック内のデータに対する平準化処理を行う平準化処理部として構成されている。
【００２８】
また、マイクロコードプログラム１６０は、管理情報として、フラッシュメモリパッケージ(以下FMPKと呼ぶ）とその管理単位である物理デバイス(以下PDEVと呼ぶ)との対応関係を示すPDEV-FMPKテーブル１６６、PDEV１３３のグループでデータの保護単位を規定するRAID Groupテーブル１６１、PDEV内に存在するフラッシュメモリのデータ領域とユーザ領域を規定するPDEV Formatテーブル１６２、PDEV１３３のグループとしてウエアレベリングの範囲を規定するカラムデバイス（以下、CDEVと呼ぶ）テーブル163、LDEV内のアドレス空間とPDEV内のアドレス空間のマッピング関係を示すLDEV SEG-PDEV BLKマッピングテーブル(以下、LSEG-PBLKマッピング テーブルと呼ぶ）１６４、ウエアレベリング制御の動作種類を示すPDEV間ウエアレベリング動作ビット(CDEV WL's behavior）１６８、ＦＭＰＫ間のウエアレベリングを行う際のデータの移行対象のブロックリストを示すＷＬ(Wearleveling)対象ブロックリスト１６９を有しているとともに、ストレージコントローラ１１０のメモリ上に制御情報を有す。
【００２９】
また、マイクロコードプログラム１６０は、処理部としてIO処理部(IO operations)１６７、PDEV１３３内のフラッシュメモリブロック間で消去回数のウエアレベリング処理（平滑化、平準化処理とも呼ぶ）を行うPDEV内ウエアレベリング処理部(WL inside PDEV)１６５、CDEV１３６で規定するPDEV１３３間でフラッシュメモリの消去回数のウエアレベリング処理を行うPDEV間ウエアレベリング処理部(WL among PDEVs)１９０を有し、必要に応じて実行する。なお、本処理の内容は後述する。
【００３０】
マイクロコードプログラム１６０は、上記に記載した処理以外に、ストレージ装置１００の構成を管理し、Redundancy Array Independent Device(RAID)のデータを保護技術等、ストレージ装置１００が持つべき処理を持ってもよい。 
【００３１】
例えば、マイクロコードプログラム１６０は、FMPK１３０を想定して次のような管理を行う。まず、マイクロコードプログラム１６０は、FMPK１３０に属するフラッシュメモリ１３２の論理的記憶領域を論理的な管理単位であるPDEV１３３と呼ばれる単位で管理する。次に、マイクロコードプログラム１６０は、複数のPDEV１３３から複数のRAID Group (RG)１３４を構成し、各RG内のフラッシュメモリ１３２のデータを保護する。データを保護する単位としては、決められた管理単位（例えば256KB)で複数のPDEV１３３間を跨るストライプ列１３７を用いることができる。
【００３２】
ストライプ列１３７は、後述するPDEV１３３内やPDEV１３３間のウエアレベリングを行う際に、データが移動する単位となる。すなわち、各RG間でウエアレベリングを行う際に、ストライプ列単位でまとまってデータが移動する。また、後述するPDEV１３３間のウエアレベリングを行う際に、PDEV１３３のグループを規定するCDEV１３６を規定する。この際、CDEV１３６は、平準化対象のデバイスを構成することになる。
【００３３】
マイクロコードプログラム１６０は、各RGでデータを保護し、CDEV１３６内間でウエアレベリングを行い、記憶領域の保護と可用性の向上を行っている。ストレージ装置１００は、この上に論理的な記憶空間である論理デバイス(以下、LDEVと呼ぶ)１３５を複数個用意している。各LDEV１３５は、複数のCDEV１３６に亘って構築されている。また、各LDEV１３５は、ホスト３００に対してはマイクロコードプログラム１６０が付与するWWN（World  Wide  Name）とLU番号により、ホスト３００に対して論理ユニット(Logical Unit)として、SCSIのリードとライト処理を行うことになる。
【００３４】
SVP１４０は、OS１４２を持ち、保守員が操作指示をマイクロコードプログラム１６０へ与えるために管理プログラム１４２とそのGUI（Graphical  User  Interface）１４１を持つ。
【００３５】
ホスト３００は、先の論理ユニットLUのボリュームをOS３１０で認識し、デバイスファイルを作成後、フォーマットをし、その後、アプリケーション３２０からアクセスされるようになる。OS３１０は、ＵＮＩＸ（The Santa Cruz Operation, Inc.の登録商標）やＷｉｎｄｏｗｓ（Microsoftの登録商標）等の一般的なOSを用いることができる。
【００３６】
図３は、本実施例におけるフラッシュメモリパッケージ(以下FMPKと呼ぶ）とその管理単位である物理デバイス(PDEV)との対応関係、PDEV FMPK テーブル１６６を示す。PDEV FMPKテーブル１６６は、PDEV番号(PDEV#)３００１とFMPK番号(FMPK#)３００２から構成する。本実施例では、FMPK番は、ストレージ装置１００のFMPK１３０を差し込むスロット番号に相当するが、別の決め方をしてもよい。
【００３７】
図４は、本実施例におけるフラッシュメモリアダプタFMA１３１の論理管理単位であるPDEV１３３内のフラッシュメモリブロックを管理するためのPDEV  Formatテーブル１６２を示す。PDEV  Formatテーブル162は、所属するPDEV番号(PDEV#)４００１、PDEV１３３内のブロック番号(BLK#)４００２、各ブロックの消去回数(Num of Erase)４００３、現在の割当状況として開放(Free)、割当済み(Allocated)、そして、故障(Broken)の三つの状態(Status)4004から構成する。
【００３８】
消去回数４００３には、ブロックに対して書換えする前に、マイクロコードプログラム１６０がブロックに対して消去処理をおこなった後、その消去回数が累積カウントとして記録される。
【００３９】
図５は、本実施例におけるFMPK１３０の交換や追加時にFMPK１３０間のデータの移動の範囲を規定するカラムデバイステーブル１６３を示す。カラムデバイステーブル１６３は、CDEV１３６のグループを示すCDEV番(CDEV#)５００１、PDEV番(PDEV#)５００２から構成する。
【００４０】
図６は、本実施例におけるRAIDで保護を行うPDEV群のグループを示すRAID Groupテーブル１６１である。RAID Groupテーブル１６１は、RG番号(RG#)６００１、RAIDで保護を行うPDEV群6002、RG番号内のRAID保護タイプ6003から構成する。本実施例では、RAID保護タイプとして、RAID5を示しているが、そのほか、RAID1、2、3、4、5、6を選んでもよい。
【００４１】
図７は、本実施例におけるLDEV１３５内の記憶空間とPDEV１３３上のブロックの対応関係として、LDEVセグメント−PDEVブロック管理テーブル(L_SEG-P_BLK テーブル)１６４を示す。L_SEG-P_BLK テーブル１６４は、デバイス番号(LDEV#)７００１、LDEV１３５のアドレス空間を示すセグメント番号(Seg.#)７００２、後述するブロックが所属する物理デバイス番号(PDEV#)７００３、フラッシュメモリ１３２の物理ブロック番号(BLK#)７００４、ブロック平均ライトスループット(Write Throughput)７００５、平均ライトスループットから判定されるセグメント属性(Attribute of segment)（高アクセス(H)、低アクセス(L))７００６、セグメントをライトやウエアレベリングの操作を行う際のロックを”Lock”として示すLock（７００７）、セグメントがライト操作でFMPK１３０間で移動したことを”Yes”として示すMoved7008から構成する。
【００４２】
セグメントの大きさは、本実施例ではフラッシュメモリ１３２のブロックと同等する（例えば２５６ＫＢ）が、セグメントが複数のブロックから構成されてもよい。また、各セグメントの属性７００６を決定するに際して、マイクロプログラム１６０は、定期的に各PDEV１３３内のセグメント（ブロック）に属するデータのライトスループットを計測し、この計測値の最大値と最小値の平均値を算出し、この算出した平均値をライトアクセス頻度の閾値として決定する。
【００４３】
そして、マイクロプログラム１６０は、各セグメント（ブロック）のデータのライトスループットの計測値が閾値以上であれば、当該セグメント（ブロック）に、高アクセスのセグメント（ブロック）として、例えば、高アクセス（H）の属性を付与し、各セグメント（ブロック）のデータのライトスループットの計測値が閾値未満であれば、当該セグメント（ブロック）に、低アクセスのセグメント（ブロック）として、例えば、低アクセス（L）の属性を付与し、高アクセス(H)、低アクセス(L)をそれぞれマッピングテーブル１６４の属性7006に記録する。
【００４４】
この属性7006の決め方は、一例であるが、データの特徴として、頻繁にアクセスされるものを高アクセス、あまりアクセスされないものを低アクセスとして定義できるものであれば、他の方法を用いてもよい。例えば、本実施例では、ライトスループットを頻度情報として利用したが、各ブロックの１秒間の消去回数として消去頻度を利用してもよい。消去頻度から、平均消去頻度を計算し、属性として高アクセスと低アクセスを決めてもよい。また、LDEV１３５作成時のロック７００７の初期状態は、LDEV１３５割当時には”-“として無いと、また、Moved７００８の初期状態は、”-“として無いと設定することができる。
【００４５】
図８は、本実施例におけるLDEV１３５に対して、ホスト３００を接続する為に用いるLogical Unit(LU)とポート(Port）とのマッピングテーブル８０００を示す。マッピングテーブル８０００は、ポート番号(Port #)８００１、各ポートにSAN２００内で一意なアドレスとして割当られるWorld Wide Name(WWN)番号(WWN#)８００２、LU番号(LUN)８００３、１６４で定義したLDEV１３５のLDEV番号(LDEV#)8004から構成する。
以上が、本実施例における構成と管理情報の説明である。
【００４６】
次に、上記に説明した構成と管理情報を用いて、制御、動作の説明を行う。
図９は、本実施例のストレージ装置１００においてストレージの保守員が初期設定を行うプロセスを示す。
【００４７】
まず、保守員は、FMPK１３０をストレージ装置１００に提供されるスロットに対してインストールし、その後、FMPK１３０とPDEV１３３との対応関係を決める。FMPK１３０とPDEV１３３の対応関係はスロット番号がPDEV番号として決められ、その関係は、図３のPDEV  FMPKテーブル１６６に格納される（ステップ９００１）。
【００４８】
次に、保守員は、管理コンソール５００を用いて、RG番号を定め、RGに含めるPDEV１３３を選定し、RGを作成する。この関係はRAID   Groupテーブル１６１に格納される（ステップ９００２）。保守員は、PDEV１３３に対してフォーマットを行う。このフォーマットが行われると、マイクロコードプログラム１６０は、図４のPDEV  Formatテーブル１６２を作成する（ステップ９００３）。PDEV  Formatテーブル１６２を作る際、マイクロコードプログラム１６０は、初期状態として、PDEV１３３内のすべてのブロックは、空き(Free)ブロック(BLK)として管理する。
【００４９】
この後、保守員は、PDEV１３３群でウエアレベリングを行うための平準化対象のデバイスに属するCDEV１３６を作成する（ステップ９００４）。この対応関係は、サービスプロセッサSVP１４０を通して、図５のカラムデバイステーブル１６３に格納される。次に、保守員は、作成したCDEV１３６群からLDEV１３５を作成する(ステップ９００５）。この具体的な作成の仕方は図１０で説明する。
【００５０】
最後に、保守員は、LDEV１３５をホスト３００に公開する処理として、LDEV-LUマッピングテーブルを作成し、この対応関係をマイクロコードプログラム１６０経由で、図８のマッピングテーブル８０００に記録する。
【００５１】
以上が、保守員が初期設定を行うプロセスであるが、LDEV１３５作成操作（９００５）、マッピングテーブル８０００の作成（９００６）に関しては、一般的なストレージを管理する管理者（以下管理者と呼ぶ）が作業してもよい。
【００５２】
図１０は、本発明のストレージ装置１００において、ストレージの保守員もしくは管理者がLDEV１３５を作成する処理を示す。LDEV１３５の作成は、CDEV１３６内の空きセグメントを必要容量分集めることで、ボリュームを作成することになる。以下に詳細手順を示す。
【００５３】
ステップ１０００１：サービスプロセッサ（SVP）１４０の管理プログラム(142)は、保守員もしくは管理者が入力した容量のLDEV１３５を作成することをマイクロコードプログラム１６０に依頼する。
【００５４】
ステップ１０００２：マイクロコードプログラム１６０は、指定された容量のセグメント数(容量/セグメントサイズ)が空きブロックとして残っているかを、図４のPDEV  Formatテーブル１６２で確認する。マイクロコードプログラム１６０は、もし、残っている場合、ステップ１０００３に進み、残っていない場合、ステップ１０００７に進む。
【００５５】
ステップ１０００３：マイクロコードプログラム１６０は、指定された容量のセグメント数に対応するブロックを取得し、取得したブロックは、テーブル１６２のStatus４００４に”Allocated”として管理する。
【００５６】
ステップ１０００４：マイクロコードプログラム１６０は、LDEV番号を割当て、割り当てられたブロックにセグメント番号をつけて、図７のLSEG-PBLKマッピングテーブル１６４に追加する。
【００５７】
ステップ１０００５：マイクロコードプログラム１６０は、LDEV１３５の作成が成功したことをサービスプロセッサ（SVP）１４０に通知する。
【００５８】
ステップ１０００６：サービスプロセッサ（SVP）１４０は、GUIを通して、管理者にLDEV１３５の作成が成功したことを通知する。
【００５９】
ステップ１０００７：マイクロコードプログラム１６０は、LDEV１３５の作成が失敗したことをサービスプロセッサ（SVP）１４０に通知する。
【００６０】
ステップ１０００８：サービスプロセッサ（SVP）１４０は、GUIを通して、管理者にLDEV１３５の作成が失敗したことを通知する。
以上で処理を終了する。
【００６１】
図１１は、本実施例におけるPDEV１３３に対するライト時の動作を示す。本処理は、IO処理部１６７で動作する。PDEV１３３へのライトは、マイクロコードプログラム１６０がホスト３００からのライトコマンドを受け取った後、メモリ１１３内のキャッシュへ格納し、デステージのタイミングで発生、もしくは、ホスト３００からのライトコマンドに対応して発生する。以下のその動作についてステップとして示す。
【００６２】
ステップ１１００１：マイクロコードプログラム１６０は、ホスト３００から発行されたＳＣＳＩのライトコマンドから対象ＬＵのアクセスＬＢＡを取得する。図８のマッピングテーブル８０００からＬＤＥＶ番号８００４を取得し、図７のLSEG-PBLKマッピングテーブル１６４に示すＬＤＥＶ番号７００１内のセグメント番号に基づき、対象アドレスのブロック番号のセグメントに対してロック７００７が取得されていないか確認する。マイクロコードプログラム１６０は、もし、取得されている場合は、ステップ１１００２に進む。もし、取得されていない場合は、ステップ１１００３に進む。
【００６３】
ステップ１１００２：マイクロコードプログラム１６０は数usの間、待ち(Wait)状態になる。
【００６４】
ステップ１１００３：マイクロコードプログラム１６０は、LSEG-PBLKマッピングテーブル164に基づいて同一ストライプ列１３７のブロックの旧データとパリティデータをキャッシュ上にリードする。
【００６５】
ステップ１１００４：マイクロコードプログラム１６０は、リードされた旧データに対して新データで更新をする。
【００６６】
ステップ１１００５：マイクロコードプログラム１６０は、更新されたデータと旧パリティデータで新パリティを生成する。
【００６７】
ステップ１１００６：マイクロコードプログラム１６０は新BLKを割り当てる。割り当てる際、同じストライプ列に対応するBLKも移動し、RAID上のストライプは同一列のものから選ぶ。この際の具体的な処理は、後述の図１３の処理を行う。
【００６８】
ステップ１１００７：マイクロコードプログラム１６０は、新データとパリティを割り当てられたBLKに書き出す。
【００６９】
ステップ１１００８：マイクロコードプログラム１６０は、LSEG-PBLKマッピングテーブル１６４で更新されたセグメントに関して、新ブロックに対応するように更新する。また、図１８のＷＬ対象ブロックリスト１６９を参照し、旧ブロック番号の有無を確認し、もし、旧ブロック番号が存在するのであれば、LSEG-PBLKマッピングテーブル１６４のMoved7008を移動済みYesとして、マークする。
ステップ１１００９：マイクロコードプログラム１６０はロック（７００７）を解除する。
【００７０】
ステップ１１０１０：マイクロコードプログラム１６０は、旧ブロックに対して、後処理をする。詳細は図１７を用いて説明する。
以上で処理を終了する。
【００７１】
図１７は、本実施例におけるブロックに対する後処理のフローチャートを示す。以下に処理手順を示す。
【００７２】
ステップ１７００１：マイクロコードプログラム１６０は、該当ブロックのPDEV番4001とBLK番4002を参考に、消去回数(Num of Erase)4003が対応するブロックのフラッシュメモリ１３２の最大消去回数（例えば、MLCの場合5000回）未満かを確認し、もし、未満であれば、ステップ１７００２に進み、以上であれば１７００５に進む。
【００７３】
ステップ１７００２：マイクロコードプログラム１６０は、フラッシュメモリ１３２上のブロックのデータを消去する。
【００７４】
ステップ１７００３：マイクロコードプログラム１６０は、消去回数4003を＋１だけインクリメントする。
【００７５】
ステップ１７００４：マイクロコードプログラム１６０は、対応ブロックの状態を"Free"とする。
【００７６】
ステップ１７００５：マイクロコードプログラム１６０は、対応ブロックの状態を使えない状態を示す"broken"として管理する。
以上で処理を終了する。
【００７７】
図１７の処理はLDEV１３５開放時にも使用できる。管理者がサービスプロセッサ（SVP）１４０を通して、LDEV番号を指定し、開放の指示を与えると、対応LDEV番7001の全BLK7004に対して、図１７の開放処理を行うことができる。
【００７８】
図１２は、本実施例におけるリード時の動作を示す。本処理は、IO処理部１６７で動作する。ライト時の動作と同様、リードもメモリ１１３内のキャッシュからPDEV１３３に対して、キャッシュ上のデータが無い場合に次の動作を行う。
【００７９】
ステップ１２００１：マイクロコードプログラム１６０は、図７のLSEG-PBLKマッピングテーブル１６４に基づいて、リード対象となるデータをキャッシュ上に読み出す。
以上で処理を終了する。
【００８０】
図１３は、本実施例において新ブロックを割り当てる際の動作を説明するためのフローチャートである。本処理は図１０のステップ１０００３と図１１のステップ１１００６において、新規BLKを割り当てるときに利用できる。
以下に具体的な処理を示す。
【００８１】
ステップ１３００１：マイクロコードプログラム１６０は、図４のPDEV  Formatテーブル162のStatus列を参照し、新ブロックの割当対象のPDEV１３３について、全部BLK数に対する空きBLK数の割合を算出する（本処理は事前に定期的に行ってもよい）。そして、マイクロコードプログラム１６０は、FMPK１３０内に残空きブロックBLKがあるかを確認する為に、決められた閾値未満か否かを評価し、もし未満で有れば、ステップ１３００３に進み、もし未満でなければステップ１３００２に進む。なお、本ステップの閾値は、管理者、保守員で決められてよいし、工場出荷時に値を決めてもよい。
【００８２】
ステップ１３００２：マイクロコードプログラム１６０は、図５のカラムデバイステーブル１６３を参照し、該当するCDEV１３６の全PDEV１３３６に関して、図４のPDEV  Formatテーブル１６２のStatus列を参照し、新ブロックの割当対象のPDEV１３３において、全部BLK数に対する空きBLK数の割合を算出する。そして、マイクロコードプログラム１６０は、CDEV１３６内の残空きBLKがあるかを確認する為に、全部BLK数に対する空きBLK数の割合が、決められた閾値、例えば、８０％未満か否かを判定し、未満であれば、ステップ１３００４に進み、未満でなければステップ１３００５に進む。
【００８３】
この際、１３００５に進む理由は、既に使用されて、実装されている実FMPK１３０の代替として代替用FMPK１３０が追加され、追加された代替用FMPK１３０に属するPDEV１３３を登録後、他のパッケージの空きＢＬＫが増えることを期待しているからである。なお、本ステップ１３００２における閾値は、管理者、保守員で決められてよいし、工場出荷時に値を決めてもよい。
【００８４】
ステップ１３００３：マイクロコードプログラム１６０は、FMPK１３０内のPDEV１３３を対象としてブロックの選定を行う。この際、ウエアレベリングを行うためのブロックを選定するに際しては、例えば、非特許文献１のDual Pool、HCアルゴリズム、またはその他のアルゴリズム等、ブロック選定する際のアルゴリズムを用いることができる。
【００８５】
ステップ１３００４：マイクロコードプログラム１６０は、CDEV１３６上のウエアレベリングのタイプを示す動作ビット１６８を参照して、本装置のウエアレベリングアルゴリズムを決める。例えば、マイクロコードプログラム１６０は、動作ビット１６８が、低アクセスタイプ（“L”）のウエアレベリングを示すときには、ステップ１３００６に進み、ビット１６８が、高アクセスタイプ（“H”）のウエアレベリングを示すときには、ステップ１３００７に進む。
【００８６】
ステップ１３００５：マイクロコードプログラム１６０は、カラムデバイスCDEV内に空きBLKが無いと判定し、新PDEV１３３をCDEV１３６内に追加するように、管理者・保守員にサービスプロセッサ（SVP）１４０経由でGUI上等の画面やSNMP（Simple  Network  Management  Protocol）、メール等で要求する。
【００８７】
ステップ１３００６：マイクロコードプログラム１６０は、CDEV１３６内で低アクセスタイプのウエアレベリングをIO非同期、すなわち、バックグラウンドで実行する。具体的な処理は、図１４で説明する。
【００８８】
ステップ１３００７：マイクロコードプログラム１６０は、CDEV１３６内で高アクセスタイプのウエアレベリングをIO非同期、すなわち、バックグラウンドで実行する。具体的な処理は、図１４で説明する。
【００８９】
ステップ１３００８：マイクロコードプログラム１６０は、図４のPDEV  Formatテーブル１６２で追加されたPDEV１３３のFreeセグメント162から新BLKを割り当てる。
以上で処理を終了する。
【００９０】
なお、本フローでは、割当時の処理を示したが、本処理と独立して、バックグラウンドで、定期的に、CDEV１３６内の空きブロックを定期的に調査し（ステップ１３００２）、新しいFMPK１３０の追加を促すようにしてもよい。
【００９１】
本実施例では、マイクロコードプログラム１６０を含むストレージコントローラ１１０が平準化処理部として、すべて処理することを想定したが、FMPK１３０のフラッシュメモリアダプタ（FMA）１３１を、図４のPDEV  Formatテーブル１６２の空きブロックを管理できるものとして構成した場合、フラッシュメモリアダプタ（FMA）１３１が、ステップ１３００１で、PDEV１３３内の空きを管理し、ステップ１３００８で、マイクロコードプログラム１６０が新ブロックを要求したとき、この要求に応答して、空きを割り当ててもよい。
【００９２】
図１４は、本実施例におけるパッケージ間の動作を示す。本処理は、IO処理部１６７で動作する。本処理は、図１３のステップ１３００７の具体的な処理であって、低アクセスタイプのウエアレベリングまたは高アクセスタイプのウエアレベリングをIO非同期で行うための処理である。
【００９３】
ステップ１４００１：マイクロコードプログラム１６０は、図５のカラムデバイステーブル１６３を参照して、該当するCDEV１３６の全PDEV１３６に対して、図７のLSEG-PBLKマッピングテーブル１６４のセグメント属性７００６を参照し、移動するタイプ(高アクセスH/低アクセスL)のセグメントを選定する。そして、該当するセグメントのブロック７００４におけるブロック群リストを取得する。取得したリストは、図１８のWL対象ブロックリスト１６９に示すように、PDEＶ番号（１８００１）とＢＬＫ番号（１８００２）から構成される。WL対象ブロックリスト１６９には、現在のウエアレベリングを行なっているPDEV１３３中のBLK（ブロック）を示すポインタ１８００３が付与されている。なお、移動するタイプは先に説明したCDEV１３６上のウエアレベリングのタイプを示す動作ビット１６８（テーブルの情報としては、LSEG-PBLKマッピングテーブル１６４のMoved7008である。）で決まる。
【００９４】
ステップ１４００２：マイクロコードプログラム１６０は、ステップ１４００１で選定されたブロック群で移動されていないものがあるかを確認し、もし、移動されていないものがあればステップ１４００３に進み、すべてのブロックが移動されたのであれば、処理を終了する。
【００９５】
ステップ１４００３：マイクロコードプログラム１６０は、移動対象となるブロックが、既に移動されていないかを、図７のLSEG-PBLKマッピングテーブル１６４に示すPDEV番号７００３とブロック番７００４を基にMoved 7008の状態が、”Yes“か否かを確認し、もし”-”として、移動していないのであれば、ステップ１４００４に進み、”Yes”として移動されているのであれば、１４００７に進む。
【００９６】
ステップ１４００４：マイクロコードプログラム１６０は、ブロックを格納する為に追加されたPDEV１３３から移動先ブロックを割り当てる。
【００９７】
ステップ１４００５：マイクロコードプログラム１６０は、移動対象となっているブロックに対して、割当られた移動先ブロックへデータを移動する。
【００９８】
ステップ１４００６：マイクロコードプログラム１６０は、移動元のブロックが属していたセグメントに対して、図７のLSEG-PBLKマッピングテーブル１６４のセグメント番号７００４を移動先のブロック番号に置き換える。
【００９９】
ステップ１４００７：マイクロコードプログラム１６０は、対象ブロックに対して操作が完了したことを示す為に、Moved ７００８の値を”-“としてリセットし、更に、図１８に示すWL対象ブロックリスト１６９に付与されている、ポインタ１８００３を次のセグメントに移動する。
【０１００】
本実施例では、マイクロコードプログラム１６０がすべて処理することを想定したが、FMPK１３０のフラッシュメモリアダプタ（FMA）１３１を、図４に示すPDEV  Formatテーブル１６２の空きブロックを管理できるように構成した場合、フラッシュメモリアダプタ（FMA）１３１が、ステップ１４００６でセグメントのマッピングの変更をした後、該当ブロックの空きブロック化を行うこともできる。
【０１０１】
低アクセスタイプの処理の効果として、移動元のPDEVの空きブロック数が増え、残されたセグメント上に存在する高アクセスタイプのデータを用いて、更にウエアレベリングを行うことができる。
【０１０２】
高アクセスタイプの処理の効果として、高アクセスタイプのデータは、ホストのライトIOと一緒に移動が期待できることから、移動時のIO数の削減が可能となる。
【０１０３】
図１５は、本実施例における管理GUI１５０００を示す。本処理は、サービスプロセッサ（SVP）１４０のGUI処理部１４１で動作する。管理GUI１５０００は、全てのCDEVまたはプルタグ１５００１で選択したCDEV１３６で適用するPDEV１３３間のウエアレベリング設定し、OKボタン１５００３を用いて、決定する。この決定の内容は、PDEV１３３間のウエアレベリング処理部１９０に保管され、CDEV１３６内のウエアレベリングを行う際に使用される。
【０１０４】
図１６は、本実施例における内容を実現したときの動作の概要を説明するための図である。
【０１０５】
低アクセスタイプの場合、物理デバイスPDEV16001の低アクセス属性のブロック１６００４内の低アクセスなデータが、追加パッケージ（代替用パッケージ）１６００２に移動し、物理デバイスPDEV16001内には高アクセスなデータがそのまま残り、空ブロックが増え、ウエアレベリングの効果が高まることになる。
【０１０６】
高アクセスタイプの場合、物理デバイスPDEV16001の高アクセスな属性のブロック１６００５内の高アクセスのデータが追加パッケージ（代替用パッケージ）１６００２内に移動し、物理デバイスPDEV16001内には低アクセスのデータがそのまま残る。結果として、追加パッケージ１６００２のウエアレベリングの効果を高めることができ、パッケージの交換を早くすることができる。
【０１０７】
上述したように、本実施例においては、ストレージコントローラ１１０は、マイクロコードプログラム１６０に基づいて、複数のFMPK１３０の各ブロック内のデータをその属性に基づいて管理するとともに、平準化対象のデバイスに属するブロック内のデータに対する平準化処理を実行する。
【０１０８】
この際、ストレージコントローラ１１０は、例えば、ライトアクセス頻度の高いLDEV１３５に、消去回数の少ないPDEV１３３を割り当て、ライトアクセス頻度の低いLDEV１３５に、消去回数の多いPDEV１３３を割り当てることで、平準化対象のデバイスに属するブロック内のデータに対する平準化処理を実行することができる。
【０１０９】
また、マイクロコードプログラム１６０は、既に使用されている実FMPK１３０の各ブロック内のデータのライトアクセス頻度を計測し、ライトアクセス頻度の計測値が閾値より大きいデータを含むブロックに対しては、高アクセスの属性を付与し、ライトアクセス頻度の計測値が閾値よりも小さいデータを含むブロックに対しては、低アクセスの属性を付与し、実FMPK１３０内に空きブロックが不足した場合、実FMPK１３０の各ブロック内のデータの属性を基に各ブロックのデータの移動を制御するようにしているので、新規に追加されるFMPK１３０を含む複数のFMPK１３０の間で効率的な平準化を行うことができる。
【０１１０】
具体的には、実FMPK１３０内に空きブロックが不足した場合、マイクロコードプログラム１６０は、実FMPK１３０の中のいずれかのFMPK１３０および追加された代替用FMPK１３０に属するCDEV１３６を平準化対象のデバイスとするときに、平準化対象のデバイスに属する実FMPK１３０のブロックの属性が、高アクセスであるときには、当該ブロックに属するデータのうち閾値より大きいデータを代替用FMPKのブロックに移動させ、平準化対象のデバイスに属する実FMPK１３０のブロックの属性が、低アクセスであるときには、当該ブロックに属するデータのうち閾値より小さいデータを代替用FMPK１３０のブロックに移動させることで、新規に追加されるFMPK１３０を含む複数のFMPK１３０の間で効率的な平準化を行うことができる。
【０１１１】
本実施例によれば、新規に追加されるFMPK１３０を含む複数のFMPK１３０の間で効率的な平準化を行うことができる。
【産業上の利用可能性】
【０１１２】
本発明は、複数のフラッシュメモリパッケージ１３０から構成されて、フラッシュメモリパッケージ１３０が追加や交換される方式において、パッケージ内に加え、パッケージ外の消去回数に偏りも無くすストレージシステムに利用される可能性がある。
【符号の説明】
【０１１３】
１００  ストレージ装置
１１０  ストレージコントローラ(CTL)
１２０  内部ネットワーク
１３０  フラッシュメモリパッケージ(FMPK)
１４０  サービスプロセッサ（SVP)
２００  ストレージエリアネットワーク（SAN)
３００  ホスト
４００  ローカルエリアネットワーク（LAN)
５００  管理コンソール
【図１】
2012505441.tif 000003
【図２】
2012505441.tif 000004
【図３】
2012505441.tif 000005
【図４】
2012505441.tif 000006
【図５】
2012505441.tif 000007
【図６】
2012505441.tif 000008
【図７】
2012505441.tif 000009
【図８】
2012505441.tif 000010
【図９】
2012505441.tif 000011
【図１０】
2012505441.tif 000012
【図１１】
2012505441.tif 000013
【図１２】
2012505441.tif 000014
【図１３】
2012505441.tif 000015
【図１４】
2012505441.tif 000016
【図１５】
2012505441.tif 000017
【図１６】
2012505441.tif 000018
【図１７】
2012505441.tif 000019
【図１８】
2012505441.tif 000020
【国際調査報告】
2012505441.tif 000021
2012505441.tif 000022