JP4205560B2 - ディスクレスネットワークブータブルコンピュータにおける不揮発性メモリキャッシュを用いた信頼性の改善 - Google Patents

ディスクレスネットワークブータブルコンピュータにおける不揮発性メモリキャッシュを用いた信頼性の改善 Download PDF

Info

Publication number
JP4205560B2
JP4205560B2 JP2003394768A JP2003394768A JP4205560B2 JP 4205560 B2 JP4205560 B2 JP 4205560B2 JP 2003394768 A JP2003394768 A JP 2003394768A JP 2003394768 A JP2003394768 A JP 2003394768A JP 4205560 B2 JP4205560 B2 JP 4205560B2
Authority
JP
Japan
Prior art keywords
data
computer
cpu
storage volume
remote storage
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2003394768A
Other languages
English (en)
Other versions
JP2004178596A (ja
JP2004178596A5 (ja
Inventor
ジェイ.ウエステリネン ウィリアム
ディー.ニコルソン クラーク
アーガン チェンク
アール.フォーティン マイケル
アイガン メフメット
Original Assignee
マイクロソフト コーポレーション
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority to US10/304,367 priority Critical patent/US7036040B2/en
Application filed by マイクロソフト コーポレーション filed Critical マイクロソフト コーポレーション
Publication of JP2004178596A5 publication Critical patent/JP2004178596A5/ja
Publication of JP2004178596A publication Critical patent/JP2004178596A/ja
Application granted granted Critical
Publication of JP4205560B2 publication Critical patent/JP4205560B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1415Saving, restoring, recovering or retrying at system level
    • G06F11/1443Transmit or communication errors
    • GPHYSICS
    • G06COMPUTING; CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0862Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with prefetch
    • GPHYSICS
    • G06COMPUTING; CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0866Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
    • GPHYSICS
    • G06COMPUTING; CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/4401Bootstrapping
    • G06F9/4416Network booting; Remote initial program loading [RIPL]

Description

本発明は、一般にネットワークブータブルコンピュータに関し、より詳細には、ディスクレスネットワークブータブルコンピュータ(diskless network-bootable computer)に関する。

ハードディスクは、現在のパーソナルコンピュータ(PC)を構成する不可欠なコンポーネントの1つである。現在のPCアーキテクチャでは、適切に機能するように、主システムハードディスク(primary system hard disk)とその他のPCコンポーネントとは極めて緊密に結合され、物理的に同一の場所に配置されている。このPC構築上の基礎要件は、多くの問題、非効率、制約を生み出している。例えば、現行のアーキテクチャでは、ユーザは(ドキュメント、ファイル、設定、認証その他の)重要なユーザ「状態(state)」をユーザのデスクトップPC内のハードディスクにローカルにストアし管理することを余儀なくされている。

このアーキテクチャは、情報技術(IT)組織(organization)において、スタンドアロンPCおよびネットワーク接続されたPCのインフラストラクチャのサポートおよび管理に多額の費用がかかる原因となっている。さらに、企業のIT組織では、個々のハードドライブにストアされた企業資産の管理が適切に行えなくなっている。例えば、デスクトップごとにプログラムのバックアップおよびリストアを管理するのは非効率かつ困難である。ノンブーティングハードドライブ(non-booting hard drive)が絡む問題では、サービスコールおよび/またはPCへの物理アクセスが必要になる。デスクトップストレージは専門家が管理していないため、企業資産がしばしば失われる。また、IT組織は、ユーザ状態を直接管理することができないので、PCの未承認使用を「取り締まる」ことが難しい。

主システムハードディスクとその他のPCコンポーネントとが緊密に結合され、物理的に同一の場所に配置されているため、企業内のユーザのストレージをプールする機会が失われている。今日の企業ユーザが必要としているディスク空間は平均で約5GBである。今日のPCに搭載されている最小のハードドライブは約30GB(ムーアの法則によれば、将来的には40GB、60GB、80GBと増加することが予想される)である。つまり、今日企業で使用されている平均的なPCにおける未使用のディスク空間の量は80%を超える。

ストレージ管理はこの5年から10年の間に目覚しい進歩を遂げた。LUN(論理ディスクユニット)を仮想化し、これらの仮想化リソースの「背後」でストレージを継ぎ目なしに管理できるようになったことで、企業ストレージの管理にかかる費用は大幅に削減された。ユーザのデスクトップに存在するストレージは、これらの進歩の恩恵を受けることができない。

この緊密な結合と内蔵ハードドライブへのPCの依存は、ユーザが経験する他の派生的問題を生んでいる。ハードドライブは回転数を上げる(spin up)のに時間がかかる。この時間は、PCのブートまたはハイバネーション状態からの再開に必要な時間の大部分を占める。ハードドライブは可動部分を有する数少ないPC内コンポーネントの1つである。したがって、ハードドライブは最も信頼性の低いPCコンポーネントであり、PCが発する熱と音の最大の発生源の1つである。

これらの問題を解決するため、PC業界は何度も、企業PCからハードディスクを取り除こうと試みた。ディスクレス「ネット」PC(disk-less "net" PC)を生み出すこうした試みの多くは、BOOT−PやPXE(プレブート実行環境)などの技術を利用して、集中管理されたストレージからブートし実行するものである。こうした試みはどれも成功しなかった。こうした試みが成功しなかった理由の1つは、PCアーキテクチャおよびオペレーティングシステムが信頼性を維持しつつ動作するために要求する、整合性があり待ち時間の短い「ブロック」アクセスを、イーサネット(登録商標)およびTCP/IPが保証できないことにある。別の理由は、ページファイルやシステムレジストリファイルなどの重要なファイルは、ユーザが安心して使用できるように、PCごとにローカルにもたなければならないことにある。さらに、eメール、ファイルシェアリング、ウェブアクセスなど、PCアプリケーションの大多数は、オペレーティングネットワーク(operating network)が適切に動作していることを必要とする。

ネットワークが信頼性や最適水準を維持して動作していないと、ユーザの生産性は負の影響をこうむる。例えば、今日のネットワークにおける一般的な障害は、長いときは5秒から6秒間続くことがある。障害が発生したときに、オペレーティングシステムがページを処理していた場合、そのデータが失われることもあり得る。

本発明は、1つまたは複数のリモートストレージボリューム(remote storage volume)を備えるリモートブートサーバ(remote boot server)が接続されたネットワークに接続され、不揮発性メモリ(NVM)キャッシュを備えるコンピュータにおいて、ネットワークディスクレスコンピュータオペレーティングシステム(networked diskless computer operating system)を信頼性を維持しつつ動作させるための方法およびシステムを提供する。処理中、アプリケーションまたはオペレーティングシステムからデータを受け取ると、予測キャッシュコントロールモジュール(predictive cache control module)は、そのデータをNVMキャッシュにストアするか、それともリモートストレージボリュームにストアするか判断する。データをリモートストレージボリュームにストアする場合、トランザクションによってそのデータをリモートストレージボリュームに書き込む。ネットワーク障害が発生している場合、またはトランザクション完了メッセージを受信しなかった場合、リモートストレージボリュームにストアすべきデータをNVMキャッシュにキャッシュし、ネットワークが動作しているときに、トランザクションによってそのデータをNVMキャッシュからリモートストレージボリュームに書き込む。トランザクション完了メッセージを受信しなかった場合、データをリモートストレージボリュームに再送信する。

ユーザの過去の使用履歴(history of prior use)を維持管理し、ネットワーク障害の間もユーザが処理を続けられるようにするのに必要なデータを、過去の使用履歴に基づいてNVMキャッシュにストアする。静的設定データ(static configuration data)および動的設定データ(dynamic configuration data)を始めとするデータを、コンピュータの電源を切る前またはコンピュータをハイバネーション状態にする前にNVMキャッシュにストアする。それらのデータ、1組の静的設定データ、および1組の動的設定データには、デスクトップ設定、キーボード設定、コンピュータの電源を切る前またはコンピュータをハイバネーション状態にする前に使用していたデータファイルが含まれる。コンピュータの電源を入れたとき、ネットワークが利用可能な状態にない場合、コンピュータはNVMキャッシュからコールドブートされる。

リモートブートサーバは、コンピュータからブート要求を受信し、リモートストレージボリュームにストアされている静的設定データおよび動的設定データを使用してコンピュータをブートする。サーバは、リモートストレージボリュームへのデータ書込み処理が完了したとき、完了メッセージをコンピュータに送信する。リモートブートサーバはまた、静的設定データおよび動的設定データをストアできるサイズで、初期化時間がリモートストレージボリュームのディスクドライブのスピンアップ時間とほぼ等しい、不揮発性メモリキャッシュを備えている。ネットワークがブートされる場合、またはコンピュータがブートされる場合もしくはハイバネーション状態から処理を再開する場合、コンピュータシステムのブートおよびコンピュータシステムのハイバネーション状態からの再開のうちの少なくとも一方の間に、ディスクドライブが回転数を上げて、ディスクドライブにストアされている残りの設定データを初期化しているうちに、リモートブートサーバの不揮発性メモリキャッシュにストアされた静的設定データおよび動的設定データが初期化される。

本発明のネットワークスタック(network stack)は、何がNVMキャッシュおよびリモートストレージボリュームにストアされているか判断する予測キャッシュコントロールモジュールと、NVMキャッシュが満杯になるなどのエラーを処理するファイルシステムフィルタドライバ(file system filter driver)と、リモートストレージボリューム内のハードディスクへのファイルの格納および取出しを行うためのファイルシステム(file system)と、ネットワーク障害が発生している場合、リモートストレージボリュームに送信するデータをNVMキャッシュに書き込む書込みキャッシュフィルタドライバ(write cache filter driver)と、ネットワーク上での送信のためにパケットデータをカプセル化するネットワークプロトコルレイヤ(network protocol layer)にトランザクションによってパケットデータを送信するための、iSCSIなどのブロックモードネットワークストレージドライバ(block mode network storage driver)と、パケットをネットワークを介してリモートストレージボリュームに送信するネットワークアダプタドライバ(network adapter driver)とを含む。一実施形態においては、NVMキャッシュとのインターフェースを取るためにNVMキャッシュドライバ(NVM cache driver)を使用する。

本発明のさらなる特徴および利点は、添付の図面を参照しながら行う以下の例示的な実施形態の詳細な説明から明らかとなるであろう。

添付の特許請求の範囲には本発明の特徴が詳細に記載されているが、添付の図面と併せて以下の詳細な説明を読むことにより、本発明をその目的および利点と共に、最もよく理解することができるであろう。

本発明は、ネットワークが一時的に利用できなくなったり遅くなったりしたときにシステムが使用するローカルストレージキャッシュ(local storage cache)を設けることにより、PCユーザがネットワーク障害の影響を受けずにいられるようにする。ストレージキャッシュは後でネットワーク状態が改善されたときに、集中管理されるストレージと同期が取られる。ストレージキャッシュが大規模になるほど、ユーザはネットワーク障害の影響を受けにくくなる。ローカルストレージキャッシュには、不揮発性固体素子メモリが使用される。

NVMはまだ非常に高価なので、PC内のハードディスクをすべてNVMに置き換えることは現時点ではできない。しかし、256MB程度の比較的少容量のNVMをPCに追加し、NVMを「インテリジェント」書込みキャッシュとして構成することができる。このキャッシュは信頼性とパフォーマンスを提供し、集中管理されたストレージプールからブートされるディスクレスPCをシステム管理者が実装することを可能とすることができる。

本発明のディスクレスコンピュータは中央のストレージプールからブートされるが、これにはいくつかの利点がある。例えば、NVM書込みキャッシュは遅いネットワーク待ち時間の影響を著しく低下させることができ、デスクトップからハードディスクを完全に取り除いて、データセンタに移すことができる。NVMキャッシュがあれば、大多数のネットワーク障害の間、コンピュータは動作し続けることができる。これにより、コンピュータの配備および運用は企業にとってかなり安価なものになる。ユーザのデスクトップをすべてデータセンタの環境内で、IT専門家が精通しているツールを利用して、集中的に管理することができるであろう。LUN(論理ストレージユニット)仮想化など、広くデータセンタで利用されている技術を用いるストレージ管理技法を利用することで、すべてのユーザのデスクトップを効率的に管理できるようになり、大幅な費用削減を実現することができる。例えば、デスクトップボリュームのミラーリング、バックアップ、リストア、修正パッチ(hot-fix)およびサービスパックでの更新、ウイルスの検査および駆除のすべてを、最短のユーザ使用不能時間(minimal user down time)でデータセンタから行うことができる。

別の利点は、遠隔地のオフィスにデスクトップを配備し、それを中央で管理することができることである。コンピュータが故障した場合でも、データを消失したり、ITサービス専門家の手を煩わせたりすることなく、ほとんどの場合、コンピュータを新しく購入してプラグを差し込めば、すぐに使用できるようになる。ストレージをプールし、企業内のユーザのデスクトップすべてに均等に割り振ることができる。これにより、ストレージ稼働率は大きく改善され、今日のユーザデスクトップが抱えるようなストレージの過剰供給の必要性を回避できる。

本発明を利用するコンピュータは、NVMキャッシュ内にあるデータについてDRAMキャッシュミスまたはページフォルトが発生した場合、より速いパフォーマンスを実現する。NANDフラッシュ(NAND flash)の読出し/書込み待ち時間は、ディスクより1万から10万倍速いためである。さらに、コールドブートおよびハイバネーション状態からの再開に要する時間もより速くなる。

図面に移ると、適切なコンピューティング環境で実施された本発明が示されている。図面では、同じ参照番号によって同じ要素を参照する。プログラムモジュールなどのパーソナルコンピュータによって実行されるコンピュータ実行可能命令の一般的コンテキストの中で本発明を説明するが、そうすることが必ずしも必要なわけではない。プログラムモジュールには通常、特定のタスクを実行し、または特定の抽象データ型を実装する、ルーチン、プログラム、オブジェクト、コンポーネント、データ構造などが含まれる。さらに、ハンドヘルド装置、マルチプロセッサシステム、マイクロコンピュータベースのまたはプログラム可能な家電製品、ネットワークPC、ミニコンピュータ、メインフレームコンピュータその他を始めとする他のコンピュータシステム構成を用いて本発明を実施できることが、当業者には理解されよう。本発明はまた、通信ネットワークを介してリンクされたリモート処理装置によってタスクが実行される分散コンピューティング環境でも実施できる。分散コンピューティング環境では、プログラムモジュールは、ローカルメモリストレージ装置とリモートメモリストレージ装置の両方に配置することができる。

図1には、本発明を実施することのできる適切なコンピューティングシステム環境100の例が示されている。コンピューティングシステム環境100は、適切なコンピューティング環境の一例にすぎず、本発明の使用範囲または機能範囲の限定を示唆することを意図したものではない。コンピューティング環境100が、例示的な動作環境100に図示されている任意のコンポーネントまたはコンポーネントの組合せに依存する、あるいはそれらを要求すると解釈してはならない。

本発明は数々の汎用または専用のコンピューティングシステム環境または構成を用いて動作する。本発明を使用するのに適切な周知のコンピューティングシステム、環境、および/または構成の例として、パーソナルコンピュータ、サーバコンピュータ、ハンドヘルドまたはラップトップ装置、マルチプロセッサシステム、マイクロコンピュータベースのシステム、セットトップボックス、プログラム可能な家電製品、ネットワークPC、ミニコンピュータ、メインフレームコンピュータ、上記の任意のシステムまたは装置を含む分散コンピューティング環境その他が挙げられるが、これらに限定されるものではない。

プログラムモジュールなどのコンピュータによって実行されるコンピュータ実行可能命令の一般的コンテキストの中で本発明を説明する。プログラムモジュールには通常、特定のタスクを実行し、または特定の抽象データ型を実装する、ルーチン、プログラム、オブジェクト、コンポーネント、データ構造などが含まれる。本発明はまた、通信ネットワークを介してリンクされたリモート処理装置によってタスクが実行される分散コンピューティング環境でも実施できる。分散コンピューティング環境では、プログラムモジュールは、メモリストレージ装置を含むローカルコンピュータストレージ媒体およびリモートコンピュータストレージ媒体の両方に配置することができる。

図1を参照すると、本発明を実施するための例示的なシステムには、コンピュータ110の形態をとる汎用コンピューティング装置が含まれている。コンピュータ110のコンポーネントとしては、プロセシングユニット120、システムメモリ130、システムメモリ130を始めとする様々なシステムコンポーネントをプロセシングユニット120に結合するシステムバス121を挙げることができるが、これらに限定されるものではない。これらのコンポーネントはマザーボード111上に配置される。システムバス121は、メモリバスまたはメモリコントローラ、周辺バス、ローカルバスを始めとする、多種多様なバスアーキテクチャのいずれかを使用した複数のタイプのバス構造のどれでもよい。例を挙げると、このようなアーキテクチャとしては、ISA(Industry Standard Architecture、業界標準アーキテクチャ)バス、MCA(Micro Channel Architecture、マイクロチャネルアーキテクチャ)バス、EISA(Enhanced ISA、拡張ISA)バス、VESA(Video Electronics Standards Associate、ビデオエレクトロニクス規格協会)ローカルバス、メザニンバス(Mezzanine bus)としても知られるPCI(Peripheral Component Interconnect、周辺装置相互接続)バスなどがあるが、これらに限定されるものではない。

コンピュータ110は一般に、多種多様なコンピュータ可読媒体を含む。コンピュータ可読媒体は、コンピュータ110によってアクセス可能な任意の市販の媒体でよく、揮発性および不揮発性媒体、着脱可能媒体および固定媒体を含む。例を挙げると、コンピュータ可読媒体には、コンピュータストレージ媒体および通信媒体が含まれるが、これらに限定されるものではない。コンピュータストレージ媒体には、コンピュータ可読命令、データ構造、プログラムモジュール、またはその他のデータなどの情報をストアするための任意の方法および技術により実装される、揮発性および不揮発性媒体、着脱可能および固定媒体が含まれる。コンピュータストレージ媒体には、RAM、ROM、EEPROM、フラッシュメモリ、またはその他のメモリ技術、CD−ROM、DVD(digital versatile disk、デジタル多用途ディスク)、またはその他の光ディスクストレージ、磁気カセット、磁気テープ、磁気ディスクストレージ、またはその他の磁気ストレージ装置、あるいは望みの情報をストアするのに使用できコンピュータ110によってアクセス可能なその他の任意の媒体が含まれるが、これらに限定されるものではない。通信媒体では一般に、コンピュータ可読命令、データ構造、プログラムモジュール、またはその他のデータは、搬送波またはその他の搬送機構などの変調データ信号によって実施され、通信媒体には情報配布媒体が含まれる。「変調データ信号」という用語は、情報を信号中に符号化するための方式によって設定または変化させた1つまたは複数の特性を有する信号を意味する。例を挙げると、通信媒体には、有線ネットワークや直接線接続(direct-wired connection)などの有線媒体、音波、RF、赤外線、およびその他の無線媒体などの無線媒体が含まれるが、これらに限定されるものではない。上記の任意の組合せも、コンピュータ可読媒体の範囲に含まれる。

システムメモリ130には、読出し専用メモリ(ROM)131およびランダムアクセスメモリ(RAM)132など、揮発性および/または不揮発性の形態を取るコンピュータストレージ媒体が含まれる。ROM131には一般に、起動時などにコンピュータ110内の要素間での情報転送をサポートする基本ルーチンを含む基本入出力システム(BIOS)133が格納されている。RAM132には一般に、プロセシングユニット120が直ちにアクセス可能であり、かつ/またはやがて利用する(operate on)データおよび/またはプログラムモジュールが含まれる。図1には、例として、オペレーティングシステム134、アプリケーションプログラム135、その他のプログラムモジュール136
、およびプログラムデータ137が示されているが、これらに限定されるものではない。

コンピュータ110はまた、その他の着脱可能/固定、揮発性/不揮発性コンピュータストレージ媒体を含むことができる。図1には、単なる例として、着脱可能な不揮発性磁気ディスク152に対する読み書きを行う磁気ディスクドライブ151、CD−ROMまたはその他の光媒体などの着脱可能な不揮発性光ディスク156に対する読み書きを行う光ディスクドライブ155が示されている。例示的な動作環境で使用することのできるその他の着脱可能/固定、揮発性/不揮発性コンピュータストレージ媒体としては、磁気テープカセット、フラッシュメモリカード、DVD、デジタルビデオテープ、固体素子RAM、固体素子ROMその他が挙げられる。磁気ディスクドライブ151および光ディスクドライブ155は一般に、インターフェース150などの着脱可能メモリインターフェースによってシステムバス121に接続される。NVMはまだ非常に高価なので、コンピュータ110内のハードドライブをすべてNVMで置き換えることはできない

図1に示される上で論じたドライブおよび関連するコンピュータストレージ媒体は、コンピュータ可読命令、データ構造、プログラムモジュール、およびその他のデータのストレージをコンピュータ110に提供する。図1には、例えば、オペレーティングシステム144、アプリケーションプログラム145、その他のプログラムモジュール146、およびプログラムデータ147を格納するリモートストレージボリューム182が示されている。これらのコンポーネントは、オペレーティングシステム134、アプリケーションプログラム135、その他のプログラムモジュール136、およびプログラムデータ137と同じでもよく、異なっていてもよいことを留意されたい。オペレーティングシステム
144、アプリケーションプログラム145、その他のプログラムモジュール146、およびプログラムデータ147には異なる番号が振られており、本明細書では少なくともそれらが異なるコピーであることを示している。リモートストレージボリューム182は一般に、中心的な位置(central location)に配置され、複数のユーザのためのアプリケーションプログラム、その他のプログラムモジュール、およびプログラムデータを含むことができる。ユーザは、キーボード162、一般にマウスと呼ばれるポインティングデバイス161、トラックボール、またはタッチパッドなどの入力装置を介して、コンピュータ110にコマンドおよび情報を入力することができる。その他の入力装置(図示せず)と
しては、マイクロフォン、ジョイスティック、ゲームパッド、衛星放送用パラボラアンテナ(satellite dish)、スキャナその他が挙げられる。上記およびその他の入力装置はしばしば、システムバスに結合されたユーザ入力インターフェース160を介してプロセシングユニット120に接続されるが、パラレルポート、ゲームポート、USB(universal serial bus、ユニバーサルシリアルバス)などその他のインターフェースおよびバス構造によって接続してもよい。モニタ191またはその他のタイプのディスプレイ装置もまた、ビデオインターフェース190などのインターフェースを介してシステムバス121に接続される。コンピュータは、モニタの他にも、出力周辺インターフェース195を介して接続することのできるスピーカ197やプリンタ196などのその他の周辺出力装置を含むことができる。

コンピュータ110は、リモートコンピュータ180などの1つまたは複数のリモートコンピュータへの論理接続を使用して、ネットワーク環境で動作する。リモートコンピュータ180は、別のパーソナルコンピュータ、サーバ、ルータ、ネットワークPC、ピア装置(peer device)、またはその他の一般のネットワークノードでよく、パーソナルコンピュータ110に関連する上記の要素の多くまたはすべてを一般に含むが、図1にはメモリストレージ装置181のみが示されている。図1に示す論理接続には、ローカルエリアネットワーク(LAN)171およびワイドエリアネットワーク(WAN)173が含まれるが、他のネットワークを含むこともできる。こうしたネットワーク環境は、オフィス、企業規模のコンピュータネットワーク、イントラネット、およびインターネットで一般的なものである。

パーソナルコンピュータ110は、LANネットワーク環境で利用する場合、ネットワークインターフェースまたはアダプタ170を介してLAN171に接続される。パーソナルコンピュータ110は、WANネットワーク環境で利用する場合、一般にインターネットなどのWAN173経由の通信を確立するためのモデム172またはその他の手段を含む。モデム172は内蔵型でも外付け型でもよく、システムバス121に接続することができる。モデムは、図ではシステムバスに直接接続してあるが、ユーザ入力インターフェース160、ネットワークアダプタ170、またはその他の適切な機構を介してシステムバスに接続することもできる。TCP/IPオフロードエンジン(TCP/IP offload engine)174を、ネットワークアダプタ170に接続することができる。TCP/IPオフロードエンジン174は、一般に実行に際してプロセシングユニット120に大量のリソースを要求するTCP/IPタスクをオフロードするために使用される。ネットワークアダプタ170およびTCP/IPスタックは一般に、iSCSI実装用のネットワークアダプタカードの一部である。一般に不揮発性の固定磁気媒体であるリモートストレージボリューム182は、リモートブートサーバ183内に配置される。リモートストレージボリューム182は一般に、ネットワークアダプタ170などのインターフェースを介してシステムバス121に接続される。パーソナルコンピュータとの関連で示したプログラムモジュールまたはその部分を、リモートストレージボリューム182にストアすることができる。図1には、例として、メモリ装置181に存在するリモートアプリケーションプログラム185が示されているが、これに限定するものではない。図示したネットワーク接続は例示的なものであり、コンピュータ間で通信リンクを確立するためのその他の手段を利用してもよいことは理解されよう。

以下の説明では、別段の指摘がない場合は、1つまたは複数のコンピュータによって実行される動作と処理の記号表現とを参照して本発明を説明する。したがって、コンピュータ実行(being computer-executed)と呼ばれることもあるそのような動作および処理には、構造化された形式でデータを表現する電気信号に対してコンピュータのプロセシングユニットが行う操作が含まれることを理解されたい。この操作はコンピュータのメモリシステム内のロケーションでデータを変形または維持(maintain)し、当業者に周知の方式でコンピュータの処理を再構成しまたは変更する。データを維持するデータ構造は、データ形式によって定義される特定の属性を有するメモリの物理ロケーションである。本発明は上記のコンテキストで説明されているが、それに限定する意図はなく、以下本明細書で説明する様々な動作および処理がハードウェアでも実施できることは当業者には理解されるであろう。

本発明は多種多様な方法で実施することができる。図2には、NVMキャッシュがネットワークアダプタカードのハードウェアに存在する一実施形態が示されている。この実施形態は、ハードウェアカード200および関連ドライバをコンピュータ110にインストールすることにより、現在のコンピュータ上で実施することができる。iSCSI(Internet Small Computer System Interface、インターネット小型コンピュータシステムインターフェース)ベースのハードウェアカード200が使用されている。カード200はPCIバスまたはそれと同等なタイプのバスに接続され、オペレーティングシステム134はこれをシステム100に付属するSCSIドライバと見なす。ハードウェアカード200は、SCSIプロトコルスタック、IPSECを用いて動作しているプロセッサ202を備え、TCPオフロードをサポートすることができる。プロセッサ202はROM204およびRAM206を備え、自発的にまたはオペレーティングシステム134に指示されて、データをNVMキャッシュ208にキャッシュする。ROM204はあってもなくてもよいが、これがあると、BIOSセットアップは特定のネットワークブートサーバアドレスに接続するためにカードを構成する手段を提供できる。プロセッサは、ネットワークインターフェース212およびネットワーク214を介して、リモートストレージボリューム182を備えるネットワークブートサーバ183と通信するためのストレージブロックレベルのネットワークプロトコルスタックを実施する。ネットワークインターフェース212はイーサネット(登録商標)アダプタでもよい。プロセシングユニット120は、IOCTL(システム依存装置入出力制御コマンド)によって、インターフェース216、218、またはその他のタイプのインターフェースを介してプロセッサ202と通信して、プロセッサにどのデータブロックをNVMキャッシュ208にキャッシュしどのブロックをリモートストレージボリューム182にストアするか通知する方法をプロセシングユニット120に提供する。インターフェース218はあってもなくてもよく、カード200からBIOSをブートする手段を任意選択のROM204が提供する場合は取り除
くことができる。

次に図3に移ると、別の実施形態が示されている。NVMキャッシュ208はコンピュータのマザーボード111上に配置されている。この実施形態は、オペレーティングシステム134に実装することができる、より進んだ予測アルゴリズムによって、より優れたパフォーマンスと信頼性を提供する。この実施形態では、プロセシングユニット120は、IOCTLおよびDMA転送またはそれと同等のものを用いてリモートストレージボリューム182とインターフェース212を介した通信を行い、データブロックをリモートストレージブロック182にストアし、またはデータブロックをNVMキャッシュ208にキャッシュする。NVMキャッシュ208は、プロセシングユニット120に対して、ディスクとして公開する(expose)こともでき、ネイティブ装置型(native device type)として公開することもできる。ネイティブ装置型として公開されている場合、プロセシングユニット120はそれを列挙し(enumerate)、それをリソースとして使用する。ディスクとして公開されている場合、プロセシングユニット120は、データブロックをインターフェース220を介してNVMキャッシュ208にキャッシュする。インターフェース220は、IDE/ATAプロトコル、SCSIプロトコル、iSCSIプロトコル、NVMキャッシュドライバその他でよい。図2および図3に示されたのとは別の実施形態が使用できることが当業者には理解されよう。図1に戻ると、NVMキャッシュ208は、システムメモリ130の部分でもよく、あるいはネイティブ装置型として実施されている場合はシステムメモリ130と独立であってもよい。NVMキャッシュ208はキャッシュインターフェース222によってアクセスされる。書込み時、ストレージドライバスタック(以下、本明細書で説明する)は、NVMキャッシュ208を使用してデータを直ちにローカルにキャッシュし、次に、後の適当な時に、リモートストレージボリューム182と同期させる。読出し時、ストレージドライバスタックは、それが利用できればNVMキャッシュ208からデータを読み戻し、NVMキャッシュ208内のブロックが利
用できない場合にのみリモートストレージボリューム182からロードする。

NVMキャッシュ208のサイズは、ストアするデータの量とネットワークの信頼性に基づいて決定される。アプリケーションとしてMicrosoft Office(登録商標)を使用する場合、64MBのNVMメモリがあれば、オフラインで1時間動作するのに十分なデータを保持できることが示された。サイズはより高い耐ネットワーク障害レベルとNVMを追加したコンピュータのコストとの間のトレードオフによって決まる。一実施形態では、256MBのフラッシュNVMが使用されており、2004年の金銭価値でコストは40ドルを下回ると予測される。これにより、ユーザがNVMキャッシュを用いてハイバネーション状態からの再開またはコールドブートを行い、またネットワーク214が起動されて動作するようになるまで、NVMキャッシュ208にストアされたドキュメント上で作業を行うのに十分なデータをNVMキャッシュ208にストアすることが可能になる。

図4および図5には、NVMキャッシュ208を既存のチップセットに組み込む方法が示されている。図4には、ノースブリッジ/サウスブリッジアーキテクチャ400内のNVMキャッシュ208が示されている。ノースブリッジ402は、プロセッサ120、メモリ130、PCIバス、レベル2キャッシュ、すべてのAGP(Accelerated Graphics Port、アクセラレーテッドグラフィックスポート)アクティビティを制御する。サウスブリッジ404は、USB、シリアル、音声、IDE(Integrated Drive Electronics、統合ドライブエレクトロニクス)、ISA入出力(I/O)など、コンピュータ110内のI/Oの基本形式を管理する。サウスブリッジは、ノースブリッジがDRAM DIMM408とインターフェースを取るのと同様の方法で、NVM DIMMスロット406へのインターフェースを実装する。これにより、ネットワークアクセスがより長く中断してもユーザはNVMを追加してそれを乗り切ることができ、エンドユーザはDRAM408を追加するように増設のNVM208を追加し、ハイバネーションファイル(hiberfile)をNVM208にストアして、ハイバネーション状態からの再開時間を短縮できるようにすることができる。NANDフラッシュおよびその他の既存のNVM技術は、サウスブリッジインターフェース404において補償できる問題を抱えていることがある。NVM技術は、消去/書込みサイクルを約105回行った後では、アクセス時間が遅くなることがあり、セルがもはや使用に耐えなくなる摩耗現象(wear out phenomenon)を起こすことがある。NVMの摩耗特性はよく理解されており、サウスブリッジインターフェース404において標準的な摩耗平準化技術(wear leveling technology)を取り入れて、消去および書込みを平均化することができる。

図5のアクセラレーテッドハブアーキテクチャ500は、ノースブリッジ/サウスブリッジアーキテクチャ内で使用するようなPCIバスを使用する代りに、専用バスを使用してコントローラハブ502とI/Oコントローラハブ504との間でデータを転送する。メモリコントローラハブ502は、中央処理装置(CPU)インターフェース、メモリインターフェース、AGPインターフェースを提供する。メモリコントローラハブは、最大1GBのメモリを備えるシングルまたはデュアルプロセッサをサポートする。メモリコントローラハブはまた、同時処理を可能にし、それにより、より本物に近い音声および画像が提供できるようになる。I/Oコントローラハブ504は、メモリと、内蔵モデム、オーディオコントローラ、ハードドライブ、USBポート、PCIアドインカードを始めとするI/O装置との直接接続を提供する。I/Oコントローラハブ504は、コントローラハブ502がDRAM DIMM408とインターフェースを取るのと同様の方法で、NVM DIMMスロット406へのインターフェースを実装する。

次に図6に移ると、図3で説明した実施形態のためのストレージドライバスタック600が示されている。オペレーティングシステム134、アプリケーションプログラム135、その他のプログラムモジュール136は、データ(例えば、文書、表計算、ファイル、グラフィックスその他)をストレージドライバスタック600に送信する。予測キャッシュコントロールモジュール602は、何を揮発性メモリ132および不揮発性メモリ182、208に入れるかを制御する。ファイルシステムフィルタドライバ604は、データを予測キャッシュコントロールモジュール602から受信する。ファイルシステムフィルタドライバ604の主要機能は、NVMキャッシュ208が満杯の場合などに、エラーを適切に処理することである。ファイルシステムフィルタドライバ604は、オペレーティングシステム134がハードディスクとの間でファイルのストアおよび取出しを行うために使用するファイルシステム(すなわち、NTFS)606を介して、データをリモートストレージボリューム182に渡す。

書込みキャッシュフィルタドライバ608は、データをファイルシステム606および予測キャッシュコントロールモジュール602から受信する。書込みキャッシュフィルタドライバ608は、ローカルNVMキャッシュ208にキャッシュするデータをNVMキャッシュドライバ222に送信する。NVMキャッシュドライバ222は、NVMキャッシュ208に容量がなくなった(すなわち、満杯になった)ときこれを検出し、NVMキャッシュ208が満杯であることを通知するメッセージをファイルシステムフィルタドライバ604に送信する。ファイルシステムフィルタドライバ604は、NVMキャッシュ208に空き容量ができるまでNVMキャッシュ208へのデータ送信を停止するよう、予測キャッシュコントロールモジュール602に通知する。

書込みキャッシュフィルタドライバ608は、ローカルNVMキャッシュ208とリモートストレージボリューム182との同期を取る。データがNVMキャッシュ208とリモートストレージボリューム182とにストアされている場合で、NVMキャッシュ208内のローカル書込みキャッシュをリモートストレージボリューム182に同期させる必要があるとき、書込みキャッシュフィルタドライバ608は、NVMキャッシュ208から読み出す。ネットワーク障害の間、書込みキャッシュフィルタドライバ608は、ネットワークが再び信頼性を維持して動作するようになるまで、リモートストレージボリューム182に送信するデータをNVMキャッシュ208に書き込む。本明細書では、ネットワーク障害とは、電力障害またはその他の障害によってネットワークが停止したとき、または伝送速度が閾値を下回ったときのことをいう。その閾値は、通常の動作状態の間およびネットワーク渋滞の間の一般的なデータ伝送速度に基づいて選択される。ネットワークが再び信頼性を維持して動作するようになったとき、NVMキャッシュ208にストアされたリモートストレージボリューム182に送信するデータを、バックグラウンドのトランザクションによってリモートストレージボリューム182に書き込む。これによりシステム100は、ネットワークが信頼性のある動作をしていない期間中でも、継ぎ目なしに作業を続けることができる。書込みが完了すると、リモートストレージボリューム182はトランザクション完了メッセージを送信する。トランザクション書込みを行うことで、書込みが失敗または中断(すなわち、完了メッセージを受信しない)した場合でも、リモートストレージボリューム182への書込みを再実行することができる。書込みキャッシュフィルタドライバ608は、ネットワーク障害中の電力低下(loss of power)またはその他の何らかの理由でシステムをリブートする場合、システムが再び動作し始め、ネットワークが利用可能となった後で、リモートストレージボリューム182をNVMキャッシュ208にストアされたデータと同期させる。

ブロックモードネットワークストレージドライバ610は、リモートストレージボリューム182に送信すべきデータを受信する。ブロックモードネットワークストレージドライバ610は、データをブロックでリモートストレージボリューム182に送信する。これはiSCSIまたはそれと同等のものであってよい。iSCSIはブロックストレージ転送を可能にする。これはTCP/IPにおいてSCSIコマンドをカプセル化するプロトコルであり、標準的なネットワーク技術の上で高パフォーマンスのストレージエリアネットワーク(SAN)が実現できるようになる。ブロックモードネットワークストレージドライバ610は、データをデータブロック(iSCSIを使用する場合はSCSI−3データ)に変換し、そのデータブロックをネットワークプロトコルレイヤ612(TCP/IPなど)に送信する。ここでデータブロックはネットワークプロトコルパケット(IPパケットなど)の中に入れられ、ネットワークアダプタドライバ140(NDISなど)を介してリモートストレージボリューム182に送信される。

先に指摘したように、予測キャッシュコントロールモジュール602は、何がNVMキャッシュ208にストアされているか判断する。予測キャッシュコントロールモジュール602は一般に、長期にわたってユーザ操作(user's behavior)を観察し、そのユーザがどのプログラムおよびデータに頻繁にアクセスするか決定し、静的および動的設定データを含むデータをNVMキャッシュ208にストアする。本明細書で用いるデータの語には、スケジュールされたタスク、財務情報、データファイルその他の個人的なデータファイルが含まれる。モジュール602は、ユーザ操作が予測できるようになるまで、デフォルト設定を用いて開始される。静的および動的設定データは、過去の使用履歴に基づいており、ユーザがネットワーク障害中に操作を続行するのに必要となるデータを含む。静的設定データは、周期的に変更されないデータである。動的設定データは、周期的に変更され、ユーザ単位にもつデータである。設定データには、キーボード装置、ポインティングデバイス、USBサブシステム、ビデオサブシステム、出力周辺装置ドライバ(プリンタドライバなど)、オペレーティングシステム、アプリケーションプログラムその他が含まれる。

静的設定データは、すべてのユーザによって使用されるシステム設定データである。例えば、Windows(登録商標)オペレーティングシステムの場合、静的設定データは、NVMキャッシュ208にストアされた静的および動的設定データをロードするためのブートストラッピングコードを含む。Windows(登録商標)オペレーティングシステムにおけるその他の静的設定データには、レジストリ初期化(smss.exe)やビデオ初期化(csrss.exe)などカーネルを初期化するのに必要なファイル、シェル、ダイナミックリンクライブラリから実行するサービス(svchost.exe)、IPSecなどのセキュリティサービス(lsass.exe)、ネットワークログインが含まれる。電源が切れているコンピュータシステムの場合、NVMキャッシュ208にストアされている静的設定データには、ブートストラッピングコード、カーネル初期化ファイル、ビデオ初期化ファイル、シェル、コンピュータ110が動作するのに必要とするサービス(ダイナミックリンクライブラリなど)、アプリケーションプログラムその他が含まれる。動的設定データは、ユーザ単位にもつシステム設定データである。例えば、動的設定データには、デスクトップ設定(背景イメージやアイコン位置など)、セキュリティ認証、インターネットのお気に入りファイル(internet favorite file)、フォント、
スタートアッププログラム、キーボード設定その他が含まれる。

次に本発明の動作を、図7および図8を参照して説明する。電源を遮断しようとしているコンピュータシステムでは、NVMキャッシュ208にストアするデータ、静的設定データ、動的設定データが決定される(ステップ700)。データおよび設定データは、ユーザの履歴に基づく。データには直近に使用されたデータファイルが含まれる。NVMキャッシュ208にストアする動的設定データには、デスクトップ設定、キーボード設定、セキュリティ認証が含まれる。データ、静的設定データ、動的設定データはNVMキャッシュ208にストアされる(ステップ702)。最近使用されていないデータと、処理に必要でない静的および動的設定データは、格納用にリモートストレージボリューム182に送信される(ステップ704)。格納用にリモートストレージボリューム182に送信されるデータであって、アプリケーションがリモートストレージボリューム182へ書き込むようなオペレーティングシステムが制御できないデータは、ネットワークが利用できない場合またはトランザクション完了メッセージを受信しなかった場合、格納用にNVMキャッシュ208に送信される(ステップ706)。こうすることにより、リモートストレージボリューム182への書込み回数は減少し、パワーダウンをより速やかに行えるようになる。次にコンピュータシステムがパワーダウンされる(ステップ708)。

システムがハイバネーション状態に入ろうとしている場合も、同様のステップが実行される。NVMキャッシュ208にストアするデータ、静的設定データ、動的設定データが決定され(ステップ710)、メモリにストアされる(ステップ712)。このデータには、グラフィカルユーザインターフェースを即座に「リペイント」(すなわち、復元)するのに必要なデータが含まれる。静的設定データには、カーネルファイル、ビデオファイル、シェル、ダイナミックリンクライブラリから実行するハイバネーション状態に入る前に使用中だったサービスが含まれる。動的設定データには、デスクトップ設定、キーボード設定、ハイバネーション状態に入る前に使用中だったフォントが含まれる。データには、ハイバネーション状態に入る前にユーザが使用していたデータファイルが含まれる。最近使用されていないデータと、処理に必要でない静的および動的設定データは、格納用にリモートストレージボリューム182に送信される(ステップ714)。格納用にリモートストレージボリューム182に送信されるデータであって、アプリケーションがリモートストレージボリューム182へ書き込むようなオペレーティングシステムが制御できないデータは、ネットワークが利用できない場合またはトランザクション完了メッセージを受信しなかった場合、格納用にNVMキャッシュ208に送信される(ステップ716)。こうすることにより、リモートストレージボリューム182への書込み回数は減少し、パワーダウンをより速やかに行えるようになる。次にコンピュータシステムはハイバネーション状態に入る(ステップ718)。

ネットワークが利用できない場合、リモートストレージボリューム182に送信するデータを、ネットワークが利用できるようになるまで、NVMキャッシュ208にストアする(ステップ720)。ネットワークが利用できるようになった後で、NVMキャッシュ208内のデータとリモートストレージボリューム182内のデータとの同期を取る(ステップ722)。一実施形態では、NVMキャッシュ208をシステムの動作中に使用する。アプリケーションまたはオペレーティングシステムがデータをリモートストレージボリューム182に送信する場合、リモートストレージボリューム182に送信する前に、そのデータをNVMキャッシュ208にストアする(ステップ724)。こうすることで、電力が低下した場合でもデータが失われないですむ。システムの電源を落とすとき、またはシステムがハイバネーション状態に入るとき、NVMキャッシュ208にストアされたリモートストレージボリューム182に送信するデータを、トランザクションによってリモートストレージボリューム182に書き込む。NVMキャッシュ208の利用可能領域(available space)が閾値を下回った場合、NVMキャッシュ内の最近使用されていないデータを、リモートストレージボリューム182に転送する(ステップ726)。データをNVMキャッシュ208にストアすることで、処理中にリモートストレージボリューム182にアクセスする回数が減少する。それによってネットワーク214上のトラフィック量が減少する。

次に図9に移ると、コンピュータシステムをブートするため、およびコンピュータシステムをハイバネーション状態から再開するために実行されるステップが示されている。コンピュータシステムは通常、リモートストレージボリューム182からブートする(ステップ800)。ネットワーク214が利用できない場合、コンピュータシステムは、NVMキャッシュ208内にストアした静的設定データと動的設定データを使用してブートする(ステップ802)。ネットワークが利用可能になった場合、リモートストレージボリューム182から必要なデータを獲得する。このデータは一般に、ユーザが最近アクセスしていないデータに基づいて、予測キャッシュコントロールモジュール602がリモートストレージボリューム182に送信したデータである。ユーザが体験することは、ユーザが電源ボタンを押すと、リモートストレージボリュームへのアクセスを待つ必要なく、代りにモニタ191またはその他のタイプのディスプレイ装置が作動し始めるまでに、または作動し始めてすぐに、応答対話型のログオン画面が現れることである。一実施形態では、コンピュータをブートする理由は電力障害によるものであり、コンピュータはNVMキャッシュ208からブートされる。このようにすることにより、電力が回復した後でネットワーク上のPCが同時にネットワークブートを試みるネットワーク「ストーム」が回避される利点が提供される。

ユーザが起動し動作するようになった後で、NVMキャッシュ208内のデータがリモートストレージボリューム182上のデータと整合しているかどうか検証することができる(ステップ804)。データが整合していない場合、リモートストレージボリューム内のデータの方が日付が新しいならば、NVMキャッシュ208内のデータを更新し、NVMキャッシュ208内のデータの方が日付が新しいならば、NVMキャッシュ208内のデータをリモートストレージボリューム182内に複製する。復旧および下位互換性目的のため(すなわち、リモートストレージボリューム182からブートするため)に、ヘルプボタンまたはスイッチを利用して、NVMキャッシュ208をバイパスし、セーフモードでコンピュータシステムを起動することができる。ネットワーク障害中の電力低下またはその他の何らかの理由で、システムをリブートする場合、書込みキャッシュフィルタドライバ608は、システムが再び動作するようになり、ネットワークが利用できるようになった後で、リモートストレージボリューム182をNVMキャッシュ208内のデータと同期させる。コンピュータがハイバネーションモードから起動する場合、コンピュータシステムは、NVMキャッシュ208にストアされた静的設定データおよび動的設定データを用いて、さらに必要ならばリモートストレージボリューム182からの静的設定データおよび動的設定データを用いて処理を再開する(ステップ806)。NVMキャッシュ208内のデータは、コンピュータシステムが処理を再開した後で、リモートストレージボリューム182内のデータと同期させる(ステップ804)。

別の実施形態では、コンピュータ110はNVMキャッシュ208からブートし、ブートコードは、ファイルの変更日付をチェックすることにより、リモートストレージボリューム182上のファイルの方が新しいかどうか調べる。リモートストレージボリューム182上のファイルの方が新しくない場合、コンピュータ110はNVMキャッシュ208からブートを続ける。リモートストレージボリューム182上のファイルの方が新しい場合、ブートコードはリモートブートサーバ183からそのより新しいファイルをロードする。このようにすることにより、ネットワーク214への電力が回復した後で、数千台のPCが同時にネットワークブートを試みるネットワーク「ストーム」が回避される利点が提供される。

一実施形態では、ネットワークブートサーバはNVMキャッシュを備えている。ネットワークブートサーバのNVMキャッシュにストアされる静的設定データおよび動的設定データは、静的設定データおよび動的設定データの初期化にかかる時間が、リモートストレージサーバ182内のディスクドライブのスピンアップ時間とほぼ等しくなるように選択される。静的および動的設定データは、初期化するためにディスクドライブからのデータを必要としない設定データである。これには、キーボード装置、ポインティングデバイス、USBサブシステム、ビデオサブシステムその他が含まれ得る。必要とされるフラッシュメモリのサイズは、静的設定データおよび動的設定データのサイズと等しい。多くのオペレーティングシステムでは、必要なフラッシュメモリのサイズは16MBから64MBである。

不揮発性メモリキャッシュを利用するディスクレスネットワークブータブルPCについて説明してきたことが理解できるであろう。フラッシュメモリは固体素子であり可動部分をもたない。ユーザのハードドライブは、RAIDなどの冗長ディスク技術を用いてデスクトップにある場合よりもはるかに低コストで容易に保護することができる。ハードディスクを用いずに構築するシステムの製造コストは、機械的なハードディスクを用いるシステムに比べて時が経つにつれ低下する。ハードディスクドライブには、可動部分とパッケージングに起因する周知の下限コストがある。対照的に、インテリジェントストレージキャッシュを構成する固体素子コンポーネントはすべて、ムーアの法則に従って、時が経つにつれ集積化が進む(scale forward)であろう。例えば、NANDフラッシュのセルサイズはDRAMに比べて小さく、既にDRAMに比べてはるかに安く製造されている。NANDフラッシュについての業界の予測では、NANDフラッシュはコスト面でDRAMを大きく引き離し続けるだろうと考えられている。NVMに代る現在開発中の候補がいくつかあり、それらはコスト面およびパフォーマンス面でNANDフラッシュよりも利益が大きい。例えば、PFRAM(polymer ferroelectric RAM、ポリマー強誘電性RAM−「プラスチックメモリ」)などの新型のNVM技術またはMEMS(micro electromechanical systems、微小電気機械システム)が将来利用可能になるかもしれない。この技術はPCのクリティカルな部分に組み込まれるので、PCはこれらの改良から大きな利益を得るであろう。逆もまた真であり、PCがNVM技術を用い続けずにいるならば、NVMを利用する他の競合する装置が、やがてPCにとってより強力な競争相手となるであろう。

本発明を、共通オペレーティングシステムからマシン、アプリケーション、ユーザ状態を分離するオペレーティングシステムに対する変更と組み合せることによって、システム管理者は、各PC用のオペレーティングシステムイメージを管理する必要性がなくなることによる利益をさらに享受することになるであろう。各PC用の代りにすべてのPC用のオペレーティングシステムを1つ管理すればよく、マシン単位およびユーザ単位には、はるかに少量の状態情報のみを管理すればよい。

本発明の原理を適用し得る多くの可能な実施形態に鑑みて、図面と併せて本明細書で説明した実施形態は例示を意図したものにすぎず、本発明の範囲を限定するものではないことを理解されたい。例えば、ソフトウェアで示した例示の実施形態の要素をハードウェアで実施してもよく、その逆も可能であること、あるいは本発明の趣旨から逸脱することなく、例示の実施形態の構成および詳細を変更できることが、当業者には理解されよう。したがって、本明細書で説明した本発明は、添付の特許請求の範囲内に含まれるすべての実施形態およびその均等物を企図している。

本発明を備える例示的なコンピュータシステムを概略的に示すブロック図である。 ハードウェアカードを使用する本発明の実施形態を示すブロック図である。 マザーボードに実装された本発明の別の実施形態を示すブロック図である。 ノースブリッジ/サウスブリッジアーキテクチャに実装された本発明のNVMキャッシュを示すブロック図である。 アクセラレーテッドハブアーキテクチャに実装された本発明のNVMキャッシュを示すブロック図である。 本発明によるネットワークスタックを示すブロック図である。 ネットワーク障害および電力障害をデータを失うことなく乗り切るために、本発明の教示により、パワーダウンまたはハイバネーションモードに入るときに静的および動的設定データをストアする処理の最初の部分を示すフローチャートである。 静的および動的設定データをストアする処理の残りの部分を示すフローチャートである。 ネットワーク障害後の動作、コンピュータのブート、およびハイバネーション後の再開動作のための処理を示すフローチャートである。

符号の説明

100 コンピューティングシステム環境
110 コンピュータ
111 マザーボード
120 プロセシングユニット
121 システムバス
130 システムメモリ
131 読出し専用メモリ(ROM)
132 ランダムアクセスメモリ(RAM)
133 基本入出力システム(BIOS)
134 オペレーティングシステム
135 アプリケーションプログラム
136 その他のプログラムモジュール
137 プログラムデータ
140 固定メモリインターフェース
141 ハードドライブ
142 機械的ディスク
144 オペレーティングシステム
145 アプリケーションプログラム
146 その他のプログラムモジュール
147 プログラムデータ
150 着脱可能メモリインターフェース
151 ディスクドライブ
152 着脱可能不揮発性磁気ディスク
155 光ディスクドライブ
156 着脱可能不揮発性光ディスク
160 ユーザ入力インターフェース
161 ポインティングデバイス
162 キーボード
170 ネットワークアダプタ
171 ローカルエリアネットワーク(LAN)
172 モデム
173 ワイドエリアネットワーク(WAN)
174 TCP/IPオフロードエンジン
180 リモートコンピュータ
181 メモリストレージ装置
182 リモートストレージボリューム
183 リモートブートサーバ
185 リモートアプリケーションプログラム
190 ビデオインターフェース
191 モニタ
195 出力周辺インターフェース
196 プリンタ
197 スピーカ
200 ハードウェアカード
202 プロセッサ
204 ROM
206 RAM
208 NVMキャッシュ
212 ネットワークインターフェース
214 ネットワーク
216 インターフェース
218 インターフェース
220 インターフェース
222 NVMキャッシュドライバ
400 ノースブリッジ/サウスブリッジアーキテクチャ
402 ノースブリッジ
404 サウスブリッジ
406 NVM DIMMスロット
408 DRAM DIMM
500 アクセラレーテッドハブアーキテクチャ
502 コントローラハブ
504 I/Oコントローラハブ
506 ファームウェアハブ
600 ストレージドライバスタック
602 予測キャッシュコントロールモジュール
604 ファイルシステムフィルタドライバ
606 ファイルシステム
608 書込みキャッシュフィルタドライバ
610 ブロックモードネットワークストレージドライバ
612 ネットワークプロトコルレイヤ

Claims (15)

  1. リモートストレージボリュームを備えるネットワークに結合される固体素子の不揮発性メモリ(NVM)キャッシュを備えるディスクレスネットワークブータブルコンピュータの中央処理装置(CPU)により該コンピュータのコンピュータオペレーティングシステムを信頼性を維持しつつ動作させるための方法であって、
    前記ディスクレスネットワークブータブルコンピュータ内のアプリケーションと前記コンピュータオペレーティングシステムの一方から、前記CPUがデータを受信するステップと、
    前記データを前記固体素子のNVMキャッシュ又は前記リモートストレージボリュームのどちらにストアすべきか前記CPUが判断するステップと、
    前記固体素子のNVMキャッシュにストアすべき前記データを、前記CPUが前記固体素子のNVMキャッシュに書き込むステップと、
    前記データが前記リモートストレージボリュームにストアすべきである場合、前記データを前記リモートストレージボリュームに書き込むためのトランザクションを前記CPUが実行するステップと、
    ネットワーク障害が発生している場合またはトランザクション完了メッセージを受信していない場合、前記リモートストレージボリュームにストアすべき前記データを、前記CPUが前記固体素子のNVMキャッシュにキャッシュするステップと、
    前記ネットワークが動作しているときに、前記固体素子のNVMキャッシュにキャッシュした前記リモートストレージボリュームにストアすべき前記データを前記リモートストレージボリュームに書き込むためのトランザクションを前記CPUが実行するステップと、
    ネットワーク障害が発生した場合に、ユーザが作業を続行できるようにするために、前記コンピュータオペレーティングシステムのパワーダウンと前記コンピュータオペレーティングシステムのハイバネーションとの少なくとも一方の前に、前記固体素子のNVMキャッシュにストアすべき、前記コンピュータオペレーティングシステムのパワーダウンと前記コンピュータオペレーティングシステムのハイバネーションとの少なくとも1つの前に使用されていたデータと周期的に変更されない設定データである静的設定データと周期的に変更されるユーザごとの設定データである動的設定データ、前記CPUが、各データへのユーザによるアクセス頻度に基いて決定するステップと
    前記データ、前記静的設定データ及び前記動的設定データを前記CPUが前記固体素子のNVMキャッシュにストアするステップと、
    前記ディスクレスネットワークブータブルコンピュータに電源を入れたときに前記ネットワークが利用できない場合、前記CPUが、前記固体素子のNVMキャッシュにストアされた前記データ、前記静的設定データ及び前記動的設定データを使用して前記ディスクレスネットワークブータブルコンピュータをブートするステップと、
    前記ネットワークが利用できない場合、前記CPUが、前記固体素子のNVMキャッシュにストアされた前記データ、前記静的設定データ及び前記動的設定データを使用してハイバネーション状態から処理を再開するステップと
    を含むことを特徴とする方法。
  2. 記動的設定データが、デスクトップ設定、セキュリティ認証、インターネットのお気に入りファイル、フォント、スタートアッププログラム及びキーボード設定の少なくとも1つを含むことを特徴とする請求項に記載の方法。
  3. 前記ネットワークが利用可能になった後で、前記CPUが、前記固体素子のNVMキャッシュ内および前記リモートストレージボリューム内の前記データを同期させるステップをさらに含むことを特徴とする請求項に記載の方法。
  4. 前記固体素子のNVMキャッシュ内および前記リモートストレージボリューム内のデータの変更日付を前記CPUがチェックするステップと、前記固体素子のNVMキャッシュ内の前記データより日付が新しいデータを前記リモートストレージボリュームから前記CPUがロードするステップをさらに含むことを特徴とする請求項に記載の方法。
  5. 前記固体素子のNVMキャッシュにストアされた、前記データおよび静的設定データおよび動的設定データと、前記リモートストレージボリュームにストアされた、データおよび静的設定データおよび動的設定データが整合していない場合、前記固体素子のNVMキャッシュにストアされた、前記データおよび静的設定データおよび動的設定データ、または前記リモートストレージボリュームにストアされた、データおよび静的設定データおよび動的設定データを前記CPUが更新するステップをさらに含むことを特徴とする請求項に記載の方法。
  6. 前記アプリケーションから前記リモートストレージボリュームに送信すべきデータを送信するための電力が停止している間、前記送信すべきデータを前記CPUが前記固体素子のNVMキャッシュに書き込むステップをさらに含むことを特徴とする請求項1に記載の方法。
  7. 前記トランザクション完了メッセージを受信していない場合、前記CPUが前記リモートストレージボリュームにデータを再送信するステップをさらに含むことを特徴とする請求項1に記載の方法。
  8. リモートストレージボリュームを備えるネットワークに結合される固体素子の不揮発性メモリ(NVM)キャッシュを備えるディスクレスネットワークブータブルコンピュータの中央処理装置(CPU)により該コンピュータのコンピュータオペレーティングシステムを信頼性を維持しつつ動作させるための方法であって、
    前記ディスクレスネットワークブータブルコンピュータ内のアプリケーションと前記コンピュータオペレーティングシステムの一方から、前記CPUがデータを受信するステップと、
    前記データを前記固体素子のNVMキャッシュと前記リモートストレージボリュームのどちらにストアすべきか前記CPUが判断するステップと、
    前記固体素子のNVMキャッシュにストアすべき前記データを、前記CPUが前記固体素子のNVMキャッシュに書き込むステップと、
    前記データが前記リモートストレージボリュームにストアすべきである場合、前記データを前記リモートストレージボリュームに書き込むためのトランザクションを前記CPUが実行するステップと、
    ネットワーク障害が発生している場合またはトランザクション完了メッセージを受信していない場合、前記リモートストレージボリュームにストアすべき前記データを、前記CPUが前記固体素子のNVMキャッシュにキャッシュするステップと、
    前記ネットワークが動作しているときに、前記固体素子のNVMキャッシュにキャッシュした前記リモートストレージボリュームにストアすべき前記データを前記リモートストレージボリュームに書き込むためのトランザクションを前記CPUが実行するステップと、
    前記コンピュータオペレーティングシステムのパワーダウンと前記コンピュータオペレーティングシステムのハイバネーションとの少なくとも一方の前に、前記固体素子のNVMキャッシュにストアすべき、前記コンピュータオペレーティングシステムのパワーダウンと前記コンピュータオペレーティングシステムのハイバネーションとの少なくとも1つの前に使用されていたデータと周期的に変更されない設定データである静的設定データと周期的に変更されるユーザごとの設定データである動的設定データとを、前記CPUが、各データへのユーザによるアクセス頻度に基いて決定するステップと、
    前記データ、前記静的設定データ及び前記動的設定データを前記CPUが前記固体素子のNVMキャッシュにストアするステップと、
    前記固体素子のNVMキャッシュにストアされた、前記データおよび静的設定データおよび動的設定データが、前記リモートストレージボリュームにストアされた、データおよび静的設定データおよび動的設定データと整合しているかどうかを前記CPUが判断するステップと
    整合していない場合、前記固体素子のNVMキャッシュにストアされた、前記データおよび静的設定データおよび動的設定データの更新と、前記固体素子のNVMキャッシュにストアされた、データおよび静的設定データおよび動的設定データの前記リモートストレージボリュームへの複製の一方を前記CPUが実行するステップと
    を含むことを特徴とする方法。
  9. ディスクレスネットワークブータブルコンピュータ内で信頼性を維持しつつ中央処理装置(CPU)によりコンピュータオペレーティングシステムを動作させるステップを実行するためのコンピュータ実行可能命令を有するコンピュータ可読ストレージ媒体であって、前記ディスクレスネットワークブータブルコンピュータは、リモートストレージボリュームを備えるネットワークに結合される固体素子の不揮発性メモリ(NVM)キャッシュを備え、前記ステップが、
    前記ディスクレスネットワークブータブルコンピュータ内のアプリケーションと前記コンピュータオペレーティングシステムの一方から、前記CPUがデータを受信するステップと、
    前記データを前記固体素子のNVMキャッシュ又は前記リモートストレージボリュームのどちらにストアすべきか前記CPUが判断するステップと、
    前記データが前記リモートストレージボリュームにストアすべきである場合、前記データを前記リモートストレージボリュームに書き込むためのトランザクションを前記CPUが実行するステップと、
    ネットワーク障害が発生している場合またはトランザクション完了メッセージを受信していない場合、前記リモートストレージボリュームにストアすべき前記データを、前記CPUが前記固体素子のNVMキャッシュにキャッシュするステップと、
    前記ネットワークが動作しているときに、前記固体素子のNVMキャッシュにキャッシュした前記リモートストレージボリュームにストアすべき前記データを前記リモートストレージボリュームに書き込むためのトランザクションを前記CPUが実行するステップと、
    ネットワーク障害が発生した場合に、ユーザが作業を続行できるようにするために、前記コンピュータオペレーティングシステムのパワーダウンと前記コンピュータオペレーティングシステムのハイバネーションとの少なくとも一方の前に、前記固体素子のNVMキャッシュにストアすべき、前記コンピュータオペレーティングシステムのパワーダウンと前記コンピュータオペレーティングシステムのハイバネーションとの少なくとも1つの前に使用されていたデータと周期的に変更されない設定データである静的設定データと周期的に変更されるユーザごとの設定データである動的設定データ、前記CPUが、各データへのユーザによるアクセス頻度に基いて決定するステップと
    前記データ、前記静的設定データ及び前記動的設定データを前記CPUが前記固体素子のNVMキャッシュにストアするステップと、
    前記ディスクレスネットワークブータブルコンピュータに電源を入れたときに前記ネットワークが利用できない場合、前記CPUが、前記固体素子のNVMキャッシュにストアされた前記データ、前記静的設定データ及び前記動的設定データを使用して前記ディスクレスネットワークブータブルコンピュータをブートするステップと、
    前記ネットワークが利用できない場合、前記CPUが、前記固体素子のNVMキャッシュにストアされた前記データ、前記静的設定データ及び前記動的設定データを使用してハイバネーション状態から処理を再開するステップと
    を含むことを特徴とするコンピュータ可読ストレージ媒体。
  10. 前記固体素子のNVMキャッシュにストアすべき前記データを、前記CPUが前記固体素子のNVMキャッシュに書き込むことを含むステップを実行するためのコンピュータ実行可能命令をさらに有することを特徴とする請求項に記載のコンピュータ可読ストレージ媒体。
  11. 前記動的設定データが、デスクトップ設定、セキュリティ認証、インターネットのお気に入りファイル、フォント、スタートアッププログラム及びキーボード設定の少なくとも1つを含むことを特徴とする請求項9に記載のコンピュータ可読ストレージ媒体。
  12. 前記アプリケーションから前記リモートストレージボリュームに送信すべきデータを送信するための電力が停止している間、前記送信すべきデータを前記CPUが前記固体素子のNVMキャッシュに書き込むことを含むステップを実行するためのコンピュータ実行可能命令をさらに有することを特徴とする請求項に記載のコンピュータ可読ストレージ媒体。
  13. 前記トランザクション完了メッセージを受信していない場合、前記CPUが前記リモートストレージボリュームにデータを再送信することを含むステップを実行するためのコンピュータ実行可能命令をさらに有することを特徴とする請求項に記載のコンピュータ可読ストレージ媒体。
  14. 前記データおよび静的設定データおよび動的設定データが、前記リモートストレージボリュームにストアされた、データおよび静的設定データおよび動的設定データと整合しているかどうかを前記CPUが判断するステップを実行するためのコンピュータ実行可能命令をさらに有することを特徴とする請求項に記載のコンピュータ可読ストレージ媒体。
  15. 前記固体素子のNVMキャッシュにストアされた、前記データおよび静的設定データおよび動的設定データと、前記リモートストレージボリュームにストアされた、データおよび静的設定データおよび動的設定データが整合していない場合、前記固体素子のNVMキャッシュにストアされた、前記データおよび静的設定データおよび動的設定データの更新と、前記固体素子のNVMキャッシュにストアされた、データおよび静的設定データおよび動的設定データの前記リモートストレージボリュームへの複製の一方を前記CPUが実行することを含むステップを実行するためのコンピュータ実行可能命令をさらに有することを特徴とする請求項14に記載のコンピュータ可読ストレージ媒体。
JP2003394768A 2002-11-26 2003-11-25 ディスクレスネットワークブータブルコンピュータにおける不揮発性メモリキャッシュを用いた信頼性の改善 Active JP4205560B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
US10/304,367 US7036040B2 (en) 2002-11-26 2002-11-26 Reliability of diskless network-bootable computers using non-volatile memory cache

Publications (3)

Publication Number Publication Date
JP2004178596A5 JP2004178596A5 (ja) 2004-06-24
JP2004178596A JP2004178596A (ja) 2004-06-24
JP4205560B2 true JP4205560B2 (ja) 2009-01-07

Family

ID=32298031

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2003394768A Active JP4205560B2 (ja) 2002-11-26 2003-11-25 ディスクレスネットワークブータブルコンピュータにおける不揮発性メモリキャッシュを用いた信頼性の改善

Country Status (4)

Country Link
US (2) US7036040B2 (ja)
EP (1) EP1424628B1 (ja)
JP (1) JP4205560B2 (ja)
TW (1) TWI329441B (ja)

Families Citing this family (124)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7248585B2 (en) * 2001-10-22 2007-07-24 Sun Microsystems, Inc. Method and apparatus for a packet classifier
EP1516253A2 (en) * 2002-01-29 2005-03-23 Philips Electronics N.V. Method for handling data, data storage system, file system and computer program product
WO2003090073A1 (en) * 2002-04-18 2003-10-30 Venturcom, Inc. System for and method of streaming data to a computer in a network
US8352624B2 (en) * 2002-04-18 2013-01-08 Citrix Systems, Inc. System for and method of streaming data to a computer in a network
US6954852B2 (en) * 2002-04-18 2005-10-11 Ardence, Inc. System for and method of network booting of an operating system to a client computer using hibernation
US20040117607A1 (en) * 2002-12-17 2004-06-17 Swoboda Gary L. Apparatus and method for separating detection and assertion of a trigger event
KR100449806B1 (ko) * 2002-12-23 2004-09-22 한국전자통신연구원 네트워크를 통해 스트리밍 데이터를 고속으로 송수신하기위한 네트워크-스토리지 연결 장치
US7127602B1 (en) * 2003-02-21 2006-10-24 Cisco Technology, Inc. iSCSI computer boot system and method
US7363356B1 (en) 2003-03-24 2008-04-22 Cisco Technology, Inc. Boot modification of registry data for iSCSI network boot operations
US7360072B1 (en) * 2003-03-28 2008-04-15 Cisco Technology, Inc. iSCSI system OS boot configuration modification
US7174451B2 (en) * 2003-03-31 2007-02-06 Intel Corporation System and method for saving and/or restoring system state information over a network
US7225327B1 (en) * 2003-04-11 2007-05-29 Newisys, Inc. Method, system, software, and processor for initializing information systems operating in headless and non-headless environments
US7412565B2 (en) * 2003-08-18 2008-08-12 Intel Corporation Memory optimization for a computer system having a hibernation mode
KR100586309B1 (ko) * 2004-02-23 2006-06-07 엔컴퓨팅 주식회사 다운로드 방식의 운영체제로 구동되는 네트워크 단말장치및 그 동작 방법
US7644239B2 (en) 2004-05-03 2010-01-05 Microsoft Corporation Non-volatile memory cache performance improvement
US7500056B2 (en) * 2004-07-21 2009-03-03 Hewlett-Packard Development Company, L.P. System and method to facilitate reset in a computer system
US7395452B2 (en) * 2004-09-24 2008-07-01 Microsoft Corporation Method and system for improved reliability in storage devices
US7702750B2 (en) * 2004-09-29 2010-04-20 Citrix Systems, Inc. System and method for event detection and re-direction over a network using a presentation level protocol
US8069226B2 (en) * 2004-09-30 2011-11-29 Citrix Systems, Inc. System and method for data synchronization over a network using a presentation level protocol
US7490197B2 (en) 2004-10-21 2009-02-10 Microsoft Corporation Using external memory devices to improve system performance
US7499996B1 (en) * 2004-12-22 2009-03-03 Google Inc. Systems and methods for detecting a memory condition and providing an alert
US20060143485A1 (en) * 2004-12-28 2006-06-29 Alon Naveh Techniques to manage power for a mobile device
US7590839B2 (en) * 2005-03-22 2009-09-15 Qnx Software Systems Gmbh & Co. Kg System employing fast booting of application programs
US7620773B2 (en) * 2005-04-15 2009-11-17 Microsoft Corporation In-line non volatile memory disk read cache and write buffer
US8667184B2 (en) * 2005-06-03 2014-03-04 Qnx Software Systems Limited Distributed kernel operating system
US7461247B2 (en) * 2005-06-03 2008-12-02 Qnx Software Systems Gmbh & Co. Kg Method for transitioning control of a peripheral device from a first device driver to a second device driver during operating system initialization
US7840682B2 (en) * 2005-06-03 2010-11-23 QNX Software Systems, GmbH & Co. KG Distributed kernel operating system
US7730221B2 (en) * 2005-06-30 2010-06-01 Intel Corporation LAN controller with bootable host bus adapter
US7362525B2 (en) * 2005-07-22 2008-04-22 Quantum Corporation PRML based magnetic servo position demodulator
US20070038850A1 (en) * 2005-08-10 2007-02-15 Matthews Jeanna N System boot and resume time reduction method
JP2007079749A (ja) * 2005-09-13 2007-03-29 Hitachi Ltd ストレージ装置およびディスク制御方法
US7409537B2 (en) * 2005-10-06 2008-08-05 Microsoft Corporation Fast booting an operating system from an off state
US7770057B1 (en) * 2005-10-27 2010-08-03 Symantec Operating Corporation System and method for customized disaster recovery reports
US20070124573A1 (en) * 2005-10-28 2007-05-31 Walker Phillip M Method for rapid startup of a computer system
US20070112899A1 (en) * 2005-11-14 2007-05-17 Edwards Matthew F Method and apparatus for fast boot of an operating system
KR100715677B1 (ko) * 2005-12-02 2007-05-09 한국전자통신연구원 폭주제어 액세스 게이트웨이 시스템 및 그 시스템에서의폭주제어 방법
US8914557B2 (en) 2005-12-16 2014-12-16 Microsoft Corporation Optimizing write and wear performance for a memory
US7664970B2 (en) 2005-12-30 2010-02-16 Intel Corporation Method and apparatus for a zero voltage processor sleep state
JP2007183875A (ja) * 2006-01-10 2007-07-19 Romwin:Kk パーソナルコンピュータのデータ管理方法及び管理システム並びにフィルタドライバ
US7624260B2 (en) * 2006-05-04 2009-11-24 Qnx Software Systems Gmbh & Co. Kg System executing a fast boot wake-up
TWI314688B (en) * 2006-06-09 2009-09-11 Asustek Comp Inc Computer and main circuit board thereof
US8688965B2 (en) * 2006-09-29 2014-04-01 Intel Corporation System and method for increasing platform network boot efficiency
US7706266B2 (en) 2007-03-12 2010-04-27 Citrix Systems, Inc. Systems and methods of providing proxy-based quality of service
US8898355B2 (en) 2007-03-29 2014-11-25 Lenovo (Singapore) Pte. Ltd. Diskless client using a hypervisor
US7941657B2 (en) 2007-03-30 2011-05-10 Lenovo (Singapore) Pte. Ltd Multi-mode mobile computer with hypervisor affording diskless and local disk operating environments
US8429677B2 (en) * 2007-04-19 2013-04-23 Microsoft Corporation Composite solid state drive identification and optimization technologies
US20110019662A1 (en) 2007-06-28 2011-01-27 Rebelvox Llc Method for downloading and using a communication application through a web browser
US9178916B2 (en) 2007-06-28 2015-11-03 Voxer Ip Llc Real-time messaging method and apparatus
US8180029B2 (en) * 2007-06-28 2012-05-15 Voxer Ip Llc Telecommunication and multimedia management method and apparatus
US8037240B2 (en) * 2007-10-24 2011-10-11 International Business Machines Corporation System and method for using reversed backup operation for minimizing the disk spinning time and the number of spin-up operations
US8862689B2 (en) * 2007-10-24 2014-10-14 International Business Machines Corporation Local flash memory and remote server hybrid continuous data protection
US7962737B2 (en) * 2007-11-21 2011-06-14 Dell Products L.P. Methods, media and apparatus for booting diskless systems
US20090138876A1 (en) * 2007-11-22 2009-05-28 Hsuan-Yeh Chang Method and system for delivering application packages based on user demands
WO2009069326A1 (ja) * 2007-11-26 2009-06-04 Co-Conv, Corp. ネットワークブートシステム
US8631203B2 (en) 2007-12-10 2014-01-14 Microsoft Corporation Management of external memory functioning as virtual cache
JP5153315B2 (ja) 2007-12-19 2013-02-27 インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation ルートファイルシステムを管理するシステム及び方法
US8239662B1 (en) * 2008-03-20 2012-08-07 Google Inc. Network based operating system across devices
DE102008021567B4 (de) * 2008-04-30 2018-03-22 Globalfoundries Inc. Computersystem mit sicherem Hochlaufmechanismus auf der Grundlage einer Verschlüsselung mit symmetrischem Schlüssel
JP5183297B2 (ja) * 2008-05-19 2013-04-17 三洋電機株式会社 画像処理装置、撮像装置及び画像処理方法
DE112008003910T5 (de) * 2008-06-20 2011-06-09 Lenovo (Singapore) Pte. Ltd. Plattenloser Client unter Verwendung eines Hypervisors
US20090327525A1 (en) * 2008-06-27 2009-12-31 Jade Quantum Technologies, Inc. Method for improving data writing speed of a diskless computer
US9152432B2 (en) * 2008-06-30 2015-10-06 Intel Corporation System and method to accelerate access to network data using a networking unit accessible non-volatile storage
US8271610B2 (en) * 2008-08-28 2012-09-18 Sycamore Networks, Inc. Distributed content caching solution for a mobile wireless network
US9208104B2 (en) 2008-08-28 2015-12-08 Citrix Systems, Inc. Content replacement and refresh policy implementation for a content distribution network
JP2010055702A (ja) * 2008-08-29 2010-03-11 Nippon Hoso Kyokai <Nhk> ハードディスク装置
US9032151B2 (en) * 2008-09-15 2015-05-12 Microsoft Technology Licensing, Llc Method and system for ensuring reliability of cache data and metadata subsequent to a reboot
US8032707B2 (en) 2008-09-15 2011-10-04 Microsoft Corporation Managing cache data and metadata
US7953774B2 (en) 2008-09-19 2011-05-31 Microsoft Corporation Aggregation of write traffic to a data store
US8417928B2 (en) * 2008-09-24 2013-04-09 Marvell International Ltd. Turbo boot systems and methods for subsequent booting from a captured data stored in a non-volatile semiconductor memory
US8533445B2 (en) * 2009-04-21 2013-09-10 Hewlett-Packard Development Company, L.P. Disabling a feature that prevents access to persistent secondary storage
US8473677B2 (en) * 2009-09-29 2013-06-25 Cleversafe, Inc. Distributed storage network memory access based on memory state
US9009121B2 (en) * 2009-10-30 2015-04-14 Oracle International Corporation Bootstrapping server using configuration file stored in server-managed storage
US8473582B2 (en) * 2009-12-16 2013-06-25 International Business Machines Corporation Disconnected file operations in a scalable multi-node file system cache for a remote cluster file system
US8495250B2 (en) * 2009-12-16 2013-07-23 International Business Machines Corporation Asynchronous file operations in a scalable multi-node file system cache for a remote cluster file system
US9158788B2 (en) 2009-12-16 2015-10-13 International Business Machines Corporation Scalable caching of remote file data in a cluster file system
US8458239B2 (en) * 2009-12-16 2013-06-04 International Business Machines Corporation Directory traversal in a scalable multi-node file system cache for a remote cluster file system
US8521869B2 (en) * 2009-12-18 2013-08-27 Fujitsu Limited Method and system for reporting defects within a network
US8566634B2 (en) * 2009-12-18 2013-10-22 Fujitsu Limited Method and system for masking defects within a network
US8321630B1 (en) * 2010-01-28 2012-11-27 Microsoft Corporation Application-transparent hybridized caching for high-performance storage
US8756387B2 (en) 2010-03-05 2014-06-17 International Business Machines Corporation Method and apparatus for optimizing the performance of a storage system
US8892820B2 (en) * 2010-03-19 2014-11-18 Netapp, Inc. Method and system for local caching of remote storage data
US8473588B2 (en) * 2010-03-30 2013-06-25 Lenovo (Singapore) Ptd. Ltd. Local and remote client computer system booting
US8549274B2 (en) 2010-04-14 2013-10-01 Jade Quantum Technologies, Inc. Distributive cache accessing device and method for accelerating to boot remote diskless computers
US8468388B2 (en) 2010-04-20 2013-06-18 International Business Machines Corporation Restoring programs after operating system failure
US8959284B1 (en) 2010-06-28 2015-02-17 Western Digital Technologies, Inc. Disk drive steering write data to write cache based on workload
US9268499B1 (en) 2010-08-13 2016-02-23 Western Digital Technologies, Inc. Hybrid drive migrating high workload data from disk to non-volatile semiconductor memory
US9058280B1 (en) 2010-08-13 2015-06-16 Western Digital Technologies, Inc. Hybrid drive migrating data from disk to non-volatile semiconductor memory based on accumulated access time
JP4945669B2 (ja) * 2010-08-18 2012-06-06 株式会社日立ソリューションズ データ処理制御方法、情報処理装置、及びデータ処理制御システム
US8775720B1 (en) 2010-08-31 2014-07-08 Western Digital Technologies, Inc. Hybrid drive balancing execution times for non-volatile semiconductor memory and disk
US8782334B1 (en) 2010-09-10 2014-07-15 Western Digital Technologies, Inc. Hybrid drive copying disk cache to non-volatile semiconductor memory
US9069475B1 (en) 2010-10-26 2015-06-30 Western Digital Technologies, Inc. Hybrid drive selectively spinning up disk when powered on
US9003104B2 (en) 2011-02-15 2015-04-07 Intelligent Intellectual Property Holdings 2 Llc Systems and methods for a file-level cache
US8996807B2 (en) 2011-02-15 2015-03-31 Intelligent Intellectual Property Holdings 2 Llc Systems and methods for a multi-level cache
US8874823B2 (en) 2011-02-15 2014-10-28 Intellectual Property Holdings 2 Llc Systems and methods for managing data input/output operations
US9201677B2 (en) 2011-05-23 2015-12-01 Intelligent Intellectual Property Holdings 2 Llc Managing data input/output operations
US9727570B2 (en) 2011-06-03 2017-08-08 Apple Inc. Mount-time unmapping of unused logical addresses in non-volatile memory systems
US9342254B2 (en) * 2011-06-04 2016-05-17 Microsoft Technology Licensing, Llc Sector-based write filtering with selective file and registry exclusions
US8630056B1 (en) 2011-09-12 2014-01-14 Western Digital Technologies, Inc. Hybrid drive adjusting spin-up profile based on cache status of non-volatile semiconductor memory
US8909889B1 (en) 2011-10-10 2014-12-09 Western Digital Technologies, Inc. Method and apparatus for servicing host commands by a disk drive
US20130113928A1 (en) * 2011-11-08 2013-05-09 Joseph Feldman Computerized System and Method for Monitoring a Door of a Facility from Afar
US8612516B2 (en) * 2011-11-28 2013-12-17 Wyse Technology Inc. Deployment of a driver or an application on a client device having a write-filter
US8606892B2 (en) 2011-11-28 2013-12-10 Wyse Technology Inc. Deployment and updating of applications and drivers on a client device using an extensible markup language (XML) configuration file
US8756458B2 (en) 2011-12-12 2014-06-17 Apple Inc. Mount-time reconciliation of data availability
US9116812B2 (en) 2012-01-27 2015-08-25 Intelligent Intellectual Property Holdings 2 Llc Systems and methods for a de-duplication cache
JP5290446B2 (ja) * 2012-02-28 2013-09-18 株式会社シー・オー・コンヴ ネットワークブートシステム
US10339056B2 (en) 2012-07-03 2019-07-02 Sandisk Technologies Llc Systems, methods and apparatus for cache transfers
US9612966B2 (en) 2012-07-03 2017-04-04 Sandisk Technologies Llc Systems, methods and apparatus for a virtual machine cache
US8959281B1 (en) 2012-11-09 2015-02-17 Western Digital Technologies, Inc. Data management for a storage device
US9164929B2 (en) 2013-01-03 2015-10-20 International Business Machines Corporation False power failure alert impact mitigation
JP2014164401A (ja) * 2013-02-22 2014-09-08 Nec Corp ストレージシステム
US9842053B2 (en) 2013-03-15 2017-12-12 Sandisk Technologies Llc Systems and methods for persistent cache logging
US9552176B2 (en) * 2013-04-12 2017-01-24 Microsoft Technology Licensing, Llc Block storage using a hybrid memory device
US9141176B1 (en) 2013-07-29 2015-09-22 Western Digital Technologies, Inc. Power management for data storage device
US9070379B2 (en) 2013-08-28 2015-06-30 Western Digital Technologies, Inc. Data migration for data storage device
TWI507883B (zh) * 2013-09-18 2015-11-11 Realtek Semiconductor Corp 記憶卡存取裝置、其控制方法與記憶卡存取系統
US10140212B2 (en) 2013-09-30 2018-11-27 Vmware, Inc. Consistent and efficient mirroring of nonvolatile memory state in virtualized environments by remote mirroring memory addresses of nonvolatile memory to which cached lines of the nonvolatile memory have been flushed
US10223026B2 (en) * 2013-09-30 2019-03-05 Vmware, Inc. Consistent and efficient mirroring of nonvolatile memory state in virtualized environments where dirty bit of page table entries in non-volatile memory are not cleared until pages in non-volatile memory are remotely mirrored
US8917471B1 (en) 2013-10-29 2014-12-23 Western Digital Technologies, Inc. Power management for data storage device
US10261875B2 (en) 2013-12-18 2019-04-16 Qualcomm Incorporated Runtime optimization of multi-core system designs for increased operating life and maximized performance
US20150169363A1 (en) * 2013-12-18 2015-06-18 Qualcomm Incorporated Runtime Optimization of Multi-core System Designs for Increased Operating Life and Maximized Performance
US9584617B2 (en) * 2013-12-31 2017-02-28 Successfactors, Inc. Allocating cache request in distributed cache system based upon cache object and marker identifying mission critical data
US9672026B2 (en) * 2014-07-21 2017-06-06 Xiaomi Inc. Light app offline updating method, device and terminal
US10394573B2 (en) * 2015-04-07 2019-08-27 Avago Technologies International Sales Pte. Limited Host bus adapter with built-in storage for local boot-up
DE102017212683A1 (de) * 2017-07-24 2019-01-24 Audi Ag Bedienvorrichtung für ein mobiles Endgerät mit einer Bedienhardware sowie Kraftfahrzeug und Verfahren

Family Cites Families (35)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4979108A (en) * 1985-12-20 1990-12-18 Ag Communication Systems Corporation Task synchronization arrangement and method for remote duplex processors
US5146568A (en) * 1988-09-06 1992-09-08 Digital Equipment Corporation Remote bootstrapping a node over communication link by initially requesting remote storage access program which emulates local disk to load other programs
US5307497A (en) 1990-06-25 1994-04-26 International Business Machines Corp. Disk operating system loadable from read only memory using installable file system interface
US5778418A (en) * 1991-09-27 1998-07-07 Sandisk Corporation Mass computer storage system having both solid state and rotating disk types of memory
WO1995001600A1 (en) * 1993-07-02 1995-01-12 Oakleigh Systems, Inc. Predictive disk cache system
JP3140621B2 (ja) 1993-09-28 2001-03-05 株式会社日立製作所 分散ファイルシステム
JPH0855073A (ja) 1994-08-08 1996-02-27 Hitachi Ltd ネットワークシステムおよび情報処理装置
KR970010634B1 (ko) 1994-10-25 1997-06-28 김광호 네트워크 하이버네이션 시스템
US5802297A (en) 1995-07-03 1998-09-01 Sun Microsystems, Inc. Client-server computer system and method utilizing a local client disk drive as a data cache
US5829023A (en) 1995-07-17 1998-10-27 Cirrus Logic, Inc. Method and apparatus for encoding history of file access to support automatic file caching on portable and desktop computers
US5720029A (en) * 1995-07-25 1998-02-17 International Business Machines Corporation Asynchronously shadowing record updates in a remote copy session using track arrays
US5870757A (en) 1995-09-11 1999-02-09 Sun Microsystems, Inc. Single transaction technique for a journaling file system of a computer operating system
US5740370A (en) * 1996-03-27 1998-04-14 Clinton Battersby System for opening cache file associated with designated file of file server only if the file is not subject to being modified by different program
JPH1040170A (ja) 1996-07-26 1998-02-13 Toshiba Corp ディスクキャッシュシステム
US5957985A (en) 1996-12-16 1999-09-28 Microsoft Corporation Fault-resilient automobile control system
US6073232A (en) * 1997-02-25 2000-06-06 International Business Machines Corporation Method for minimizing a computer's initial program load time after a system reset or a power-on using non-volatile storage
JPH11143567A (ja) 1997-11-06 1999-05-28 Fujitsu Ltd ネットワークシステムの情報保護方法及びそれに用いられる情報処理装置
JPH11249900A (ja) 1998-02-27 1999-09-17 Toshiba Corp コンピュータシステム、同システムのブート方法および記録媒体
US6101601A (en) * 1998-04-20 2000-08-08 International Business Machines Corporation Method and apparatus for hibernation within a distributed data processing system
US6189100B1 (en) * 1998-06-30 2001-02-13 Microsoft Corporation Ensuring the integrity of remote boot client data
JP2000076152A (ja) 1998-08-28 2000-03-14 Toshiba Corp 分散ファイルシステムならびに同システムにおけるファイル共有方法及び同方法がプログラムされ記録される記録媒体
US6209088B1 (en) * 1998-09-21 2001-03-27 Microsoft Corporation Computer hibernation implemented by a computer operating system
US6401093B1 (en) * 1999-03-31 2002-06-04 International Business Machines Corporation Cross file system caching and synchronization
US6463530B1 (en) * 1999-06-10 2002-10-08 International Business Machines Corporation Method and apparatus for remotely booting a client computer from a network by emulating remote boot chips
JP2001043120A (ja) 1999-07-30 2001-02-16 Kubota Corp データ管理装置及び記録媒体
JP3664917B2 (ja) 1999-08-06 2005-06-29 シャープ株式会社 ネットワーク情報の表示方法およびその方法をプログラムとして格納した記憶媒体ならびにそのプログラムを実行するコンピュータ
US6539456B2 (en) * 1999-10-13 2003-03-25 Intel Corporation Hardware acceleration of boot-up utilizing a non-volatile disk cache
US6751658B1 (en) * 1999-10-18 2004-06-15 Apple Computer, Inc. Providing a reliable operating system for clients of a net-booted environment
US6338126B1 (en) * 1999-12-06 2002-01-08 Legato Systems, Inc. Crash recovery without complete remirror
US6456220B1 (en) * 2000-06-19 2002-09-24 Cygnal Integrated Products, Inc. Analog-to-digital converter for processing differential and single-ended inputs
DE10196380T1 (de) 2000-06-23 2003-10-16 Intel Corp Non-volatile cache
JP2002278705A (ja) * 2001-03-22 2002-09-27 Hitachi Ltd コンピュータシステム
US20030014523A1 (en) * 2001-07-13 2003-01-16 John Teloh Storage network data replicator
US20040044776A1 (en) * 2002-03-22 2004-03-04 International Business Machines Corporation Peer to peer file sharing system using common protocols
US7017037B2 (en) * 2002-06-27 2006-03-21 Microsoft Corporation Apparatus and method to decrease boot time and hibernate awaken time of a computer system utilizing disk spin-up-time

Also Published As

Publication number Publication date
TWI329441B (en) 2010-08-21
EP1424628A3 (en) 2008-08-27
US7454653B2 (en) 2008-11-18
TW200415888A (en) 2004-08-16
EP1424628B1 (en) 2013-10-16
US20040153694A1 (en) 2004-08-05
EP1424628A2 (en) 2004-06-02
JP2004178596A (ja) 2004-06-24
US20070006021A1 (en) 2007-01-04
US7036040B2 (en) 2006-04-25

Similar Documents

Publication Publication Date Title
US9582311B2 (en) System, method and computer program product for data processing and system deployment in a virtual environment
US9448728B2 (en) Consistent unmapping of application data in presence of concurrent, unquiesced writers and readers
US9158628B2 (en) Bios failover update with service processor having direct serial peripheral interface (SPI) access
US9697130B2 (en) Systems and methods for storage service automation
US9317320B2 (en) Hypervisor-based server duplication system and method and storage medium storing server duplication computer program
US9195472B2 (en) System and method for booting up a computer based on data captured in a non-volatile semiconductor memory during a learn mode
JP5911892B2 (ja) ハイバネイトからの多段レジューム
JP6050262B2 (ja) 仮想ディスクストレージ技術
US8645748B1 (en) System and method for bare metal restore of a computer over a network
US9081691B1 (en) Techniques for caching data using a volatile memory cache and solid state drive
US8234469B2 (en) Backup of virtual machines using cloned virtual machines
JP5724477B2 (ja) 移行プログラム、情報処理装置、移行方法、及び情報処理システム
US9176744B2 (en) Quickly provisioning a virtual machine by identifying a path to a differential file during pre-boot
RU2435200C2 (ru) Быстрая загрузка операционной системы из выключенного состояния
CA2648761C (en) Converting machines to virtual machines
US7409536B2 (en) Computer systems with several operating systems coexisting thereon and swapping between these operating systems
JP5932973B2 (ja) 仮想記憶ディスク技術
TWI480732B (zh) 使用非揮發性記憶體來增進效能的方法及系統
US8495316B2 (en) Efficient management of archival images of virtual machines having incremental snapshots
DE102004038649B4 (de) Dauerspeichervorrichtung für Sicherungsprozess-Prüfpunktzustände
CN102473089B (zh) 用于双操作系统的文件系统
RU2395115C2 (ru) Использование внешних устройств памяти для улучшения производительности системы
KR100318975B1 (ko) 분산 데이터 프로세싱 시스템 내에서 하이버네이션을 위한 방법 및 장치
JP3777136B2 (ja) コンピュータ装置、データのデッドコピー方法、プログラム、コンピュータ装置の稼動方法
US7356677B1 (en) Computer system capable of fast switching between multiple operating systems and applications

Legal Events

Date Code Title Description
RD03 Notification of appointment of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7423

Effective date: 20061019

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20061023

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20061127

A871 Explanation of circumstances concerning accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A871

Effective date: 20061127

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20061127

A975 Report on accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A971005

Effective date: 20061214

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20061226

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20070326

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20070508

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20070808

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20070910

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20080109

A911 Transfer of reconsideration by examiner before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20080123

A912 Removal of reconsideration by examiner before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A912

Effective date: 20080229

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20080904

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20081016

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20111024

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20121024

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20131024

Year of fee payment: 5

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250