物理の駅 by onsanai

Physics Station → PhSt 質問・疑問・間違いの指摘は、コメントに書くか、直接伝えるときっと良いことがあります。主にWindows or Ubuntu用の記事です

Windows Server 2019 or Windows 10で容量を途中で16TB以上に拡張可能な仮想ディスクを作る

Windowsで仮想ディスクを作る手順は以下の通り

  1. サーバーマネージャー→ファイルサービスと記憶域サービス→ボリューム→記憶域プールを開く
  2. 右上のタスクから記憶域プールの新規作成
  3. 仮想ディスクの作成
  4. ファイルシステム:ReFSのアロケーションユニットサイズ:4096でフォーマット
  5. ドライブ文字やパスの割当

まず、物理ディスクを2つ使った記憶域プールを作った。

物理ディスク 2台 容量
9.10TB 
9.10TB 

続いて仮想ディスクを作成した。

仮想ディスク
レイアウト: Mirror
プロビジョニング 固定
容量 9.10TB
割り当て済み 9.10TB

その後、ファイルシステム:NTFSでフォーマットしてしまった。記憶域プールに、新しく物理ディスク2台を投入した。

容量
10.9TB
10.9TB

これで、20TBのディスクを作れるだろうと思って、ディスクの管理からボリュームの拡張を行ったが、以下のようなエラーが出た f:id:onsanai:20191207213448p:plain

仮想ディスクマジェージャーから 「ファイルシステムでサポートされているクラスターの最大数を超過するため、ボリュームを拡張できません。」とエラーメッセージが出て、ボリュームの拡張ができなかった。

問題はファイルシステムNTFS」らしい。

NTFS の概要 | Microsoft Docs

NT File System - Wikipediaに以下の記述があった

2010年時点でのNTFSの実装では、クラスタ数は232-1までとなっている。このため、16 TiBを超えるボリュームは、4 KiBを超えるアロケーション ユニット サイズを指定しなければならない。

アロケーションユニットサイズを取得するには fsutil fsinfo ntfsinfo h: で。

C:\Users\Administrator>fsutil fsinfo ntfsinfo h:
NTFS バージョン                         : 3.1
LFS バージョン                          : 2.0
セクターあたりのバイト数                : 512
物理セクターあたりのバイト数            : 4096
クラスターあたりのバイト数              : 4096

今回作ろうとした、9TB+11TB=20TBのボリュームは、NTFSのデフォルトのアロケーションユニットサイズ(=クラスターあたりのバイト数)である4096バイト×(232-1)の上限である約16TBを超えてしまったというわけだ。

なので、一旦中のファイルを退避させて、仮想ディスクを新しい弾力性のあるファイルシステム (ReFS) へ再フォーマットした。 ReFSのファイルサイズの上限は256 TiBであり、最大ディスクサイズは4PBである。 ReFSにすることで、16TBを超える仮想ボリュームでも、後からディスクを追加した時に、容量を増やすことが可能になった。 ReFSについては以下の記事を参考にして欲しい。

Building the next generation file system for Windows: ReFS – Building Windows 8

Resilient File System (ReFS) の概要 | Microsoft Docs

ちなみに、初めから16TBを超える仮想ディスクをNTFSでフォーマットする際は、アロケーションユニットサイズは64KBになる。このときのディスクの上限は256TBになる。

C:\Users\Administrator>fsutil fsinfo ntfsinfo h:
NTFS バージョン                         : 3.1
LFS バージョン                          : 2.0
セクターあたりのバイト数                : 512
物理セクターあたりのバイト数            : 4096
クラスターあたりのバイト数              : 65536

ReFSでフォーマットしたときのアロケーションユニットサイズの確認は fsutil fsinfo refsinfo h: で行う。

C:\Windows\system32>fsutil fsinfo refsinfo h:
REFS バージョン          : 3.4
セクターあたりのバイト数     : 512
物理セクターあたりのバイト数   : 4096
クラスターあたりのバイト数    : 4096

NTFSINFOのLFS(ログファイルシステム)バージョンを気になった人はこれを読んで理解した気になるとよいだろう。要はWindows 7 は1.1でWindows 10やServer 2019等は2.0で完全な互換性がないという話。

Windows 7 と 10 両方でのデータやり取りは「安全なとりはずし」をしっかり行うこと | Tanweb.net