「SSDならコピーは速いはずなのに、写真や作業ファイルが大量に入ったフォルダーだけ遅い」。そんな疑問に対し、接続中のSSDで同じ64MiBを、1ファイルと1024ファイルに分けてコピーする実験を行った。
結論は、今回の条件では1024ファイルのほうが明確に遅かった。 Windows標準のRobocopyによる3回の測定では、1ファイルが中央値 0.243秒、1024ファイルが 1.405秒。総容量は同じでも、所要時間に約 5.8倍の差が出た。ただし、これはUSBケースを含む手元の構成での結果であり、SSD本体だけの性能差や故障を示す数値ではない。
ネット上のどんな悩みから試したか
Microsoft Q&Aの外付けSSD利用者は、単独のファイルはコピーできる一方、多数のフォルダーでは進行が遅くなると相談している。別のUSBメモリー利用者の投稿にも、合計115MBほどの約5000ファイルが大きな動画ファイルより著しく遅い、という実体験がある。投稿者の機材や遅延原因はそれぞれ異なるため、これらを本記事のSSDの不具合報告とは扱わない。「総容量だけでなくファイル数はコピー時間を変えるのか」を検証する出発点にした。
検証環境と方法
| 項目 | 今回の条件 |
|---|---|
| SSD | Verbatim Vi550 128GB(49350系)。手元の個体は所有者確認で国内型番49350-J |
| 接続 | USB-SATA変換ケース経由。Windowsのディスク表示は「JMicron Tech」 |
| OS・コピー先 | Windows 11、SSD内のNTFS検証領域 F:。物理SSDは128GBだが、F:の領域は約2GiB |
| コピー元 | PC内蔵ストレージ上に実験用データを新規作成 |
| 比較するデータ | 64MiB × 1ファイル / 64KiB × 1024ファイル。合計はいずれも67,108,864バイト |
| 測定 | Windows標準Robocopyを単一スレッド(/MT:1)で実行。各条件3回。実行の起動から終了まで計測 |
| 照合 | コピー後にファイル数、総バイト数、連結順のSHA-256を検証。さらに各小ファイルのSHA-256も元データと照合。照合時間はコピー時間に含めない |
1024個の小ファイルを順番に連結すると、1個の大ファイルとバイト列が完全に同じになるよう作成した。試行ごとに新しい保存先フォルダーを使い、1回目は「1ファイル→1024ファイル」、2回目は逆順、3回目は再び「1ファイル→1024ファイル」とした。既存ファイルは変更していない。
なお、この数値はエクスプローラーのドラッグ&ドロップ速度ではない。Robocopyの起動時間も含み、Windowsのキャッシュやバックグラウンド処理の影響も受ける。
結果:同じ64MiBでもファイル数で差が出た
| 試行 | 1ファイル | 1024ファイル | 1024ファイルのほうが遅い倍率 |
|---|---|---|---|
| 1回目 | 0.242秒 | 1.405秒 | 約5.8倍 |
| 2回目 | 0.243秒 | 1.284秒 | 約5.3倍 |
| 3回目 | 0.392秒 | 1.556秒 | 約4.0倍 |
| 中央値 | 0.243秒 | 1.405秒 | 約5.8倍 |
実効転送量に直すと、中央値では1ファイルが約263MiB/s、1024ファイルが約46MiB/s。この「MiB/s」は2進単位で、メーカー仕様にある「MB/s」とは単位も測定条件も異なる。Verbatimの最大読込520MB/s・最大書込430MB/sはメーカーの逐次転送試験値であり、USBケース経由でファイルを1024個作る今回の時間と直接比べる数値ではない。
コピー後は全試行で、ファイル数・総バイト数・データのSHA-256一致を確認した。さらに、1024ファイル×3回×2方式の計6144ファイルを、元の各ファイルと1個ずつ照合して一致した。元の64MiBデータと、コピー先の1ファイルおよび1024ファイルを順番に連結したデータのSHA-256は、いずれも次の値だった。
13133923c99be859515f2dbf4da64aac0fccd2140bb8afc05f1886b2a2c65385
書き込み完了を要求する条件でも測ってみた
別途、各ファイルの書き込み後に明示的なフラッシュを要求するPythonの単一スレッドコピーでも、同じデータを3回ずつ測った。1ファイルは 0.262~0.286秒、1024ファイルは 2.429~12.800秒。中央値はそれぞれ 0.264秒と2.443秒で、約9.2倍の差だった。
小ファイル側の初回だけ12.800秒と大きく遅れた理由は、この実験だけでは特定できない。キャッシュ、ウイルス対策、USB変換部、SSD側の状態などを個別に切り分けていないため、初回値を「SSDの通常速度」とはみなさない。また、このフラッシュ条件は一般的なエクスプローラーのコピー操作そのものを再現したものではない。
ZIPにまとめるとどうなる?
同じ1024ファイルを、圧縮しないZIPへPC内蔵ストレージ上でまとめる試験も追加した。アーカイブ作成は 0.284秒、そのZIPをSSDへコピーしてフラッシュを要求する時間は 0.264秒、合計 0.549秒だった。ZIPのサイズは 67,215,382バイトで、元データより106,518バイト大きい。コピー前後のZIPのSHA-256は一致した。
ZIP内の1024ファイルも元データと1個ずつ照合して一致した。これは「多数のファイルを1個にして運ぶ」方法の確認であり、SSD上で展開する時間は含まない。その場で個々のファイルを使うなら展開が必要なので、ZIP化が常に総作業時間を短くするとは言えない。
なぜ遅くなるのか。故障なのか
1個のファイルなら作成・管理する対象も1個で済む。一方、1024ファイルでは各ファイルの作成、書き込み、終了といった処理が繰り返される。Microsoftも多数の小ファイルを扱うネットワークコピーの解説で、ファイル作成にはファイルシステム上の負荷があり、小ファイルではその負荷が繰り返されると説明している。本実験はネットワークコピーではないため、SMB固有の遅延が当てはまるわけではない。ファイル数に伴う処理負荷が、今回の差に関係した可能性があるという解釈にとどめる。
小ファイルだけ遅いという事実だけで、SSDの故障とは判断できない。 同じファイル群を別のUSBポートや別のケース、別のPCで試す場合も、コピー元、ファイルシステム、常駐ソフトの条件をそろえて比較したい。
小ファイルのコピーが遅いとき、まず何をする?
- 総容量とファイル数を分けて見る。 数GBでも1ファイルか数万ファイルかで負荷は変わる。
- 同じ容量の大きなファイルを1個コピーして比べる。 大きなファイルだけ速ければ、ファイル数に伴う処理が疑わしい。ただし、それだけで原因は確定しない。
- 運ぶだけならZIP化を試す。 元ファイルを残してアーカイブを作り、転送後は必要に応じて展開する。作成・展開時間も含めて判断する。
- コピー後に件数・容量・必要ならハッシュを照合する。 進行表示が100%になったことと、意図したデータがすべて一致することは別の確認だ。
よくある質問
外付けSSDで小さいファイルだけ遅いのは故障?
それだけでは故障とは言えない。今回も同じ64MiBでファイル数を増やすと時間が延びたが、全ファイルの内容は一致した。別ポートや別のケースでも同じ傾向か、コピーエラーが出ていないかを分けて確認したい。
公称520MB/sのSSDなのに、今回の実効値が低いのはなぜ?
公称値はメーカーが示す逐次読み取りの最大値。今回の数値は、USBケースを通し、PCからSSDへファイルを作成して書き込む処理全体の速度だ。さらに「MB/s」と「MiB/s」でも単位が異なる。
ZIPにまとめれば必ず速くなる?
必ずではない。今回の試験ではアーカイブ作成と転送に合計0.549秒かかったが、SSD側での展開時間を測っていない。ZIPのまま保管・移動する用途なら有力な選択肢で、展開して使う用途では全工程を比較する必要がある。
まとめ
手元のVerbatim Vi550をUSB接続した今回の試験では、同じ64MiBでも1024ファイルのコピーは1ファイルより遅かった。Windows標準Robocopyの3回の測定では中央値で約5.8倍の時間差があり、コピーしたデータの一致も確認した。
この結果は、外付けSSDの「最大速度」だけでは大量の小ファイルを運ぶ体感時間を予測できないことを示す一例だ。SSD本体、USBケース、Windows、ファイル数を含む構成全体の結果として読むのが正確だ。

コメント