スラッシュドット    はてなブックマーク  Yahoo!ブックマークに登録  印刷
Windows TIPS
[System Environment]
  Windows TIPS TOPへ
Windows TIPS全リストへ
内容別分類一覧へ

巨大なサイズのファイルを簡単に作る方法

デジタルアドバンテージ
2002/09/28
対象OS
Windows XP Professional
Windows XP Home Edition
fsutilコマンドを使うと、ギガバイト・クラスの巨大なファイルを簡単に作成することができる。
こうやって作成した巨大なファイルを使うと、システムのパフォーマンスやネットワークの性能測定、負荷テストなどが行える。
FAT32からNTFSに変換する場合は、MFT用の予約領域を作成しておくとよい。


操作方法

 Windows XPではコマンド・プロンプト上で利用できるツールとして、「fsutil.exe」というコマンドが用意されている。コマンドの概要については別稿の「Windows XPの正体 強化されたコマンドライン・ツール―2.ディスク/ファイル関連ツール」を参照していただきたいが、主にファイル・システムに関するさまざまな操作ができるようになっている。

 fsutilにはサブコマンドがいくつか含まれているが、その中に「指定されたサイズのファイルを作成する」という非常に単純な機能のコマンドがある。使い方は次の通りである。

sutil file createnew ファイル名 サイズ

ファイル名:作成したいファイルの名前。すでに同名のファイルやフォルダが存在しているとエラー。

サイズ:作成するファイルのサイズ。10進数で指定する。最大サイズは対象となるファイル・システムによる。

 このコマンドでは、指定された名前のファイルを、指定されたサイズで作成する。「サイズ」は10進数で指定するので、例えば10Gbytesちょうど(=10,737,418,240)のファイルtestfileを作成するには、次のようにする。

C:\>fsutil file createnew testfile 10737418240

 「ファイル名」には、ローカルのディスク上のファイルだけでなく、リモートのファイル・サーバ上のファイル名やUNCなども指定できる。fsutilはWindows XPでしか利用できないが、ファイルを作成する対象となるマシンはWindows XPでなくても構わない(Windows XP上の%windir%\system32\fsutil.exeをWindows 2000へコピーしても動作はするようだが、このような使い方はライセンス違反である)。

 作成されるファイルの中身は、すべてゼロで埋められる。16進数でいうと、0x00というバイト・データばかりが詰まったファイルとなる。ほかの値を指定することはできない。

 このコマンドを使ってファイルを作成する場合、対象となるファイルがNTFSボリューム上ならば、どんなに大きなファイルでも、すぐに作成される。ただしディスク上の空き領域が少なかったり、非常に低速なマシンなどを使っていたりするとしばらく待たされることがあるが、それでもせいぜい数秒以内で作成されるようである。NTFSの場合には、ファイルのブロック(クラスタ)を予約するだけで、実際にファイル・データを書き込むわけではないからのようだ(次回読み出すときには、ゼロ・データを返しているようである。いったんデータを書き込めば、次回は実際にそのブロックを読み出すことになる)。ただしスパース・ファイルと違って、実際にファイル・データのためのブロックは割り当てているので、ディスクの空き領域は作成されたファイルの分だけ減少する。

 これに対して、FATファイル・システム上にファイルを作成した場合は、実際にディスクへの書き込みが発生する。リモートのファイル・サーバ上のファイル名を指定してfsutilを実行すると、すぐにコマンドの実行が完了するので、ファイルがすぐに作成されたように見えるかもしれないが、実際にはその要求はリモートのサーバ側でキャッシュされてから実行されている(遅延書き込みされている)。そのため、作成したファイルをすぐに利用しよう(読み出そう)としても、ファイルの作成(ゼロ・データの書き込み)が完全に完了するまでは、次の読み出しコマンドなどは待たされる。

 またFATファイル・システム上では、ファイル・サイズの最大値は4Gbytes未満に限定されているので、4Gbytes以上のファイルを作成することはできない(ファイル・サイズの制限については「TIPS:ファイル・システムの制限―2G/4GBytes超のファイルに注意―」参照)。

巨大なファイルの使い方

 このように、fsutilコマンドを使えば巨大なファイルを簡単に作成できるが、いったいそれが何の役に立つのか、とお考えかもしれない。いろいろな使い方があるのだが、代表的なものとしては、ファイル・システムやOS本体、ネットワークなどに対する負荷テストやパフォーマンス(転送速度)測定などが挙げられる。また変わったところでは、ディスク上の特定の領域を予約したり、後で利用するために一時的にディスク上の場所や領域を確保したりしておく(それらの領域を利用する直前にファイルを削除する)という用途もある。以下、いくつか簡単に紹介しておくが、これ以外の用途に使うのももちろん自由である。

■ディスク読み書き性能の測定
 最もよく使われると思われるのが、ディスクやファイル・システムなどの読み書き速度のテストだろう。巨大なファイルを1つ作成して、それをコピー・コマンドやエクスプローラのコピー機能を使って、さまざまな場所にコピーすることにより、ファイル・システムやディスク・システム、そしてそれを制御するシステム全体のパフォーマンス測定などが可能になる(ディスクとの転送速度だけでなく、CPUの使用率なども測定できる)。このような測定を行う場合は、なるべく大きなファイルを使わないと誤差が出るので(時間の測定誤差もあるし、OSのディスク・キャッシュに入りきるような小さなファイルでは、ディスクの実際のアクセス速度を正しく測定することはできない)、fsutilで素早く作成できる巨大なファイルは、テストには好都合である。また、一気に巨大なファイルが作成されるので、ファイルそのものに含まれるフラグメントも最小になり、測定誤差を低減させることができる。

 なお、コピーに要する時間を測定するにはストップウォッチで手動測定してもよいが、例えばコマンド・プロンプトに秒を表示させるようにしておけば(「prompt $p $t$g」を実行しておく)、コピーに要する時間を簡単に測定できるだろう。また分単位でよければ、次のようにすれば、コピーの前後の時間を表示させることができる。

C:\>time /t && copy testfile testfile2 && time /t

※「time /t」は現在の「時:分」を表示させるコマンド、「&&」はコマンドの連続実行を表す。
 
注意:すでに述べたように、NTFS上にファイルを作成した場合は、実際にはディスクへのアクセスを行うことなくファイル(ゼロ・データ)を読み出すことに注意していただきたい。そのため、必要ならばいったん別のファイルをコピーしてから(これならば確実にディスクからの読み出しが行われる)、測定に使うとよい。

■ネットワークの負荷テスト/性能測定
 以上のようなファイルのコピーのテストを、ネットワーク越しに行えば、ネットワークのパフォーマンスをテストすることができる。ネットワーク帯域の消費の具合や、ファイル・サーバのCPU負荷、ディスクのI/O負荷などを調べることができるだろう。ローカル側のハードウェアの影響を受けないようにするには、例えば「copy remote-file nul」とすればよい。これならばネットワーク経由で読み出したファイルの内容は単純に捨てられるだけである(NULデバイスに書き込むことは、データを捨てるのと等価)。

 また巨大なファイルを(複数のマシンから)連続して読み出せば(ファイルとして読み出してもよいし、ftpなどで「get remote-file nul」としてもよい)、ネットワークを含むシステム全体の負荷テストにもなる。

■圧縮ボリュームの負荷テスト
 このコマンドを使って作成したファイルの中身は、すべてゼロ・データである。そのため、圧縮させると非常に小さなサイズにすることができる。NTFS上に作成したファイルを圧縮/解凍させてみれば(エクスプローラで「圧縮属性」を付け外ししてみるか、コマンド・プロンプト上でcompactコマンドを使う)、圧縮/解凍に要するCPU性能などの見積もりができるだろう。

 なお、圧縮ボリュームや圧縮フォルダ中に直接fsutilでファイルを作成しても、作成されたファイルは圧縮されない。fsutilで作成したファイルを圧縮するには、上で述べたような操作を行う必要がある。

■NTFSに変換するためのMFT領域の作成
 Windows 2000やWindows XPでは、FAT32で作成されたボリュームをconvertコマンドを使ってNTFSボリュームに変換することができる。NTFSではMFT(Master File Table)という、一種のルートとなるインデックス領域が必要になるが(別稿の「NTFSではフラグメントは発生しにくい?―NTFS基礎のキソ」参照)、このMFTがフラグメントを起こしていると、NTFSのパフォーマンスを最大限に発揮することができない。

 最初からNTFSとして作成されたボリュームならばMFTがフラグメントを起こす心配はないが、FAT32から変換したボリュームでは、場合によっては(空き領域が少ないと)フラグメントを起こす可能性がある。

 このような事態を避けるには、あらかじめfsutilでMFT用の領域を作っておき(ファイルとして作成しておけばよい)、convertコマンドの引数にそのファイル名を与えるとよい。fsutilで作成されたファイルはフラグメントが最小限に抑えられているからだ。convertコマンドは、与えられたファイルをMFT用の領域として使用することができる。MFTとして必要なサイズはボリューム・サイズやファイル/フォルダの総数にもよるが、ボリューム・サイズの1割もあれば十分である。余分な部分はconvertが空き領域として解放してくれる。MFTのサイズの見積もり方や具体的な操作方法については、[スタート]メニューの[ヘルプとサポート]で「convertコマンド」を検索して、その解説を参照していただきたい。End of Article

この記事と関連性の高い別のWindows TIPS
ftpでネットワークの速度を測定する
FAT→NTFSにファイル・システムを変換する
ファイル・システムの制限 ― 2G/4GBytes超のファイルに注意 ―
ttcpでネットワーク・パフォーマンスを測定する
これだけは覚えておきたい、コマンド・プロンプトの使い方
このリストは、(株)デジタルアドバンテージが開発した
自動関連記事探索システム Jigsaw(ジグソー) により自動抽出したものです。
generated by

「Windows TIPS」
Windows Server Insider フォーラム 新着記事

@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

RSSフィード

アイティメディアの提供サービス

ホワイトペーパー(TechTargetジャパン/閲覧には会員登録が必要です)

スキルアップ/キャリアアップ(JOB@IT)

- PR -

お勧め求人情報

キャリアアップ 〜JOB@IT
@IT Special -PR-
  New! 「高可用性」のレベルは千差万別!?
“最適な”高可用性システムを導入

  New! “社会人大学院って、実際どうなの?”
現役学生が本音で語る「社会人大学の魅力」

  New! “スーパーユーザーの反乱”に備えて、
技術者はどのような対策を施せるか?

  New! 小型センサーで不正なPCを“検知&遮断”
容易な導入・運用を実現する3つの特徴は

  「仮想化環境」を1カ月単位でレンタル!?
初期コストを大幅に下げるサービスとは?

  半分以上が使われていない? 利用効率を
高める“ストレージ仮想化”のメリットは

  「セキュリティソフト=重い」は昔の話?
@IT編集部の3人が実際に体験してみた

  ファルコンストア会長兼CEOに訊く――
事業継続を考える企業にとって必要なこと

  一通り眺めて「同意する」をクリック、に
潜むワナ……知れば“得”する対処法は?

  「物理サーバと同じ手法でいいの?」
“仮想化”に適したバックアップとは?

  変化するセキュリティリスクに対応した
情報漏えい対策の方法とは?

  凄腕プロジェクトマネージャがチェックする
リスクマネジメントで重要な5つのポイント

  米・国防総省(ペンタゴン)も採用!
最上級のセキュリティをカンタン導入する

  次期OSへの鍵!Windows Vistaのご提案
今Vista導入を検討すべき3つの理由とは!

  「スーパープログラマ」になるための資質
〜エンジニア・キャリア進化論(第13回)〜

  「“監視ツール”だけで安心ですか?」
高可用性を追求した“クラスタ構築”とは

  コストをかけずに迅速復旧!!
事業継続性を高める為の“3つの要素”?

  ビジネスは、小さく生んで大きく育てたい
そんな願いを叶えてくれるサーバって?

  「週末だけリソースが増やせればなぁ…」
が実現するクラウドホスティング

  SaaS、クラウドコンピューティング時代
必要となるITインフラの要件とは!?

  導入事例を通してSDKの実績を検証しよう
これがワザあり開発ツールの“技”だ!!

  従来の職種が、SOAによって大きく変わる!
SOA時代、新たに生まれる“6つの職種”とは?


ソリューションFLASHPR