ボリュームのアロケーションユニットサイズを確認したい場合があります。
例えば,他のマシンと同じスペックのサーバーを構築する場合など,既存のボリュームのアロケーションユニットサイズを確認したいということがあると思います。
あるいは,ボリュームが異常な使用率になっているサーバーのトラブルシューティングとして,ボリュームのアロケーションユニットサイズを確認したいこともあるでしょう。
DISKPARTを使ったアロケーションユニットサイズの確認は遅い
そのような場合に,よく紹介されているのが,DISKPARTを使った確認方法です。しかし,このDISKPARTを使ってアロケーションユニットサイズを確認しようと思うと,最低でも以下の4コマンドを実行しなければなりません。
diskpart list volume select volume [number] filesystems
ドライブ名からボリューム番号を見つけなければならないため,幾らかの思考を働かせなければなりません。
それで,コマンドプロンプトでアロケーションユニットサイズを確認するなら,fsutilコマンドを使う方がよいでしょう。
FSUTILなら1行でアロケーションユニットサイズを確認できる
fsutilコマンドを使えば,1行でアロケーションユニットサイズを確認できます。例えば,Dドライブのアロケーションユニットサイズを確認したければ,次のように実行します。
fsutil fsinfo ntfsinfo D:
そして,Bytes Per Cluster(日本語では「クラスターあたりのバイト数」)の項目を確認しましょう。
Bytes Per Clusterが4096であれば,アロケーションユニットサイズは4Kですし,65536であれば,64Kであることが分かります。
もし,ボリュームがNTFSではなく,ReFSであれば,次の1行を実行しましょう。
fsutil fsinfo refsinfo D:
そして,同様にBytes Per Clusterの値を確認します。それが,ReFSにおけるアロケーションユニットサイズの設定値です。
ちなみに,fsutilは,Windows XP以降のOSで使用可能なコマンドです。
PowerShellを使ってアロケーションユニットサイズを確認する
上記の方法でも確かに1行のコマンドで確認できるのですが,ドライブレターをその都度変更しなければなりません。
しかし,PowerShellを使うなら,どんな環境でも同じコマンドでアロケーションユニットサイズを確認することができます。それが,Get-Volumeを使う方法です。
以下のコマンドを,管理者として立ち上げたPowerShellで実行してください。
Get-Volume | Format-List AllocationUnitSize, FileSystemLabel
この方法なら,ドライブレターを変更する必要なく,すべてのドライブのアロケーションユニットサイズ情報を一覧で取得することが可能です。
ただし,コマンドプロンプトよりもPowerShellを立ち上げる方が時間がかかる場合がありますので,それぞれの環境に合わせて最適な方法を選んでください。
GUIでアロケーションユニットサイズを確認する方法はない
時おり,空のテキストファイルを保存して,そのファイルのプロパティから「ディスク上のサイズ」を確認する方法が説明されている場合がありますが,これは現在では有効ではありません。
なぜなら,NTFSのボリュームには,MFT (Master File Table)と呼ばれる管理領域があり,そこでNTFSボリューム内のすべてのファイルやフォルダのエントリや属性情報が保管されているのですが,極小ファイルの場合には,直接MFTに情報が書き込まれるという仕様になっています。
未検証ですが,1024 byte以下のファイルはMFTに保存されるという仕様があるようです。
それで,GUIでアロケーションユニットサイズを確認できる確実な方法はありません。
以上,アロケーションユニットサイズを確認する最適な方法に関する考察でした。
別の記事で,ReFSとNTFSにおける最適なアロケーションユニットサイズについて書いておりますので,興味がある方はご参照ください。
コメント