目次
SSDがあまりにも高くなってしまったので、代わりにUSBメモリを束ねて使えるか、実験してみました。
記憶域スペースとは
Windowsには、複数のストレージを束ねて1つのドライブとして扱える「記憶域スペース」という機能があります。これを使うと、SSDやHDDを複数本束ねて、1つの大容量ドライブとして使うことができます。さらに、ミラーリングやパリティを使うことで、ディスクの故障に備えることもできます。
手順を簡単に説明します。設定→システム→ストレージの詳細設定→記憶域スペースと進んで、新しいプールの作成をクリック。ディスクの一覧が出てくるので、使用したいディスクを選択してプールを作成します。


サイズや回復性の設定が表示されるので、好みの内容に変更して続行。最後に、名前を付けてフォーマットするだけで、もう完了です。


最短では数クリックで作成可能で、完全にGUIで管理できます。しかもWindowsの標準機能なので、追加のインストールは不要です。別のPCに移行する場合には、ただ挿し替えるだけで自動的に認識されます。冗長化のオプションも多彩で、ディスクの追加や削除の自由度が高く、容量違いのディスクを組み合わせることができるなど、柔軟性に優れています。パフォーマンスも悪くありません。
こうやって書いてみると、いいことづくめのように見えますが、事実、いいことづくめです。
便利な記憶域スペースですが、これはあくまで内蔵ストレージを束ねるための機能であり、USBメモリやSDカードなどのリムーバブルストレージをそのまま束ねることはできません(USB接続であっても、HDDやSSDはプールに参加できます)。そこで今回は、裏技的に、USBメモリを束ねて1つのドライブとして使う方法を試します。
使用するのは、USBメモリ上に仮想ディスクを作成し、その仮想ディスクを記憶域プールに参加させるという方法です。
USBメモリを集める
家じゅうからUSBメモリやSDカードをかき集めてきました。まずはUSBメモリ。右上から、MSIのマザボに付属していたドライバインストールUSBメモリ、SanDiskの64GB、Verbatimの64GB、今もアリエクで1000円で買えるKingstonの128GB、LexarのSSDを買ったらおまけに貰ったSUNEASTの64GB、Silicon PowerのType-Cな128GB。

メモリカードの部。HUAWEIの純正NMカード128GB、Silicon Powerの128GB、ホリのSwitch用64GB、XrayDiskとかいう怪しすぎるブランドの64GB(深圳市麦克斯特电子?容量偽装でないことを確認済み)、JNHの128GB。SDアダプタやUSBアダプタも使います。

Intel Optane Memory 16GBもUSB接続で2本使用します。

これらのストレージを、USBハブで繋いで、

繋いで、

1枚だけ本体に繋いで、

繋いで完成しました。なんだかとってもスパゲッティ。

全部で13本となりました。
記憶域を作成
起動してRufusでNTFSにフォーマット。エクスプローラには大量のストレージが表示されます。ちなみに、安定していないので、今後のスクショではたまに増えたり減ったりしますが気にしないでください。

ディスクを確認する
まず、どのディスクが直接プールに参加できるかを確認します。PowerShellでコマンドを実行します(以降の操作はすべて管理者権限のPowerShellで行います)。
Get-PhysicalDisk
CanPool列がTrueとなっているディスクはそのままプールに追加できます。Optane Memory 16GBは直接プールに参加できます。残りのUSBメモリ・SDカードはリムーバブルディスクとして認識されているため、VHDX経由でプールに参加させます。
SSDであるにもかかわらずCanPoolがFalseになっている場合、既存のパーティションの削除や、Reset-PhysicalDiskコマンドでの初期化を試してみてください。
VHDXを作る
各ボリュームに仮想ディスクを作っていきます。設定→システム→ストレージの詳細設定→ディスクとボリュームに入って、VHDの作成をクリック。各ディスクの最大容量に合わせて、VHDXを作成します。

プールに参加させたいディスクすべてに、同じ手順でVHDXを作成します。
記憶域プールを作成する
設定の記憶域スペース内で、新しいストレージプールをクリック。ディスクをすべて集めてプールを作成します。名前は「記憶域プール」としました。この部分は通常と同じです。しかし今回は、スペースの設定はスキップします。並列で読み書きするために、次の手順でPowerShellを使って設定します。
記憶域スペースを作成する
プールから記憶域スペースを作成します。NumberOfColumnsはストライプの列数で、増やすほど並列読み書きが増えて速度は上がりますが、容量の小さいディスクに引っ張られて使える容量が減ります。単純な合計容量では793GBですが、今回は7に設定したため721GBとなりました。
New-VirtualDisk -StoragePoolFriendlyName '記憶域プール' `
-FriendlyName '記憶域スペース' `
-ResiliencySettingName Simple `
-NumberOfColumns 7 `
-UseMaximumSize `
-ProvisioningType Fixed
フォーマットする
作成した仮想ディスクを GPT で初期化し、NTFS でフォーマットします。
$vd = Get-VirtualDisk -FriendlyName '記憶域スペース'
$disk = $vd | Get-Disk
Initialize-Disk -Number $disk.Number -PartitionStyle GPT
$part = New-Partition -DiskNumber $disk.Number -UseMaximumSize -AssignDriveLetter
Format-Volume -Partition $part -FileSystem NTFS `
-NewFileSystemLabel '記憶域スペース' -Confirm:$false
エクスプローラーに新しいドライブが現れれば完成です。

再起動後
作成が完了してから再起動した場合、VHDXは自動で認識してくれないので、記憶域スペースが見えなくなります。USBドライブがすべて認識された後に、VHDXを再接続する必要があります。Mount-DiskImageコマンドを使うか、設定から再接続を行ってください。
ベンチマーク
無事に動作したので、ベンチマークを実行。13本のディスクを束ね、7並列で読み書きしています。CrystalDiskMarkでは、読み込みが243MB/s、書き込みは189MB/sとなりました。

詳細


1本あたりの性能はこんなものなので、複数本を束ねて高速化する恩恵はあるといえるでしょう。シーケンシャルだけでなく、ランダムの読み込みも早くなっているのが意外。


動かしていると、USBハブとUSBメモリが熱々でちょっと怖いです。
まとめ
今回の方法は、安定性が低いので実用性があるとは言えませんが、記憶域スペース自体は非常に便利な機能です。余りがちな小容量のSSDやHDDを束ねて大容量のドライブとして使うことができるので、PCの容量不足に悩んでいる方はぜひ試してみてください。小容量なディスクだけでなく、大容量SSDで構成しても便利に使えます。
USBメモリの場合、強いて言えば128GBを3本くらいで作るのであればそれなりに安定して使えそうだし、容量的にも役立てられるレベルになるかもしれません。