3
1

More than 1 year has passed since last update.

[OCI]goofysを利用してAWS S3からOCIのオブジェクト・ストレージに直接ファイルをコピーしてデータ移行してみた

Last updated at Posted at 2020-11-17

はじめに

オブジェクト・ストレージをファイルシステムとしてマウントできるgoofysを利用して、AWSのS3バケットからOCIオブジェクト・ストレージに直接データを移行してみました。

この方法であれば、S3バケット内のファイルを一度どこかにダウンロードしてからアップロードする必要がないため、中間ストレージが不要になります。

安定した環境が必要な場合は、S3側にAWS Storage Gateway、OCIオブジェクト・ストレージ側にOracle Cloud Infrastructure Storage Gatewayを使用することをお勧めします。

事前準備

AWS側(データ移行元)
・S3バケット(ここではfrom-aws-bucketという名前です)
・S3バケットにアクセスできるユーザのアクセスキーとシークレットキー
OCI(データ移行先)
・オブジェクト・ストレージ・バケット(ここではociという名前です)
・オブジェクト・ストレージ・バケットにアクセスできるユーザの顧客秘密キー(アクセス・キーと秘密キー)
・インターネットアクセスが可能なコンピュート・インスタンス(今回はOSとしてOracle Linux 7.9を使用)

1. goofysのインストールと設定

SSHクライアントからコンピュート・インスタンスにopcユーザでログインします。

goofysはGo、fuseを使用するので、事前にインストールします。

sudo yum install -y golang fuse

goofysのバイナリをダウンロードします。

wget https://github.com/kahing/goofys/releases/latest/download/goofys

goofysをパスが通っているディレクトリに移動します。

sudo cp goofys /usr/local/bin

オーナーをrootに変更し、パーミッションを変更します。

sudo chown root:root /usr/local/bin/goofys
sudo chmod 775 /usr/local/bin/goofys

goofysが使用する認証情報の設定ファイルを作成します。

sudo mkdir -p /root/.aws
sudo vi /root/.aws/credentials
/root/.aws/credentials
[oci]
aws_access_key_id = AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA <- OCIユーザのアクセスキー
aws_secret_access_key = BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB <- OCIユーザの秘密キー

[aws]
aws_access_key_id = CCCCCCCCCCCCCCCCCCCC <- AWSユーザのアクセスキー
aws_secret_access_key = DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD <= AWSユーザのシークレットキー

以上でgoofysを使用する準備が整いました。

2. goofysによるS3バケットとオブジェクト・ストレージ・バケットのマウント

マウントポイントを作成します。
/mnt_o:OCI オブジェクト・ストレージ・バケット(oci)用のマウントポイント
/mnt_a:AWS S3バケット(from_aws_bucket)用のマウントポイント

sudo mkdir -p /mnt_o
sudo chmod -R 777 /mnt_o
sudo mkdir -p /mnt_a
sudo chmod -R 777 /mnt_a

/etc/fstabを編集します。

sudo vi /etc/fstab

以下の2行をファイルの末尾に追加します。

goofys#oci /mnt_o fuse _netdev,allow_other,--dir-mode=0755,--file-mode=0666,--uid=1000,--gid=1000,--endpoint=https://<ネームスペース>.compat.objectstorage.<OCIリージョン識別子>.oraclecloud.com,--region=<OCIリージョン識別子>,--profile=oci 0 0
goofys#from-aws-bucket /mnt_a fuse _netdev,allow_other,--region=<AWSリージョン識別子>,--profile=aws 0 0

mount -aでfstabの内容を反映し、OCIのオブジェクト・ストレージ・バケット oci を**/mnt_oに、AWSのS3バケット from_aws_bucket を/mnt_a**にマウントします。

sudo mount -a

3. S3バケットからオブジェクト・ストレージ・バケットへのデータコピー

AWSのコンソールから、S3バケット from_aws_bucket の内容を確認します。
スクリーンショット 2020-11-17 23.47.04.png
テスト用のPDFファイルが30個入っています。

S3バケット from_aws_bucket をマウントした /mnt_a の内容を確認します。

[opc@iptest /]$ cd /mnt_a
[opc@iptest mnt_a]$ ls -l
total 63990
-rw-r--r--. 1 root root 2183884 Nov 17 14:36 50544 10.pdf
-rw-r--r--. 1 root root 2183884 Nov 17 14:36 50544 11.pdf
-rw-r--r--. 1 root root 2183884 Nov 17 14:36 50544 12.pdf
-rw-r--r--. 1 root root 2183884 Nov 17 14:36 50544 13.pdf
-rw-r--r--. 1 root root 2183884 Nov 17 14:36 50544 14.pdf
-rw-r--r--. 1 root root 2183884 Nov 17 14:36 50544 15.pdf
-rw-r--r--. 1 root root 2183884 Nov 17 14:36 50544 16.pdf
-rw-r--r--. 1 root root 2183884 Nov 17 14:36 50544 17.pdf
-rw-r--r--. 1 root root 2183884 Nov 17 14:36 50544 18.pdf
-rw-r--r--. 1 root root 2183884 Nov 17 14:36 50544 19.pdf
-rw-r--r--. 1 root root 2183884 Nov 17 14:36 50544 1.pdf
-rw-r--r--. 1 root root 2183884 Nov 17 14:36 50544 20.pdf
-rw-r--r--. 1 root root 2183884 Nov 17 14:36 50544 21.pdf
-rw-r--r--. 1 root root 2183884 Nov 17 14:36 50544 22.pdf
-rw-r--r--. 1 root root 2183884 Nov 17 14:36 50544 23.pdf
-rw-r--r--. 1 root root 2183884 Nov 17 14:36 50544 24.pdf
-rw-r--r--. 1 root root 2183884 Nov 17 14:36 50544 25.pdf
-rw-r--r--. 1 root root 2183884 Nov 17 14:36 50544 26.pdf
-rw-r--r--. 1 root root 2183884 Nov 17 14:36 50544 27.pdf
-rw-r--r--. 1 root root 2183884 Nov 17 14:36 50544 28.pdf
-rw-r--r--. 1 root root 2183884 Nov 17 14:36 50544 29.pdf
-rw-r--r--. 1 root root 2183884 Nov 17 14:36 50544 2.pdf
-rw-r--r--. 1 root root 2183884 Nov 17 14:36 50544 30.pdf
-rw-r--r--. 1 root root 2183884 Nov 17 14:36 50544 3.pdf
-rw-r--r--. 1 root root 2183884 Nov 17 14:36 50544 4.pdf
-rw-r--r--. 1 root root 2183884 Nov 17 14:36 50544 5.pdf
-rw-r--r--. 1 root root 2183884 Nov 17 14:36 50544 6.pdf
-rw-r--r--. 1 root root 2183884 Nov 17 14:36 50544 7.pdf
-rw-r--r--. 1 root root 2183884 Nov 17 14:36 50544 8.pdf
-rw-r--r--. 1 root root 2183884 Nov 17 14:36 50544 9.pdf

S3バケット from_aws_bucket の内容が表示されることを確認できました。

では、cpコマンドで /mnt_a 内のファイルを /mnt_o にコピーしてみます。

cp /mnt_a/* /mnt_o

コピーが完了したら、オブジェクト・ストレージ・バケット oci をマウントした /mnt_o の内容を確認します。

[opc@iptest mnt_a]$ cd /mnt_o
[opc@iptest mnt_o]$ ls -l
total 63990
-rw-r--r--. 1 root root 2183884 Nov 17 14:39 50544 10.pdf
-rw-r--r--. 1 root root 2183884 Nov 17 14:39 50544 11.pdf
-rw-r--r--. 1 root root 2183884 Nov 17 14:39 50544 12.pdf
-rw-r--r--. 1 root root 2183884 Nov 17 14:39 50544 13.pdf
-rw-r--r--. 1 root root 2183884 Nov 17 14:39 50544 14.pdf
-rw-r--r--. 1 root root 2183884 Nov 17 14:39 50544 15.pdf
-rw-r--r--. 1 root root 2183884 Nov 17 14:39 50544 16.pdf
-rw-r--r--. 1 root root 2183884 Nov 17 14:39 50544 17.pdf
-rw-r--r--. 1 root root 2183884 Nov 17 14:39 50544 18.pdf
-rw-r--r--. 1 root root 2183884 Nov 17 14:39 50544 19.pdf
-rw-r--r--. 1 root root 2183884 Nov 17 14:39 50544 1.pdf
-rw-r--r--. 1 root root 2183884 Nov 17 14:39 50544 20.pdf
-rw-r--r--. 1 root root 2183884 Nov 17 14:39 50544 21.pdf
-rw-r--r--. 1 root root 2183884 Nov 17 14:39 50544 22.pdf
-rw-r--r--. 1 root root 2183884 Nov 17 14:40 50544 23.pdf
-rw-r--r--. 1 root root 2183884 Nov 17 14:40 50544 24.pdf
-rw-r--r--. 1 root root 2183884 Nov 17 14:40 50544 25.pdf
-rw-r--r--. 1 root root 2183884 Nov 17 14:40 50544 26.pdf
-rw-r--r--. 1 root root 2183884 Nov 17 14:40 50544 27.pdf
-rw-r--r--. 1 root root 2183884 Nov 17 14:40 50544 28.pdf
-rw-r--r--. 1 root root 2183884 Nov 17 14:40 50544 29.pdf
-rw-r--r--. 1 root root 2183884 Nov 17 14:40 50544 2.pdf
-rw-r--r--. 1 root root 2183884 Nov 17 14:40 50544 30.pdf
-rw-r--r--. 1 root root 2183884 Nov 17 14:40 50544 3.pdf
-rw-r--r--. 1 root root 2183884 Nov 17 14:40 50544 4.pdf
-rw-r--r--. 1 root root 2183884 Nov 17 14:40 50544 5.pdf
-rw-r--r--. 1 root root 2183884 Nov 17 14:40 50544 6.pdf
-rw-r--r--. 1 root root 2183884 Nov 17 14:40 50544 7.pdf
-rw-r--r--. 1 root root 2183884 Nov 17 14:40 50544 8.pdf
-rw-r--r--. 1 root root 2183884 Nov 17 14:40 50544 9.pdf

/mnt_a(=S3バケット from_aws_bucket )の内容が /mnt_o にコピーされました。

OCIのコンソールから、オブジェクト・ストレージ・バケット oci の内容を確認します。
スクリーンショット 2020-11-17 23.45.48.png
S3バケット from_aws_bucket の内容がオブジェクト・ストレージ・バケット ociにコピーされていることが確認できました。

まとめ

goofysを使用することで、AWSのS3バケットの内容を一度ダウンロードすることなく、OCIのオブジェクト・ストレージ・バケットに直接コピーしてデータを移行することができました。めでたし、めでたし。

ファイル数やファイルサイズによるパフォーマンスの変化についても、後日確認してみたいと思います。

参考情報

goofys
Amazon S3互換API(OCIオブジェクト・ストレージ)

3
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
1