[System Environment] | |||||||||||
巨大なサイズのファイルを簡単に作る方法
|
|||||||||||
|
操作方法 |
Windows XPではコマンド・プロンプト上で利用できるツールとして、「fsutil.exe」というコマンドが用意されている。コマンドの概要については別稿の「Windows XPの正体 強化されたコマンドライン・ツール―2.ディスク/ファイル関連ツール」を参照していただきたいが、主にファイル・システムに関するさまざまな操作ができるようになっている。
fsutilにはサブコマンドがいくつか含まれているが、その中に「指定されたサイズのファイルを作成する」という非常に単純な機能のコマンドがある。使い方は次の通りである。
sutil file createnew ファイル名 サイズ
|
このコマンドでは、指定された名前のファイルを、指定されたサイズで作成する。「サイズ」は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 |
注意:すでに述べたように、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コマンド」を検索して、その解説を参照していただきたい。
|
「Windows TIPS」 |
- Windows TIPS (2008/12/19)
− レジストリ・エディタでよく参照するキーを素早く開く
− Windows Server 2008で無線LANを利用する
− Hyper-Vの仮想マシンへのショートカットを作成する - 第153話 残業削減 (2008/12/16)
世は未曽有の大不況。国は雇用を守れというが…。とりあえずは残業削減だ。おい部長、何か有効な手だてはないか! - Windows TIPS (2008/12/12)
− ダウンロードしたファイルを開かずに保存させる
− レジストリ・キーの最終更新日時を調べる
− bcdeditでブートOSメニューを変更する - Windows XP簡単ディスク・ダイエット術 (2008/12/11)
Windows XPの不要なファイルを削除してスリム化を実現。簡単な11種類の手法を紹介する。ディスク容量に制限のあるミニノートPCユーザー必読
|
|
スポンサーからのお知らせ
- - 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つの職種”とは? |