(58)【調査した分野】(Int.Cl.,DB名)
【発明を実施するための形態】
【0014】
<実施形態1>
本発明の第1の実施形態を、
図1乃至
図6を参照して説明する。
図1乃至
図3は、ストレージ装置の構成を説明するための図であり、
図4乃至
図6は、ストレージ装置によるデータ書き換え処理を説明するための図である。
【0015】
[構成]
本発明におけるストレージ装置10は、記憶媒体に対してデータを読み書きする装置である。本実施形態では、
図1に示すように、ストレージ装置10が記憶媒体であるフラッシュメモリ20に接続されている。このとき、ストレージ装置10とフラッシュメモリ20とは、例えば、SCSI(Small Computer System Interface)、SAS(Serial Attached SCSI)、SATA(Serial ATA)、FC(Fibre Channel)などのストレージインタフェースによって接続されている。なお、
図1では、フラッシュメモリ20がストレージ装置10の外部に配置されているものとして記載しているが、フラッシュメモリ20はストレージ装置10の内部に搭載されていてもよい。
【0016】
ここで、フラッシュメモリ20は、データを記憶する記憶領域の単位となるメモリセルを複数備えており、メモリセルごとに書き込み可能回数が限られている。つまり、フラッシュメモリ20は、データの書き換えにより使用寿命が短くなる性質を有している。このため、特定のメモリセルに書き込みが集中しないようにするウェアレベリングが必要になる。本発明では、ウェアレベリング方法に特徴を有しており、かかる方法を以下に説明する。なお、
図1では、フラッシュメモリ20が1つのように記載されているが、1つでも複数でもよい。
【0017】
上記ストレージ装置10は、図示しない演算部と記憶部とを備えている。そして、ストレージ装置10の演算部は、プログラムが当該演算部によって実行されることで実現された、データ書き込み部11、重複回数記録部12、重複回数取得部13、データ再配置開始部14、スケジューラ15、を備えている。
【0018】
また、上記フラッシュメモリ20は、図示しない演算装置と記憶部とを備えている。そして、フラッシュメモリ20の演算部は、プログラムが当該演算部によって実行されることで実現された、データ書き込み部21、書き込み回数記録処理部22、書き込み回数取得部23、データ再配置部24、アドレス変換部25、を備えている。また、フラッシュメモリ20の記憶部は、アドレス変換記録部26、書き込み回数記録部27、データ記憶部28、を備えている。
【0019】
以下、ストレージ装置10とフラッシュメモリ20とが備える各構成について詳述する。
【0020】
ストレージ装置10のデータ書き込み部11は、ユーザからの要求に応じてデータの書き込みを行う。例えば、データ書き込み部11としては、CIFS/NFS(Common Internet File System / Network File System)などのプロトコルがあげられる。具体的に、ストレージ装置10のデータ書き込み部11は、フラッシュメモリ20のデータ書き込み部21と協働して、データの書き込みを行う。ここで、データ書き込み時の様子を、
図2及び
図3を参照して説明する。
【0021】
データ書き込み部11,21は、まず、書き込み対象となるファイルを、所定容量のブロックデータに分割して、当該ブロックデータ(実データ)をフラッシュメモリ20のデータ記憶部28となるメモリセルに記憶する。このとき、データ書き込み部11,12は、ブロックデータを参照する、当該ブロックデータのデータ内容及び格納位置に基づくアドレスデータ(コンテンツアドレス:CA)を生成して、当該コンテンツアドレスと共にツリー構造にてフラッシュメモリ20に格納する。このため、データ書き込み部11,21は、異なるファイルのブロックデータであっても、データ内容が同一であれば、同じアドレスデータで参照すればよいため、1つのブロックデータを記憶装置に記憶しておけばよいこととなる。このように、データ書き込み部11,21は、同一内容のブロックデータの重複記憶を排除する機能(重複記憶排除機能)を有している。
【0022】
一例として、
図2の例では、例えば、ファイル1は3つのブロックデータ11,12,13で構成されているものとし、これらがメモリセルに格納される。そして、これらブロックデータ11,12,13の格納位置を参照するコンテンツアドレスCA11,12,13をたどることで、ファイル1を読み出すことができる。一方、ファイル2は、3つのブロックデータ21,22,23で構成されているものとし、これらがメモリセルに格納される。このうちブロックデータ21が、ファイル1を構成するブロックデータ13と同一内容である場合には、ブロックデータ21の実データを格納することなく、すでに格納されているブロックデータ13のコンテンツアドレスCA13を参照すればよいこととなる。これにより、すでに格納されているブロックデータ13が、ファイル2のブロックデータとして格納されたこととなる。
【0023】
そして、ストレージ装置10の重複回数記録部12は、上述したように格納されたブロックデータ毎に、当該ブロックデータがいくつのファイルから参照されて共有されているかを表す参照数(共有数)を記憶する。例えば、
図3に示すように、各ブロッックデータを参照するコンテンツアドレスCA内に、当該ブロックデータを参照しているファイルを特定する情報、例えば、i-node番号を記録する。つまり、ブロックデータを参照するコンテンツアドレスCA内のi-node番号の数が、当該コンテンツアドレスCAが参照するブロックデータがいくつのファイルから参照されているか、つまり、いくつのファイルによって共有されているか、を表す参照数(共有数)となる。例えば、
図2の例では、ブロックデータ13はファイル1とファイル2によって参照(共有)されているため、当該ブロックデータ13の参照数は「2」となる。
【0024】
また、フラッシュメモリ20のアドレス変換部25は、ブロックデータを書き込む場合、ブロックデータが書き込まれた位置と、実際にブロックデータが格納されたメモリセルと、の対応を表す情報を、アドレス変換記録部26に記録する。この変換により、後述するように、ブロックデータのメモリセル上の配置位置が変更されたとしても、ストレージ装置10からは、同じ書き込み位置を指定してブロックデータにアクセスすることができる。このように、アドレス変換部25は、ストレージ装置10から見えるデータの配置位置と、メモリセル上のデータ配置位置と、の対応を更新している。
【0025】
また、フラッシュメモリ20の書き込み回数記録処理部22は、メモリセル毎の書き込み回数をカウントして、書き込み回数記録部27に記録する。例えば、書き込み回数記録処理部22は、データ書き込み部21などによってメモリセルが更新されると、そのメモリセルの書き込み回数を1つ増やして、書き込み回数記録部27に記録する。なお、メモリセル毎の書き込み回数のカウントは、後述するブロックデータの書き換え時にも行われる。
【0026】
次に、ストレージ装置10によるブロックデータの再配置処理を行う構成について説明する。まず、ストレージ装置10のスケジューラ15は、定期的にデータ再配置開始部14を呼び出して実行する。これに応じて、データ再配置開始部14は、フラッシュメモリ20内の各メモリセルに格納されているブロックデータ(実データ)の書き換え処理であるウェアレベリングを実行する。
【0027】
ウェアレベリングでは、以下の処理を実行する。まず、ストレージ装置10の重複回数取得部13(共有数取得部)は、フラッシュメモリ20に格納されている各ブロックデータを参照するコンテンツアドレスCAを基に、各ブロックデータがいくつのファイルから参照されているかを表す参照数を取得する。具体的には、
図2に示すように、ブロックデータを参照するコンテンツアドレスCA内に記憶されているi-node番号の数を、そのブロックデータの参照数として取得する。
【0028】
また、フラッシュメモリ20の書き込み回数取得部23は、各ブロックデータが配置されているメモリセルの書き込み回数を、書き込み回数記録部27から取得する。
【0029】
そして、データ再配置部24(書き換え部)は、メモリセル毎に、その位置と、当該メモリセルの書き込み回数と、当該メモリセルに格納されているブロックデータの参照数と、を受け取る。そして、データ再配置部24は、これら情報を基に実際にウェアレベリング、つまり、メモリセルに格納されているブロックデータの書き換え処理を実施する。この書き換え処理は、例えば、参照数が多いブロックデータを、使用寿命が短い他のメモリセルつまり書き込み回数が多い他のメモリセルに書き書き換える処理となる。書き換え処理の具体例については、以下の動作説明時に詳述する。
【0030】
また、上述したアドレス変換部25は、データ再配置部24によりブロックデータが書き換えられた際にも、当該ブロックデータが格納された位置と実際のメモリセルとの対応を表す情報を、アドレス変換記録部26に記録する。
【0031】
[動作]
次に、上述した構成のストレージ装置10による動作、特に、ウェアレベリングの動作を、
図4のフローチャート及び
図5、
図6のブロックデータの様子を示す図を参照して説明する。
【0032】
まず、スケジューラ15は、定期的にデータ再配置開始部14を呼び出す。データ再配置開始部14は、まず、書き込み回数取得部23にて取得した各メモリセルの書き込み回数を取得し、重複回数取得部13にて取得した各メモリセルに格納されているブロックデータの参照数を取得する。
【0033】
そして、データ再配置開始部14は、取得した書き込み回数と参照数とから、一定数未満の書き込み回数であるメモリセルに、一定数以上の参照数を持つブロックデータがあるか確認する(ステップS1)。もし、そのようなブロックデータが存在しない場合には(ステップS1でNo)、本発明によるウェアレベリングは実施せずに終了する。そのようなブロックデータが存在した場合は(ステップS1でYes)、かかるブロックデータを、以降のステップにおける置き換え候補(書き換え候補)として選択する(ステップS2)。
【0034】
なお、メモリセルの書き込み回数が一定数未満か否かの判断は、メモリセルの書き込み回数が予め設定された書き込み回数閾値よりも小さいか否かによって行う。また、ブロックデータの参照数が一定数以上か否かの判断は、ブロックデータの参照数が予め設定された参照数閾値以上であるか否かによって行う。
【0035】
続いて、データ再配置開始部14は、書き込み回数が一定数以上のメモリセルのうち、他のデータが格納されていない空きのメモリセルがあるかを確認する(ステップS3)。なお、メモリセルの書き込み回数が一定数以上か否かの判断は、メモリセルの書き込み回数が上述した書き込み回数閾値以上であるか否かによって行うが、当該書込み回数閾値よりも大きい値の他の閾値以上であるか否かによって行ってもよい。
【0036】
そして、書き込み回数が一定数以上の空きのメモリセルがある場合は(ステップS3でYes)、データ再配置部24は、上記ステップS2で置き換え候補として選択したブロックデータを、空きのメモリセルに移動する(ステップS4)。つまり、データ再配置部24は、
図5(A)に示すように、一定数未満の少ない書き込み回数であるメモリセルに格納されており一定数以上の多い参照数を持つブロックデータを、
図5(B)に示すように、一定数以上の多い書き込み回数であるメモリセルに格納し直す。
【0037】
上記ステップS3で、書き込み回数が一定数以上の空きのメモリセルが無い場合は(ステップS3でNo)、データ再配置開始部14は、書き込み回数が一定数以上のメモリセルに一定数未満の参照数を持つブロックデータがあるかを確認する(ステップS5)。なお、ブロックデータの参照数が一定数未満か否かの判断は、ブロックデータの参照数が上述した参照数閾値未満であるか否かによって行うが、当該参照数閾値よりも小さい値の他の閾値未満であるか否かによって行ってもよい。そして、このようなブロックデータが無かった場合(ステップS5でNo)、ステップS2で置き換え候補として選択したブロックデータの移動先はないと判断し、ウェアレベリングは実施しない。
【0038】
一方、ステップS5において、書き込み回数が一定数以上のメモリセルに一定数未満の参照数を持つブロックデータがあった場合には(ステップS5でYes)、データ再配置部24は、ステップS2で置き換え候補として選択したブロックデータと、ステップS5で見つかったブロックデータのメモリセル上の配置を交換する(ステップS6)。つまり、データ再配置部24は、
図6(A)に示すように、一定数未満の少ない書き込み回数であるメモリセルに格納されている一定数以上の多い参照数を持つブロックデータを、
図6(B)に示すように、一定数以上の多い書き込み回数であるメモリセルに格納し直す。これと同時に、
図6(A)に示すように、一定数以上の多い書き込み回数であるメモリセルに格納されている一定数未満の少ない参照数を持つブロックデータを、
図6(B)に示すように、一定数未満の少ない書き込み回数であるメモリセルに格納し直す。
【0039】
なお、上記ステップS5において、書き込み回数が一定数以上のメモリセルに一定数未満の参照数を持つブロックデータが無かった場合であっても(ステップS5でNo)、データ再配置開始部14は、以下のようにウェアレベリングは実施してもよい。まず、書き込み回数が一定数以上のメモリセルに格納されているブロックデータの参照数と、ステップS2で置き換え候補として選択したブロックデータの参照数と、を比較する。そして、比較の結果、参照数が多いブロックデータを書き込み回数が一定数以上のメモリセルに配置するよう書き換えを行う。例えば、ステップS2で置き換え候補として選択したブロックデータの参照数の方が大きい場合には、かかるブロックデータを書き込み回数が一定数以上のメモリセルに書き換える。これと同時に、書き込み回数が一定数以上のメモリセルに格納されているブロックデータを、一定数未満の少ない書き込み回数であるメモリセルに書き換える。
【0040】
そして、ステップS4やステップS6などの処理によりブロックデータ書き換えを行なった後に、アドレス変換部25は、それぞれのブロックデータの位置とメモリセル上の位置が対応するように、アドレス変換記録部26を更新する。
【0041】
以上のように、本発明では、参照数の多いブロックデータを書き込み回数の多いメモリセルに配置するよう書き換えを行なっている。ここで、参照数が多いブロックデータは、さまざまなファイルから参照されているため、参照している全てのファイルが削除されない限り解放されない。このため、参照数が多いブロックデータは、以後、削除される可能性が低く、当該ブロックデータが格納されているメモリセルは書き換えられる可能性が低くなる。逆に、参照数が少ないブロックデータは以後に削除される可能性が高いため、当該ブロックデータが格納されているメモリセルは書き換えられる可能性が高くなる。
【0042】
このようなことから、上述したように、将来書き換えられる可能性の低いブロックデータを、書き込み回数の多いメモリセルに配置することで、当該書き込み回数の多いメモリセルに対する以後の書き込み回数の増加を抑制することができる。その結果、フラッシュメモリの長寿命化を実現することができる。
【0043】
なお、上記では、書き込み回数が一定数未満であり参照数が一定数以上のブロックデータを、書き込み回数が一定数以上のメモリセルに書き換えることとしているが、本発明は、かかる方法で書き換えを行うことに限定されない。例えば、ブロックデータの参照数に応じて、当該ブロックデータを他のメモリセルに記憶してもよい。このとき、書き換え先となる他のメモリセルは、上述したように書き込み回数から使用寿命の異なるものを選択してもよく、他の方法で使用寿命の異なるものを選択してもよい。
【0044】
また、上記では、
図3に示すように、コンテンツアドレスごとに、ブロックを参照しているファイルのi-node番号を記録して、参照数を取得していた。しかしながら、このような永続的な情報を記録することなく、他の方法で参照数を取得してもよい。例えば、重複排除を行うストレージ装置においては、ブロックデータは参照される回数が0になるまで解放されず、また、参照数が0になったブロックを解放するために、定期的にガベージコレクションを行う。このガベージコレクションにおいて、i-nodeがどのプロックデータを参照しているのかを確認し、
図3に示す内容を作成することもできる。そして、その後、データ再配置開始部14を呼び出すことで上述同様のウェアレベリングを実施することができる。この方法によれば、データ再配置開始部14の処理が完了したあと、
図3の内容は解放できる。
【0045】
また、上記では、重複排除機能を有するストレージ装置におけるブロックデータの参照数(重複数)を基にウェアレベリングを実施しているが、他のストレージ装置においても本発明の構成を利用することができる。例えば、スナップショット機能を持つファイルシステムやRAWデバイスにおいては、スナップショット間でデータを共有するが、当該データの共有数を、上述した参照数として用いて、ウェアレベリングを行なってもよい。
【0046】
<実施形態2>
次に、本発明の第2の実施形態を、
図7を参照して説明する。
図7は、ストレージ装置によるデータ書き換え処理を説明するための図である。
【0047】
本発明におけるストレージ装置10は、上述した実施形態1とほぼ同様の構成を有するが、フラッシュメモリ20の構成が異なる。本実施形態におけるフラッシュメモリ20は、SLC(Single Level Cell)、MLC(Multi Level Cell)、TLC(Triple Level Cell)が混在している。このような構成において、ストレージ装置10のデータ再配置部24は、ブロックデータの参照数に応じて、以下に説明するように適切なフラッシュメモリを選択する機能を有する。
【0048】
ここで、SLC, MLC, TLCは、それぞれ性能や価格が異なっており、特に、使用寿命つまり書き換え可能回数が設定されている。例えば、MLC, TLCは、SLCよりも書き換え可能回数が少なく設定されており、使用寿命が短いものである。
【0049】
そして、データ再配置部24は、例えば、
図7(A)に示すように、書き換え可能回数が多いSLCに格納されており一定数以上の多い参照数を持つブロックデータを、
図7(B)に示すように、書き換え可能回数の少ないMLCに書き換える。
【0050】
このように、参照数が多く削除される可能性が低いブロックデータを、書き換え可能回数の少ないMLCに配置することで、当該MLCに対する以後の書き込み回数の増加を抑制することができる。その結果、使用寿命の短いフラッシュメモリであっても、長寿命化を実現することができる。
【0051】
<実施形態3>
次に、本発明の第3の実施形態を、
図8を参照して説明する。
図8は、ストレージ装置の構成を示すブロック図である。
【0052】
本発明におけるストレージ装置100は、書き換えにより使用寿命が短くなる記憶媒体110に対してデータを書き込むストレージ装置100であって、記憶媒体110に記憶されているデータが共有されている数を表す共有数を取得する共有数取得部101と、前記共有数に基づいて、記憶媒体110に記憶されているデータを、使用寿命の異なる他の記憶領域に書き換える書き換え部102と、を備える。なお、上記共有数取得部101と書き換え部102とは、ストレージ装置100に装備された制御部(図示せず)でプログラムが実行されることで構築される。
【0053】
そして、上記ストレージ装置100は、まず、共有数取得部101が、記憶媒体110に記憶されているデータが共有されている数を表す共有数を取得する。そして、書き換え部102が、取得した共有数に基づいて、記憶媒体110に記憶されているデータを、使用寿命の異なる他の記憶領域に書き換える。
【0054】
このように、データの共有数に基づいて、当該データを使用寿命の異なる他の記憶領域に書き換えることで、記憶媒体に対する書き込み回数を抑制することができ、当該記憶媒体の長寿命化を図ることができる。
【0055】
<付記>
上記実施形態の一部又は全部は、以下の付記のようにも記載されうる。以下、本発明におけるストレージ装置、プログラム、書き換え方法の構成の概略を説明する。但し、本発明は、以下の構成に限定されない。
【0056】
(付記1)
書き換えにより使用寿命が短くなる記憶媒体に対してデータを書き込むストレージ装置であって、
記憶媒体に記憶されているデータが共有されている数を表す共有数を取得する共有数取得部と、
前記共有数に基づいて、記憶媒体に記憶されているデータを、使用寿命の異なる他の記憶領域に書き換える書き換え部と、
を備えたストレージ装置。
【0057】
(付記2)
付記1に記載のストレージ装置であって、
前記書き換え部は、予め設定された基準により前記共有数が多いと判断されたデータを、当該データが記憶されている記憶領域よりも使用寿命の短い他の記憶領域に書き換える、
ストレージ装置。
【0058】
(付記3)
付記1又は2に記載のストレージ装置であって、
記憶媒体に形成された記憶領域毎の書き込み回数を取得する書き込み回数取得部を備え、
前記書き換え部は、予め設定された基準により前記共有数が多いと判断されたデータを、当該データが記憶されている記憶領域よりも前記書き込み回数が多い他の記憶領域に書き換える、
ストレージ装置。
【0059】
(付記4)
付記3に記載のストレージ装置であって、
前記書き換え部は、予め設定された前記書き込み回数未満の記憶領域に記憶されており、予め設定された前記共有数以上のデータを、予め設定された前記書き込み回数以上の他の記憶領域に書き換える、
ストレージ装置。
【0060】
(付記5)
付記4に記載のストレージ装置であって、
前記書き換え部は、予め設定された前記書き込み回数未満の記憶領域に記憶されており、予め設定された前記共有数以上のデータを、予め設定された前記書き込み回数以上の他の記憶領域のうち他のデータが記憶されていない空き記憶領域に書き換える、
ストレージ装置。
【0061】
(付記6)
付記4又は5に記載のストレージ装置であって、
前記書き換え部は、予め設定された前記書き込み回数未満の記憶領域に記憶されており、予め設定された前記共有数以上のデータを、当該データの前記共有数よりも少ない共有数のデータが記憶されている予め設定された前記書き込み回数以上の他の記憶領域に書き換える、
ストレージ装置。
【0062】
(付記7)
付記2に記載のストレージ装置であって、
前記書き換え部は、予め設定された基準により前記共有数が多いと判断されたデータを、当該データが記憶されている記憶媒体よりも使用寿命の短い他の記憶媒体に書き換える、
ストレージ装置。
【0063】
(付記8)
付記7に記載のストレージ装置であって、
前記書き換え部は、予め設定された基準により前記共有数が多いと判断されたデータを、当該データが記憶されている記憶媒体よりも書き換え可能回数が少なく設定された他の記憶媒体に書き換える、
ストレージ装置。
【0064】
(付記9)
書き換えにより使用寿命が短くなる記憶媒体に対してデータを書き込むストレージ装置に装備された制御部に、
記憶媒体に記憶されているデータが共有されている数を表す共有数を取得する共有数取得部と、
前記共有数に基づいて、記憶媒体に記憶されているデータを、使用寿命の異なる他の記憶領域に書き換える書き換え部と、
を実現させるためのプログラム。
【0065】
(付記9−1)
付記9に記載のプログラムであって、
前記書き換え部は、予め設定された基準により前記共有数が多いと判断されたデータを、当該データが記憶されている記憶領域よりも使用寿命の短い他の記憶領域に書き換える、
プログラム。
【0066】
(付記9−2)
付記9又は9−1にプログラムであって、
前記制御部に、さらに、記憶媒体に形成された記憶領域毎の書き込み回数を取得する書き込み回数取得部を実現させ、
前記書き換え部は、予め設定された基準により前記共有数が多いと判断されたデータを、当該データが記憶されている記憶領域よりも前記書き込み回数が多い他の記憶領域に書き換える、
プログラム。
【0067】
(付記9−3)
付記9−1に記載のプログラムであって、
前記書き換え部は、予め設定された基準により前記共有数が多いと判断されたデータを、当該データが記憶されている記憶媒体よりも使用寿命の短い他の記憶媒体に書き換える、
プログラム。
【0068】
(付記9−4)
付記9−3に記載のプログラムであって、
前記書き換え部は、予め設定された基準により前記共有数が多いと判断されたデータを、当該データが記憶されている記憶媒体よりも書き換え可能回数が少なく設定された他の記憶媒体に書き換える、
プログラム。
【0069】
(付記10)
書き換えにより使用寿命が短くなる記憶媒体に対してデータを書き込むストレージ装置による書き換え方法であって、
記憶媒体に記憶されているデータが共有されている数を表す共有数を取得し、
前記共有数に基づいて、記憶媒体に記憶されているデータを、使用寿命の異なる他の記憶領域に書き換える、
書き換え方法。
【0070】
(付記10−1)
付記10に記載の書き換え方法であって、
予め設定された基準により前記共有数が多いと判断されたデータを、当該データが記憶されている記憶領域よりも使用寿命の短い他の記憶領域に書き換える、
書き換え方法。
【0071】
(付記10−2)
付記10又は10−1に書き換え方法であって、
さらに、記憶媒体に形成された記憶領域毎の書き込み回数を取得し、
予め設定された基準により前記共有数が多いと判断されたデータを、当該データが記憶されている記憶領域よりも前記書き込み回数が多い他の記憶領域に書き換える、
書き換え方法。
【0072】
(付記10−3)
付記10−1に記載の書き換え方法であって、
予め設定された基準により前記共有数が多いと判断されたデータを、当該データが記憶されている記憶媒体よりも使用寿命の短い他の記憶媒体に書き換える、
書き換え方法。
【0073】
(付記10−4)
付記10−3に記載の書き換え方法であって、
予め設定された基準により前記共有数が多いと判断されたデータを、当該データが記憶されている記憶媒体よりも書き換え可能回数が少なく設定された他の記憶媒体に書き換える、
書き換え方法。
【0074】
なお、上述したプログラムは、記憶装置に記憶されていたり、コンピュータが読み取り可能な記録媒体に記録されている。例えば、記録媒体は、フレキシブルディスク、光ディスク、光磁気ディスク、及び、半導体メモリ等の可搬性を有する媒体である。
【0075】
以上、上記実施形態等を参照して本願発明を説明したが、本願発明は、上述した実施形態に限定されるものではない。本願発明の構成や詳細には、本願発明の範囲内で当業者が理解しうる様々な変更をすることができる。