はじめに
今回は、AWSへのストレージ移行について書いてみたいと思います。ストレージと言ってもNFS、CIFSなどで接続するNASや、FCやiSCSIなどで接続するSAN、S3の様なオブジェクトストレージなど色々ありますが今回はNASの移行をターゲットいしたいと思います。
移行方法検討
最近、AWSにシステム移行するにあたって、NetAppやIsilonと言ったNASをどうしたらよいかという相談を受けることが多いです。
これらのNASをの移行先としてはFSxやEFSが一般的だと思います。場合によっては、この際S3に変更してしまうのもいい考えだと思うのですが、その場合は、NFSやCIFSによるアクセスではなくS3 APIやAWS CLIでのアクセスが必要になります。(StorageGatewayを使えばNFS、CIFSアクセスは可能ですが、可用性、拡張性に難があります)
と言うわけで今回は、NASからFSxやEFSに移行する方法について考えてみたいと思います。
-
rsyncを使う(NFS)
NFSの移行をする場合、最もオーソドックスで枯れた方法です。ただし、速度は速くありません。特に、ファイル数やディレクトリ数が多い場合はとても時間とメモリが必要です。 -
Robocopyを使う(CIFS)
CIFSの移行をする場合、最もオーソドックスな枯れた方法です。ただし、これもrsync同様、小さなファイルやディレクトリが多い場合、速度はあまり早くありません。 -
AWS DataSyncサービスを使う
AWSのサービスで仮想アプライアンスを介してコピーを実施します。仮想アプライアンスはオンプレ(VMware/Hyper-vなどに配置可能)にもEC2にも配置可能です。転送はDirectConnect経由でもインターネット経由でもOKです。通信はTLSで暗号化されます。送り先はFSx、EFS、S3など異機種間での転送も可能です(ただしアクセス権は付けなおす必要あり)速度は、rsync、Robocopyよりは少し早い気がしますが大差ないです。AWSコンソールから移行状態を管理できるので楽と言えば楽だと思います。 -
AWS SnowBallを使う
これはちょっと毛並みが違います。1~3はネットワーク越しにデータを送ることを前提にしていますが、そもそも太い回線を用意できないとか、PB級のデータを送りたいと言った場合はネットワーク越しでも難しいこともあります。そういう場合は、SnowBallという所謂NASをAWSから発送して貰い、それをオンプレで接続してコピーしたのち送り返すという方法があります。送り返したSnowBallのでデータはS3にリストアされます。よって、EFSやFSxに移行したい場合は、S3->EFS,FSxの再転送が必要になります。AWS内のなのでそれなりの速度で実施可能なのですが。そう言った手間があります。また、S3に入った時点で元のCIFSやNFSのパーミションは失われるので、それらを後から復元してやる必要もあります。ネットワークを確保できるならネットワーク転送の方が楽です。 -
SnapMirror(NetApp限定)を使う
NetAppの機能なのでNetApp to FSx for NetApp ONTAPの場合しか使えませんが、そんなの通り、Mirrorを簡単にできてしまうので、超楽です。条件に当てはまるならこの方法一択だと思います。 -
xcp(NetApp限定)を使う
xcpはNetApp社が提供しているツールです。利用にはNetAppのシリアルが必要なのですが、FSx for NetApp ONTAPにはシリアルはないので、NetAppに問い合わせてシリアルを発行してもらう必要があります。このツールは移行元がNetAppの場合、かなりの速度でコピーできます。試しに、rsyncで135時間程掛かったNFS領域(ファイル数 520万、ディレクトリ数60万、容量110GB)をxcpで転送してみたところ30分ほどで終わりました。正直、びっくりですね。どうやってるんだろう。。。コピー元がNetAppだけど何らかの事情でSnapMirrorが使えない場合はこちらがお勧めです。
ただし移行先にEFSは指定できませんでした。portmapに応答してくれないとだめなようですが、EFSは応答しないので。
まとめ
移行元がNetAppならSnapMirror、Snapmirrorが使えないならxcpがお勧め。移行元がNetApp以外ならDataSyncがお勧め。
参考情報
AWSで利用できるNFSマネージドサービス
AWS Black Belt Online Seminar AWS DataSync
Amazon FSx for NetApp ONTAP(NetAppページ)