このトピックでは、rsync ツールを使用して、ネットワーク ファイル システム (NFS) プロトコルを使用する Apsara File Storage NAS (NAS) ファイルシステム間でデータを移行する方法について説明します。
前提条件
VPC (Virtual Private Cloud) 内にマウントポイントを持つ NFS ファイルシステムが必要です。
課金
NAS ファイルシステム間でデータを移行すると、次の費用が発生します。
データ転送の中間ノードとして Elastic Compute Service (ECS) インスタンスを使用する場合、その ECS インスタンスの構成に基づいて課金されます。ECS の課金の詳細については、「課金の概要」をご参照ください。
両方の NAS ファイルシステムで使用されるストレージに対して課金されます。ストレージ使用料を相殺するために、リソースプランの購入を推奨します。NAS の課金の詳細については、「課金の概要」をご参照ください。
Cloud Enterprise Network (CEN) を使用して VPC を接続する場合、使用するトランジットルーターとリージョン間接続に対して課金されます。CEN の課金の詳細については、「課金」をご参照ください。
事前準備
NAS ファイルシステム間でデータを移行するには、Elastic Compute Service (ECS) インスタンスがソースと宛先の両方のファイルシステムにアクセスできる必要があります。したがって、両方の NAS ファイルシステムが同じ Alibaba Cloud の 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 を選択します。
ストレージ: [Elastic Ephemeral Disk | Apsara File Storage NAS | 専用ブロックストレージクラスター (オプション)] をクリックし、次に [ファイルストレージの追加] をクリックしてストレージを構成します。 詳細については、次の図をご参照ください。
説明ソースと宛先のマウントポイントが同じ VPC 内にある場合、ECS 購入ページで NAS のマウント情報を設定できます。ECS インスタンスが起動すると、ソースと宛先の NAS ファイルシステムが自動的にマウントされます。
ソースと宛先のマウントポイントが同じ VPC、リージョン、またはアカウントにない場合は、ECS 購入ページでソースファイルシステムのみを設定します。ECS インスタンスが作成された後、宛先ファイルシステムを手動でマウントする必要があります。宛先ファイルシステムを手動でマウントする方法の詳細については、「NFS ファイルシステムのマウント」をご参照ください。

ECS インスタンスが作成され、ソースと宛先の NAS ファイルシステムがマウントされた後、次のコマンドを実行してマウントステータスを確認します。
mount | grep nas.aliyuncs.comファイルシステムがマウントされている場合、次のような出力が表示されます。ソースファイルシステムは
/mnt/volumeAディレクトリに、宛先ファイルシステムは/mnt/volumeBディレクトリにマウントされます。
移行ツールのインストール
次のコマンドを実行して、移行ツールをインストールします。
sudo yum install -y rsync tmux説明rsync はデータをコピーするために使用されるツールです。
tmux は進行状況を表示するために使用できるツールです。
既存データの移行
次のコマンドを実行して、ソースファイルシステムから宛先ファイルシステムに既存データを同期します。
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 インスタンスへの接続が切断された場合は、再度 ECS インスタンスにログインし、tmux attachを実行して tmux セッションを再開し、移行の進行状況を引き続きモニターできます。ソースファイルシステムでのテストでは、rsync を使用して合計サイズ 100 GiB の 100 KiB ファイル 100 万個を移行するのに 320 分かかりました。
増分データの移行
既存データの移行中に、他の ECS インスタンスで実行されているビジネスアプリケーションがソースファイルシステムにデータを書き込む場合、既存データの移行が完了した後に、新しい増分データを同期する必要があります。
ビジネスアプリケーションの停止
新しいデータが書き込まれるのを防ぐために、増分データを同期する前に、すべての 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/データが一致している場合、次の情報が表示され、ファイルパスはリストされません。

新しいファイルシステムへのアプリケーションの切り替え
データ移行が完了したら、ビジネスを古いファイルシステムから新しいファイルシステムに切り替えます。これを行うには、関連するすべての ECS インスタンスとコンテナーで、古いファイルシステムをアンマウントし、新しいファイルシステムをマウントします。
NAS ファイルシステムを ECS インスタンスに直接マウントできます。
mount | grep nas.aliyuncs.comコマンドを実行して、既存の NAS マウント情報を記録します。NAS ファイルシステムがマウントされているローカルパス <dir> に注意してください。fuser -mv <dir>コマンドを実行して、NAS ファイルシステムへの読み書きを行っているプロセスの PID を見つけ、kill -9コマンドを実行してそれらすべてを停止します。umount <dir>コマンドを実行して、古いファイルシステムをアンマウントします。新しいファイルシステムを元の <dir> パスにマウントします。マウントパラメーターの詳細については、「NFS ファイルシステムのマウント」をご参照ください。
NAS ファイルシステムにアクセスするプロセスを開始し、読み書き操作が正常であることを確認します。
/etc/fstab の自動マウント情報を変更して、古いマウントポイントを新しいマウントポイントに置き換えます。
NAS ファイルシステムを Kubernetes クラスター内のコンテナーにマウントできます。
動的または静的プロビジョニングの永続ボリュームの既存の YAML 設定ファイルを変更して、古いマウントポイントを新しいマウントポイントに置き換えます。
変更した設定ファイルを使用して新しい Pod を生成します。新しいファイルシステムが Pod にマウントされ、読み書き操作が正常であることを確認します。
古いファイルシステムを使用しているすべての Pod をリサイクルします。
ビジネスを新しいファイルシステムに切り替えた後、古いファイルシステムのデータを少なくとも 1 週間は保持してください。偶発的な削除や不完全な同期によるデータ損失を防ぐため、古いファイルシステムのデータをすぐに削除しないでください。