このトピックでは、Robocopy を使用して File Storage NAS のサーバーメッセージブロック (SMB) ファイルシステム間でデータを移行する方法について説明します。
概要
この方法を使用する状況
シナリオ | 推奨事項 |
小規模から中規模のデータセット (10 TB 未満) | Robocopy (このトピック) |
数百万の小規模ファイルを含む大規模なデータセット (10 TB 超) | Python 並列移行スクリプト (「よくある質問」をご参照ください) |
リージョン間またはアカウント間の移行 | Cloud Enterprise Network (CEN) 接続を使用した Robocopy |
仕組み
Robocopy は、ディレクトリ構造のミラーコピーを作成し、ファイル属性とタイムスタンプを保持します。このツールは重複ファイルをスキップするため、増分同期に効率的です。
課金
データ移行には、以下の費用が発生します:
サービス | 説明 |
ECS | 料金はインスタンスの構成に基づいて適用されます。詳細については、「概要」をご参照ください。 |
NAS | 両方のファイルシステムにストレージ使用量料金が適用されます。詳細については、「課金の概要」をご参照ください。 |
CEN | CEN を介して VPC を接続する場合、トランジットルーターに料金が適用されます。詳細については、「課金」をご参照ください。 |
前提条件
開始する前に、以下を確認してください:
移行するデータを含むソース SMB ファイルシステム
移行されたデータを受信する宛先 SMB ファイルシステム
各 SMB ファイルシステム用の Virtual Private Cloud (VPC) タイプのマウントポイント
ソースと宛先のファイルシステム間のネットワーク接続 (同じ VPC、または CEN で接続された VPC)
データ移行
Elastic Compute Service (ECS) インスタンスを作成し、両方の SMB ファイルシステムをマウントし、Robocopy を実行してデータをレプリケーションします。
ステップ 1: 環境の準備
ECS インスタンスが両方のファイルシステムにアクセスできることを確認します。
ソースファイルシステムのマウントポイント情報を取得します。
シナリオに基づいて宛先ファイルシステムを構成します:
シナリオ
アクション
同じ VPC
ステップ 2: ECS インスタンスの作成 に進みます。
同じリージョン内の異なる VPC
宛先ファイルシステムのマウントポイントを作成し、CEN を使用して VPC を接続します。
異なるアカウントまたはリージョン
CEN を使用して VPC を接続します。
ステップ 2: ECS インスタンスの作成
重要:データ移行専用の ECS インスタンスを作成してください。既存のインスタンスを使用すると、実行中のワークロードに割り当てられている CPU とネットワーク帯域幅を消費する可能性があります。
ECS コンソールにログインし、[インスタンスの作成] をクリックします。
以下のパラメーターを構成します:
パラメーター
構成
リージョン
ソースファイルシステムが存在するリージョンを選択します。
ネットワークとゾーン
ソースファイルシステムの VPC、ゾーン、および vSwitch を選択します。
インスタンス
100 GB 未満の移行の場合は、最小仕様を選択します。1 TB を超える移行の場合は、少なくとも 8 vCPU と 16 GiB のメモリを選択します。
画像
最適な互換性のために Windows Server 2019 を選択します。
ストレージ
[Elastic Ephemeral Disk | NAS File System | Dedicated Block Storage Cluster(Optional)] をクリックし、次に [ファイルシステムの追加] をクリックします。
Windows Server 2025 を使用する場合は、NAS ファイルシステムをマウントする前に SMB 署名を無効にしてください。管理者として PowerShell で次のコマンドを実行し、インスタンスを再起動します:
reg add "HKLM\SYSTEM\CurrentControlSet\Services\LanmanWorkstation\Parameters" /v RequireSecuritySignature /t REG_DWORD /d 0 /f
ステップ 3: ファイルシステムのマウント
ソースと宛先の両方のファイルシステムを ECS インスタンスにマウントします。
マウントを検証します:
net use期待される出力:
Status Local Remote Network ------------------------------------------------------------------------------- OK Y: \\29e9c24****-eab13.cn-hangzhou.nas.aliyuncs.com\myshare Microsoft Windows Network OK Z: \\29fe7f4****-txr31.cn-hangzhou.nas.aliyuncs.com\myshare Microsoft Windows Network
ステップ 4: Robocopy の実行
次のコマンドを実行して、ソースファイルシステム (Z:) から宛先ファイルシステム (Y:) にデータを移行します:
robocopy Z:\ Y:\ /E /COPY:DAT /MT:8 /R:3 /W:5パラメーター | 説明 |
| 空のディレクトリを含むサブディレクトリをコピーします。 |
| データ、属性、タイムスタンプをコピーします。 |
| マルチスレッドコピーに 8 スレッドを使用します。 |
| リトライ回数を 3 回に制限します。 |
| リトライ間の待機時間を 5 秒に設定します。 |
警告:NAS から NAS への移行には/COPYALLを使用しないでください。NAS SMB は完全な NTFS セキュリティ属性をサポートしていません。/COPYALLを使用すると、「A required privilege is not held by the client」というエラーが発生します。
ステップ 5: 移行の検証
次のコマンドを実行して、データ整合性を検証します:
robocopy Z:\ Y:\ /E /L /NS /NJS /NJH /NDL /FP /LOG:reconcile.txtパラメーター | 説明 |
| ファイルをコピーせずに差分をリストします。 |
| ログからファイルサイズを除外します。 |
| ジョブの概要を除外します。 |
| ジョブヘッダーを除外します。 |
| ログからフォルダ名を除外します。 |
| ログに完全なファイルパスを含めます。 |
| 結果を reconcile.txt に書き込みます。 |
新しいファイルシステムへのワークロードの切り替え
移行後、すべての ECS インスタンスとコンテナーで元のファイルシステムをアンマウントし、新しいファイルシステムをマウントします。
ECS インスタンス
net useを実行してマウント情報を取得します。元のファイルシステムをアンマウントします:
net use Z: /delete新しいファイルシステムを元のドライブ文字にマウントします。
ファイルシステムにアクセスするプロセスを再起動します。
auto_mount.batファイルを新しいマウントポイントで更新します。
Windows コンテナ
YAML 設定ファイルを新しいマウントポイントで変更します。
変更された構成で新しい Pod を生成します。
元のファイルシステムを使用するすべての Pod をリサイクルします。
重要:ワークロードを切り替えた後、少なくとも 1 週間は元のファイルシステムのデータを保持してください。すぐに削除すると、誤った削除や同期によってデータが失われる可能性があります。
よくある質問
大規模なデータ移行を高速化する方法
数億の小規模ファイル (10 TB 超) を含む移行の場合は、Python ベースの並列移行スクリプトを使用します:
Windows ECS インスタンスに最新の Python をインストールします。
PATH 環境変数を設定します:
set PATH=%PATH%;C:\python27migration.pyスクリプトを ECS インスタンスにコピーします。移行を実行します:
python ./migration.py -s Z:\ -d Y:\
パラメーター | 説明 |
| ソースディレクトリ、例: |
| 宛先ディレクトリ、例: |
| 移行するサブディレクトリの範囲 |
| 第 1 レベルのファイルのみを移行します |
| 移行から除外するファイル |
複数クライアントによる並列移行の場合、各クライアントに異なるサブディレクトリ範囲を割り当てます:
クライアント 1:
-r 0:9999クライアント 2:
-r 10000:19999