(57)【要約】【課題】同一のディスク装置におけるシリンダ割当てのデータとトラック割当てのデータとの混在を軽減すること。【解決手段】記憶部１ａは、データに対する記憶領域の割当て単位の情報をディスク装置毎に記憶する。処理部１ｂは、ディスク装置２ａの割当て単位をシリンダ単位に分類し、ディスク装置２ｃの割当て単位をトラック単位に分類し、分類した結果を記憶部１ａに記憶された情報に設定する。処理部１ｂは、記憶部１ａに記憶された情報に基づいて、シリンダ単位での記憶領域の割当てが指定された第１のデータをディスク装置２ａに割当て、トラック単位での記憶領域の割当てが指定された第２のデータをディスク装置２ｃに割当てる。【選択図】図１
2018195014.tif 000002
【特許請求の範囲】
【請求項１】
データに対する記憶領域の割当て単位の情報をディスク装置毎に記憶する記憶部と、
第１のディスク装置の前記割当て単位をシリンダ単位に分類し、第２のディスク装置の前記割当て単位をトラック単位に分類し、分類した結果を前記記憶部に記憶された前記情報に設定し、前記情報に基づいて、シリンダ単位での記憶領域の割当てが指定された第１のデータを前記第１のディスク装置に割当て、トラック単位での記憶領域の割当てが指定された第２のデータを前記第２のディスク装置に割当てる処理部と、
を有する情報処理装置。
【請求項２】
前記処理部は、前記第１のデータに対してシリンダ単位に分類された各ディスク装置の空き容量が不足する場合、前記第１のデータを前記第２のディスク装置に割当て、前記第２のデータに対してトラック単位に分類された各ディスク装置の空き容量が不足する場合、前記第２のデータを前記第１のディスク装置に割当てる、
請求項１記載の情報処理装置。
【請求項３】
前記処理部は、新規の前記第１のデータに対してシリンダ単位に分類された各ディスク装置の空き容量が不足する場合、既存の前記第１および第２のデータが混在する第３のディスク装置を検出し、他のディスク装置よりも優先して前記第３のディスク装置に新規の前記第１のデータを割当て、新規の前記第２のデータに対してトラック単位に分類された各ディスク装置の空き容量が不足する場合、前記第３のディスク装置を検出し、他のディスク装置よりも優先して前記第３のディスク装置に新規の前記第２のデータを割当てる、
請求項１記載の情報処理装置。
【請求項４】
前記処理部は、既存の前記第１および前記第２のデータが混在する前記第１のディスク装置から、既存の前記第２のデータが全て削除された場合に前記第１のディスク装置の前記割当て単位をシリンダ単位に分類し、既存の前記第１および前記第２のデータが混在する前記第２のディスク装置から、既存の前記第１のデータが全て削除された場合に前記第２のディスク装置の前記割当て単位をトラック単位に分類する、
請求項１記載の情報処理装置。
【請求項５】
前記処理部は、前記第１のディスク装置の前記割当て単位が未確定である場合に、シリンダ単位での記憶領域の割当て要求が入力されると、前記第１のディスク装置の前記割当て単位をシリンダ単位に分類し、前記第２のディスク装置の前記割当て単位が未確定である場合に、トラック単位の記憶領域の割当て要求が入力されると、前記第２のディスク装置の前記割当て単位をトラック単位に分類する、
請求項１記載の情報処理装置。
【請求項６】
前記処理部は、何れかのディスク装置に格納されている全てのデータが削除されると、前記ディスク装置の前記割当て単位を未確定に設定する、
請求項５記載の情報処理装置。
【請求項７】
第１のディスク装置におけるデータへの記憶領域の割当て単位をシリンダ単位に分類し、第２のディスク装置における前記割当て単位をトラック単位に分類し、分類した結果を記憶部に記憶された前記第１のディスク装置および前記第２のディスク装置それぞれの前記割当て単位を示す情報に設定し、
前記記憶部に記憶された前記情報に基づいて、シリンダ単位での記憶領域の割当てが指定された第１のデータを前記第１のディスク装置に割当て、トラック単位での記憶領域の割当てが指定された第２のデータを前記第２のディスク装置に割当てる、
処理をコンピュータに実行させるプログラム。
【請求項８】
コンピュータが、
第１のディスク装置におけるデータへの記憶領域の割当て単位をシリンダ単位に分類し、第２のディスク装置における前記割当て単位をトラック単位に分類し、分類した結果を記憶部に記憶された前記第１のディスク装置および前記第２のディスク装置それぞれの前記割当て単位を示す情報に設定し、
前記記憶部に記憶された前記情報に基づいて、シリンダ単位での記憶領域の割当てが指定された第１のデータを前記第１のディスク装置に割当て、トラック単位での記憶領域の割当てが指定された第２のデータを前記第２のディスク装置に割当てる、
情報処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は情報処理装置、プログラムおよび情報処理方法に関する。
【背景技術】
【０００２】
コンピュータなどの情報処理装置は、記憶装置にデータを格納する。記憶装置は、データを記憶する。例えば、記憶装置として、ディスク装置が挙げられる。ディスク装置は、磁気ディスクを内蔵し、磁気ディスクに対するデータの書き込みや読み出しを行う。
【０００３】
例えば、直接アクセスボリューム上にデータセットを作成した場合に、ボリューム上にデータセットとして物理的に連続して割当てられたエクステントと呼ばれる領域の先頭アドレスと終端アドレスとにより、データセットの管理を行うシステムが提案されている。この提案では、システムは、本来トラック単位の割当てとして定義されたエクステント内で、シリンダ単位に扱える連続した領域が存在する場合に、その領域をトラック単位としてではなくシリンダ単位に割当てられたものとして扱う。これにより、トラック境界ごとのエクステントの終端確認処理を減少させる。
【０００４】
また、ディスク装置のファイル割当て領域を、１ＭＢ単位に管理する管理テーブルと、４ＫＢ単位に管理する管理テーブルとをディスク装置に保存し、要求されたファイル容量に応じた空きスペース量の検索に用いるスペース検索プログラムの提案もある。この提案では、スペース検索プログラムは、大容量空きスペース検索には、前者の大管理単位の管理テーブルを用いて効率良く検索する（検索すべきエントリ数が小）。一方、スペース検索プログラムは、小容量空きスペース検索には、後者の小管理単位の管理テーブルを用いてスペース効率よく記憶領域を利用する。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開昭６３−３０７５２５号公報
【特許文献２】特開平５−４６４４７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
上記のように、ディスク装置において、データに対する記憶領域の割当ての単位として、シリンダ単位やトラック単位が用いられることがある。この場合、シリンダ単位の割当て、および、トラック単位の割当てが、同一のディスク装置で混在して行われるとディスク装置における未使用の記憶領域の断片化（フラグメンテーション）が生じ易くなるという問題がある。
【０００７】
１つの側面では、本発明は、同一のディスク装置におけるシリンダ割当てのデータとトラック割当てのデータとの混在を軽減することを目的とする。
【課題を解決するための手段】
【０００８】
１つの態様では、情報処理装置が提供される。情報処理装置は、記憶部と処理部とを有する。記憶部は、データに対する記憶領域の割当て単位の情報をディスク装置毎に記憶する。処理部は、第１のディスク装置の割当て単位をシリンダ単位に分類し、第２のディスク装置の割当て単位をトラック単位に分類し、分類した結果を記憶部に記憶された情報に設定し、当該情報に基づいて、シリンダ単位での記憶領域の割当てが指定された第１のデータを第１のディスク装置に割当て、トラック単位での記憶領域の割当てが指定された第２のデータを第２のディスク装置に割当てる。
【発明の効果】
【０００９】
１つの側面では、同一のディスク装置におけるシリンダ割当てのデータとトラック割当てのデータとの混在を軽減できる。
【図面の簡単な説明】
【００１０】
【図１】第１の実施の形態の情報処理装置を示す図である。
【図２】第２の実施の形態のメインフレームのハードウェア例を示す図である。
【図３】ＨＤＤの構造の例を示す図である。
【図４】ＨＤＤにおける未使用スペースの断片化の例を示す図である。
【図５】メインフレームの機能例を示す図である。
【図６】トラック割当ておよびシリンダ割当ての分類例を示す図である。
【図７】管理テーブルの例を示す図である。
【図８】スペースの割当て例を示すフローチャートである。
【図９】スペースの割当ての第１の具体例を示す図である。
【図１０】スペースの割当ての第２の具体例を示す図である。
【図１１】混在ボリュームから未確定ボリュームへの変更を示す図である。
【図１２】混在ボリュームからシリンダ割当てボリュームへの変更を示す図である。
【図１３】混在ボリュームからトラック割当てボリュームへの変更を示す図である。
【図１４】連続した未使用スペースの例を示す図である。
【発明を実施するための形態】
【００１１】
以下、本実施の形態について図面を参照して説明する。
［第１の実施の形態］
図１は、第１の実施の形態の情報処理装置を示す図である。情報処理装置１は、ストレージ２に接続されている。ストレージ２は、複数のディスク装置を有する。ディスク装置は、磁気ディスクを内蔵し、磁気ディスクに対するデータの書き込みや読み出しを行う。ディスク装置は、磁気ディスク装置やＨＤＤ（Hard Disk Drive）などと呼ばれてもよい。情報処理装置１は、ディスク装置に対するデータの書き込みやディスク装置からのデータの読み出しを制御する。
【００１２】
情報処理装置１は、データに対する記憶領域の割当てを管理する。記憶領域の割当ての単位には、ディスク装置におけるシリンダの単位（シリンダ単位）、または、ディスク装置におけるトラックの単位（トラック単位）がある。データに対する記憶領域の割当ての単位として、どの単位を用いるかはユーザによって指定される。例えば、ユーザは、データに対する記憶領域の割当て要求を情報処理装置１に入力する際に、割当て単位として、シリンダ単位、または、トラック単位を指定する。情報処理装置１は、ディスク装置毎の割当ての単位を管理することで、各ディスク装置の記憶領域を効率的に利用可能にする機能を提供する。情報処理装置１は、記憶部１ａおよび処理部１ｂを有する。
【００１３】
記憶部１ａは、ＲＡＭ（Random Access Memory）などの揮発性記憶装置でもよいし、ＨＤＤやフラッシュメモリなどの不揮発性記憶装置でもよい。処理部１ｂは、ＣＰＵ（Central Processing Unit）、ＤＳＰ（Digital Signal Processor）、ＡＳＩＣ（Application Specific Integrated Circuit）、ＦＰＧＡ（Field Programmable Gate Array）などを含み得る。処理部１ｂはプログラムを実行するプロセッサであってもよい。「プロセッサ」には、複数のプロセッサの集合（マルチプロセッサ）も含まれ得る。
【００１４】
記憶部１ａは、データに対する記憶領域の割当て単位の情報をディスク装置毎に記憶する。例えば、ストレージ２が備える複数のディスク装置は、ディスク装置２ａ，２ｂ，２ｃ，２ｄを含む。ディスク装置２ａの識別情報（ディスクＩＤ（IDentifier））は、“ＶＯＬ１”である。ディスク装置２ｂのディスクＩＤは、“ＶＯＬ２”である。ディスク装置２ｃのディスクＩＤは、“ＶＯＬ３”である。ディスク装置２ｄのディスクＩＤは、“ＶＯＬ４”である。
【００１５】
例えば、記憶部１ａは、データに対する記憶領域の割当て単位の情報として、管理テーブルＴ１を記憶する。管理テーブルＴ１は、ディスクＩＤに対して、割当て単位、当該ディスクＩＤのディスク装置における空き容量、および、当該ディスク装置のＩ／Ｏ（Input / Output）負荷を管理するための管理情報である。
【００１６】
処理部１ｂは、第１のディスク装置の割当て単位をシリンダ単位に分類し、第２のディスク装置の割当て単位をトラック単位に分類し、分類した結果を記憶部１ａに記憶された情報（管理テーブルＴ１）に設定する。
【００１７】
例えば、処理部１ｂは、ユーザによる記憶領域の割当て要求を受け付けたタイミングで、シリンダ単位およびトラック単位の何れにも分類されていないディスク装置を検索し、検索されたディスク装置を、割当て要求で指定された割当て単位に分類する。そして、処理部１ｂは、分類の結果を、該当のディスク装置のディスクＩＤに対応付けて管理テーブルＴ１に登録する。
【００１８】
一例では、処理部１ｂは、次のようにディスク装置２ａ，２ｂ，２ｃ，２ｄを分類する。処理部１ｂは、ディスク装置２ａの割当て単位をシリンダ単位に分類し、分類した結果を管理テーブルＴ１に設定する。処理部１ｂは、ディスク装置２ｂの割当て単位をシリンダ単位に分類し、分類した結果を管理テーブルＴ１に設定する。この場合、ディスク装置２ａは第１のディスク装置の一例である。ディスク装置２ｂは第１のディスク装置の一例である。処理部１ｂは、ディスク装置２ｃの割当て単位をトラック単位に分類し、分類した結果を管理テーブルＴ１に設定する。処理部１ｂは、ディスク装置２ｄの割当て単位をトラック単位に分類し、分類した結果を管理テーブルＴ１に設定する。この場合、ディスク装置２ｃは第２のディスク装置の一例である。ディスク装置２ｄは第２のディスク装置の一例である。また、処理部１ｂは、各ディスク装置の空き容量やＩ／Ｏ負荷を監視し、管理テーブルＴ１に監視の結果を登録する。
【００１９】
処理部１ｂは、記憶部１ａに記憶された情報（管理テーブルＴ１）に基づいて、シリンダ単位での記憶領域の割当てが指定された第１のデータ（シリンダ割当てのデータ）を第１のディスク装置に割当てる。例えば、処理部１ｂは、第１のデータをディスク装置２ａに割当てる。このとき、処理部１ｂは、割当て単位がシリンダ単位に分類されているディスク装置２ａ，２ｂの空き容量やＩ／Ｏ負荷に応じて、割当て先のディスク装置を選択してもよい。より具体的には、処理部１ｂは、ディスク装置２ａ，２ｂのうち、ユーザの割当て要求で指定されたサイズの空き容量を確保可能であり、かつ、Ｉ／Ｏ負荷が最小であるディスク装置を割当て先として決定してもよい。
【００２０】
また、処理部１ｂは、記憶部１ａに記憶された情報（管理テーブルＴ１）に基づいて、トラック単位での記憶領域の割当てが指定された第２のデータ（トラック割当てのデータ）を第２のディスク装置に割当てる。例えば、処理部１ｂは、第２のデータをディスク装置２ｃに割当てる。このとき、処理部１ｂは、割当て単位がトラック単位に分類されているディスク装置２ｃ，２ｄの空き容量やＩ／Ｏ負荷に応じて、割当て先のディスク装置を選択してもよい。より具体的には、処理部１ｂは、ディスク装置２ｃ，２ｄのうち、ユーザの割当て要求で指定されたサイズの空き容量を確保可能であり、かつ、Ｉ／Ｏ負荷が最小であるディスク装置を割当て先として決定してもよい。
【００２１】
こうして、処理部１ｂは、シリンダ単位の指定に対しては、割当て単位がシリンダ単位に分類されたディスク装置の記憶領域を割当てる。また、処理部１ｂは、トラック単位の指定に対しては、割当て単位がトラック単位に分類されたディスク装置の記憶領域を割当てる。
【００２２】
ところで、データに対する記憶領域の割当ての単位として、シリンダ単位やトラック単位が用いられる場合に、シリンダ単位の割当て、および、トラック単位の割当てが、同一のディスク装置で混在して行われることがある。例えば、ユーザに、記憶領域の割当て要求とともに、割当て先のディスク装置を指定させる場合である。ユーザは、通常、ディスク装置毎の記憶領域の割当て単位を意識せずに、割当て先のディスク装置を指定することが少なくない。このため、同一のディスク装置に対して、シリンダ割当てのデータおよびトラック割当てのデータの混在が生じ易い。
【００２３】
しかし、シリンダ割当てのデータとトラック割当てのデータとの同一のディスク装置上での混在は、ディスク装置における未使用スペースの断片化（フラグメンテーション）の要因になる。断片化により複数の未使用スペースが分断されて存在すると、要求されたサイズの未使用スペースを連続領域として確保することが難しくなる。このため、断片化された未使用スペースが多いと、データに対する記憶領域の割当ての効率性が低下する。例えば、シリンダ割当てなどの比較的大きなサイズの要求に対し、断片化された未使用スペースを割当てることができず、ディスク装置の記憶領域を十分に活用できない可能性がある。
【００２４】
そこで、処理部１ｂは、複数のディスク装置のうちの一部（例えば、ディスク装置２ａ，２ｂ）をシリンダ単位に分類し、他の一部（例えば、ディスク装置２ｃ，２ｄ）をトラック単位に分類し、管理テーブルＴ１に登録しておく。そして、処理部１ｂは、その後に受け付けた割当て要求における割当て単位の指定に対して、管理テーブルＴ１を参照し、分類に応じたディスク装置を割当て先として選択する。
【００２５】
これにより、シリンダ割当てのデータは、割当て単位がシリンダに分類されたディスク装置に格納される。また、トラック割当てのデータは、割当て単位がトラックに分類されたディスク装置に格納される。このため、同一のディスク装置におけるシリンダ割当てのデータとトラック割当てのデータとの混在を軽減することができる。また、このとき、ユーザによる割当て先のディスク装置の指定を受け付けずに済む。すなわち、ユーザは、ディスク装置を個別に指定しなくてもよくなる。
【００２６】
更に、同一のディスク装置におけるシリンダ割当てのデータとトラック割当てのデータとの混在が軽減されることで、ディスク装置における未使用スペースの断片化が抑制される。このため、要求されたサイズの未使用スペースを連続領域として確保できる可能性が高まり、データに対する記憶領域の割当ての効率性を向上できる。すなわち、各ディスク装置の記憶領域を効率的に利用可能になる。
【００２７】
なお、記憶領域の割当て対象となるデータは、データセットと呼ばれる単位でもよいし、ファイルと呼ばれる単位でもよい。例えば、データセットは、ディスク装置に格納されるデータレコードの実体である。また、例えば、ファイルは、所定のプログラムの処理において参照されるデータセットの集合（１まとまりの論理的なデータ）である。なお、１つのファイルが１つのデータセットに相当することもある。
【００２８】
また、上記の例では、情報処理装置１に対して外付けのストレージ２にディスク装置２ａ，２ｂ，２ｃ，２ｄが内蔵される例を示したが、ディスク装置２ａ，２ｂ，２ｃ，２ｄは、情報処理装置１に内蔵されてもよい。
【００２９】
［第２の実施の形態］
図２は、第２の実施の形態のメインフレームのハードウェア例を示す図である。メインフレーム１００は、ユーザの業務処理を実行するコンピュータである。メインフレーム１００は、プロセッサ１０１、ＲＡＭ１０２、ＨＤＤ１０３、接続インタフェース１０４、画像信号処理部１０５、入力信号処理部１０６、媒体リーダ１０７および通信インタフェース１０８を有する。各ハードウェアはメインフレーム１００のバスに接続されている。
【００３０】
プロセッサ１０１は、メインフレーム１００の情報処理を制御するハードウェアである。プロセッサ１０１は、マルチプロセッサであってもよい。プロセッサ１０１は、例えばＣＰＵ、ＤＳＰ、ＡＳＩＣまたはＦＰＧＡなどである。プロセッサ１０１は、ＣＰＵ、ＤＳＰ、ＡＳＩＣ、ＦＰＧＡなどのうちの２以上の要素の組み合わせであってもよい。
【００３１】
ＲＡＭ１０２は、メインフレーム１００の主記憶装置である。ＲＡＭ１０２は、プロセッサ１０１に実行させるＯＳ（Operating System）のプログラムやアプリケーションプログラムの少なくとも一部を一時的に記憶する。また、ＲＡＭ１０２は、プロセッサ１０１による処理に用いる各種データを記憶する。
【００３２】
ＨＤＤ１０３は、メインフレーム１００の補助記憶装置である。ＨＤＤ１０３は、内蔵した磁気ディスクに対して、磁気的にデータの書き込みおよび読み出しを行う。ＨＤＤ１０３は、ＯＳのプログラム、アプリケーションプログラム、および各種データを記憶する。メインフレーム１００は、フラッシュメモリやＳＳＤ（Solid State Drive）などの他の種類の補助記憶装置を備えてもよく、複数の補助記憶装置を備えてもよい。
【００３３】
接続インタフェース１０４は、ストレージ装置２０と接続するためのインタフェースである。接続インタフェース１０４としては、ＦＣＬＩＮＫ（登録商標）やＦＣ（Fibre Channel）などを用いることができる。ストレージ装置２０以外にも、磁気テープ媒体に対するデータの書き込みや読み出しを行うドライブ装置などの他の周辺装置が接続され得る。
【００３４】
画像信号処理部１０５は、プロセッサ１０１からの命令に従って、メインフレーム１００に接続されたディスプレイ１１に画像を出力する。ディスプレイ１１として、ＣＲＴ（Cathode Ray Tube）ディスプレイや液晶ディスプレイなどを用いることができる。
【００３５】
入力信号処理部１０６は、メインフレーム１００に接続された入力デバイス１２から入力信号を取得し、プロセッサ１０１に出力する。入力デバイス１２として、例えば、マウスやタッチパネルなどのポインティングデバイス、キーボードなどを用いることができる。
【００３６】
媒体リーダ１０７は、記録媒体１３に記録されたプログラムやデータを読み取る装置である。記録媒体１３として、例えば、フレキシブルディスク（ＦＤ：Flexible Disk）やＨＤＤなどの磁気ディスク、ＣＤ（Compact Disc）やＤＶＤ（Digital Versatile Disc）などの光ディスク、光磁気ディスク（ＭＯ：Magneto-Optical disk）を使用できる。また、記録媒体１３として、例えば、フラッシュメモリカードなどの不揮発性の半導体メモリを使用することもできる。媒体リーダ１０７は、例えば、プロセッサ１０１からの命令に従って、記録媒体１３から読み取ったプログラムやデータをＲＡＭ１０２またはＨＤＤ１０３に格納する。
【００３７】
通信インタフェース１０８は、ネットワーク１０を介して他の装置と通信を行う。通信インタフェース１０８は、有線通信インタフェースでもよいし、無線通信インタフェースでもよい。
【００３８】
ここで、ストレージ装置２０は、複数のＨＤＤを備える。ＨＤＤは、ディスク装置の一例である。複数のＨＤＤそれぞれは、メインフレーム１００の業務処理で扱われるファイルの保存に用いられる。複数のＨＤＤは、ＨＤＤ２１，２２，２３，２４，２５，２６を含む。
【００３９】
図３は、ＨＤＤの構造の例を示す図である。ＨＤＤ２１は、プラッタ２１ａ，２１ｂ，２１ｃ，２１ｄ，２１ｅ、磁気ヘッド２１ｆおよびアクチュエータ２１ｇを有する。
プラッタ２１ａ，２１ｂ，２１ｃ，２１ｄ，２１ｅは、磁性体が塗布または蒸着された金属のディスク（磁気ディスク）であり、磁性体により形成される表面の磁気記録層にデータを保持する。プラッタ２１ａ，２１ｂ，２１ｃ，２１ｄ，２１ｅの中心は、同一軸（スピンドルモーター（図示を省略している）による回転軸）に配置される。
【００４０】
磁気ヘッド２１ｆは、スイングアームを備え、スイングアーム先端のヘッド部によりプラッタ表面の磁気記録層に対してデータの書き込みや読み出しを行う。磁気ヘッド２１ｆは、プラッタ２１ａ，２１ｂ，２１ｃ，２１ｄ，２１ｅそれぞれに対して設けられる（ＨＤＤ２１は複数の磁気ヘッドを有する）。
【００４１】
アクチュエータ２１ｇは、磁気ヘッド２１ｆを支持し、プラッタの半径方向に磁気ヘッド２１ｆを移動させる位置決め装置である。
ＨＤＤの物理的な記憶領域の単位は、トラックＴ０、セクタＳ０およびシリンダＣ０に区分される。トラックＴ０は、プラッタ２１ａの表面上の同心円状の記憶領域である。トラックＴ０は、プラッタ２１ａ上における複数のトラックのうちの１つである。セクタＳ０は、トラックＴ０が所定サイズ単位に区切られた領域である。セクタＳ０は、トラックＴ０上における複数のセクタのうちの１つである。シリンダＣ０は、プラッタ２１ａ，２１ｂ，２１ｃ，２１ｄ，２１ｅの表面上における同一半径の各トラックのセットである。
【００４２】
ＨＤＤ２２，２３，２４，２５，２６もＨＤＤ２１と同様の構造を有する。ＨＤＤは、ボリュームと呼ばれることもある。
図４は、ＨＤＤにおける未使用スペースの断片化の例を示す図である。図４では、ＨＤＤにおけるシリンダ単位の記憶領域を１行に対応付けており、シリンダ単位の記憶領域の左側に、シリンダを示す番号（“１”、“２”、“３”、“４”、“５”、“６”）を付している。
【００４３】
ここで、メインフレーム１００の運用では、ファイルに対する記憶領域の割当て単位がユーザによって指定される。割当て単位には、シリンダ単位およびトラック単位がある。割当て単位をシリンダ単位として記憶領域の割当てを行うことをシリンダ割当てと称する。割当て単位をトラック単位として記憶領域の割当てを行うことをトラック割当てと称する。また、シリンダ単位に記憶領域が割当てられるファイルを、シリンダ割当てのファイルと称する。トラック単位に記憶領域が割当てられるファイルを、トラック割当てのファイルと称する。
【００４４】
図４の例では、シリンダ番号“１”のシリンダには、トラック割当てのファイルが格納されている。シリンダ番号“１”のシリンダのうち、未割当ての記憶領域は、未使用スペースである。ここで、「スペース」は記憶領域を示す。
【００４５】
シリンダ番号“２”のシリンダには、シリンダ割当てのファイルが格納されている。
シリンダ番号“３”のシリンダには、トラック割当てのファイルが格納されている。シリンダ番号“３”のシリンダのうち、未割当ての記憶領域は、未使用スペースである。
【００４６】
シリンダ番号“４”のシリンダには、シリンダ割当てのファイルが格納されている。
シリンダ番号“５”のシリンダには、トラック割当てのファイルが格納されている。シリンダ番号“５”のシリンダのうち、未割当ての記憶領域は、未使用スペースである。
【００４７】
シリンダ番号“６”のシリンダには、シリンダ割当てのファイルが格納されている。
例えば、１シリンダは１５トラックである。したがって、トラック単位の割当てを５００トラック（ＴＲＫ）で行うと、最終シリンダにおいてシリンダ境界ではない５トラックの隙間ができる。また、シリンダ割当てのファイルに対しては、シリンダ境界から記憶領域の割当てが行われる。このため、上記のトラック単位の割当てが行われた後に、シリンダ割当てが行われると、上記最終シリンダにおける５トラック分の未使用スペースは使用されずに残ることになる。したがって、例えば、上記のトラック割当て（５トラックの隙間ができる割当て）とシリンダ割当てとの組が３回繰り返されると、合計で１５トラックの連続していない未使用スペースができることになる。
【００４８】
このように、シリンダ割当てのファイルと、トラック割当てのファイルとが１つのＨＤＤ上に混在して存在すると、未使用スペースが細切れになって分断され易くなる。分断された複数の未使用スペースは連続領域として割当てることができない。このため、例えば、シリンダ割当ての要求があったときに、ＨＤＤ全体の各未使用スペースの合計サイズが要求されたサイズを満たしていたとしても、各未使用スペース単体のサイズが要求されたサイズでないことがある。この場合、当該ＨＤＤに対するシリンダ割当てを行えないことになる。
【００４９】
このように、シリンダ割当てのファイルとトラック割当てのファイルとの混在は、ＨＤＤの記憶領域の断片化（フラグメンテーション）を引き起こし、利用効率を悪化させる要因になる。そこで、メインフレーム１００は、シリンダ割当てのファイルとトラック割当てのファイルとの混在を軽減し、ＨＤＤの記憶領域の利用効率を向上させる機能を提供する。
【００５０】
図５は、メインフレームの機能例を示す図である。メインフレーム１００は、記憶部１１０、ボリューム管理部１２０およびアクセス制御部１３０を有する。
記憶部１１０は、ＲＡＭ１０２やＨＤＤ１０３の記憶領域を用いて実現される。また、ボリューム管理部１２０およびアクセス制御部１３０は、プロセッサ１０１により実現される。例えば、プロセッサ１０１は、ＲＡＭ１０２に記憶されたプログラムを実行することで、ボリューム管理部１２０およびアクセス制御部１３０の機能を発揮する。ただし、ボリューム管理部１２０およびアクセス制御部１３０は、ＦＰＧＡやＡＳＩＣなどのハードワイヤードロジックにより実現されてもよい。
【００５１】
記憶部１１０は、記憶領域の割当て単位を、ＨＤＤ２１，２２，２３，２４，２５，２６それぞれに対して管理するための管理情報を記憶する。管理情報は、割当て単位に加え、該当のＨＤＤの空き容量の情報やＩ／Ｏ負荷の情報を含む。
【００５２】
ボリューム管理部１２０は、ＨＤＤ毎の空きスペースやＩ／Ｏ負荷を管理する。ボリューム管理部１２０は、ＨＤＤ毎の空きスペースおよびＩ／Ｏ負荷をストレージ装置２０から定期的、または、アクセス制御部１３０が動作した際に、取得する。ボリューム管理部１２０は、取得した空きスペースおよびＩ／Ｏ負荷により、記憶部１１０に記憶された管理情報を更新する。
【００５３】
ボリューム管理部１２０は、ＨＤＤの初期化やＨＤＤに格納された全ファイルの削除を行うことがある。ボリューム管理部１２０は、ＨＤＤの初期化やＨＤＤに格納された全ファイルの削除を行った場合、記憶部１１０に記憶された管理情報における該当のＨＤＤの割当て単位を未確定に設定する。
【００５４】
アクセス制御部１３０は、ＨＤＤ２１，２２，２３，２４，２５，２６それぞれに対するファイルの書き込みや読み出しのアクセスを制御する。アクセス制御部１３０によるアクセスの制御は、ユーザにより入力されたコマンドに応じて実行される。例えば、ユーザは、ジョブ制御言語（ＪＣＬ：Job Control Language）を用いて、ファイルに対する記憶領域の割当てを要求する所定のコマンド（割当て要求コマンド）を、メインフレーム１００に入力する。割当て要求コマンドは、割当て単位および割当てる記憶領域のサイズの指定（要求スペース量と称する）を含む。
【００５５】
特に、割当て要求コマンドでは、割当て先のデバイス（ここでは、ＨＤＤ）またはデバイス群の指定が可能である。ただし、アクセス制御部１３０は、割当て先のデバイスの個別の指定を受け付けなくてよい。すなわち、アクセス制御部１３０は、ＨＤＤ２１，２２，２３，２４，２５，２６が属するデバイス群の指定を受け付けさえすればよい。このように、特定のデバイスの指定を含まない割当て要求コマンドを、以下では、「不特定割当て要求コマンド」または単に「不特定割当て要求」と称することがある。
【００５６】
アクセス制御部１３０は、アクセスの制御に伴い、ＨＤＤ毎の記憶領域の割当て単位を決定する。具体的には、アクセス制御部１３０は、不特定割当て要求に対し、割当て単位が未確定であるＨＤＤを、割当て単位を確定済であるＨＤＤよりも優先的に選択する。そして、アクセス制御部１３０は、選択したＨＤＤに対して不特定割当て要求で指定された割当て単位の記憶領域を割当てる。すると、アクセス制御部１３０は、該当のＨＤＤの割当て単位を、不特定割当て要求で指定された割当て単位に分類する。アクセス制御部１３０は、該当のＨＤＤに対する分類結果（決定された割当て単位）を、記憶部１１０に記憶された管理情報に登録する。
【００５７】
また、全てのＨＤＤの割当て単位を決定済の場合、アクセス制御部１３０は、ユーザによる不特定割当て要求の入力に対して、上記の分類を行わずに、ファイルに対する記憶領域の割当てを行う。具体的には、アクセス制御部１３０は、記憶部１１０に記憶された管理情報を参照して、不特定割当て要求において指定された割当て単位に属するＨＤＤを、割当て先として選択する。アクセス制御部１３０は、割当て先のＨＤＤの記憶領域に該当のファイルを書き込む。このとき、割当て先の候補となるＨＤＤが複数の場合、アクセス制御部１３０は、管理情報に登録された各候補の空き容量やＩ／Ｏ負荷に基づいて、割当て先を絞り込む。
【００５８】
更に、アクセス制御部１３０は、不特定割当て要求において指定された割当て単位に属するＨＤＤからは不特定割当て要求で要求された空き容量を確保できない場合、異なる割当て単位に属するＨＤＤを割当て先とすることを許容する。
【００５９】
図６は、トラック割当ておよびシリンダ割当ての分類例を示す図である。例えば、ＨＤＤ２１，２２，２３，２４，２５，２６は、ある時点において、何れも初期化直後のボリューム（初期化ボリュームと称する）であったとする。この場合、ＨＤＤ２１，２２，２３，２４，２５，２６のセットは、初期化ボリューム群である。初期化ボリューム群に属するＨＤＤの割当て単位の分類は、未確定である。
【００６０】
ここで、ＨＤＤの識別情報をボリュームＩＤと呼ぶこととする。ＨＤＤ２１のボリュームＩＤは“ＶＯＬ００１”である。ＨＤＤ２２のボリュームＩＤは“ＶＯＬ００２”である。ＨＤＤ２３のボリュームＩＤは“ＶＯＬ００３”である。ＨＤＤ２４のボリュームＩＤは“ＶＯＬ００４”である。ＨＤＤ２５のボリュームＩＤは“ＶＯＬ００５”である。ＨＤＤ２６のボリュームＩＤは“ＶＯＬ００６”である。
【００６１】
アクセス制御部１３０は、ユーザにより入力された不特定割当て要求に応じて、最初にファイルを割当てた時点で、各ＨＤＤの割当て単位を確定する。
例えば、アクセス制御部１３０は、最初にトラック割当てのファイルをＨＤＤ２１に割当てた場合、ＨＤＤ２１の記憶領域の割当て単位をトラックに確定する。
【００６２】
アクセス制御部１３０は、最初にシリンダ割当てのファイルをＨＤＤ２２に割当てた場合、ＨＤＤ２２の記憶領域の割当て単位をシリンダに確定する。
アクセス制御部１３０は、最初にトラック割当てのファイルをＨＤＤ２３に割当てた場合、ＨＤＤ２３の記憶領域の割当て単位をトラックに確定する。
【００６３】
アクセス制御部１３０は、最初にシリンダ割当てのファイルをＨＤＤ２４に割当てた場合、ＨＤＤ２４の記憶領域の割当て単位をシリンダに確定する。
アクセス制御部１３０は、最初にトラック割当てのファイルをＨＤＤ２５に割当てた場合、ＨＤＤ２５の記憶領域の割当て単位をトラックに確定する。
【００６４】
アクセス制御部１３０は、最初にシリンダ割当てのファイルをＨＤＤ２６に割当てた場合、ＨＤＤ２６の記憶領域の割当て単位をシリンダに確定する。
アクセス制御部１３０は、割当て単位の分類先の確定結果を、記憶部１１０に記憶された管理情報に登録する。なお、以下では、割当て単位がシリンダに分類されたＨＤＤをシリンダ割当てのボリュームと称することがある。また、割当て単位がトラックに分類されたＨＤＤをトラック割当てのボリュームと称することがある。
【００６５】
図７は、管理テーブルの例を示す図である。管理テーブル１１１は、各ＨＤＤの割当て単位、未使用スペース（空きスペース）およびＩ／Ｏ負荷を管理するための管理情報の一例である。管理テーブル１１１は、記憶部１１０に格納される。管理テーブル１１１は、ボリュームＩＤ、割当て単位、空きおよびＩ／Ｏ負荷の項目を含む。
【００６６】
ボリュームＩＤの項目には、ボリュームＩＤが登録される。割当て単位の項目には、ボリュームＩＤに対応するＨＤＤの割当て単位を示す情報が登録される。割当て単位が未確定である場合、割当て単位の項目に“未確定”である旨の情報が登録される。空きの項目には、ボリュームＩＤに対応するＨＤＤの未使用スペースの量を示す情報が登録される。例えば、未使用スペースは、未使用のトラックの数（トラック数）によって表される。Ｉ／Ｏ負荷の項目には、ボリュームＩＤに対応するＨＤＤのＩ／Ｏ負荷を示す情報が登録される。例えば、Ｉ／Ｏ負荷は、単位時間当たりのＩ／Ｏ数でもよい。Ｉ／Ｏ負荷は、負荷に応じた複数段階の状態によって表される。本例では、Ｉ／Ｏ負荷を、“低”、“中”、“高”の３段階の状態で表すこととする。“低”は、３段階のうち、最もＩ／Ｏ負荷の低い状態である。“中”は、３段階のうち、２番目にＩ／Ｏ負荷の高い状態である。“高”は、３段階のうち、最もＩ／Ｏ負荷の高い状態である。
【００６７】
例えば、管理テーブル１１１には、ボリュームＩＤが“ＶＯＬ００１”、割当て単位が“トラック”、空きが“３００ＴＲＫ”（ＴＲＫは、TRacKの略）、Ｉ／Ｏ負荷が“低”という情報が登録されている。これは、ボリュームＩＤ“ＶＯＬ００１”に対応するＨＤＤ２１の割当て単位がトラックであり、未使用スペースの量（空きスペースの量）が３００トラック、Ｉ／Ｏ負荷が低い状態であることを示す。
【００６８】
管理テーブル１１１には、その他のＨＤＤについても、割当て単位、空き（空きスペース）、Ｉ／Ｏ負荷の情報が登録される。
なお、アクセス制御部１３０は、所定の条件の下で、割当て単位がシリンダであるＨＤＤにトラック割当てのファイルを割当てることもあるし、割当て単位がトラックであるＨＤＤにシリンダ割当てのファイルを割当てることもある。すなわち、アクセス制御部１３０は、１つのＨＤＤに対し、シリンダ割当てのファイルとトラック割当てのファイルとの混在を一時的に許容することがある。このため、割当て単位の項目には、“シリンダ”および“トラック”の他に“混在”という情報が登録されることもある。
【００６９】
また、管理テーブル１１１では、最大の連続した空きスペース量など、各ディスク装置における各種の空きスペースに関する情報が登録されてもよい。
次に、メインフレーム１００による具体的な処理手順を説明する。
【００７０】
図８は、スペースの割当て例を示すフローチャートである。以下、図８に示す処理をステップ番号に沿って説明する。
（Ｓ１）アクセス制御部１３０は、ユーザにより入力された不特定割当て要求を受け付ける。例えば、ユーザは、ネットワーク１０に接続された端末装置を操作して、メインフレーム１００に不特定割当て要求を入力することができる。
【００７１】
（Ｓ２）アクセス制御部１３０は、初期化ボリュームまたは全ファイル削除のボリュームがあるか否かを判定する。初期化ボリュームまたは全ファイル削除のボリュームがある場合、アクセス制御部１３０は、ステップＳ３に処理を進める。初期化ボリュームまたは全ファイル削除のボリュームの何れもない場合、アクセス制御部１３０は、ステップＳ４に処理を進める。ここで、アクセス制御部１３０は、記憶部１１０に記憶された管理テーブル１１１において割当て単位が“未確定”に設定されたＨＤＤを、初期化ボリュームまたは全ファイル削除のボリュームであると判定する。
【００７２】
（Ｓ３）アクセス制御部１３０は、該当ボリューム（ＨＤＤ）を優先的に選択する。具体的には、アクセス制御部１３０は、ステップＳ２で初期化ボリュームまたは全ファイル削除のボリュームであると判定されたＨＤＤを、それ以外のＨＤＤ（割当て単位が確定済のＨＤＤ）よりも優先して割当て先として選択する。アクセス制御部１３０は、選択候補のＨＤＤが複数の場合、ボリュームＩＤの昇順に選択してもよいし、候補のＨＤＤ毎の記憶容量のサイズなどに応じた別の基準により割当て先のＨＤＤを選択してもよい。
【００７３】
（Ｓ４）アクセス制御部１３０は、不特定割当て要求がトラック割当ての要求であるか否かを判定する。トラック割当ての要求である場合、アクセス制御部１３０は、ステップＳ５に処理を進める。トラック割当ての要求でない場合（すなわち、シリンダ割当ての要求である場合）、アクセス制御部１３０は、ステップＳ１２に処理を進める。前述のように、不特定割当て要求は、割当て単位についてシリンダ、または、トラックの指定が含まれる。このため、割当て単位にトラックが指定された不特定割当て要求は、トラック割当ての要求である。一方、割当て単位にシリンダが指定された不特定割当て要求は、シリンダ割当ての要求である。
【００７４】
（Ｓ５）アクセス制御部１３０は、ステップＳ３において選択されたボリューム（選択済ボリューム）があるか否かを判定する。選択済ボリュームがある場合、アクセス制御部１３０は、ステップＳ６に処理を進める。選択済ボリュームがない場合、アクセス制御部１３０は、ステップＳ７に処理を進める。
【００７５】
（Ｓ６）アクセス制御部１３０は、選択済ボリュームをトラック用とする。具体的には、アクセス制御部１３０は、選択済ボリュームに相当するＨＤＤの割当て単位をトラックに分類する。より具体的には、アクセス制御部１３０は、当該ＨＤＤのボリュームＩＤに対して割当て単位“トラック”を、管理テーブル１１１に登録する。そして、アクセス制御部１３０は、ステップＳ９に処理を進める。
【００７６】
（Ｓ７）アクセス制御部１３０は、トラック割当てのボリュームの中に、不特定割当て要求で指定された要求スペース量を満たすボリューム（ＨＤＤ）があるか否かを判定する。トラック割当てのボリュームの中に、要求スペース量を満たすボリュームがある場合、アクセス制御部１３０は、ステップＳ８に処理を進める。トラック割当てのボリュームの中に、要求スペース量を満たすボリュームがない場合、アクセス制御部１３０は、ステップＳ１５に処理を進める。ここで、不特定割当て要求では、要求スペース量はトラック数により指定される。アクセス制御部１３０は、管理テーブル１１１を参照し、割当て単位が“トラック”であるボリュームＩＤに対応するＨＤＤをトラック割当てのボリュームであると特定する。そして、アクセス制御部１３０は、当該ボリュームＩＤに対応する空きの項目におけるトラック数と、要求スペース量として指定されたトラック数とを比較し、要求スペース量以上の空きトラック数をもつトラック割当てのボリュームを検索する。検索の結果、要求スペース量以上の空きトラック数をもつトラック割当てのボリュームがあれば、アクセス制御部１３０は、要求スペース量を満たすボリュームがあると判定する。一方、検索の結果、要求スペース量以上の空きトラック数をもつトラック割当てのボリュームがなければ、アクセス制御部１３０は、要求スペース量を満たすボリュームがないと判定する。
【００７７】
（Ｓ８）アクセス制御部１３０は、トラック割当てのボリュームを抽出する。具体的には、アクセス制御部１３０は、管理テーブル１１１を参照し、割当て単位が“トラック”であるボリュームＩＤを抽出する。
【００７８】
（Ｓ９）アクセス制御部１３０は、要求スペース量の確認を行う。アクセス制御部１３０は、ステップＳ８で抽出されたボリュームＩＤのうち、要求スペース量以上の空きがあるボリュームＩＤを特定する。なお、ステップＳ３で選択済のボリュームがある場合、選択済ボリュームの空きは、要求スペース量以上であると考えられる（何れのファイルも割当てられていない状態であるため）。
【００７９】
（Ｓ１０）アクセス制御部１３０は、Ｉ／Ｏ負荷の確認を行う。アクセス制御部１３０は、ステップＳ９で特定されたボリュームＩＤのうち、Ｉ／Ｏ負荷が最小であるボリュームＩＤを特定する。なお、ステップＳ３で選択済のボリュームがある場合、選択済ボリュームのＩ／Ｏ負荷は、トラック割当てのボリュームの中では最小と考えられる（何れのファイルも割当てられていない状態であるため）。
【００８０】
（Ｓ１１）アクセス制御部１３０は、ステップＳ１０で特定されたボリュームＩＤに対応するトラック割当てのボリューム（ＨＤＤ）を選択し、不特定割当て要求で指定されたファイルに対して、選択したボリュームのスペースを割当てる。ステップＳ３で選択済のボリュームがある場合、今回の割当て先は当該選択済のボリュームとなる。なお、ステップＳ１４  Ｎｏを経由してステップＳ１１が実行された場合、アクセス制御部１３０は、管理テーブル１１１において、選択したボリュームの割当て単位を“混在”に設定する。そして、アクセス制御部１３０は、処理を終了する。
【００８１】
（Ｓ１２）アクセス制御部１３０は、ステップＳ３において選択されたボリューム（選択済ボリューム）があるか否かを判定する。選択済ボリュームがある場合、アクセス制御部１３０は、ステップＳ１３に処理を進める。選択済ボリュームがない場合、アクセス制御部１３０は、ステップＳ１４に処理を進める。
【００８２】
（Ｓ１３）アクセス制御部１３０は、選択済ボリュームをシリンダ用とする。具体的には、アクセス制御部１３０は、選択済ボリュームに相当するＨＤＤの割当て単位をシリンダに分類する。より具体的には、アクセス制御部１３０は、当該ＨＤＤのボリュームＩＤに対して割当て単位“シリンダ”を、管理テーブル１１１に登録する。そして、アクセス制御部１３０は、ステップＳ１６に処理を進める。
【００８３】
（Ｓ１４）アクセス制御部１３０は、シリンダ割当てのボリュームの中に、不特定割当て要求で指定された要求スペース量を満たすボリューム（ＨＤＤ）があるか否かを判定する。シリンダ割当てのボリュームの中に、要求スペース量を満たすボリュームがある場合、アクセス制御部１３０は、ステップＳ１５に処理を進める。シリンダ割当てのボリュームの中に、要求スペース量を満たすボリュームがない場合、アクセス制御部１３０は、ステップＳ８に処理を進める。ここで、不特定割当て要求では、要求スペース量はトラック数により指定される。アクセス制御部１３０は、管理テーブル１１１を参照し、割当て単位が“シリンダ”であるボリュームＩＤに対応するＨＤＤをシリンダ割当てのボリュームであると特定する。そして、アクセス制御部１３０は、当該ボリュームＩＤに対応する空きの項目におけるトラック数と、要求スペース量として指定されたトラック数とを比較し、要求スペース量以上の空きトラック数をもつシリンダ割当てのボリュームを検索する。検索の結果、要求スペース量以上の空きトラック数をもつシリンダ割当てのボリュームがあれば、アクセス制御部１３０は、要求スペース量を満たすボリュームがあると判定する。一方、検索の結果、要求スペース量以上の空きトラック数をもつシリンダ割当てのボリュームがなければ、アクセス制御部１３０は、要求スペース量を満たすボリュームがないと判定する。
【００８４】
（Ｓ１５）アクセス制御部１３０は、シリンダ割当てのボリュームを抽出する。具体的には、アクセス制御部１３０は、管理テーブル１１１を参照し、割当て単位が“シリンダ”であるボリュームＩＤを抽出する。
【００８５】
（Ｓ１６）アクセス制御部１３０は、要求スペース量の確認を行う。アクセス制御部１３０は、ステップＳ１５で抽出されたボリュームＩＤのうち、要求スペース量以上の空きがあるボリュームＩＤを特定する。なお、ステップＳ３で選択済のボリュームがある場合、選択済ボリュームの空きは、要求スペース量以上であると考えられる（何れのファイルも割当てられていない状態であるため）。
【００８６】
（Ｓ１７）アクセス制御部１３０は、Ｉ／Ｏ負荷の確認を行う。アクセス制御部１３０は、ステップＳ１６で特定されたボリュームＩＤのうち、Ｉ／Ｏ負荷が最小であるボリュームＩＤを特定する。なお、ステップＳ３で選択済のボリュームがある場合、選択済ボリュームのＩ／Ｏ負荷は、トラック割当てのボリュームの中では最小と考えられる（何れのファイルも割当てられていない状態であるため）。
【００８７】
（Ｓ１８）アクセス制御部１３０は、ステップＳ１７で特定されたボリュームＩＤに対応するシリンダ割当てのボリューム（ＨＤＤ）を選択し、不特定割当て要求で指定されたファイルに対して、選択したボリュームのスペースを割当てる。ステップＳ３で選択済のボリュームがある場合、今回の割当て先は当該選択済のボリュームとなる。なお、ステップＳ７  Ｎｏを経由してステップＳ１８が実行された場合、アクセス制御部１３０は、管理テーブル１１１において、選択したボリュームの割当て単位を“混在”に設定する。そして、アクセス制御部１３０は、処理を終了する。
【００８８】
図８の手順によれば、アクセス制御部１３０は、管理テーブル１１１を基に、次の３つの基準Ｒ１，Ｒ２，Ｒ３に従って、不特定割当て要求に応じた割当て先のＨＤＤ（ボリューム）を選択しているといえる。基準Ｒ１は、不特定割当て要求で指定されている割当て単位と、ＨＤＤが分類されている割当て単位との一致である。基準Ｒ２は、ＨＤＤの未使用スペースの量が、不特定割当て要求で指定されている要求スペース量を満たすことである。基準Ｒ３は、Ｉ／Ｏ負荷が小さいことである。
【００８９】
ただし、アクセス制御部１３０は、基準Ｒ１，Ｒ２に従って、割当て先のＨＤＤを決定できない場合には、例外的に、別の割当て単位に分類されたＨＤＤを割当て先の候補とすることを許容する。
【００９０】
また、ステップＳ７  Ｎｏ、または、ステップＳ１４  Ｎｏのとき、割当て単位が“混在”のボリューム（ＨＤＤ）がある場合、アクセス制御部１３０は、割当て単位が“混在”のボリュームを、優先的に、今回の割当て先として選択することが考えられる。割当て単位が“混在”のボリュームが新たに生じることを抑制するためである。
【００９１】
図９は、スペースの割当ての第１の具体例を示す図である。図９では、ＪＣＬのＤＤ（Data Definition）文により記述された不特定割当て要求３０により、“ＦＩＬＥ１”で示されるファイルに対して、未使用スペースを割当てる例を示す。不特定割当て要求３０では、割当て単位として、トラックが指定されている（ＳＰＡＣＥパラメータの第１引数“ＴＲＫ”）。また、不特定割当て要求３０では、要求スペース量として、５００ＴＲＫ（トラック数５００分のスペース）が指定されている（ＳＰＡＣＥパラメータの第２引数“（ｍ，ｎ）”の一次容量ｍ＝“５００”ＴＲＫ）。なお、ＳＰＡＣＥパラメータでは、単一のボリュームで一次容量ｍを確保できない場合の二次容量ｎの指定（別のボリュームから指定された割当て単位でトラック数ｎのスペースを確保する指定）も可能である。
【００９２】
更に、不特定割当て要求３０では、ＵＮＩＴ名として“ＳＹＳＤＡ”が指定されている。ＵＮＩＴは、割当て先の装置名を指定するためのパラメータである。ＵＮＩＴ名“ＳＹＳＤＡ”は、メインフレーム１００により業務用のファイルの格納に用いられる全てのＨＤＤ（ストレージ装置２０が備えるＨＤＤ）に対応する名称（予め定められている名称）である。すなわち、不特定割当て要求３０では、割当て先として、特定のＨＤＤの指定（個別のＨＤＤの指定）を含まないことになる。これが「不特定」割当て要求と呼ばれる理由である。ここでは、ＵＮＩＴ名“ＳＹＳＤＡ”は、ＨＤＤ２１，２２，２３，２４，２５，２６の集合を示すものとする。
【００９３】
また、アクセス制御部１３０が不特定割当て要求３０を受け付けたタイミングにおいて、記憶部１１０に記憶された管理テーブル１１１は、各ＨＤＤに対して次の状態を示す。
ＨＤＤ２１は、割当て単位“トラック”、空き“３００ＴＲＫ”、Ｉ／Ｏ負荷“低”である。ＨＤＤ２２は、割当て単位“シリンダ”、空き“３００ＴＲＫ”、Ｉ／Ｏ負荷“低”である。ＨＤＤ２３は、割当て単位“トラック”、空き“６００ＴＲＫ”、Ｉ／Ｏ負荷“中”である。ＨＤＤ２４は、割当て単位“シリンダ”、空き“６００ＴＲＫ”、Ｉ／Ｏ負荷“低”である。ＨＤＤ２５は、割当て単位“トラック”、空き“９００ＴＲＫ”、Ｉ／Ｏ負荷“高”である。ＨＤＤ２６は、割当て単位“シリンダ”、空き“９００ＴＲＫ”、Ｉ／Ｏ負荷“中”である。
【００９４】
アクセス制御部１３０は、不特定割当て要求３０で指定された割当て単位“トラック”に対し、管理テーブル１１１を参照して、割当て単位がトラックであるボリュームＩＤ“ＶＯＬ００１”、“ＶＯＬ００３”、“ＶＯＬ００５”に選択候補を絞り込む（基準Ｒ１での絞り込み）。
【００９５】
次に、アクセス制御部１３０は、不特定割当て要求３０で指定された要求スペース量“５００”に対し、管理テーブルを参照して、基準Ｒ１の絞り込み結果を、未使用スペースの量が“５００ＴＲＫ”以上であるボリュームＩＤ“ＶＯＬ００３”、“ＶＯＬ００５”に絞り込む（基準Ｒ２での絞り込み）。
【００９６】
更に、アクセス制御部１３０は、管理テーブルを参照して、基準Ｒ２の絞り込み結果を、Ｉ／Ｏ負荷が最低であるボリュームＩＤ“ＶＯＬ００３”に絞り込む（基準Ｒ３での絞り込み）。
【００９７】
そして、アクセス制御部１３０は、最終的に絞り込まれたボリュームＩＤ“ＶＯＬ００３”に対応するＨＤＤ２３を割当て先として確定する。ＨＤＤ２３は、トラック割当てのボリューム（トラック用ボリューム）である。アクセス制御部１３０は、該当のファイルに対してＨＤＤ２３の記憶領域を割当てる。アクセス制御部１３０は、該当のファイルをＨＤＤ２３の割当てた記憶領域に書き込む。
【００９８】
アクセス制御部１３０は、不特定割当て要求で割当て単位としてシリンダが指定された場合も、割当て単位がシリンダに分類されているＨＤＤ２２，２４，２６を絞り込み、更に、要求スペース量、Ｉ／Ｏ負荷の確認に応じて、割当て先を確定する。
【００９９】
図１０は、スペースの割当ての第２の具体例を示す図である。図１０では、図９と同様に、ＪＣＬのＤＤ文により記述された不特定割当て要求３０により、“ＦＩＬＥ１”で示されるファイルに対して、未使用スペースを割当てる例を示す。以下の説明では、図７で例示した管理テーブル１１１とは設定項目は同じであるが、設定値が異なる管理テーブルに関して述べる場合、「管理テーブル」と表記し、符号を付さないこととする。
【０１００】
アクセス制御部１３０が不特定割当て要求３０を受け付けたタイミングにおいて、記憶部１１０に記憶された管理テーブルは、各ＨＤＤに対して次の状態を示すとする。
ＨＤＤ２１は、割当て単位“トラック”、空き“２００ＴＲＫ”、Ｉ／Ｏ負荷“低”である。ＨＤＤ２２は、割当て単位“シリンダ”、空き“３００ＴＲＫ”、Ｉ／Ｏ負荷“低”である。ＨＤＤ２３は、割当て単位“トラック”、空き“３００ＴＲＫ”、Ｉ／Ｏ負荷“中”である。ＨＤＤ２４は、割当て単位“シリンダ”、空き“６００ＴＲＫ”、Ｉ／Ｏ負荷“低”である。ＨＤＤ２５は、割当て単位“トラック”、空き“４００ＴＲＫ”、Ｉ／Ｏ負荷“高”である。ＨＤＤ２６は、割当て単位“シリンダ”、空き“９００ＴＲＫ”、Ｉ／Ｏ負荷“中”である。
【０１０１】
アクセス制御部１３０は、不特定割当て要求３０で指定された割当て単位“トラック”に対し、管理テーブルを参照して、割当て単位がトラックであるボリュームＩＤ“ＶＯＬ００１”、“ＶＯＬ００３”、“ＶＯＬ００５”の未使用スペースの量を確認する。この場合、ボリュームＩＤ“ＶＯＬ００１”、“ＶＯＬ００３”、“ＶＯＬ００５”の未使用スペースの量は何れも不特定割当て要求３０の要求スペース量である“５００ＴＲＫ”未満であり、何れも未使用スペースが不足している。このため、アクセス制御部１３０は、管理テーブルを参照して、割当て単位がシリンダであるボリュームＩＤ“ＶＯＬ００２”、“ＶＯＬ００４”、“ＶＯＬ００６”に選択候補を絞り込む。この絞り込みも便宜的に基準Ｒ１による絞り込みと称する。
【０１０２】
次に、アクセス制御部１３０は、不特定割当て要求３０で指定された要求スペース量“５００”に対し、管理テーブルを参照して、基準Ｒ１の絞り込み結果を、未使用スペースの量が“５００ＴＲＫ”以上であるボリュームＩＤ“ＶＯＬ００４”、“ＶＯＬ００６”に絞り込む（基準Ｒ２での絞り込み）。
【０１０３】
更に、アクセス制御部１３０は、管理テーブルを参照して、基準Ｒ２の絞り込み結果を、Ｉ／Ｏ負荷が最低であるボリュームＩＤ“ＶＯＬ００４”に絞り込む（基準Ｒ３での絞り込み）。
【０１０４】
そして、アクセス制御部１３０は、最終的に絞り込まれたボリュームＩＤ“ＶＯＬ００４”に対応するＨＤＤ２４を割当て先として確定する。ＨＤＤ２４は、シリンダ割当てのボリューム（シリンダ用ボリューム）である。ただし、今回の割当てにより、トラック割当てのファイルとシリンダ割当てのファイルとがＨＤＤ２４に混在することになる。このようにトラック割当てのファイルとシリンダ割当てのファイルとが混在するＨＤＤを、混在ボリュームと呼ぶこととする。アクセス制御部１３０は、管理テーブルにおけるＨＤＤ２４（ボリュームＩＤ“ＶＯＬ００４”）の割当て単位を、“混在”に更新する。
【０１０５】
アクセス制御部１３０は、該当のファイルに対してＨＤＤ２４の記憶領域を割当てる。アクセス制御部１３０は、該当のファイルをＨＤＤ２４の割当てた記憶領域に書き込む。ただし、この場合、未使用スペースの開始が非シリンダ境界となり得る。例えば、図１０の例では、ＨＤＤ２４における所定のシリンダの全てではなく、当該シリンダの一部のみがトラック割当てのファイルに割当てられることになる。
【０１０６】
なお、アクセス制御部１３０は、割当て単位としてシリンダを指定した不特定割当て要求に対し、割当て単位がシリンダに分類されたＨＤＤから要求スペース量を確保できない場合もある。この場合、アクセス制御部１３０は、当該不特定割当て要求に対し、割当て単位がトラックに分類されたＨＤＤの記憶領域を割当てることもある。
【０１０７】
このようにアクセス制御部１３０は、不特定割当て要求３０で指定された割当て単位のＨＤＤの記憶領域を確保できなくても、別の割当て単位に分類されたＨＤＤを割当て先とすることで、ＨＤＤの利用効率を向上できる。
【０１０８】
なお、アクセス制御部１３０は、混在ボリュームを増やさないようにするため、不特定割当て要求に対して要求スペース量を満たすＨＤＤがない場合、次回から混在ボリュームを優先して割当て先に使用する。
【０１０９】
すなわち、アクセス制御部１３０は、新規のシリンダ割当てのファイルに対してシリンダ単位に分類された各ＨＤＤの空き容量が不足する場合、既存のシリンダ割当てのファイルおよび既存のトラック割当てのファイルが混在するＨＤＤを検出する。アクセス制御部１３０は、他のＨＤＤよりも優先して、新規のシリンダ割当てのファイルを、検出したＨＤＤに割当てる。あるいは、アクセス制御部１３０は、新規のトラック割当てのファイルに対してトラック単位に分類された各ＨＤＤの空き容量が不足する場合、同様に、既存のシリンダ割当てのファイルおよび既存のトラック割当てのファイルが混在するＨＤＤを検出する。アクセス制御部１３０は、他のＨＤＤよりも優先して、新規のトラック割当てのファイルを、検出したＨＤＤに割当てる。
【０１１０】
図１１は、混在ボリュームから未確定ボリュームへの変更を示す図である。ボリューム管理部１２０は、混在ボリュームの割当て単位を“未確定”に変更することもある。例えば、ある時点において、ＨＤＤ２４は、シリンダ割当てのファイルおよびトラック割当てのファイルが混在する混在ボリュームであるとする。
【０１１１】
ここで、運用上の都合から、ＨＤＤ２４に格納された全てのファイルが削除されることがある。例えば、ＨＤＤ２４が初期化されたり、所定のコマンドによりＨＤＤ２４に格納された全てのファイルが削除されたりする。
【０１１２】
ＨＤＤ２４について、全ファイルが削除される場合、ＨＤＤ２４の全ての記憶領域が未使用スペースとなる。このため、ボリューム管理部１２０は、ＨＤＤ２４について、全ファイルが削除されると、ＨＤＤ２４に対する割当て単位の分類をリセットする。具体的には、ボリューム管理部１２０は、記憶部１１０に記憶された管理テーブルにおいて、ＨＤＤ２４のボリュームＩＤに対する割当て単位を“未確定”に設定する。こうして、割当て単位が未確定のＨＤＤ２４については、次回以降の不特定割当て要求に応じて、アクセス制御部１３０により、割当て単位をシリンダとするかトラックとするかが決定される。
【０１１３】
ここで、ボリューム管理部１２０は、割当て単位が“シリンダ”または“トラック”に分類されたＨＤＤについても、該当のＨＤＤ内の全ファイルが削除されたタイミングで、管理テーブルにおける該当のＨＤＤの割当て単位を“未確定”に設定する。
【０１１４】
なお、ＨＤＤの割当て単位を“未確定”に設定する処理は、ボリューム管理部１２０ではなく、アクセス制御部１３０により実行されてもよい。
図１２は、混在ボリュームからシリンダ割当てボリュームへの変更を示す図である。ボリューム管理部１２０は、混在ボリュームの割当て単位を“シリンダ”に変更することもある。例えば、ある時点において、ＨＤＤ２４は、シリンダ割当てのファイルおよびトラック割当てのファイルが混在する混在ボリュームであるとする。
【０１１５】
ここで、混在ボリュームからトラック割当てのファイルのみが全て削除されることがある。例えば、トラック割当てのファイルが混在ボリュームから一括して削除されることもあれば、トラック割当てのファイルが混在ボリュームから徐々に削除されていき、最終的にトラック割当てのファイルが全て削除されることもある。より具体的には、混在ボリュームにおけるトラック割当てのファイルが所定の業務処理に用いられる一時ファイル（テンポラリファイル）である場合、該当の業務処理が完了してしまえば、一時ファイルも削除される。特に、不特定割当て要求の対象となるファイルは、一時ファイルであることが多いので、何れは全て削除される可能性が高い。
【０１１６】
ボリューム管理部１２０は、ＨＤＤ２４（混在ボリューム）からトラック割当ての全ファイルが削除されると、該当のＨＤＤに対する割当て単位を“シリンダ”に設定する（割当て単位が非混在になったため）。具体的には、ボリューム管理部１２０は、記憶部１１０に記憶された管理テーブルにおいて、該当のＨＤＤのボリュームＩＤに対する割当て単位を“シリンダ”に設定する。
【０１１７】
ここで、ボリューム管理部１２０は、混在ボリュームであるＨＤＤ２４からトラック割当てのファイルが全て削除されたことを、例えば、不特定割当て要求のログによって確認する。例えば、ログは、アクセス制御部１３０により記憶部１１０に記憶される。アクセス制御部１３０は、ファイルの識別名に対応付けて、不特定割当て要求の内容（指定された割当て単位）および実際に割当てたＨＤＤのボリュームＩＤをログに記録することが考えられる。アクセス制御部１３０は、ファイルの削除の操作もログに記録する。例えば、アクセス制御部１３０は、削除されたファイルの識別名をログに記録する。このようにすれば、ボリューム管理部１２０は、ログに基づいて、混在ボリュームであるＨＤＤ２４からトラック割当てのファイルが全て削除されたことを検出できる。例えば、ボリューム管理部１２０は、割当て単位の変更を行うために、ファイルの削除が行われるたびにログを確認してもよいし、所定の周期でログを確認してもよい。
【０１１８】
なお、ＨＤＤの割当て単位を“混在”から“シリンダ”に変更する処理は、ボリューム管理部１２０ではなく、アクセス制御部１３０により実行されてもよい。
図１３は、混在ボリュームからトラック割当てボリュームへの変更を示す図である。ボリューム管理部１２０は、混在ボリュームの割当て単位を“トラック”に変更することもある。例えば、ある時点において、ＨＤＤ２４は、シリンダ割当てのファイルおよびトラック割当てのファイルが混在する混在ボリュームであるとする。
【０１１９】
ここで、混在ボリュームからシリンダ割当てのファイルのみが全て削除されることがある。例えば、シリンダ割当てのファイルが混在ボリュームから一括して削除されることもあれば、シリンダ割当てのファイルが混在ボリュームから徐々に削除されていき、最終的にシリンダ割当てのファイルが全て削除されることもある。より具体的には、混在ボリュームにおけるシリンダ割当てのファイルが所定の業務処理に用いられる一時的なファイルである場合、該当の業務処理が完了してしまえば、一時的なファイルも削除される。前述のように、不特定割当て要求の対象となるファイルは、一時ファイルであることが多いので、何れは全て削除される可能性が高い。
【０１２０】
ボリューム管理部１２０は、ＨＤＤ２４（混在ボリューム）からシリンダ割当ての全ファイルが削除されると、該当のＨＤＤに対する割当て単位を“トラック”に設定する（割当て単位が非混在になったため）。具体的には、ボリューム管理部１２０は、記憶部１１０に記憶された管理テーブルにおいて、該当のＨＤＤのボリュームＩＤに対する割当て単位を“トラック”に設定する。
【０１２１】
ここで、ボリューム管理部１２０は、混在ボリュームであるＨＤＤ２４からシリンダ割当てのファイルが全て削除されたことを、例えば、アクセス制御部１３０によって記録される前述のログによって検出する。例えば、ボリューム管理部１２０は、割当て単位の変更を行うために、ファイルの削除が行われるたびにログを確認してもよいし、所定の周期でログを確認してもよい。
【０１２２】
なお、ＨＤＤの割当て単位を“混在”から“トラック”に変更する処理は、ボリューム管理部１２０ではなく、アクセス制御部１３０により実行されてもよい。
このように、メインフレーム１００は、各ＨＤＤの割当て単位を、トラック割当て、および、シリンダ割当ての何れかに分類する。そして、メインフレーム１００は、不特定割当て要求で指定された割当て単位に合致する分類に属するＨＤＤを、割当て先とする。これにより、シリンダ割当てのファイルは、割当て単位がシリンダであるＨＤＤに割当てられ、トラック割当てのファイルは、割当て単位がトラックであるＨＤＤに割当てられる（ただし、例外もある）。このため、１つのＨＤＤに着目したときに当該ＨＤＤにおいて、未使用スペースの断片化を抑制でき、連続した未使用スペースを確保し易くなる。
【０１２３】
図１４は、連続した未使用スペースの例を示す図である。図１４では、シリンダ割当て（割当て単位がシリンダ）のＨＤＤ２１，２２と、トラック割当て（割当て単位がトラック）のＨＤＤ２４，２５とを例示している（ＨＤＤ２３，２６については省略している）。
【０１２４】
ＨＤＤ２１，２２の例でいえば、ＨＤＤ２１，２２それぞれに割当てられるファイルは、主に、シリンダ割当てのファイルとなる。このため、ＨＤＤ２１，２２では、図４で例示した未使用スペースの断片化は生じにくい。なぜなら、１つのシリンダに着目したときに、当該シリンダの一部の記憶領域のみが特定のファイルに割当てられる可能性が低減し、シリンダ割当てのファイルに対してシリンダ境界から記憶領域の割当てを行える可能性が高まるからである。
【０１２５】
また、ＨＤＤ２４，２５の例でいえば、ＨＤＤ２４，２５それぞれに割当てられるファイルは、主に、トラック割当てのファイルとなる。このため、ＨＤＤ２４，２５でも、図４で例示した未使用スペースの断片化は生じにくい。理由は次の通りである。１つのシリンダに着目したときに、当該シリンダの一部の記憶領域のみが、あるファイルに割当てられたとしても、その後、ＨＤＤ２４，２５に対して割当てられるファイルはトラック割当てのファイルである可能性が高い。トラック割当てのファイルであれば、シリンダ境界から記憶領域を行う制約がないので、シリンダの残りの未使用スペースを割当てられる可能性が高くなり、未使用スペースが断片化される可能性が低くなる。
【０１２６】
このように、メインフレーム１００によれば、同一ＨＤＤにおいて、シリンダ割当てのファイル、および、トラック割当てのファイルの混在を軽減することができる。その結果、未使用スペースの断片化を抑えることができる。未使用スペースの断片化が抑えられることで、要求スペース量に対して連続した未使用スペースを確保できる可能性が高まる。こうして、未使用スペースが細切れになって使用されずに残ることを抑えられ、各ＨＤＤの記憶領域を効率的に利用可能となる。
【０１２７】
また、ＪＣＬを修正することなく、断片化を軽減できるので、不特定割当てのジョブが、スペース不足により異常終了することも軽減できる。更に、ユーザがボリューム群の事前定義を行わなくても、メインフレーム１００側で、割当て単位を分類するので、運用に伴うユーザの作業の省力化を図れるという利点もある。また、ＪＣＬにおいて、不特定割当て要求を入力すればよく、ユーザに割当て単位を意識した入力を強いずに済み、運用に伴うユーザの作業の省力化を図れるという利点もある。このように、メインフレーム１００によれば、ＪＣＬを修正することなく、断片化を抑制できる適切な割当て先のボリューム（ＨＤＤ）の選択を行えるようになる。
【０１２８】
なお、第１の実施の形態の情報処理は、処理部１ｂにプログラムを実行させることで実現できる。また、第２の実施の形態の情報処理は、プロセッサ１０１にプログラムを実行させることで実現できる。プログラムは、コンピュータ読み取り可能な記録媒体１３に記録できる。
【０１２９】
例えば、プログラムを記録した記録媒体１３を配布することで、プログラムを流通させることができる。また、プログラムを他のコンピュータに格納しておき、ネットワーク経由でプログラムを配布してもよい。コンピュータは、例えば、記録媒体１３に記録されたプログラムまたは他のコンピュータから受信したプログラムを、ＲＡＭ１０２やＨＤＤ１０３などの記憶装置に格納し（インストールし）、当該記憶装置からプログラムを読み込んで実行してもよい。
【符号の説明】
【０１３０】
１  情報処理装置
１ａ  記憶部
１ｂ  処理部
２  ストレージ
２ａ，２ｂ，２ｃ，２ｄ  ディスク装置
Ｔ１  管理テーブル
【図１】
2018195014.tif 000003
【図２】
2018195014.tif 000004
【図３】
2018195014.tif 000005
【図４】
2018195014.tif 000006
【図５】
2018195014.tif 000007
【図６】
2018195014.tif 000008
【図７】
2018195014.tif 000009
【図８】
2018195014.tif 000010
【図９】
2018195014.tif 000011
【図１０】
2018195014.tif 000012
【図１１】
2018195014.tif 000013
【図１２】
2018195014.tif 000014
【図１３】
2018195014.tif 000015
【図１４】
2018195014.tif 000016