「fsutil」コマンドで巨大なファイルを作る方法

Windowsのコマンドライン機能を利用すると、数十GBとか数百GBといった巨大なサイズのファイルを短時間に一発で作ることができます。

一般的にはこんなファイルの使い途は考えられないと思いますが、ネットワークやディスクの性能測定には不可欠なものでもあります。

どちらもスループットを測定するためのベンチマークソフトが存在しますが、実際にOSのコピー処理などの性能の実効速度を見たい、というケースではこの方法を使って巨大なファイルを作り実際の操作を行なう方がより正確な測定結果を得ることが出来ます。

GUI操作ではなくコマンドプロンプトの文字によるコマンド操作を使うことになりますので、最初はちょっととっつきにくさがあるかもしれませんが使うコマンド自体はとても簡単です。

仕事でそういった作業が必要な方、個人的に性能チェックを行なう必要がある方にはちょっとおすすめのやり方です。

コマンドプロンプト/PowerShellを起動

Windowsの環境でコマンドラインの機能を使うにはコマンドプロンプトかPowerShellを使います。最新のWindows 10だとOS自体としてはどちらかと言えばPowerShell推しな雰囲気ですね。コレに乗っかって今回はPowerShellを使ってみます。

まずはPowerShellの起動からですが、この手順はスタートボタン右クリックで表示されるメニューを使うのが一番手っ取り早いでしょう。

この機能の実行には管理者権限がいりませんので通常モードのPowerShellで大丈夫です。

fsutilコマンドを発行

次はfsutilコマンドを使ってファイルを作成します。

PowerShellのプロンプトに対して次のコマンドを入力、Enterキーを押します。

fsutil file createnew testfile ファイルのサイズ

ファイルのサイズはバイト単位で指定します。

10GBだったら、10 x 1024 x 1024 x 1024 = 10737418240 を指定します。

プログラマっぽく16進数での指定も可能になっていて、こちらの場合には10GBだと「0x280000000」を指定します。

10進数での指定ならコマンドのカタチは

fsutil file createnew testfile 10737418240

となります。

こちらの操作で基本的には本当に一瞬で10GBのファイルが出来上がります。

ファイルの中身はちょっと特殊

fsutilのこの仕組みを使って作られたファイルは、中身のデータがすべてゼロになっています。

また、ちょっと特殊な扱いのファイルになっていてディスク上に領域は確保されていますが、このファイルを読み出すときにはほとんどディスクにアクセスが出ません。

OSが仮想的にこんなファイルがある、と認識していて、中身に関係なく特定のデータを返すようなイメージです。ディスク上にはそのマークだけが付けられているような感じです。

このためこのファイルを読み出すための負荷がほとんどかかりません。

このファイルをそのまま使ってコピーの性能やネットワークでのデータ転送の性能を測るときには、データを読み出す部分の負荷が測定値に全く影響しなくなることを覚えておきましょう。

そこまで含めた性能を測りたいときには一工夫が必要です。

一度、上記の方法で作ったファイルをコピーすると、今度はきちんと実体を伴ったファイルになります。こちらを使えば読み出しの負荷まで含めたテストが行えます。

逆に純粋にコピーのみとか、受け側の書き込み性能のみを見たい、といった用途には最適と言えます。