今回は、Windowsサーバーの運用において非常に強力なツールである「fsutil」コマンドについて解説します。
特にボリューム情報の取得方法やファイルシステムの詳細管理について、実務で役立つ具体的な活用例を交えながらご紹介します。
fsutilコマンドとは
fsutilは、File System Utilityの略で、Windowsに標準搭載されているコマンドラインツールです。ファイルシステムやボリュームに関する高度な操作や情報取得を行うことができ、GUIでは確認できない詳細な情報にアクセスできる点が大きな特徴です。通常のディスク管理ツールでは見られない、システムの深層部分まで把握できるため、トラブルシューティングやパフォーマンス調査において重要な役割を果たします。
ボリューム情報を取得する基本コマンド
まず、ボリューム情報を取得するための基本的なコマンドから見ていきましょう。fsutilでは「volume」サブコマンドを使用してボリューム関連の情報を取得します。
全ボリュームの一覧表示
システムに接続されているすべてのボリュームを確認するには、以下のコマンドを実行します。
fsutil volume list
このコマンドを実行すると、すべてのドライブレターやマウントポイントが表示されます。新しいディスクを追加した際や、仮想環境でボリュームの認識状況を確認したい場合に非常に便利です。
ボリュームの詳細情報取得
特定のボリュームについて、より詳しい情報を取得したい場合は以下のコマンドを使用します。
fsutil volume diskfree C:
このコマンドでは、指定したドライブの空き容量、総容量、使用可能な容量がバイト単位で正確に表示されます。ディスク容量管理において、単なる空き容量だけでなく、実際に利用可能な容量を正確に把握することが重要です。特に、クォータ設定やシャドウコピーが有効になっている環境では、見かけの空き容量と実際に使用できる容量が異なることがあるため、このコマンドで正確な状況を把握できます。
fsutil volume diskfree コマンド出力項目の解説
| 項目名 | 説明 |
|---|---|
| Total # of free bytes | ボリューム上の空きバイト数の合計。物理的に空いている領域の総量を示します。この値は、ファイルやフォルダを削除した直後に増加します。 |
| Total # of bytes | ボリュームの総バイト数。ディスクパーティション全体の容量を表します。フォーマット時に決定され、通常は変更されません。 |
| Total # of avail free bytes | 実際に利用可能な空きバイト数。クォータ制限やシャドウコピーの予約領域を考慮した、実質的に使用できる容量です。この値が「Total # of free bytes」より小さい場合、何らかの制限が設定されています。 |
これら3つの値を比較することで、ディスクの実際の使用状況を正確に把握できます。特に「Total # of avail free bytes」は、新規ファイル作成時に実際に使える容量を示すため、容量計画において最も重要な指標となります。
ファイルシステム統計情報の取得
ファイルシステムのより詳細な統計情報を取得するには、以下のコマンドが有効です。
fsutil fsinfo statistics C:
このコマンドを実行すると、読み取り・書き込みの回数、キャッシュヒット率、メタデータの読み書き回数など、パフォーマンス調査に欠かせない詳細な統計情報が表示されます。サーバーのディスクI/Oが高い状況でボトルネックを特定する際、このコマンドから得られる情報は非常に価値があります。
実務で役立つ活用シーン
トラブルシューティングでの活用
実際の業務において、ユーザーから「ファイルが保存できない」という問い合わせがあった際、私はfsutilコマンドを使って原因を特定しました。GUIのプロパティ画面では十分な空き容量があるように見えましたが、fsutil volume diskfreeコマンドで確認したところ、実際には使用可能な容量がわずかしか残っていないことが判明しました。これは、シャドウコピーが大量のディスク領域を消費していたことが原因でした。このように、見かけと実態が異なるケースでは、fsutilコマンドによる正確な情報取得が問題解決の鍵となります。
ディスク容量管理での実践
定期的なディスク容量監視において、PowerShellスクリプトとfsutilコマンドを組み合わせることで、より詳細な容量管理が可能になります。特に、複数のサーバーを管理している環境では、各サーバーのボリューム情報を自動的に収集し、閾値を超えた場合にアラートを出すような仕組みを構築できます。fsutil volume diskfreeコマンドの出力は解析しやすい形式のため、スクリプト化に適しています。
パフォーマンス調査での活用
データベースサーバーのパフォーマンスが低下した際、fsutil fsinfo statisticsコマンドを使用して、ファイルシステムレベルでの読み書き統計を確認しました。その結果、メタデータの読み取り回数が異常に多いことが判明し、インデックスファイルの断片化が原因であることを突き止めることができました。Windows標準のパフォーマンスモニターと併用することで、より多角的な分析が可能になります。
ファイルシステムの詳細設定管理
NTFSの詳細情報取得
NTFSボリュームの詳細情報を取得するには、以下のコマンドを使用します。
fsutil fsinfo ntfsinfo C:
このコマンドでは、NTFSのバージョン、クラスタサイズ、MFTゾーン、ボリュームシリアル番号など、ファイルシステムの深い情報が表示されます。特にクラスタサイズは、大容量ファイルを扱う環境では重要な設定項目であり、パフォーマンスに大きく影響します。既存システムの設定を確認し、最適化の方向性を検討する際に活用できます。
fsutil fsinfo ntfsinfo コマンド出力項目の解説
| 項目名 | 説明 |
|---|---|
| NTFS Version | NTFSファイルシステムのバージョン番号。Windows 2000以降は3.1が標準です。バージョンによって利用可能な機能が異なります。 |
| Number of Sectors | ボリュームの総セクタ数。セクタは通常512バイトで、ディスクの最小読み書き単位です。 |
| Total Clusters | ボリュームの総クラスタ数。クラスタはファイルシステムがデータを管理する最小単位です。 |
| Free Clusters | 未使用のクラスタ数。この値にクラスタサイズを掛けると、実際の空き容量が算出できます。 |
| Total Reserved Clusters | システムによって予約されているクラスタ数。MFT(マスターファイルテーブル)などのメタデータ用に確保されています。 |
| Bytes Per Sector | 1セクタあたりのバイト数。標準は512バイトですが、Advanced Formatディスクでは4096バイトの場合もあります。 |
| Bytes Per Cluster | 1クラスタあたりのバイト数(クラスタサイズ)。4KB(4096バイト)が一般的ですが、ボリュームサイズや用途によって異なります。小さいファイルが多い場合は小さいクラスタサイズ、大きいファイルが多い場合は大きいクラスタサイズが効率的です。 |
| Bytes Per FileRecord Segment | MFTの1レコードあたりのバイト数。通常は1024バイトで、各ファイルやフォルダの情報を格納します。 |
| Clusters Per FileRecord Segment | MFTの1レコードが占めるクラスタ数。通常は1クラスタ未満ですが、計算上の値として表示されます。 |
| Mft Valid Data Length | MFT(マスターファイルテーブル)の有効データ長。MFTはファイルシステムのメタデータを管理する重要な領域です。 |
| Mft Start Lcn | MFTの開始論理クラスタ番号。ディスク上のMFTの物理的な位置を示します。 |
| Mft2 Start Lcn | MFTのバックアップコピー(MFT Mirror)の開始位置。システムの冗長性を確保するために存在します。 |
| Mft Zone Start | MFTの拡張用に予約されているゾーンの開始位置。MFTの断片化を防ぐために確保されています。 |
| Mft Zone End | MFT拡張用ゾーンの終了位置。このゾーンのサイズは、ファイル数が増えた際のパフォーマンスに影響します。 |
| Resource Manager Identifier | トランザクション機能で使用されるリソースマネージャーの識別子。TxF(Transactional NTFS)が有効な場合に使用されます。 |
これらの項目の中でも、特に「Bytes Per Cluster」(クラスタサイズ)は、ストレージのパフォーマンスと効率性に直接影響する重要なパラメータです。例えば、小さなファイルが多数存在する環境で大きなクラスタサイズを使用すると、ディスク容量の無駄が発生します。逆に、大容量ファイルを扱う環境では、大きなクラスタサイズの方が効率的です。既存システムの設定を確認し、用途に応じた最適化の判断材料として活用できます。
ファイルシステムの種類確認
ドライブがどのファイルシステムでフォーマットされているかを確認するには、以下のコマンドが便利です。
fsutil fsinfo volumeinfo C:
このコマンドは、ファイルシステムの種類(NTFS、ReFS等)、ボリューム名、シリアル番号、さまざまな機能の有効/無効状態など、包括的な情報を提供します。特に、圧縮機能、暗号化機能、ディスククォータなどの設定状況を一目で確認できるため、システム監査やセキュリティチェックの際に有用です。
初心者が注意すべきポイント
管理者権限の必須性
fsutilコマンドの多くの機能は、管理者権限で実行する必要があります。コマンドプロンプトやPowerShellを「管理者として実行」で起動していないと、「アクセスが拒否されました」というエラーが発生します。初心者の方がよく陥るミスの一つですので、必ず管理者権限で実行するようにしましょう。
書き込み操作には十分な注意を
fsutilには情報取得だけでなく、ファイルシステムの設定を変更する機能も含まれています。今回ご紹介したのは主に情報取得系のコマンドですが、fsutilには強力な変更機能もあります。特に、ボリュームの設定を変更するコマンドは、システムに重大な影響を与える可能性があるため、本番環境で実行する前に必ずテスト環境で動作を確認し、バックアップを取得してから実施してください。
出力結果の単位に注意
fsutilコマンドの出力は、多くの場合バイト単位で表示されます。大容量のディスクでは数値が非常に大きくなるため、読み間違いに注意が必要です。計算ツールや変換スクリプトを併用して、GB単位やTB単位に変換すると理解しやすくなります。例えば、1,000,000,000,000バイトは約931GBに相当します。
コマンドの実行タイミング
統計情報を取得するコマンド(fsutil fsinfo statistics等)は、サーバーの再起動後にカウンターがリセットされます。したがって、パフォーマンス調査を行う際は、取得したデータがいつから蓄積されたものかを把握しておくことが重要です。また、高負荷時に実行すると、それ自体がシステムに負荷をかける可能性があるため、業務への影響を考慮して実行タイミングを選ぶべきです。
まとめ
fsutilコマンドは、Windowsサーバー管理において非常に強力なツールであり、GUIでは得られない詳細な情報を取得できます。ボリューム情報の正確な把握、ファイルシステムの詳細設定確認、そしてトラブルシューティングやパフォーマンス調査など、さまざまな場面で活躍します。
今回ご紹介した「fsutil volume diskfree」と「fsutil fsinfo ntfsinfo」の出力項目を理解することで、ディスク容量の正確な把握や、ファイルシステムの最適化判断がより的確に行えるようになります。特にクラスタサイズやMFTの設定は、システムパフォーマンスに直結する重要な要素です。
初心者の方は、まず情報取得系のコマンドから使い始め、徐々に使いこなせる範囲を広げていくことをお勧めします。管理者権限での実行、出力結果の正しい理解、そして変更系コマンドの慎重な取り扱いを心がければ、fsutilはあなたの強力な味方となるでしょう。
日々の運用業務の中で、このコマンドを活用することで、より深いレベルでのシステム理解と効率的な管理が可能になります。ぜひ、実際の環境で試してみてください。


コメント