このトピックでは、rsync ツールを使用して、NFS プロトコルを使用する Apsara File Storage NAS ファイルシステム間でデータを移行する方法について説明します。
前提条件
データを含む NFS ファイルシステムと VPC 内のマウントポイントがあります。
課金
NAS ファイルシステム間でデータを移行する場合、以下の費用が発生します。
事前準備
NAS ファイルシステム間でデータを移行するには、Elastic Compute Service (ECS) インスタンスがソースと宛先の両方のファイルシステムにアクセスできる必要があります。したがって、両方のファイルシステムが同じ VPC からアクセス可能であることを確認する必要があります。
ソースファイルシステムのマウントポイント情報を表示します。
データを移行する前に、ソースファイルシステムのマウントポイントと VPC 情報を記録します。詳細については、「マウントポイントの管理」をご参照ください。
説明ご利用のファイルシステムにクラシックネットワークのマウントポイントしかない場合は、VPC 内にマウントポイントを作成する必要があります。詳細については、「マウントポイントの追加」をご参照ください。
宛先ファイルシステムのマウントポイントを構成します。
ソースと宛先のファイルシステムが同じリージョンにある場合
ソースと宛先のファイルシステムのマウントポイントが同じ VPC にある場合は、宛先マウントポイントの情報を取得してから、「操作手順」セクションに進んでデータを移行します。
ソースと宛先のファイルシステムのマウントポイントが異なる VPC にある場合は、次のいずれかの方法で宛先ファイルシステムのマウントポイントを準備します。
宛先リージョンとゾーンに新しいファイルシステムを作成します。新しいマウントポイントが自動的に作成されます。詳細については、「コンソールで汎用型 NAS ファイルシステムを作成する」をご参照ください。
説明NFS プロトコルを使用する従量課金の汎用型 NAS ファイルシステム (容量型、性能型、またはプレミアム型) を作成する場合は、ソースマウントポイントと同じ VPC と vSwitch を選択します。宛先マウントポイントが自動的に作成されます。新しいファイルシステムが作成された後、リソースプランを購入してコストを削減できます。
既存のファイルシステムに新しいマウントポイントを作成します。詳細については、「マウントポイントの追加」をご参照ください。
Cloud Enterprise Network (CEN) を使用して、ソースと宛先のマウントポイントの VPC を接続します。詳細については、「CEN を使用して同じリージョン内の VPC 間で NAS ファイルシステムをマウントする」をご参照ください。
ソースと宛先のファイルシステムが異なるアカウントまたはリージョンにある場合
ソースと宛先のファイルシステムのマウントポイントが異なるアカウントまたはリージョンにある場合は、CEN を使用してそれらの VPC を接続する必要があります。詳細については、「CEN を使用してアカウントとリージョンをまたいで NAS ファイルシステムをマウントする」をご参照ください。
操作手順
ソースと宛先のマウントポイントを準備したら、ECS インスタンスを作成し、両方の NFS ファイルシステムをマウントしてから、rsync ツールを使用してデータをコピーします。
ソースと宛先のファイルシステムをマウントします。
重要移行には、新しい一時的な ECS インスタンスを購入することを推奨します。既存の ECS インスタンスを使用すると、移行プロセスが実行中のサービスと CPU およびネットワーク帯域幅リソースを競合する可能性があります。
ECS コンソールにログインし、インスタンスの作成 をクリックして、次の主要なパラメーターを構成します。
リージョン:ソースファイルシステムが存在するリージョンを選択します。
ネットワークとゾーン:ソースファイルシステムの VPC、ゾーン、および vSwitch を選択します。
インスタンスタイプ:通常、低コストのインスタンスタイプで十分です。
イメージ:CentOS 7.6 を選択します。
ストレージ:[エフェメラルディスク | Apsara File Storage NAS | 専用ブロックストレージクラスター (オプション)] セクションをクリックし、[ファイルシステムの追加] をクリックします。詳細については、以下の構成詳細をご参照ください。
説明ソースと宛先の両方のマウントポイントが同じ VPC にある場合は、ECS 購入ページで NAS マウント情報を構成できます。ECS インスタンスが起動すると、ソースと宛先の両方の NAS ファイルシステムが自動的にマウントされます。
ソースと宛先のマウントポイントが同じ VPC にない場合、または異なるリージョンやアカウントにある場合は、ECS 購入ページでソースファイルシステムのみを構成します。ECS インスタンスを作成した後、宛先ファイルシステムを手動でマウントします。詳細については、「NFS ファイルシステムのマウント」をご参照ください。
ECS インスタンスが作成され、両方の NAS ファイルシステムがマウントされたら、次のコマンドを実行してマウントを確認します。
mount | grep nas.aliyuncs.comマウントが成功した場合、出力は次のようになります。ソースファイルシステムは
/mnt/volumeAディレクトリにマウントされ、宛先ファイルシステムは/mnt/volumeBディレクトリにマウントされます。[root@xxx ~]# mount | grep nas.aliyuncs.com xxx.nas.aliyuncs.com:/ on /mnt/volumeA type nfs (rw,relatime,vers=3,rsize=1048576,wsize=1048576,namlen=255,hard,nolock,noresvport,proto=tcp,timeo=600,retrans=2,sec=sys,mountaddr=192.168.0.198,mountvers=3,mountport=4002,mountproto=tcp,local_lock=all,addr=192.168.0.198,_netdev) xxx.nas.aliyuncs.com:/ on /mnt/volumeB type nfs (rw,relatime,vers=3,rsize=1048576,wsize=1048576,namlen=255,hard,nolock,noresvport,proto=tcp,timeo=600,retrans=2,sec=sys,mountaddr=192.168.0.213,mountvers=3,mountport=2049,mountproto=tcp,local_lock=all,addr=192.168.0.213,_netdev)移行ツールをインストールします。
次のコマンドを実行して、移行ツールをインストールします。
sudo yum install -y rsync tmux説明rsync はデータコピーを実行します。
tmux は、永続的なセッションで rsync プロセスを実行できるターミナルマルチプレクサーです。これにより、進行状況を監視し、SSH 接続が中断された場合にプロセスが終了するのを防ぐことができます。
既存のデータを移行します。
次のコマンドを実行して、既存のデータをソースファイルシステムから宛先ファイルシステムに同期します。
tmux sudo rsync -avP /mnt/volumeA/ /mnt/volumeB/rsync を使用して同時コピーを行うこともできます。
threads=<number of threads>; src=<source path/>; dest=<destination path/>; rsync -av -f"+ */" -f"- *" $src $dest && (cd $src && find . -type f | xargs -n1 -P$threads -I% rsync -av % $dest/% )たとえば、スレッド数が 10、ソースパスが /abc、宛先パスが
/mnt1の場合:threads=10; src=/abc/; dest=/mnt1/; rsync -av -f"+ */" -f"- *" $src $dest && (cd $src && find . -type f | xargs -n1 -P$threads -I% rsync -av % $dest/% )説明rsync コマンドのソースパスは、末尾のスラッシュ (/) で終わる必要があります。そうしないと、同期後にデータパスが一致しなくなります。
tmux コマンドは新しい tmux セッションを作成します。tmux セッションで
rsyncを実行すると、進行状況を監視するのに役立ちます。移行中に ECS インスタンスへの接続が切断された場合は、再度ログインしてtmux attachを実行して tmux セッションを再開し、監視を続行します。テスト環境では、100 万個の 100 KiB ファイル (合計 100 GiB) を含むソースファイルシステムの移行に約 320 分かかりました。
増分データを移行します。
最初のデータ移行中にアプリケーションがソースファイルシステムに書き込みを行った場合は、増分データをコピーするために再度同期を実行する必要があります。
アプリケーションを停止します。
アプリケーションが新しいデータを書き込むのを防ぐため、増分データを同期する前に、ソースファイルシステムを使用する ECS インスタンスおよびコンテナ上のすべてのアプリケーションを停止します。
重要アプリケーションを停止した後、ソースファイルシステムから手動でデータを削除しないでください。そうしないと、次のステップでデータが失われる可能性があります。
この操作はオフピーク時に実行することを推奨します。
fuser -mv <dir>コマンドを使用して、NAS ファイルシステムにアクセスしているプロセスの ID (PID) を見つけることができます。
増分データを同期します。
次の rsync コマンドを実行して、最初の移行開始後に生成された増分データを同期します。
sudo rsync -avP --delete /mnt/volumeA/ /mnt/volumeB/rsync コマンドは最初にソースパスをスキャンするため、増分データが少ない場合でも、プロセスに時間がかかることがあります。
警告--delete オプションは、ソースファイルシステムに存在しなくなったファイルを宛先ファイルシステムから削除します。意図しないデータ削除を避けるため、このオプションは注意して使用してください。
移行を検証します。
移行が完了したら、次の rsync コマンドを実行して、宛先ファイルシステムがソースファイルシステムと一致しているかどうかを確認します。
sudo rsync -rvn /mnt/volumeA/ /mnt/volumeB/データが一致している場合、出力にはファイルパスは表示されず、次のようになります。
sending incremental file list sent 13,570,658 bytes received 5,008 bytes 17,173.52 bytes/sec total size is 100,000,000,000 speedup is 7,366.12 (DRY RUN)
新しいファイルシステムへの切り替え
データ移行が完了したら、関連するすべての ECS インスタンスとコンテナで古いファイルシステムをアンマウントし、新しいファイルシステムをマウントして、アプリケーションを新しいファイルシステムに切り替えます。
ECS インスタンスで実行されているアプリケーションの場合:
mount | grep nas.aliyuncs.comを実行して、現在の NAS マウント情報を表示します。ファイルシステムがマウントされているローカルパス <dir> をメモします。fuser -mv <dir>を実行して、ファイルシステムにアクセスしているプロセスの PID を見つけ、kill -9コマンドでそれらを停止します。umount <dir>を実行して、古いファイルシステムをアンマウントします。新しいファイルシステムを元の <dir> パスにマウントします。マウントパラメーターの詳細については、「NFS ファイルシステムのマウント」をご参照ください。
アプリケーションプロセスを再起動し、新しいファイルシステムからの読み取りと書き込みができることを確認します。
/etc/fstab ファイルの自動マウント設定を変更して、古いマウントポイントを新しいものに置き換えます。
Kubernetes コンテナで実行されているアプリケーションの場合:
既存の動的ボリュームまたは永続ボリュームの YAML 設定ファイルを変更して、古いマウントポイントを新しいものに置き換えます。
変更した設定ファイルを使用して新しい Pod を作成します。新しいファイルシステムが正しくマウントされ、読み取りと書き込みが可能であることを確認します。
古いファイルシステムを使用しているすべての Pod を終了します。
新しいファイルシステムに切り替えた後、古いファイルシステムのデータは少なくとも 1 週間は保持してください。意図しない削除や同期エラーによる潜在的なデータ損失を防ぐため、古いファイルシステムのデータをすぐに削除しないでください。