構築中のデータベース システム用に書き込みキャッシュ (WOW キャッシュ) の賢明な順序付けを作成することを検討していますが、ファイルの領域を物理ディスク領域にマッピングするのに問題があります。
DeviceIoControlを使用してファイルの仮想クラスター割り当てを取得できることを発見しましたが、これを物理ディスクの場所に関連付ける方法がわかりません。
これは Windows で可能ですか? そうでない場合は、回避策またはより適切な書き込みキャッシュ アルゴリズムがあります。
構築中のデータベース システム用に書き込みキャッシュ (WOW キャッシュ) の賢明な順序付けを作成することを検討していますが、ファイルの領域を物理ディスク領域にマッピングするのに問題があります。
DeviceIoControlを使用してファイルの仮想クラスター割り当てを取得できることを発見しましたが、これを物理ディスクの場所に関連付ける方法がわかりません。
これは Windows で可能ですか? そうでない場合は、回避策またはより適切な書き込みキャッシュ アルゴリズムがあります。
以下を試してください。
CreateFile
まず、ルーチンを使用してボリュームへのハンドルを開きます(ボリュームC:\\?\C:
の名前として使用)。DeviceIoControl
withを使用しIOCTL_VOLUME_GET_VOLUME_DISK_EXTENTS
て、1 つまたは複数のディスク上のボリュームの物理的な場所を取得します。したがって、ディスク (またはより複雑な設定では複数のディスク) 内のボリュームの物理的な場所と、ボリューム内のファイルに対する仮想クラスターの割り当てが得られます。これら 2 つの情報を組み合わせて、ディスク内のファイルの物理的な場所を取得します。
PS おそらく、ディスク セクターのサイズやボリューム クラスターのサイズなどの補助情報が必要になる場合もあります。