web-dev-qa-db-ja.com

特定のファイルをディスクの先頭に移動することは可能ですか?

特定のファイルをディスクの先頭に移動することは可能ですか?ディスクアクセスのパフォーマンスを向上させるために、仮想マシンのディスクファイル(仮想ディスク)をディスクの先頭に移動したいと思います。一部のデフラグソフトウェアはこの手法を使用してシステムファイルをディスクの先頭に移動するため、これが可能であると思います。私が欲しいのは、同じことをするが、私が選んだファイルを移動するための実用的な方法(スクリプトまたはプログラム)です。

MyDefragscripting 機能でそれができるはずだと思います。私はあなたが望むことをしようとはしていませんが、AddGapMoveDownFillは、おそらくFileSelect/FileAction句内で実行する必要のあるアクションの1つです。

別の物理HDDの先頭に論理ディスクを作成するのが最善の方法だと思います。既存のパーティションを移動し、ディスクの先頭に新しいパーティションを作成できるプログラムがあります(「パーティションマジックフリーの代替」のグーグル)

3
Andrew

デニスが言ったように、このタスクにはMyDefragスクリプトを使用できます。とにかく、パフォーマンスを向上させるには、ファイルをディスクの最後に移動する必要があると思います。

1

一部のHDDは、最初のシリンダーが内部にあるため、1回転あたりに保存されるデータが少なくなるため、低いシリンダーでは速度が低下します。

最近のほとんどのHDD(私が知っているのでパークヘッドを備えているものはすべて)は反対側を使用し、最初のシリンダーは外側にあり、回転ごとにはるかに多くのデータが保存されるため、外側のシリンダーの速度が速くなります。

これは、HDDが一定のR.P.M.で回転するという概念に基づいていますが、すべてのHDDがそのように機能するわけではありません。

私は、各ヘッドを同時に別のシリンダーに移動できる非常に高価なHDDを所有しているため、異なるシリンダーから同時に読み取ることができ、8MiBまたは16MiBではなく内部バッファーを使用します。フルギガバイトバッファーを使用します。ディスクは非常に高速であるため、Sata IIIコントローラーが転送の持続速度を制限します...物理ディスクは10GiB /秒の読み取り(サーフェスからバッファーへ)および6GiB /秒の書き込み(バッファーからサーフェスへ)を実行できます。

したがって、ファイルを配置する場所の質問は簡単です。ゾーン速度テスト(読み取りと書き込み)を実行します。そうすれば、ファイルを配置するのに適した場所がわかります。

シリンダーに応じてそのような異なる速度を「偽造」するために別の技術を使用する新しいHDDがあることに注意してください...それらはシリンダーとヘッドを交換するので、シリンダー全体を書くように頼むと、1つのヘッドと多くのシリンダーのみを使用します、そうすれば、速度はすべてのシリンダーに沿ってほぼ均一になるため、ほとんどのツールをベンチマーク速度に「偽造」します(速度はディスク全体で一定のようです)。実際には、ディスクは外部のものを格納しています。速度が(外部の要求されたシリンダーごとに)次のようになるように、1つのシリンダーで、複数のシリンダーで実行するように要求されました:高速、中速、低速

そのトリックは持続的なパフォーマンスに非常に適しています...多くのGiBをコピーする場合、速度は次のようになるため、ETA(到着予定時刻)は非常によく計算されます。ミディアム、スロー、ファスト、ミディアム、スロー、...メディアは一定です...しかし、実際には通常のメディアと同じくらい高速です...リアルタイムで終了するのは非常に似ています。違いは、より適切に計算できることです。終了するのに必要な時間。

だから私が主張するように、細かい速度のテストを行い、ファイルを好きな場所に移動します。

また、Windows XP以下、TV、SetTopBoxなどでもHDDを使用する予定がない場合、つまり、GPTパーティションが理解されていない場合は... 20以上のプライマリパーティションのGPTスキームを作成する方がはるかに優れているため、パーティションごとに1つのファイル(大きなファイル、もちろん映画のように変更されないファイル)のみを配置すると、パーティションは99.99%までいっぱいになります。スペースが残っていません...仮想マシンのHDDの場合、固定サイズ(動的ではない)を使用するのが最善です。ファイルが大きくならないため、映画などと同じアプローチを使用します... Windowsシステムパーティションごとに20GiBを使用する傾向があります仮想HDD。

そのようなことを行う方法(99.99%にする)は簡単ではありませんが、手順に従うのは簡単です... GPTスキームで非常に小さなNTFSパーティション(必要なサイズの1/100)を作成します(これは$になりますMFTファイルは非常に小さい)、空に近い状態でデフラグして、$ MFTなどがパーティションの先頭に移動し、パーティションを必要なサイズの2倍に拡大します(これにより$ MFTファイルのサイズは変更されません) 、そのようなファイル(1つのファイルのみ)をそこにコピーし、最適化し、最大に縮小して99.99%が解放されないようにし、ディスクの必要な部分に移動します。

両側から中央に向かって、1つずつ順番に行う方がはるかに優れています。

はい、それは大変な作業です...しかし、私はWindowsがファイルを移動するのを回避するツールを知りません。

はい、それは本当です、私はそのようなファイルがアクセスさえされていないときにWindowsがファイルを断片化するのを見ました...言い換えれば、1つのファイルを置き、移動し、成長させ、Windowsは断片化されるために同じパーティション上に他のファイルを作ることができます...また、断片化されていないファイルを低レベルで(システムアカウント権限、別名ハッキングで)移動できないものとしてマークしようとしましたが、別のディスクからそのパーティションにコピーしているときに、そのようなファイルが断片化されるのを確認しました...はい、音のばかげた、断片化されていない移動不可能なファイルは、同じパーティションに書き込まれた別のファイルがあるために断片化されます...したがって、空き領域のあるパーティションにファイルを置くことは決してなく、断片化されたり、別のファイルに移動されたりしないことを願っていますパーティションの一部...

ファイルを移動/断片化しないようにするために機能する唯一のトリックは、ファイルを独自のパーティションに配置することです... GPTは多くのパーティションを許可しますが、それほど多くはありません(制限は128だと思います) 。

はい、大きな問題です。このようなパーティションにアクセスする方法は、20文字程度しか自由に使用できない場合です。文字を使用せず、\ ?? \アクセスを使用すると簡単です。

start \\?\Volume{...}\へのショットカットを作成する方法は次のとおりです。{...}パーツは、パラメーターなしでmountvol.exeを実行することで取得できます。

これは、USBストリックまたはメモリカードのパーティションにアクセスするための非常に優れたトリックでもあります...ウィンドウはパーティションテーブルの最初のパーティションのみをマウント(ドライブ文字を割り当てる)できます...しかし、そのトリックでそれらのいずれにもアクセスできます、 je je、少なくとも私がテストしたところでは動作しますが、友達からはできないというメッセージがあります。明らかに私はLinuxfdiskを使用してLinuxでMBRのようなパーティションスキームを作成し、「マスター」を書き直します。別名、新しいスキームを作成します。スティックに付属しているものを使用することはありません。良いMBRのようです。 Linux fdiskツール、次に複数のパーティションを作成し、それらをフォーマットするなど... fdisk + mkfs ...またはGPartedを使用して、Windows(USBスティック/メモリカードでは使用できません)およびすべてのUSBスティックでは使用できませんリムーバブルビットを変更することができます。

したがって、非常に小さいNTFSでGPTのトリックを使用し、ファイルの2倍のサイズに合うように拡張し、ファイルを配置し、可能な限り細かく分割し、パーティションを必要な場所に移動します(ステップ間でデフラグし、縮小するまで、その後将来のデフラグは必要ありません)。これは、読み取りのみか書き込みのみかに関係なく、サイズが変更されないファイルに非常に適しています(VirtualBOXの場合、動的な.VDIファイルは最適ではありません)。

NTFSパーティションごとに1つのファイルだけが大きなトリックであることを忘れないでください。NTFSをできるだけ小さくすることは、$ MFTを非常に小さくし、スペースを無駄にしないためのもう1つのトリックです。

悪い部分...各ファイルを配置する時間、および文字を割り当てる代わりにエクスプローラーstart \\?\Volume{...}\を開く.lnk(ショートカット)によるアクセス。

言うまでもなく、このようなNTFSでは、「$ Recycle.Bin」と「システムボリューム情報」を1つずつ削除することをお勧めします。所有者を取得します(takeown /F ... /A /R /D [Y|S|... depends on language]コマンド、googleのコマンドパラメータを参照するか、 /?)を使用して削除し(RD /S /Q ...コマンド)、そのような名前のメモ帳を使用してファイルを作成します(サイズが正確にゼロで、$ MFT内に収まるため、スペースをまったく取りません)。そうすれば、Windowsはそのようなフォルダを再作成できなくなり、2つのゼロサイズのファイルを表示したくない場合は、attrib +R +S +H ...コマンドを使用して+ R + H + Sでマークし、システムがそれらを認識します。システムに隠された読み取り専用ファイルであり、エクスプローラーには表示されません(もちろん、システムファイルを隠すがチェックされている場合)。このようなコマンドは管理コンソールで実行する必要があることを忘れないでください。

今、私ができるように、ウィンドウが必要な場所や将来必要になる場所ではなく、必要なディスクの部分にファイルを配置し、ファイルが移動したり断片化したりしないようにすることができます。

0
Claudio