(57)【要約】【課題】本発明は、記憶メタデータのための拡張可能な方法及びシステムを提供する。【解決手段】  一実施形態の一態様によると、記憶メタデータを表現するために拡張可能言語を用いるシステムは、コンピュータ可読記憶媒体及び処理装置を有する。コンピュータ可読記憶媒体は、記憶メタデータを格納しても良い。処理装置は、記憶メタデータをコンピュータ可読記憶媒体に拡張可能言語フォーマットで書き込むよう構成されても良い。処理装置は、拡張可能言語フォーマットの記憶メタデータを操作するよう構成されても良い。処理装置は、拡張可能言語フォーマットの記憶メタデータを転送するよう構成されても良い。【選択図】  図１
2013246827.tif 000002
【特許請求の範囲】
【請求項１】
記憶メタデータを表現するために拡張可能言語を用いるシステムであって、前記システムは、
記憶メタデータを格納されたコンピュータ可読記憶媒体、
処理装置であって、
前記記憶メタデータを前記コンピュータ可読記憶媒体に拡張可能言語フォーマットで書き込み、
前記拡張可能言語フォーマットの記憶メタデータを操作し、
前記拡張可能言語フォーマットの記憶メタデータを転送する、よう構成される処理装置、
を有するシステム。
【請求項２】
前記記憶メタデータは、ハードディスクパーティションテーブル、前記コンピュータ可読記憶媒体に格納されたデータの位置を示すブロックアドレスデータ、又はブート命令コードのうちの少なくとも１つを有する、請求項１に記載のシステム。
【請求項３】
前記ハードディスクパーティションテーブルは、ＭＢＲ（master  boot  record）パーティションテーブル、ＥＢＲ（extended  boot  record）パーティションテーブル、ＧＵＩＤ（globally  unique  identifier）パーティションテーブル（ＧＰＴ）、ＢＳＤ（Berkeley  Software  Distribution）パーティションテーブル、又はＡＰＭ（Apple  Partition  Map）パーティションテーブルのうちの少なくとも１つを有する、請求項２に記載のシステム。
【請求項４】
前記ブロックアドレスデータは、ＣＨＳ（cylinder-head-sector）ブロックアドレスデータ又はＬＢＡ（logical  block  address）ブロックアドレスデータのうちの少なくとも１つを有する、請求項２に記載のシステム。
【請求項５】
前記ブート命令コードは、ＢＰＢ（BIOS  Parameter  Block）又はブートセクタデータのうちの少なくとも１つを有する、請求項２に記載のシステム。
【請求項６】
前記拡張可能言語フォーマットは、ＸＭＬ（eXtensible  Markup  Language）フォーマット又はＪＳＯＮ（JavaScript  Object  Notation）フォーマットを有する、請求項１に記載のシステム。
【請求項７】
前記記憶メタデータの拡張可能言語フォーマットは、複数のキー値ペアを有し、該複数のキー値ペアは、
前記コンピュータ可読記憶媒体のハードディスクパーティションテーブルのフォーマットを識別する第１のキー値ペア、
ブート命令コードが格納されている前記コンピュータ可読記憶媒体の開始アドレスを識別する第２のキー値ペア、
ブート命令コードが格納されている前記コンピュータ可読記憶媒体の終了アドレスを識別する第３のキー値ペア、
のうちの少なくとも１つを有する、請求項１に記載のシステム。
【請求項８】
前記第２のキー値ペアは開始オブジェクトを有し、前記第３のキー値ペアは終了オブジェクトを有し、前記開始オブジェクト及び前記終了オブジェクトの各々は、前記コンピュータ可読記憶媒体に格納されたデータの位置を示すブロックアドレスデータのフォーマットを識別するフォーマットキー値ペアを含む複数のキー値ペアを有する、請求項７に記載のシステム。
【請求項９】
前記開始オブジェクト及び前記終了オブジェクトの各々は、
前記開始又は終了アドレスの個々のシリンダを識別するシリンダキー値ペア、
前記開始又は終了アドレスの個々の先頭を識別する先頭キー値ペア、
前記開始又は終了アドレスの個々のセクタを識別するセクタキー値ペア、
を更に有する請求項８に記載のシステム。
【請求項１０】
前記記憶メタデータは、最初に、プラットフォーム固有のキー値で符号化されたフォーマットで前記コンピュータ可読記憶媒体に格納され、
前記処理装置は、前記記憶メタデータを前記コンピュータ可読記憶媒体に前記拡張可能言語フォーマットで書き込む前に、前記プラットフォーム固有のキー値符号化フォーマットの記憶メタデータを前記拡張可能言語フォーマットに変換するよう更に構成される、
請求項１に記載のシステム。
【請求項１１】
記憶メタデータを表現するために拡張可能言語を用いる方法であって、前記方法は、
前記記憶メタデータを拡張可能言語フォーマットで表現するステップ、
前記拡張可能言語フォーマットの記憶メタデータをコンピューティングシステムに格納するステップ、
を有する方法。
【請求項１２】
前記拡張可能言語を用いて前記記憶メタデータを表現するステップの前に、前記記憶メタデータを圧縮バイナリフォーマットから前記拡張可能言語フォーマットに変換するステップ、を更にする請求項１１に記載の方法。
【請求項１３】
前記記憶メタデータを拡張可能言語フォーマットで表現するステップは、前記記憶メタデータの複数のコンポーネントの各々を表現するためにキー及び値を用いるステップを有する、請求項１１に記載の方法。
【請求項１４】
前記拡張可能言語フォーマットは、人間に理解可能である、請求項１１に記載の方法。
【請求項１５】
前記拡張可能言語フォーマットを理解する再パーティショニングユーティリティにより、前記拡張可能言語フォーマットで格納された記憶メタデータを読み出すステップ、
前記コンピュータ可読記憶媒体に格納されたデータを失うことなく及び前記記憶メタデータに上書きすることなく、前記コンピューティングシステムのコンピュータ可読記憶媒体を再パーティショニングするステップ、
を更に有する請求項１１に記載の方法。
【請求項１６】
前記コンピューティングシステムはコンピュータ可読記憶媒体を有し、前記記憶メタデータは前記コンピュータ可読記憶媒体に格納されたデータの位置を示す第１及び第２のブロックアドレスデータを有し、前記第１のブロックアドレスデータは、前記第２のブロックアドレスデータを用い且つ前記拡張可能マークアップ言語を理解しないコンピューティングシステムのオペレーティングシステムでインスタンスを生成されることにより危険に晒され、前記方法は、
前記第１のブロックアドレスデータを用いる前記コンピューティングシステムに第１のオペレーティングシステムを格納するステップであって、前記第１のオペレーティングシステムは、前記拡張可能言語フォーマットを理解するよう構成される、ステップ、
前記第２のブロックアドレスデータを用いる前記コンピューティングシステムに第２のオペレーティングシステムを格納するステップであって、前記第２のオペレーティングシステムは、前記拡張可能言語フォーマットを理解するよう構成され、前記第１のアドレスデータが前記コンピューティングシステムに前記第２のオペレーティングシステムのインスタンスを生成することにより危険にさらされないようにする、ステップ、
を更に有する請求項１１に記載の方法。
【請求項１７】
コンピューティングシステムに記憶メタデータを表現するために拡張可能言語を用いる動作を実行させるコンピュータ命令を実行するよう構成されるプロセッサであって、前記動作は、
前記記憶メタデータをコンピュータ可読記憶媒体に拡張可能言語フォーマットで書き込むステップ、
前記拡張可能言語フォーマットの記憶メタデータを操作するステップ、
前記拡張可能言語フォーマットの記憶メタデータを転送するステップ、
を有する、プロセッサ。
【請求項１８】
前記拡張可能言語フォーマットは、ＸＭＬ（eXtensible  Markup  Language）フォーマット又はＪＳＯＮ（JavaScript  Object  Notation）フォーマットを有する、請求項１７に記載のプロセッサ。
【請求項１９】
前記動作は、前記記憶メタデータをコンピュータ可読記憶媒体に拡張可能言語フォーマットで書き込むステップの前に、前記記憶メタデータを圧縮バイナリフォーマットから前記拡張可能言語フォーマットに変換するステップ、を更に有する、請求項１７に記載のプロセッサ。
【請求項２０】
前記記憶メタデータの前記拡張可能言語フォーマットは、複数のキー値ペアを有する、請求項１７に記載のプロセッサ。
【発明の詳細な説明】
【技術分野】
【０００１】
本願明細書で議論される実施形態は、データ記憶フォーマットに関する。
【背景技術】
【０００２】
パーソナルコンピュータは、１９８０年代に普及し、現在も重要性及び展開の範囲を増し続けている。広範な種類のオペレーティングシステム及び記憶フォーマットが展開され、インターネットを形成するために記憶装置の多様な使用及びハードウェアのネットワーク接続を可能にしている。このようなオペレーティングシステムの例は、Microsoft  Windows(登録商標)、Linux(登録商標)、Mac  OS/Xを含み、数々のあまり知られていない変形も含む。これらのオペレーティングシステムの全ては、２つの共通の特徴を有する。つまり、それらはブ―ト可能でなければならないこと、それらはディスクドライブに格納されたデータにアクセス可能でなければならないことである。残念ながら、分かりにくい相違点の多様すぎる賛辞（compliment）は、先行する動作をサポートするために必要なメタデータを操作するためにオペレーティングシステム個別の自動ユーティリティが拡散したことから生じている。ブートシステム機能なしでは、オペレーティングシステムは起動できない。ディスクドライブのパーティション及びファイルシステムメタデータの記録機能なしでは、オペレーティングシステムは、自身が格納しているデータへのアクセスを提供できない。これら２つの動作をサポートするために多くのユーティリティが作成されているが、いずれも拡張性をサポートするために設計されていない。拡張性サポートの欠如は、多様なオペレーティングシステムとマシンアーキテクチャとの間の相互接続性を制限する。
【０００３】
限られた相互接続性は、ホームユーザやサーバ技術者に対して、ブート及び初期ファイルシステムの実装の複雑性を著しく増大し且つ信頼性を低下させ、システム管理コストを有意に増大させてしまう。
【０００４】
ある単純な例は、「fdisk」ユーティリティ又はコマンドである。このコマンドは、Windows及びLinuxの両方において同じ名称である。残念ながら、fdiskコマンドの動作は、WindowsとLinuxの間で変わる。例えば、fdiskコマンドの２つのバージョンは、ＭＢＲ及びＥＢＲフォーマットパーティション情報をハードディスクドライブに読み出し及び書き込むが、それらは、それぞれ異なるコマンドラインオプションと異なる対話式コマンドメニューを用いる。ＭＢＲパーティションテーブル内には、論理ブロックアドレス（logical  block  address：LBA）セクタ番号及びＣＨＳ（Cylinder-Head-Sector）アドレスの両方がある。ＣＨＳアドレスは、ことなるランタイム環境及びオペレーティングシステムで異なるように解釈される。ブートアップでは、基本入力／出力システム（ＢＩＯＳ）は、通常、ＣＨＳアドレスを用いる。最新のオペレーティングシステムは、パーティションテーブル内のＣＨＳ値を完全に無視するが、それらがＬＢＡアドレスと一致しないときは分かりにくい診断メッセージを印刷する。Linux  sfdiskコマンドのマニュアルページに記載されているように、特定バージョンのＤＯＳの中のシリンダ番号の１つの解釈には相違がある。Linuxには、「fdisk」、「cfdisk」、「sfdisk」及び「gdisk」と称される少なくとも４個の有名なディスクパーティションの変形がある。これら全ては僅かに異なる動作を有し、名称が類似しWindowsの変形と類似するので初心者には区別するのが難しい。今やUnix(登録商標)シェルは、Cygwinのような類似システムを通じてWindows下で利用可能なので、ディスクドライブパーティションを操作するための自動シェルスクリプトの使用に関連する非常に多くの危険と混乱がある。自動パーティションテーブル操作の頻繁な出力は、共有ドライブ上の１又は複数のオペレーティングシステムを失うことである。
【０００５】
年を追って、オペレーティングシステムの記憶装置の設置面積よりも速く、ハードドライブの容量が増大しコストが低減したので、アドバンスドユーザは彼らのコンピュータに１より多いオペレーティングシステムをインストールすることが一般的である。その結果、インストール又は復旧中に、ユーザがどのシステムが望ましいかを選択できるよう、ディスクドライブパーティション及びブートシーケンスに変更が必要であり得る。Intel  Virtualization  Technology  (VT)  CPU機能のような機能を通じてＣＰＵハードウェアでサポートされるエミュレーションシステムの普及は、ブートブロック及びパーティションテーブルの変更の実行に伴う複雑性及び危険を増すだけである。オペレーティングシステムは、互いを承知し、これらのシステムの重要な領域を操作するときに協力すべきであるが、現在の多くの異なるコマンド、フォーマット及びバイナリデータの解釈は、このような相互動作を妨げてしまう。
【発明の概要】
【発明が解決しようとする課題】
【０００６】
本願明細書で請求される主題は、上述のような欠点を解決する実施形態や上述のような環境でのみ機能する実施形態に限定されない。むしろ、この背景技術は、単に、本願明細書に記載される複数の実施形態が実施される技術分野の一例を説明するために提供される。
【課題を解決するための手段】
【０００７】
一実施形態の一態様によると、記憶メタデータを表現するために拡張可能言語を用いるシステムは、コンピュータ可読記憶媒体及び処理装置を有する。コンピュータ可読記憶媒体は、記憶メタデータを格納しても良い。処理装置は、記憶メタデータをコンピュータ可読記憶媒体に拡張可能言語フォーマットで書き込むよう構成されても良い。処理装置は、拡張可能言語フォーマットの記憶メタデータを操作するよう構成されても良い。処理装置は、拡張可能言語フォーマットの記憶メタデータを転送するよう構成されても良い。
【０００８】
実施形態の目的及び利点が理解され、少なくとも特に特許請求の範囲で指摘された要素、特徴及び組合せを用いて達成されるだろう。
【０００９】
上述の全体的説明及び以下の詳細な説明の両方は、例示及び説明のためであり、本発明の範囲を限定しないことが理解される。
【図面の簡単な説明】
【００１０】
例示的な実施形態は、添付の図面を用いて、更なる特異性及び詳細事項と共に記載され説明される。
【図１】記憶メタデータを表すために拡張可能言語を用いるよう構成された例示的なコンピューティングシステムを示すブロック図である。
【図２】図１の記憶メタデータの例示的な実施形態を示す。
【図３】圧縮バイナリフォーマットの記憶メタデータの例示的な実施形態を示す。
【図４】拡張可能言語フォーマットの図３の記憶メタデータの例示的な実施形態を示す。
【図５Ａ】記憶メタデータを表現する拡張可能言語を用いる例示的な方法のフローチャートである。
【図５Ｂ】記憶メタデータを表現する拡張可能言語を用いる別の例示的な方法のフローチャートである。
【発明を実施するための形態】
【００１１】
本発明の実施形態を、添付の図面を参照して以下に説明する。
【００１２】
図１は、本開示による、記憶メタデータを表すために拡張可能言語を用いるよう構成された例示的なコンピューティングシステム１００を示すブロック図である。記憶メタデータは、例えばシステムクリティカルメタデータであっても良い。非常に基本的な構成１０２では、コンピューティングシステム１００は、１又は複数のプロセッサ１０４及びシステムメモリ１０６を有しても良い。メモリバス１０８は、プロセッサ１０４とシステムメモリ１０６との間の通信のために用いられても良い。
【００１３】
所望の構成に依存して、プロセッサ１０４は、マイクロプロセッサ（μＰ）、マイクロコントローラ（μＣ）、デジタル信号プロセッサ（ＤＳＰ）又はそれらの任意の組合せを含むがこれらに限定されない任意の種類であっても良い。プロセッサ１０４は、レベル１キャッシュ１１０及びレベル２キャッシュ１１２のような１又は複数のキャッシュ、プロセッサコア（又は複数のコア）１１４、及びレジスタ１１６を有しても良い。例示的なプロセッサコア１１４は、算術論理演算ユニット（ＡＬＵ）、浮動小数点演算ユニット（ＦＰＵ）、デジタル信号プロセッサコア（ＤＳＰコア）又はこれらの任意の組合せを有しても良い。例示的なメモリ制御部１１８は、プロセッサ１０４と共に用いられても良い。または、幾つかの実施形態では、メモリ制御部１１８は、プロセッサ１０４の内部の一部であっても良い。プロセッサ１０４は、例えばシステムメモリ１０６にロードされたコンピュータ命令又はコードを実行することにより、及び／又はシステムメモリ１０６を使用しないでコンピュータ命令又はコードを１行ずつ実行することにより、本願明細書に記載された１又は複数の動作を実行するよう構成されても良い。
【００１４】
所望の構成に依存して、システムメモリ１０６は、（ＲＡＭ（Random  Access  Memory）のような）揮発性メモリ、（ＲＯＭ（Read  Only  Memory）、フラッシュメモリ等のような）不揮発性メモリ又はそれらの任意の組合せを含むがこれらに限定されない任意の種類であっても良い。システムメモリ１０６は、オペレーティングシステム１２０、１又は複数のアプリケーション１２２、プログラムデータ１２４を有しても良い。アプリケーション１２２は、図５Ａ−５Ｂに関して記載される１又は複数の機能を含む、本願明細書に記載される機能を実行するよう構成される拡張可能アルゴリズム１２６を有しても良い。例えば、アプリケーション１２２は、プロセッサ１０４により実行され、コンピューティングシステム１００に本願明細書に記載される機能を実行させても良い。プログラムデータ１２４は、例えばプロセッサ１０４により本願明細書に記載される拡張可能言語フォーマットで書かれ、操作され及び／又は転送され得る記憶メタデータ１２８を有しても良い。幾つかの実施形態では、アプリケーション１２２は、オペレーティングシステム１２０上でプログラムデータ１２４により動作するよう構成されても良い。したがって、記憶メタデータ１２８は、拡張可能言語フォーマットを用いて表現されても良く、及び／又は拡張可能言語フォーマットで書かれ、操作され及び／又は転送されても良い。記憶メタデータ１２８のための拡張可能言語フォーマットの使用を更に詳細に説明する前に、幾つかの実施形態による図１のコンピューティングシステム１００の種々の任意のコンポーネント、特徴及び／又は機能が記載される。
【００１５】
コンピューティングシステム１００は、基本構成１０２と他の装置及びインタフェースとの間の通信を実現するために、追加の特徴又は機能、及び追加インタフェースを有しても良い。例えば、バス／インタフェース制御部１３０は、記憶装置インタフェースバス１３４を介して基本構成１０２と１又は複数のデータ記憶装置１３２との間の通信を実現するために用いられても良い。データ記憶装置１３２は、取り外し可能記憶装置１３６、非取り外し可能記憶装置１３８又はそれらの組合せであっても良い。取り外し可能記憶装置及び非取り外し可能記憶装置の例は、少数を列挙すると、フレキシブルディスクドライブ及びハードディスクドライブ（ＨＤＤ）のような磁気ディスク装置、ＣＤ（compact  disk）又はＤＶＤ（digitalversatiledisk）のような光ディスクドライブ、ＳＳＤ（solid  state  drive）及びテープドライブを含む。例示的なコンピュータ記憶媒体は、コンピュータ可読命令、データ構造、プログラムモジュール又は他のデータのような情報を記憶する方法又は技術で実装される揮発性及び不揮発性、取り外し可能及び非取り外し可能媒体を含み得る。
【００１６】
幾つかの実施形態では、記憶メタデータは、以下に更に詳細に記載するように、圧縮バイナリフォーマットで及び／又は拡張可能言語フォーマットで１又は複数のデータ記憶装置１３２に書き込まれ、及び／又はそれから転送されても良い。まとめると、例えば、コンピューティングシステム１００は、データ記憶装置１３２のうちの１つに圧縮バイナリフォーマットで格納され、システムメモリ１０６及び／又はプロセッサ１０４へ転送されて拡張可能言語フォーマットに変換され、次に拡張可能言語フォーマットでデータ記憶装置１３２のうちの１つに書き込まれる記憶メタデータを有しても良い。
【００１７】
システムメモリ１０６、取り外し可能記憶装置１３６及び非取り外し可能記憶装置１３８は、コンピュータ記憶媒体の例である。コンピュータ記憶媒体は、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ、フラッシュメモリ又は他のメモリ技術、ＣＤ−ＲＯＭ、ＤＶＤ（digital  versatile  disk）又は他の光記憶装置、磁気カセット、磁気テープ、磁気ディスク記憶装置又は他の磁気記憶装置、又は所望の情報を格納するために用いることができコンピューティングシステム１００によりアクセスできる任意の他の媒体を含むがこれらに限定されない。任意のこのようなコンピュータ記憶媒体は、コンピューティングシステムの一部であっても良い。
【００１８】
コンピューティングシステム１００は、バス／インタフェース制御部１３０を介して種々のインタフェース装置（例えば、出力装置１４２、周辺機器インタフェース１４４、及び／又は通信装置１４６）から基本構成１０２への通信を実現するインタフェースバス１４０を有しても良い。例示的な出力装置１４２は、グラフィック処理ユニット１４８及びオーディオ処理ユニット１５０を有する。これらは、ディスプレイ又はスピーカのような種々の外部装置と１又は複数のＡ／Ｖポート１５２を介して通信するよう構成されても良い。例示的な周辺機器インタフェース１４４は、シリアルインタフェース制御部１５４又はパラレルインタフェース制御部１５６を有する。これらは、入力装置（例えば、キーボード、マウス、ペン、音声入力装置、タッチ入力装置等）又は他の周辺機器（例えば、プリンタ、、スキャナ等）のような外部装置と通信するよう構成されても良い。例示的な通信装置１４６は、ネットワーク制御部１６０を有する。ネットワーク制御部１６０は、１又は複数の通信ポート１６４を介したネットワーク通信リンクを介して１又は複数の他のコンピューティングシステム１６２との通信を実現するよう構成されても良い。
【００１９】
ネットワーク通信リンクは、通信蜂対の一例であっても良い。通信媒体は、通常、コンピュータ可読命令、データ構造、プログラムモジュール又は搬送波又は他のトランスポート機構のような変調されたデータ信号内の他のデータにより実現されても良く、任意の情報配信媒体を有しても良い。「変調されたデータ信号」は、１又は複数の特性セットを有する信号であるか、又は信号内の情報をエンコードするために変更されても良い。例として限定ではなく、通信媒体は、有線ネットワーク又は直接有線接続のような有線媒体、並びに音響、無線周波数（ＲＦ）、マイクロ波、赤外線（ＩＲ）のような無線媒体及び他の無線媒体を含み得る。本願明細書で用いられる用語コンピュータ可読媒体は、記憶媒体及び通信媒体の両方を含み得る。
【００２０】
コンピューティングシステム１００は、携帯電話機、ＰＤＡ（personal  data  assistant）、個人向けメディアプレイヤ装置、無線ウェブ閲覧装置、個人向けヘッドセット装置、特定用途装置、又は上述の機能のうちの任意のものを有するハイブリッド装置のような小型ポータブル（又はモバイル）電子機器の一部として実装されても良い。コンピューティングシステム１００は、ラップトップコンピュータ及び非ラップトップコンピュータ構成を有するパーソナルコンピュータとして実装されても良い。
【００２１】
図２は、図１の記憶メタデータ１２８の例示的な実施形態を示す。上述のように、記憶メタデータ１２８は、取り外し可能記憶装置１３６及び／又は非取り外し可能記憶装置１３８内にあるような１又は複数のデータ記憶装置１３２に格納されても良い。代替で又は追加で、記憶メタデータ１２８は、システムメモリ１０６内にロードされても良い。さらに、記憶メタデータ１２８は、圧縮バイナリフォーマットで表現されても良い。この例は、図３に関して詳細に記載される。また、記憶メタデータ１２８は、拡張可能言語フォーマットで表現されても良い。この例は、図４に関して詳細に記載される。あるいは、記憶メタデータ１２８は、圧縮バイナリフォーマット及び拡張可能言語フォーマットの両方のような複数のフォーマットで表現されても良い。
【００２２】
図２に図示した実施形態では、記憶メタデータ１２８は、１又は複数のハードディスクパーティションテーブル２０２、１又は複数のブロックアドレスデータ２０４、ブート命令コード２０６を有する。他の実施形態では、記憶メタデータ１２８は、ハードディスクパーティションテーブル２０２、ブロックアドレスデータ２０４、及び／又はブート命令コード２０６のうちの一部を有するが全部を有しなくても良く、及び／又は記憶メタデータ１２８は、図２に示したものとは異なる幾つかのコンポーネントを有しても良い。
【００２３】
ハードディスクパーティションテーブル２０２は、図１の１又は複数のデータ記憶装置１３２に含まれるようなディスクドライブ又は他の記憶装置のパーティションを記述するデータを有しても良い。ハードディスクパーティションテーブル２０２は、ＭＢＲ（master  boot  record）パーティションテーブル、ＥＢＲ（extended  boot  record）パーティションテーブル、ＧＵＩＤ（globally  unique  identifier）パーティションテーブル（ＧＰＴ）、ＢＳＤ（Berkeley  Software  Distribution）ディスクラベル、ＡＰＭ（Apple  Partition  Map）等、又はそれらの任意の組合せを有し得るが、これらに限定されない。
【００２４】
ブロックアドレスデータ２０４は、図１の１又は複数のデータ記憶装置１３２に含まれるようなディスクドライブ又は他の記憶装置に格納されるデータの位置及びブロックを記述するよう構成されたデータを有しても良い。ブロックアドレススキームは、ＣＨＳ（cylinder-head-sector）ブロックアドレスデータ、ＬＢＡ（logical  block  address）ブロックアドレスデータ等又はこれらの任意の組合せを有し得るが、これらに限定されない。
【００２５】
ブート命令コード２０６は、図１のコンピューティングシステム１００のようなコンピューティングシステムのブートを制御するよう構成されるデータを有しても良い。ブート命令コードは、ＢＩＯＳ（Basic  Input/Output  System）パラメータブロック（ＢＰＢ）等又はこれらの任意の組合せを有し得るが、これらに限定されない。
【００２６】
図３は、圧縮バイナリフォーマット３００（以下では「記憶メタデータ３００」と表す）の記憶メタデータの例示的な実施形態を示す。記憶メタデータ３００のような圧縮バイナリフォーマットの記憶メタデータは、従来のコンピューティングシステム及び／又は他のコンピューティングシステムに含まれても良い。以下に更に詳述するように、記憶メタデータを圧縮バイナリフォーマットで表現することから生じる問題を実質的に除去するために、記憶メタデータ３００は拡張可能言語フォーマットに変換され表現されても良い。
【００２７】
圧縮バイナリフォーマットの記憶メタデータ３００のような記憶メタデータを提供することは、誤りを生じ、及び／又はデータ損失をもたらし得る。これらの一例は、以下の図３の議論で説明される。圧縮バイナリフォーマットは、概して、記憶メタデータに可能な限り少ないデータを含むことにより、記憶メタデータの記憶装置の専有面積を最小化する。オペレーティングシステム、バックアップシステム、再パーティショニングユーティリティ又は他のプログラム若しくはシステムが記憶メタデータのフォーマット、位置等を理解する限り、記憶メタデータの圧縮特性は問題がない。しかしながら、記憶メタデータを様々に理解し解釈する多様なオペレーティングシステム、バックアップシステム、再パーティショニングユーティリティ又は他のプログラム若しくはシステムが同じコンピューティングシステムで動作するとき、問題が生じ得る。
【００２８】
例えば、図３の記憶メタデータ３００を検討する。幾つかのオペレーティングシステム、バックアップシステム、再パーティショニングユーティリティ又は他のプログラム若しくはシステムは、記憶メタデータ３００をＭＢＲハードディスクパーティションテーブル及びブート命令コードが格納され得るコンピュータ可読記憶媒体内のＣＨＳ型の開始アドレス３０２及びＣＨＳ型の終了アドレス３０４を含むＣＨＳブロックアドレスデータとして解釈し得る。代替として又は追加で、他のオペレーティングシステム、バックアップシステム、再パーティショニングユーティリティ又は他のプログラム若しくはシステムは、記憶メタデータ３００をＧＰＴハードディスクパーティションテーブル及びブート命令コードが格納され得るコンピュータ可読記憶媒体内のＬＢＡ型の開始アドレス３０６及びＬＢＡ型の終了アドレス３０８を含むＬＢＡブロックアドレスデータとして解釈し得る。更に他のオペレーティングシステム、バックアップシステム、再パーティショニングユーティリティ又は他のプログラム若しくはシステムは、記憶メタデータ３００自体を認識もしないかも知れない。記憶メタデータ３００が誤って解釈されるか又は認識されないとき、誤ったデータが誤って解釈された記憶アドレスからロードされ、記憶メタデータ３００は上書きされ及び／又は他の問題が生じ得る。類似した問題は、記憶メタデータが独自又は非拡張可能フォーマットで表現されるとき、生じ得る。したがって、記憶メタデータを圧縮バイナリフォーマットで又は独自若しくは非拡張可能フォーマットで表現することは、記憶メタデータが理解されない及び／又はそれ自体認識されない程度の誤り及び／又はデータ損失を生じ得る。
【００２９】
しかしながら、本願明細書に記載する幾つかの実施形態によると、拡張可能言語フォーマットが、記憶メタデータを表現するために用いられ、特に異種環境内のオペレーティングシステムの継続的成長を可能にする安全且つプログラミング的に都合の良い方法で、根本的な圧縮バイナリフォーマットの解釈における不一致を解決し得る。代替又は追加で、幾つかの実施形態は、圧縮バイナリフォーマットで格納される等価な記憶メタデータよりも僅かに大きな記憶装置占有面積を代償にして、記憶メタデータを明確に識別し、記憶メタデータの意味を明確化し得る。
【００３０】
拡張可能言語フォーマットは、ＸＭＬ（eXtensible  Markup  Language）フォーマット、ＪＳＯＮ（JavaScript(登録商標)  Object  Notation）フォーマット等又はそれらの組合せを含み得るがこれらに限定されない。代替又は追加で、拡張可能言語フォーマットは、キー値ペアを有する記憶メタデータを表現し得る。キー値ペアの各キーは、記憶メタデータの所与のパラメータ、属性又は態様を識別するストリングを有しても良く、対応する値は、識別されるパラメータ、属性又は態様の値を有しても良い。上述及び他の実施形態では、拡張可能言語フォーマットは、人間に理解可能であっても良い。
【００３１】
図４は、拡張言語フォーマット４００（以下では「記憶メタデータ４００」と表す）の図３の記憶メタデータ３００の例示的な実施形態を示す。図４の例では、記憶メタデータ４００は、１又は複数のキー値ペアを含むＪＳＯＮフォーマットで表現されても良い。例えば、第１、第２及び第３のキー値ペア４０２、４０４、４０６が図４に示されるが、他の実施形態では、３個のキー値ペア４０２、４０４、４０６より多数又は少数が含まれても良い。第１、第２及び第３のキー値ペア４０２、４０４、４０６の各々は、それぞれ「フォーマット」、「開始」、「終了」を含むストリングを有するキーを含む。
【００３２】
第１のキー値ペア４０２は、コンピュータ可読記憶媒体のハードディスクパーティションテーブルの「フォーマット」を識別し得る。図示した実施形態では、フォーマットは、第１のキー値ペア４０２の値により「ＭＢＲ」フォーマットとして識別できる。
【００３３】
第２のキー値ペア４０４は、コンピュータ可読記憶媒体の「開始」アドレスを識別し得る。また、第３のキー値ペア４０６は、ブート命令コードが格納されているコンピュータ可読記憶媒体の「終了」アドレスを識別し得る。図示した実施形態では、第２のキー値ペア内の値は開始オブジェクト４０８を有し、第３のキー値ペア内の値は終了オブジェクト４１０を有し得る。
【００３４】
開始オブジェクト４０８は、図４の例では、第２のキー値ペア４０４により特定のブロックアドレスフォーマット（本例では「ＣＨＳ」）を有するとして識別される開始アドレスの「フォーマット」を識別するフォーマットキー値ペア、及び特定の開始アドレスを識別する１又は複数の他のキー値ペア有しても良い。ＣＨＳブロックアドレスフォーマットの例では、例えば、開始オブジェクト４０８は、開始アドレスの「シリンダ」を特定のシリンダ（本例では「０３」）として識別するシリンダキー値ペア、開始アドレスの「先頭」を特定の先頭（本例では「５７」）として識別する先頭キー値ペア、及び開始アドレスを特定のセクタ（本例では「２２」）として識別するセクタキー値ペアを更に有しても良い。
【００３５】
同様に、終了オブジェクト４１０は、図４の例では、第３のキー値ペア４０６により特定のブロックアドレスフォーマット（本例では「ＣＨＳ」）を有するとして識別される終了アドレスの「フォーマット」を識別するフォーマットキー値ペア、及び特定の終了アドレスを識別する１又は複数の他のキー値ペア有しても良い。ＣＨＳブロックアドレスフォーマットの例では、例えば、終了オブジェクト４１０は、終了アドレスの「シリンダ」を特定のシリンダ（本例では「０５」）として識別するシリンダキー値ペア、終了アドレスの「先頭」を特定の先頭（本例では「１０」）として識別する先頭キー値ペア、及び終了アドレスを特定のセクタ（本例では「００」）として識別するセクタキー値ペアを更に有しても良い。
【００３６】
図５Ａは、記憶メタデータを表現する拡張言語を用いる例示的な方法５００のフローチャートである。方法５００及び／又はその変形は、本願明細書に記載されたコンピューティングシステム１００のようなコンピューティングシステムにより全体又は一部が実施されても良い。代替又は追加で、方法５００及び／又はその変形は、図１のプロセッサ１０４のようなプロセッサ又は他の処理装置により全体又は一部が実施されても良い。別個のブロックとして示したが、所望の実装に依存して、種々のブロックは、更なるブロックに分割され、少ないブロックに結合され、又は除去されても良い。
【００３７】
方法５００は、ブロック５０２で開始する。ブロック５０２で、記憶メタデータは、拡張可能言語フォーマットで書かれても良い。例えば、記憶メタデータは、図１のシステムメモリ１０６、取り外し可能記憶装置１３６又は非取り外し可能記憶装置１３８のようなコンピュータ可読記憶媒体に拡張可能言語フォーマットで書かれ、
ブロック５０４で、記憶メタデータは、拡張可能言語フォーマットで操作されても良い。幾つかの実施形態では、拡張可能言語フォーマットの記憶メタデータを操作することは、拡張可能言語フォーマットで表現されたハードディスクパーティションテーブルを再パーティショニングすることを含んでも良い。記憶メタデータは拡張可能言語フォーマットで表現されるので、記憶メタデータが圧縮バイナリフォーマットであった場合に生じる可能性のある、異なるシステム等による記憶メタデータの解釈に関する不一致は、最初から解決されるか又は部分的に回避され得る。
【００３８】
ブロック５０６で、拡張可能言語フォーマットの記憶メタデータは、転送されても良い。幾つかの実施形態では、拡張可能言語フォーマットの記憶メタデータを転送することは、拡張可能言語フォーマットの記憶メタデータをサーバからクライアントへネットワークを介して転送することを含んでも良い。記憶メタデータを拡張可能言語フォーマットで転送することにより、１より多いプログラム又はシステムが記憶メタデータの同じピースを操作するために用いられるとき、異なるシステム間の互換性は改善でき及び／又はソフトウェアバグが低減又は回避できる。
【００３９】
当業者は、この処理及び本願明細書に開始した他の処理及び方法において、その処理及び方法で実行される機能が異なる順序で実施されても良いことを理解するだろう。さらに、概略のステップ及び動作は、単に例として提供され、幾つかのステップ及び動作は、開示の実施形態の本質から逸脱することなく、任意であり、より少ないステップ及び動作に組み合わされ、又は追加ステップ及び動作に拡張されても良い。
【００４０】
例えば、方法５００は、記憶メタデータをコンピュータ可読記憶媒体に拡張可能言語フォーマットで書き込む前に、記憶メタデータを圧縮バイナリフォーマットから拡張可能言語フォーマットに変換するステップを更に有しても良い。上述及び他の実施形態では、圧縮バイナリフォーマットの記憶メタデータは、予めコンピュータ可読記憶媒体に格納されても良く、将来の使用で記憶メタデータの解釈に関する不一致を回避するために、例えば図１の拡張可能アルゴリズム１２６により拡張可能言語フォーマットに変換されても良い。
【００４１】
代替又は追加で、拡張可能言語フォーマットの記憶メタデータをコンピュータ可読記憶媒体に書き込む前に、記憶メタデータは、最初に、プラットフォーム固有のキー値符号化フォーマットで又は独自フォーマットでコンピュータ可読記憶媒体に格納されても良い。上述及び他の実施形態では、方法５００は、拡張可能言語フォーマットの記憶メタデータをコンピュータ可読記憶媒体に書き込む前に、プラットフォーム固有のキー値符号化フォーマット（又は独自若しくは他のフォーマット）で格納された記憶メタデータを拡張可能言語フォーマットに変換するステップを更に有しても良い。
【００４２】
図５Ｂは、記憶メタデータを表現するために拡張可能言語を用いる別の例示的な方法５１０のフローチャートである。方法５１０及び／又はその変形は、本願明細書に記載されたコンピューティングシステム１００のようなコンピューティングシステムにより全体又は一部が実施されても良い。代替又は追加で、方法５１０及び／又はその変形は、図１のプロセッサ１０４のようなプロセッサ又は他の処理装置により全体又は一部が実施されても良い。別個のブロックとして示したが、所望の実装に依存して、種々のブロックは、更なるブロックに分割され、少ないブロックに結合され、又は除去されても良い。
【００４３】
方法５１０は、ブロック５１２で開始し得る。ブロック５１２で、コンピューティングシステムが設けられ、該コンピューティングシステムは記憶メタデータを有する。
【００４４】
ブロック５１４で、記憶メタデータは、拡張可能言語フォーマットで表現されても良い。記憶メタデータを拡張可能言語フォーマットで表現するステップは、記憶メタデータの複数のコンポーネントの各々を表現するためにキー値ペア、又はより詳細にはキー及び値を用いるステップを有しても良い。
【００４５】
ブロック５１６で、拡張可能言語フォーマットの記憶メタデータは、コンピューティングシステムに格納されても良い。
【００４６】
図５Ｂには図示しないが、方法５１０は、拡張可能言語フォーマットを用いて記憶メタデータを表現する前に、記憶メタデータを圧縮バイナリフォーマットから拡張可能言語フォーマットに変換するステップを更に有しても良い。
【００４７】
幾つかの実施形態では、図５Ｂの方法５１０は、拡張可能言語フォーマットで格納された記憶メタデータを読み出す拡張可能言語フォーマットを理解する再パーティショニングユーティリティを有しても良い。次に、再パーティショニングユーティリティは、コンピュータ可読記憶媒体に格納されたデータを失うことなく及び記憶メタデータに上書きすることなく、コンピューティングシステムのコンピュータ可読記憶媒体を再パーティショニングしても良い。
【００４８】
幾つかの実施形態では、コンピューティングシステムは、コンピュータ可読記憶媒体を有しても良い。また、記憶メタデータは、コンピュータ可読記憶媒体内に格納されたデータの位置を示す第１及び第２のアドレスデータを有しても良い。第１のブロックアドレスデータは、第２のブロックアドレスデータを用い且つ拡張マークアップ言語を理解しないコンピューティングシステムのオペレーティングシステムに格納され及び／又はインスタンスを作成することにより、危険に晒され得る。上述及び他の実施形態では、図５Ｂの方法５１０は、第１のブロックアドレスデータを用いるコンピューティングシステムの第１のオペレーティングシステムを格納し及び／又はインスタンスを生成するステップを有しても良い。第１のオペレーティングシステムは、拡張可能言語フォーマットを理解するよう構成されても良い。第２のオペレーティングシステムもコンピューティングシステムに格納され及び／又はインスタンスを生成されても良い。第２のオペレーティングシステムは、拡張マークアップ言語フォーマットを理解するよう構成されても良く、コンピューティングシステムに第２のオペレーティングシステムのインスタンスを生成することにより、第１のブロックアドレスデータが危険に晒されないようにしても良い。
【００４９】
したがって、本願明細書に記載した幾つかの実施形態は、ＪＳＯＮフォーマット又は他の拡張可能言語フォーマットの記憶メタデータを読み出し及び書き込むディスクパーティショニング及びブートブロック操作プログラムを有しても良い。上述及び他の実施形態は、記憶メタデータが圧縮バイナリフォーマット、プラットフォーム固有キー値ペアフォーマット、及び／又は独自フォーマットで読み出され及び書き込まれるシステムと比べて、複数の言語、オペレーティングシステム及びランタイム環境に渡り大きな互換性を提供できる。
【００５０】
幾つかの実施形態では、記憶メタデータを拡張可能言語フォーマットで表現することは、記憶メタデータ又は他のデータを危険に晒すことなく、記憶メタデータに関して異種の及び時には矛盾する前提を有する複数のオペレーティングシステムを同じコンピューティングシステムで動作可能にし得る。代替又は追加で、記憶メタデータに関して異種の及び場合によっては矛盾する前提を有するエミュレータ、仮想機械、再パーティショニングユーティリティ又は他のプログラムは、記憶メタデータを拡張可能言語フォーマットで表現することにより、記憶メタデータ又は他のデータを危険に晒すことなく、同じコンピューティングシステムで動作され得る。
【００５１】
上述及び他の実施形態は、記憶メタデータが圧縮バイナリフォーマットで表現されるシステムと比べて、ブートメニュー調整、オペレーティングシステムのインストール、データ記憶装置の追加、データ統合及び／又は再パーティショニングに含まれる危険を除去又は実質的に低減できる。代替又は追加で、記憶メタデータを圧縮バイナリフォーマットではなく拡張可能言語フォーマットで表現することにより、データセンタ及び／又は他のシステムは、高度なパーティションテーブルフォーマットを用い、異なるオペレーティングシステムに渡って分散する可能性のある大規模且つ増大するディスクドライブアレイを、データ損失又はダウンタイムの少ない危険で管理できる。クラウドサービスは、種々のオペレーティングシステムを用い、圧縮バイナリフォーマットとは対照的に拡張可能言語フォーマットを用いることにより、ハードウェアアップグレードの危険及びダウンタイムを低減し得る。
【００５２】
前述のように、幾つかの実施形態で、拡張可能言語フォーマットの記憶メタデータは、人間に理解可能であっても良い。記憶メタデータを人間に理解可能に作成することにより、記憶メタデータは、比較的ユーザフレンドリであり、ユーザに理解し易くなり、異なるオペレーティングシステム及びハードウェアに渡り安全の一貫性の道を開き得る。
【００５３】
代替又は追加で、拡張可能言語フォーマットを理解するソフトウェアエージェントは、推測を行うことなくより多くを理解できるので、拡張可能言語フォーマットの記憶メタデータに対して、圧縮バイナリフォーマットの記憶メタデータに対するより多くを自動的に行うことができても良い。
【００５４】
本願明細書に記載した実施形態は、以下に更に詳細に議論するように、種々のコンピュータハードウェア又はソフトウェアモジュールを備えた特定用途又は汎用コンピュータの使用を含み得る。
【００５５】
本願明細書に記載した実施形態は、コンピュータにより実行可能な命令又はデータ構造を伝える又は格納しているコンピュータ可読媒体を用いて実施され得る。このようなコンピュータ可読媒体は、汎用又は特定目的コンピュータによりアクセスできる利用可能な媒体であり得る。例として且つ限定ではなく、このようなコンピュータ可読媒体は、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ、ＣＤ−ＲＯＭ又は他の光ディスク記憶装置、磁気ディスク記憶装置又は他の磁気記憶装置を含むコンピュータ可読記憶媒体、又はコンピュータにより実行可能な命令若しくはデータ構造の形式で所望のプログラムコード手段を伝える若しくは格納するために用いられ汎用若しくは特定目的コンピュータによりアクセス可能な他の媒体を有し得る。上述の組合せも、コンピュータ可読媒体の範囲に包含され得る。
【００５６】
コンピュータにより実行可能な命令は、例えば、汎用コンピュータ、特定目的コンピュータ又は特定目的処理装置に特定の機能又は機能グループを実行させる命令及びデータを有する。本発明の主題は構造的特徴及び／又は方法論的動作に特有の言葉で記載されたが、本発明の主題は、特許請求の範囲に定められる上述の特定の特徴又は動作に限定されないことが理解されるべきである。むしろ、上述の特定の特徴及び動作は、特許請求の範囲の実施の例示的携帯として開示されたものである。
【００５７】
本願明細書で用いられるように、用語「モジュール」又は「コンポーネント」は、コンピューティングシステムで実行されるソフトウェアオブジェクト又はルーチンを表し得る。本願明細書に記載されたのと異なるコンポーネント、モジュール、エンジン及びサービスは、（例えば、別個のスレッドとして）コンピューティングシステムで実行されるオブジェクト又は処理として実施されても良い。本願明細書に記載されたシステム及び方法はソフトウェアで実施されることが望ましいが、ハードウェアによる実装又はソフトウェアとハードウェアの組合せも、可能であり想定される。この説明では、「コンピュータエンティティ」は、本願明細書で先に定められたようにコンピューティングシステム、又はコンピューティングシステムで実行されるモジュール若しくはモジュールの組合せであっても良い。
【００５８】
本願明細書に記載された全ての例及び条件文は、教育上の目的で、読者が本発明の原理及び発明者により考案された概念を理解するのを助け、技術を促進させるためであり、これらの特に記載された例及び条件に限定されないものと考えられるべきである。本発明の実施形態が詳細に記載されたが、種々の変更、置換及び修正が本発明の精神及び範囲から逸脱することなく行われうることが理解されるべきである。
【符号の説明】
【００５９】
１００  コンピューティング装置
１０２  基本構成
１０４  プロセッサ
１０６  システムメモリ
１０８  メモリバス
１１０  Ｌ１キャッシュ
１１２  Ｌ２キャッシュ
１１４  プロセッサコア
１１６  レジスタ
１１８  メモリ制御部
１２０  ＯＳ
１２２  アプリケーション
１２４  プログラムデータ
１２６  拡張可能アルゴリズム
１２８  記憶メタデータ
１２８  記憶メタデータ
１３０  バス／インタフェース制御部
１３２  記憶装置
１３４  記憶装置インタフェースバス
１３６  取り外し可能記憶装置
１３８  非取り外し可能記憶装置
１４０  インタフェースバス
１４２  出力装置
１４４  周辺機器インタフェース
１４６  通信装置
１４８  グラフィックス処理ユニット
１５０  オーディオ処理ユニット
１５２  Ａ／Ｖポート
１５４  シリアルインタフェース制御部
１５６  パラレルインタフェース制御部
１５８  Ｉ／Ｏポート
１６０  ネットワーク制御部
１６２  他のコンピューティング装置
１６４  通信ポート
２０２  ハードディスクパーティションテーブル
２０４  ブロックアドレスデータ
２０６  ブート命令コード
【図１】
2013246827.tif 000003
【図２】
2013246827.tif 000004
【図３】
2013246827.tif 000005
【図４】
2013246827.tif 000006
【図５Ａ】
2013246827.tif 000007
【図５Ｂ】
2013246827.tif 000008