データ移行はrobocopy?AWS Datasync?検証してみた

目次
      1. robocopyとは
      2. AWS DataSyncとは
      3. 検証環境
      4. robocopyでのデータ移行方法
      5. DataSyncでのデータ移行方法
      6. 検証結果
      7. まとめ

 


お世話になっております、クロス・ヘッド 尾﨑です。

WindowsOSのファイルサーバーをクラウドに移行するとき、データの移行方法として真っ先に思いつくのは「robocopy」ですよね。Windowsに組み込まれたコマンドで信頼感もあります。
一方で、AWSでは「AWS Datasync」と呼ばれるデータ転送サービスが提供されています。選択肢があると、疑問に思ってしまいますよね。「AWSに移行するなら、AWS純正のDatasyncが良いのだろうか?」「Windowsのデータを移行するのだから、robocopyの方が良いのでは」等々。
今回はWindowsOSのファイルサーバーからAWS FSx環境にファイルデータを移行するケースを想定し、当社の検証結果に基づくパフォーマンス比較をご紹介させて頂きます。robocopyの実行コマンドオプションや、AWS DataSyncエージェントの導入方法についても、各セクションでご説明しながら進めてまいりますので、宜しければ最後までご確認頂ければと思います。

1.robocopyとは

robocopyはWindowsに標準搭載されているコマンドです。ファイルデータをある場所から別の場所にコピーします。正式にはRobust File Copyと呼ばれます。多彩なオプション指定が可能であり、データ移行においても強力なツールとなります。WindowsOSのファイルデータを移行する際には、真っ先に検討できると言える手段ではないでしょうか。標準搭載のコマンドですので、追加料金がかからない点も魅力です。

2.AWS DataSyncとは

AWSが提供するサービスで、オンプレミスにあるファイルまたはオブジェクトデータをオブジェクトストレージやファイルストレージサービスに移行するために利用できるデータ転送サービスです。データ転送機能を担うDataSyncエージェントは仮想アプライアンス形式で提供されており、主にはデータ移行対象が存在するオンプレミスの仮想基盤上にデプロイして利用することになります。
代表的な移行先として、Amazon S3やAmazon EFS、Amazon FSxが挙げられます。AWS DataSyncは従量課金型のサービスとなっており、コピーされたデータに対して0.0125USD/GBの料金がかかります。
※AWS DataSync料金はあくまでも2023年5月執筆時点の価格となります。詳細につきましては、最新のWEBサイト情報をご確認ください。

AWS DataSync

3.検証環境

検証環境の構成図はこちら。

  • 各種サービスの詳細
    ・ Windowsファイルサーバーインスタンスの性能: m6i.large(2vCPU、メモリ8GiB)
    ・ Amazon FSx for Windows File Serverの性能: ストレージ2,000GiB(HDD)、32MB/sスループットキャパシティ
    ・ DataSyncエージェントの性能: m5.2xlarge(8vCPU、メモリ32GiB)
    今回はデータ転送に関係する機能を全て同一VPC内で構成しました。robocopyの場合はAmazon FSxへ直接データをコピーし、DataSyncの場合はエージェントを経由してのコピー検証です。
  • 移行対象のデータ
    Windowsファイルサーバーのインスタンス上に1MBのファイルを50,000ファイル用意し、約50GBのデータ転送を実行する際の速度比較を行います。robocopy、DataSyncのオプション等については、後述の各セクションにて説明致します。
  • 検証方法
    初期同期と差分同期の2回に分けて時間を計測します。初期同期とは、データ移行先にデータが存在しない状態での最初のコピー作業。差分同期については、初期同期後にデータの変更分のみを同期することを指しています。データの更新がない場合の差分確認のみの所要時間と、実際にデータ更新があった場合の同期時間とをそれぞれ計測することにします。

4.robocopyでのデータ移行方法


まずはrobocopyコマンドの前提条件についておさらいしておきます。

4.1 実行コマンド

実行したコマンドはこちらです。

robocopy [移行元共有フォルダパス] [移行先FSxのパス]/fft /ts /fp /e /COPY:DATSO /dcopy:T /np /it /r:3 /w:1 /purge /bytes /MT:32 /log

それぞれのオプションの詳細は以下のとおりです。

オプション 説明
1 /fft FAT ファイル時間 (2 秒の粒度) を仮定します。
2 /ts 出力にコピー元ファイルのタイム スタンプを含めます。
3 /fp 出力にファイルの完全なパス名を含めます。
4 /e 空のディレクトリを含むサブディレクトリをコピーします。
5 /COPY:DATSO 監査情報を除いたファイル情報をコピーします
(Dデータ、A属性、Tタイムスタンプ、Sセキュリティ、O所有者情報、U監査情報)
6 /dcopy:T ディレクトリのタイムスタンプをコピーします。
7 /np 進行状況なし – コピーの完了率を表示しません。
8 /it 属性のみを変更したファイルをコピーします。
9 /r:3 /w:1 コピー失敗時に1秒待機し、3回まで再試行します。
10 /purge コピー元に存在しないコピー先のファイル/ディレクトリを削除します。
11 /bytes ファイルサイズをバイト単位でログに出力します。
12 /MT: スレッド数を指定します。(デフォルト8)
13 /log: 出力するログファイル名を指定します。

4.2 移行の確認方法

robocopyの場合はこの確認がやや苦労します。移行が無事に完了したかは、ユーザー責任で確認する必要があるためです。確認する方法の一例としては、転送後に転送元・転送先フォルダの比較をフリーツール等で行うことになります。今回の検証では50,000ファイルも存在するため、この確認作業には多くの時間がかかることが予想されます。

5.DataSyncでのデータ移行方法

5.1 DataSyncエージェント導入方法

DataSyncエージェントの導入手順は以下の通りとなります。基本的にはこちらのAWSドキュメントに従い、以降の作業を実施します。

① エージェントのAMI IDを特定する
今回はEC2インスタンスとしてエージェントを起動しますので、まずAMIを特定します。
まず、AWS CLIでコマンドを実行します。※東京リージョンを指定しました。

aws ssm get-parameter –name /aws/service/datasync/ami –region ap-northeast-1

AMIIDを得ることができます。

Parameter:
ARN: arn:aws:ssm:ap-northeast-1::parameter/aws/service/datasync/ami
DataType: text
LastModifiedDate: ‘2023-05-03T22:39:16.808000+09:00’
Name: /aws/service/datasync/ami
Type: String
Value: ami-xxxxxxxxxxxxxxxx
Version: 62

②AMIを起動
AWSコンソールから、先ほど特定したAMIを起動します。事前にVPCやサブネット等を選択する必要がありますので、ご注意ください。

③エージェントをAWSに接続
AWSマネジメントコンソールにサインインして、AWSへエージェントを接続します。
DataSyncコンソールから「エージェント」のページへ進み、「エージェントを作成する」を選択します。
今回はEC2としてデプロイしたため、ハイパーバイザーは「Amazon EC2」を選択します。

エンドポイントタイプについてはよりセキュアな「VPCエンドポイント」を選択します。※「datasync」サービスのVPCエンドポイントは事前に作成しておきます。

アクティベーションキーはエージェントから自動的に取得する方法を取りますので、エージェントのプライベートIPアドレスを入力します。

「キーを取得する」を選択すると画面が遷移し、アクティベーションキー取得成功の旨が表示されます。
あとはエージェントに任意の名前を付けて「エージェントを作成する」ボタンを押せば、無事作業完了です!

あとは、送信元(ファイルサーバ)と送信先(FSx)のロケーションと呼ばれるリソースをコンソール上で作成し、それらを指定したタスクを設定して「開始」すれば、データの同期が実行されます。
送信元・送信先双方にアクセスできるユーザーを用意しておくことを忘れないでください。(ここでは「migration」というユーザーを使用しています。)

5.2 データ検証オプション

DataSyncでは、転送したデータに対する検証方法について3つのオプションが用意されています。
一つ目は「転送中の整合性を確認する(転送後に追加の検証を実行しない)」、二つ目は「転送されたデータのみを確認する(転送後に、転送されたファイルのチェックサムを確認)」、三つ目は「送信先のすべてのデータを確認する(転送後に、送信元と送信先が完全に同期されているか確認)」です。推奨とされているものは二つ目になります。今回はそれぞれのパターンによるデータ移行完了までの時間を見てみましょう。

5.3 移行の確認方法

タスクの実行ステータスを見ると、「起動中」→「準備中」→「転送中」→「検証中」といったように遷移していきます。※前述のデータ検証オプション次第では、「検証中」ステータスはスキップされます。

AWS DataSyncタスクステータス

実行ステータスが「成功」になれば、データの同期が完了したことを意味します。

「失敗」の場合は何かしら問題が起きていますので、調査が必要になります。
タスクの実行ごとにCloudWatchLogsにログをしてくれますので活用しましょう。
※こちらは実行ユーザーに共有フォルダへのアクセス権限が不足していた例です。

6.検証結果

さて、それでは前述までの条件の元で、それぞれの検証を実施致しました。その結果を表形式で見てみましょう。

6.1 パフォーマンス比較

同期内容 Robocopy DataSync
転送中の整合性を確認 転送されたデータのみを確認 送信先のすべてのデータを確認
初期同期 1回目 23分20秒 15分59秒 45分20秒 50分29秒
2回目 20分22秒 20分31秒 28分58秒 33分57秒
3回目 17分48秒 13分37秒 29分03秒 32分09秒
差分
(更新なし)
1回目 1秒 04分40秒 04分43秒 22分48秒
2回目 1秒 06分02秒 06分36秒 23分22秒
3回目 1秒 00分40秒 04分57秒 23分14秒
差分
(1MB×10,000ファイル更新)
1回目 07分03秒 11分40秒 15分36秒 29分48秒
2回目 07分59秒 10分55秒 16分48秒 33分21秒
3回目 07分48秒 11分23秒 17分54秒 30分24秒

単純な比較は難しいですが、データ転送に関してだけでいえばRobocopyよりもDataSyncのほうがやや早いという結果になりました。さらに、Robocopyが開始時の差分確認後はひたすら転送するのみであるのに対し、DataSyncでは時間はかかるもののオプションの設定次第で検証も自動的に実施してくれます。Robocopy+別ツールで検証を実施する場合の労力や工数を考えると、DataSyncは有力な選択肢として検討の価値があると言えるでしょう。

7.まとめ

如何でしたでしょうか。あくまでも参考情報となりますが、本記事がお役に立てば幸いです。

実際には移行元のデータ容量やファイル数だけでなく、通信回線の速度等の様々な影響を受けてデータ移行を実施することになります。これらのデータ移行にまつわる様々な属性を考慮して計画を立てることは大変ですよね。
当社ではファイルサーバーのデータを移行する際に、環境診断と調査レポートを提供するアセスメントサービスに加えて、適切な環境へのデータ移行を実現するためのサービス「デジタル・ワゴン」を展開しております
環境の調査から実施したい、実際のデータ移行についてPoCを行ってみたい等のご要望がございましたら、是非気軽にご相談ください

 


クロス・ヘッド関連サービス

 


※Cloud Compassはクロス・ヘッド㈱が運営するクラウドサービスです。

おすすめ記事