問題
Macから外付けSSDへ大容量のファイル(dmgなど)をコピーしようとすると、毎回決まった容量(自分の環境だと場合は約28.9GB)で転送が止まり、エラーで失敗する現象に遭遇。
フォーマット(APFS等)の問題でもなく、SSDの故障や偽造品を疑ったが、原因はSSDの仕様とMacの転送速度のミスマッチにあった。
原因:SLCキャッシュの枯渇とコントローラーのパンク
近年のSSDは、連続して大容量のデータを書き込むと、内部の高速キャッシュ(SLCキャッシュ)が満杯になる。キャッシュが切れた瞬間にSSD側の処理負荷が跳ね上がり、Macからの高速なデータ転送にコントローラーが追いつけなくなってしまう。その結果、OS側がタイムアウト(応答なし)と判定し、接続が強制遮断されてしまうのが原因だった。
解決策:ターミナルで転送速度を意図的に制限する
根本的な解決策は、「SSDの内部処理が追いつく速度まで、Mac側の送信スピードを落としてあげる」こと。これには、Mac標準のターミナルから rsync コマンドを使用する。
実行するコマンド
rsync -av --progress --bwlimit=50000 /転送元のファイルパス /Volumes/転送先SSDの名前/コマンドの解説
rsync: ファイルやディレクトリを同期・転送するコマンド。-a: 元のファイル属性(権限やタイムスタンプなど)を保持したままコピーする。-v: 転送中の詳細な情報を表示する。--progress: 転送の進捗状況(パーセンテージや速度)をリアルタイムで表示する。--bwlimit=50000: ここが最重要。 転送速度の上限を約50MB/s(50,000KB/s)に制限する。
手順のポイント
- Macの「ターミナル」アプリを起動する。
rsync -av --progress --bwlimit=50000まで入力する(最後に半角スペースを入れる)。- コピーしたいファイルをターミナル画面にドラッグ&ドロップしてパスを入力。
- 続けて、半角スペースを空けてから、転送先のSSDアイコンをドラッグ&ドロップ。
- Enterキーで実行。
速度を制限しているため転送には時間がかかるが(100GBで30〜40分程度。50000を100000にすると半分の時間)、SSDのコントローラーがパンクすることなく、最後まで安定して書き込みを完了させることができる。

コメント