(57)【特許請求の範囲】
【請求項１】
通常の読み書きを第１のデータ保持部に対して行い、
ある時点での前記第１のデータ保持部のスナップショットイメージを第２のデータ保持部に保存し、
前記第２のデータ保持部にスナップショットイメージを保存した時点以降の前記第１のデータ保持部へのデータ書替えに伴う更新データと、その世代を示す情報と、その更新領域を示す情報とを含む履歴情報を第３のデータ保持部に順次保存し、
読出されるべきスナップショットイメージの世代及び領域の指定に応じて、前記第３のデータ保持部に保存される各履歴情報を参照し、読出されるべきスナップショットイメージの保存場所を知得し、
前記保存場所に応じてデータの読出し元を前記第２のデータ保持部及び第３のデータ保持部のいずれかに切替え、指定された世代及び領域のスナップショットイメージを読み出すことを特徴とするスナップショットイメージの世代管理方法。
【請求項２】
前記第１のデータ保持部を用いずに、通常の書込みを前記第３のデータ保持部に履歴情報を保存する形で行い、通常の読出しを前記第３のデータ保持部に保存される最新の履歴情報を読み出す形で行うことを特徴とする請求項１記載のスナップショットイメージの世代管理方法。
【請求項３】
前記世代を示す情報は数値で表現されることを特徴とする請求項１又は２記載のスナップショットイメージの世代管理方法。
【請求項４】
前記第１のデータ保持部のデータを書替えるとき、前記第３のデータ保持部に保存されている履歴情報のうち、現在の世代と同じ世代に対応する履歴情報であって当該書替えの領域に含まれる領域を示す履歴情報を全て削除することを特徴とする請求項１又は２記載のスナップショットイメージの世代管理方法。
【請求項５】
前記第３のデータ保持部が前記履歴情報の保持量限界を超える場合、もしくは保持量の余裕が予め設定した大きさと同じか又はそれを下回る場合には、前記第３のデータ保持部が保存している最も古い世代の履歴情報を前記第２のデータ保持部へ反映し、前記第３のデータ保持部における当該履歴情報を削除してその領域を次に保存すべき履歴情報の保存のために開放することを特徴とする請求項１又は２記載のスナップショットイメージの世代管理方法。
【請求項６】
前記第３のデータ保持部が前記履歴情報の保持量限界を超える場合、もしくは保持量の余裕が予め設定した大きさと同じか又はそれを下回る場合には、予め決めた規則に従う大きさの領域を予め用意されたデータ保持領域のプール領域から獲得して前記第３のデータ保持部に充当することを特徴とする請求項１又は２記載のスナップショットイメージの世代管理方法。
【請求項７】
前記第３のデータ保持部が前記履歴情報の保持量限界を超える場合、もしくは保持量の余裕が予め設定した大きさと同じか又はそれを下回る場合には、前記第３のデータ保持部が保存している最も古い世代の履歴情報を第４のデータ保持部へ移し、前記第３のデータ保持部における当該履歴情報があった領域を次に保存すべき履歴情報の保存のために開放することを特徴とする請求項１又は２記載のスナップショットイメージの世代管理方法。
【請求項８】
通常の読み書きを行うための第１のデータ保持部と、
ある時点での前記第１のデータ保持部のスナップショットイメージを保存する第２のデータ保持部と、
前記第２のデータ保持部にスナップショットイメージを保存した時点以降の前記第１のデータ保持部へのデータ書替えに伴う更新データと、その世代を示す情報と、その更新領域を示す情報とを含む履歴情報を保存する第３のデータ保持部と、
読出されるべきスナップショットイメージの世代及び領域の指定に応じて、前記第３のデータ保持部に保存される各履歴情報を参照し、読出されるべきスナップショットイメージの保存場所を知得する手段と、
前記保存場所に応じてデータの読出し元を前記第２のデータ保持部及び第３のデータ保持部のいずれかに切替える手段と
を具備し、指定された世代及び領域のスナップショットイメージを読み出すことを特徴とするスナップショットイメージの世代管理装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、スナップショットイメージの世代管理方法及び世代管理装置に関する。
【０００２】
【従来の技術】
従来、ディスク装置やＲＡＩＤ（Redundant Arrays of Independent/Inexpensive Disks）装置又はそのＬＵ（Logical Unit：一般にこれをボリュームとして使用）などの記憶装置を備えたコンピュータにおいては、主にデータのバックアップやデータ集計などのため、特定時点（再実行が可能な時点、トランザクションの区切りなど）のデータであるスナップショットイメージやその更新履歴を専用の記憶領域（実体はディスク等の記憶領域）に保持している。スナップショットイメージや更新履歴を保存する方式には、図１０に示すようなものがある。
【０００３】
図１０（ａ）に示す方式では、ホスト１１１からデータ保持部１０１に対して通常の読み書きを行い、特定時点のスナップショットイメージを採取してデータ保持部１０２に保存し（また、必要に応じてそのバックアップをデータ保持部１０４に保存し）、その後のデータ保持部１０１へのデータ書替えに伴う更新履歴をデータ保持部１０３に順次保存する。
【０００４】
ここで、データ保持部１０３に保持される更新履歴（更新データを含む）の保持領域は、予め見積もったサイズに設定されている。このため、そのサイズを上回る更新が行われようとした場合、新たな更新履歴は保存されず、アプリケーションプログラムに対して警告（更新履歴情報量の見積誤りによるエラーなど）を発するようにしている。
【０００５】
一方、図１０（ｂ）に示されるように、アプリケーションプログラムによってはイメージ参照（ある時点の統計データ作成等に利用）のために複数世代のスナップショットイメージが要求される場合がある。この場合、データ保持部１０２に保存されているスナップショットイメージに対し、データ保持部１０３に保存されているある世代までの差分を反映（上書き）させるような処理が行われる。ただし、参照したスナップショットイメージより前の世代の同イメージは、上書きの際に消滅されてしまう。
【０００６】
また、図１０（ｃ）に示されるように、多くの世代のスナップショットイメージを保存できるようにするため、データ保持部１０１のミラーとしてのデータ保持部１０３を用意すると共に、複数台のデータ保持部（ディスク等）１０２ａ，１０２ｂ，…を用意する手法もある。ただし、設置スペースやコストを念頭に入れる必要がある。
【０００７】
【発明が解決しようとする課題】
上述した図１０（ａ）に示す方式では、データ保持部１０３は予め想定していた限界量すなわち更新履歴情報の保持用領域のサイズを上回る履歴情報を記録することができない。このため、その場でアプリケーションプログラムを中止又は一時停止し、更新履歴情報の保持用領域を拡張又は別の領域を確保してそこに当該情報を吐き出してからアプリケーションプログラムを再開する等の対応が必要であった。その対応は、前記サイズの再見積や領域の捻出など、一般に人による手作業を伴い、ディスク装置やメモリの増設や再構成も含め、長時間のアプリケーションサービスの停止と予定外の作業工数が発生し、サービス利用者の不満とサービス提供者の負担が増加してしまうという問題がある。
【０００８】
また、図１０（ｂ）に示したように、ある世代のスナップショットイメージを参照しようとする場合、データ保持部１０２に保存されているスナップショットイメージに対し、データ保持部１０３に保存されているある世代までの差分を反映（上書き）させるような処理が行われるため、参照したスナップショットイメージより前の世代の同イメージは既に消滅しているために参照することができないという問題がある。
【０００９】
また、図１０（ｃ）に示したように、多くの世代のスナップショットイメージを保存できるようにするため多くのデータ保持部もしくは大きな記憶領域（ディスクやボリュームの数等）を用意すると、設置スペースやコストの増加を招いてしまうという問題がある。
【００１０】
本発明は上記実状に鑑みてなされたものであり、一度ある世代のスナップショットイメージを参照してもそれより前の世代の同イメージを後で参照することができ、より小さなデータ保持部で複数の世代別スナップショットイメージを参照することのできるスナップショットイメージの世代管理方法及び世代管理装置を提供することを目的とする。
【００１１】
【課題を解決するための手段】
本発明に係るスナップショットイメージの世代管理方法は、通常の読み書きを第１のデータ保持部に対して行い、ある時点での前記第１のデータ保持部のスナップショットイメージを第２のデータ保持部に保存し、前記第２のデータ保持部にスナップショットイメージを保存した時点以降の前記第１のデータ保持部へのデータ書替えに伴う更新データと、その世代を示す情報と、その更新領域を示す情報とを含む履歴情報を第３のデータ保持部に順次保存し、読出されるべきスナップショットイメージの世代及び領域の指定に応じて、前記第３のデータ保持部に保存される各履歴情報を参照し、読出されるべきスナップショットイメージの保存場所を知得し、前記保存場所に応じてデータの読出し元を前記第２のデータ保持部及び第３のデータ保持部のいずれかに切替え、指定された世代及び領域のスナップショットイメージを読み出すことを特徴とする。
【００１３】
また、本発明に係るスナップショットイメージの世代管理装置は、通常の読み書きを行うための第１のデータ保持部と、ある時点での前記第１のデータ保持部のスナップショットイメージを保存する第２のデータ保持部と、前記第２のデータ保持部にスナップショットイメージを保存した時点以降の前記第１のデータ保持部へのデータ書替えに伴う更新データと、その世代を示す情報と、その更新領域を示す情報とを含む履歴情報を保存する第３のデータ保持部と、読出されるべきスナップショットイメージの世代及び領域の指定に応じて、前記第３のデータ保持部に保存される各履歴情報を参照し、読出されるべきスナップショットイメージの保存場所を知得する手段と、前記保存場所に応じてデータの読出し元を前記第２のデータ保持部及び第３のデータ保持部のいずれかに切替える手段とを具備し、指定された世代及び領域のスナップショットイメージを読み出すことを特徴とする。
【００１４】
【発明の実施の形態】
以下、図面を参照して本発明の実施形態を説明する。
【００１５】
図１は、本発明の一実施形態に係るスナップショットイメージの世代管理装置が適用されるシステム構成を示すブロック図である。
【００１６】
ホスト計算機１１は、システム全体の動作を司るものであり、スナップショットイメージの採取等を制御するアプリケーションプログラムを備えている。
【００１７】
第１のデータ保持部１（以下、データ保持部１と称す）は、稼動系のストレージ（ディスク等）であり、ホスト計算機（アプリケーションプログラム）１１が通常の読み書きを行うのに使用される。
【００１８】
第２のデータ保持部２（以下、データ保持部２と称す）は、ある時点でのデータ保持部１のスナップショットイメージのコピーを保持するストレージ（ディスク等）であり、ホスト計算機１１のアプリケーションプログラム又はオペレータからのスナップショット採取指示に応じて上記コピーの保存を行う。
【００１９】
第３のデータ保持部３（以下、データ保持部３と称す）は、データ保持部１へのデータ書替えに関する世代毎の履歴情報（ＬＯＧ）を保存するストレージである。図１では、N世代までが反映されたスナップショットイメージがデータ保持部２に保存されており、そのイメージに対する更新データとしてN+1世代，N+2世代，…，N+M世代の更新データをもつ履歴情報がデータ保持部３に保存されている状態が示されている。なお、データ保持部３は、ホスト計算機１１の内部に設けられていてもよい。
【００２０】
上記履歴情報には、図２に示されるように、データ保持部２にスナップショットイメージを保存した時点以降の前記データ保持部１へのデータ書替えに伴う「更新データ」と、その「世代」を示す情報と、その更新の「領域」（「位置」及び「サイズ」）を示す情報とが含まれる。この場合、「世代」は整数値などの数値（世代の境界を示す日付や時刻）もしくは記号で表現され、「位置」はセクタアドレスなどで表現され、「サイズ」はバイト数などで表現される。
【００２１】
上記「世代」の情報を数値で表現すると、その情報のサイズを日付や時刻よりも小さくでき、世代指定読出し時等で必要となる世代情報同士の比較コスト（比較時間や比較のためのロジック）も小さくできる。
【００２２】
上記データ保持部３は、履歴情報の保持量限界を超える場合、もしくは保持量の余裕が予め設定した大きさと同じか又はそれを下回る場合には、最も古い世代の履歴情報から順にデータ保持部２へ反映してそのデータ保持部２の内容を更新し、データ保持部３における当該履歴情報を削除してその領域を次の履歴情報の保存のために開放し、その旨をホスト計算機１１のアプリケーションプログラム又はオペレータヘ通知する。
【００２３】
これにより、データ保持部３に保持される履歴情報がその保持限界量を超えても、データ保持部１のデータ書替えとデータ保持部３への前記履歴情報の記録を続けていくことができ、サービス（アプリケーション）を停めることなく継続できる。
【００２４】
データ読出し元選択部４は、読出されるべきスナップショットイメージの世代及び領域の指定に応じて、データ保持部３に保存される各履歴情報を参照し、読出されるべきスナップショットイメージの保存場所を知得し、その保存場所に応じてデータの読出し元をデータ保持部２及びデータ保持部３のいずれかに切替え、指定された世代及び領域のスナップショットイメージを読み出せるようにするものである。
【００２５】
具体的には、データ読出し元選択部４は、指定された世代及びその世代以前の履歴情報を参照し、指定された領域の少なくとも一部がそれら履歴情報に示される各更新領域に一致するか否かを確認する。一致する領域があれば、データの読出し元をデータ保持部３に切替え、その領域のデータを読み出す。また、一致しない領域がある場合には、データの読出し元をデータ保持部２に切替え、その一致しない領域のデータを読み出す。
【００２６】
例えば、図３に示すように、N+2世代のある領域（図中の斜線部）が指定されている場合、指定された領域の少なくとも一部がN+2世代及びN+1世代の各更新領域に一致するか否かを確認する。図３の例ではN+2世代の更新領域のうちの領域Ｒ１が一致する領域であるので、その領域のデータをデータ保持部３から読み出す。また、N+2世代及びN+1世代の各更新領域に一致しない領域Ｒ２については、データ保持部３から読み出す。
【００２７】
共通プール５は、システム共通のプール領域を提供するものであり、必要に応じて使用される。例えば、履歴情報の保持量限界を超える場合、もしくは保持量の余裕が予め設定した大きさと同じか又はそれを下回る場合には、システム共通の共通プール（プール領域）５から予め決めた大きさ（例えば不足サイズ＋その２倍のマージンなど）の領域を予め用意されたデータ保持領域のプール領域から獲得してデータ保持部３に充当し、当該データ保持部３の大きさを拡大する。
【００２８】
共通プール５を利用した場合、データ保持部３が溢れてもデータ保持部２のスナップショットイメージの世代を維持することが可能となる。なお、この場合、システムのプール減少のトレンドモニタに基づくタイムリーなプール容量追加や、データ保持部３に継続的な余裕ができたらその分を前記プールヘ返却する等の処理が必要となる。
【００２９】
図４に、本実施形態と従来技術との基本構成の違いを対比して示す。図中の左側に従来技術の構成が示され、右側に本実施形態の構成が示されている。同図からわかるように、本実施形態は従来技術とは異なり、複数の異なる世代のスナップショットイメージを夫々丸ごと保持するのではなく、少ない記憶装置（より小型／より廉価）で構成することができ、且つ複数の世代のスナップショットイメージを任意に読み出すことができる。
【００３０】
なお、図１の例ではデータ保持部１を用いる場合を示しているが、図５の右側に示されるように、当該データ保持部１を用いず、通常の書込みをデータ保持部３に履歴情報を保存する形で行い、通常の読出しについては、データ読出し元選択部４に対して最新の世代を指定することによりデータ保持部３に保持される最新の履歴情報を読み出す形で行うように構成してもよい。この場合、上記実施形態に比べ、データ保持部１が無い分、さらに少ない記憶装置（より小型／より廉価）で構成することができる。
【００３１】
ところで、データ保持部２において同一世代内で上書きされる領域のデータに関する過去の履歴情報は、後で参照されることが無いため冗長である。このため、データ保持部１のデータを書替えるとき、データ保持部３に保存されている履歴情報のうち、現在の世代と同じ世代に対応する履歴情報であって当該書替えの領域に含まれる領域を示す履歴情報を全て削除するように構成してもよい。例えば図６に示されるように、現在の世代と同じ世代に対応する更新データＫ１，Ｋ２，Ｋ３のうち、更新領域が書替えデータの領域に含まれる更新データＫ２及びＫ３は削除される。
【００３２】
このように、更新データの実体も含めてその冗長な履歴情報を削除（領域を開放して再利用）することにより、データ保持部３のサイズはそのままに、より多くの履歴情報を保持できる。
【００３３】
また、データ保持部３が履歴情報の保持量限界を超える場合、もしくは保持量の余裕が予め設定した大きさと同じか又はそれを下回る場合には、データ保持部３が保存している最も古い世代の履歴情報を、図７に示されるような第４のデータ保持部６へ移し、データ保持部３における当該履歴情報があった領域を次の履歴情報の保存のために開放するように構成してもよい。この場合、データ保持部６としては、例えばデータ保持部３と同じタイプの記憶装置（ディスク等）を適用し、データ保持部３と同様な形式で複数の履歴情報を保存する。
【００３４】
データ保持部６を利用した場合、共通プール５を利用した場合と同様、データ保持部３が溢れてもデータ保持部２のスナップショットイメージの世代を維持することが可能となる。また、共通プール５から予め任意の時点でデータ保持領域を確保する必要がなくなり、もう一つのスナップショット専用データ保持部を用意するだけで済む。
【００３５】
次に、図８を参照して、本実施形態におけるホスト計算機１１からのデータの書込みとそれに伴う履歴情報の記録の処理手順を説明する。
【００３６】
実際のスナップショットイメージの保存は、例えば次のようにミラーリングされたストレージを切り離すことにより行なう。
【００３７】
スナップショット採取前、予めまたはオペレータやアプリケーションプログラムの指示により、データ保持部１のイメージをデータ保持部２へ全てコピーし、データ保持部１へデータを書込むとき、同じデータをデータ保持部２へも書き込んで両者が同じイメージを持つようにミラーリングを行なう（図８（ａ）参照）。
【００３８】
データ保持部２へのスナップショットの保存は、アプリケーションプログラムまたはオペレータの指示により、前記ミラーリングを切り離す、すなわち、以降のデータ保持部２への書込みを止めることによって行なう（図８（ｂ）参照）。これ以降、データ保持部１へデータを書込む度に、スナップショット採取後のデータ更新の履歴情報として、本実施形態では現在の「世代」を示す情報と書込む「データ」とその「領域」を示す情報をデータ保持部３へ記録していく。この内、現在の「世代」は、バックアップ単位などシステムの運用形態に合わせてアプリケーションプログラムやオペレータにより更新していく（但し過去に向って進めることは除く）。また、現在の世代は、スナップショットを採る度に新しくなるため、その度に更新すなわち１進める（ステップＡ１）。更に、スナップショットの採取直後では、データ保持部３に保持されている情報は無効であるため、ＬＯＧ領域であるデータ保持部３を初期化（履歴情報を空に）する（ステップＡ２）。なお、スナップショット採取処理中（ミラー切り離し処理中）は、アプリケーションプログラムまたはＯＳやストレージ装置のコントローラにて、当該データ保持部への書込みが無いようにする。
【００３９】
以降、スナップショット採取後のホスト計算機１１からのデータ書込み時の動作を、図８（ｃ）を参照して説明する。
【００４０】
スナップショット採取後、ホスト計算機１１が稼動系ストレージであるデータ保持部１へデータを書込むとき、初めに、データ保持部３の空き領域の大きさが当該書込みの履歴情報の記録に十分であるか否かを予め設定した大きさ（図８（ｃ）の「規定値」）との比較によって判定する（ステップＡ３）。その結果、前記空き領域の大きさが十分であれば前記履歴情報の記録へ処理を進め、不十分であれば次の２つの処理を実施する（ステップＡ３のＮｏ）。その１つ目の処理は、データ保持部３における空き領域の拡張であり、同保持部に記録された中で最も古い世代の履歴情報から順にデータ保持部２へ反映すると共にその履歴情報が確保していた領域を空き領域として解放するか、若しくは予め用意したストレージのプールより必要な大きさの領域を切り出して前記空き領域に追加する（ステップＡ４）。２つ目の処理では、前記判定により前記１つ目の処理が行なわれた旨を、システム毎に取り決める手順で例えばホスト計算機１１のアプリケーションプログラムやオペレータへ通知する（ステップＡ５）。こうして、データ保持部３の空き領域の大きさが不足してもサービス（アプリケーションプログラム）を停止すること無く、ホスト計算機１１のデータ書込みの履歴情報をデータ保持部３へ記録する（ステップＡ６）。また、データ保持部３において、このときのデータ書込み領域に含まれる領域であって現在の世代を示す履歴情報が既に有った場合（ステップＡ７のＹｅｓ）、その履歴情報を削除すると共にその履歴情報に確保されていた領域を空き領域として解放する（ステップＡ８）。ステップＡ７の条件が真である限り、ステップＡ８を繰り返す。なお、ステップＡ７とステップＡ８は、ステップＡ６の直前またはステップＡ３直前で実施するよう、処理の順序を入れ替えても良い（但しその場合、何らかの障害によりステップＡ６が正しく実行されないと、冗長となる筈だったためステップ８で削除した履歴情報も記録すべき当該履歴情報も共に失われる可能性が有る）。
【００４１】
次に、図９を参照して、本実施形態におけるスナップショットイメージの読み出しの処理手順を説明する。
ホスト計算機１１のアプリケーションプログラム又はオペレータから、データ読出し元選択部４に対してスナップショットイメージの読出し指示があると、データ読出し元選択部４は、その読出し指示により指定されたスナップショットイメージの「世代」及び「領域」を知得する（ステップＢ１）。
【００４２】
データ読出し元選択部４は、データ保持部３に保存される各履歴情報を参照し、読出されるべきスナップショットイメージの保存場所を知得する（ステップＢ２）。
【００４３】
そして、これから読み出すべき領域の先頭部分がデータ保持部３内にあれば（ステップＢ３のＹｅｓ）、データ読出し元選択部４は、データの読出し元をデータ保持部３に切替え（ステップＢ４）、指定領域の範囲内で連続してデータ保持部３に有る部分のデータを読み出す（ステップＢ５）。
【００４４】
また、これから読み出すべき領域の先頭部分がデータ保持部３内になければ（ステップＢ３のＮｏ）、データ読出し元選択部４は、データの読出し元をデータ保持部２に切替え（ステップＢ６）、指定領域の範囲内で連続してデータ保持部３に無い部分のデータを読み出す（ステップＢ７）。その結果、指定領域を全て読出し終えたら読出し処理を終了し（ステップＢ８のＹｅｓ）、未だ読み出すべき領域が残っていたらステップＢ２から繰り返す（ステップＢ８のＮｏ）。
【００４５】
このように、本実施形態によれば、数の異なる世代のスナップショットイメージを夫々丸ごと保持するのではなく、少ない記憶装置（より小型／より廉価）で構成することができ、複数の世代のスナップショットイメージを任意に読み出すことができる。
【００４６】
なお、本発明は上述した実施形態に限定されるものではなく、その要旨の範囲で種々変形して実施することが可能である。
【００４７】
【発明の効果】
以上詳記したように本発明によれば、一度ある世代のスナップショットイメージを参照してもそれより前の世代の同イメージを後で参照することができ、より小さなデータ保持部で複数の世代別スナップショットイメージを参照することができる。
【図面の簡単な説明】
【図１】本発明の一実施形態に係るスナップショットイメージの世代管理装置が適用されるシステム構成を示すブロック図。
【図２】同実施形態における履歴情報の内容を説明するための図。
【図３】同実施形態において指定された領域のデータの保存場所を説明するための図。
【図４】同実施形態と従来技術との基本構成の違いを対比して示す図。
【図５】同実施形態における第１のデータ保持部を用いない構成を示す図。
【図６】同実施形態において同一世代内で上書きされる領域のデータを説明するための図。
【図７】同実施形態における第３のデータ保持部が保存している最も古い世代の履歴情報から順に保存するデータ保持部を示す図。
【図８】同実施形態におけるホスト計算機からのデータの書込みとそれに伴う履歴情報の記録の処理手順を説明するためのフローチャート。
【図９】同実施形態におけるスナップショットイメージの読み出しの処理手順を説明するためのフローチャート。
【図１０】従来のスナップショットイメージの世代管理技術を説明するための図。
【符号の説明】
１…第１のデータ保持部
２…第２のデータ保持部
３…第３のデータ保持部
４…データ読出し元選択部
５…共通プール
６…第４のデータ保持部
１１…ホスト計算機
【図１】
0004078039.tif 000002
【図２】
0004078039.tif 000003
【図３】
0004078039.tif 000004
【図４】
0004078039.tif 000005
【図５】
0004078039.tif 000006
【図６】
0004078039.tif 000007
【図７】
0004078039.tif 000008
【図８】
0004078039.tif 000009
【図９】
0004078039.tif 000010
【図１０】
0004078039.tif 000011