はじめに
AWS S3内のデータをOCIのObject Storageにファイルコピーで移行する方法として、こちらの記事ではgoofysを利用する方法を紹介しました。
goofysはオープンソースなのでサポートが心配、という方向けに、今回はOracleから提供されているOCI Storage Gateway(Object StorageバケットをNFSで共有できるゲートウェイ)、AWSから提供されているAWS Storage Gateway(S3バケットをNFSで共有できるゲートウェイ)を利用してAWS S3からOCI Object Storageにファイルコピーでデータを移行する方法を試してみました。
事前準備
<OCI側>
・Object Storageへのアクセスに使用するユーザのAPIキーの登録を済ませておきます。
- フィンガープリント
- 秘密鍵
- パスフレーズ(キーペアの作成時に設定した場合)
<AWS側>
・SSHログイン用のキーペアの作成を作成しておきます。
<Oracle Cloud Infrastructure Storage Gatewayのインストーラのダウンロード>
こちらからOracle Cloud Infrastructure Storage Gatewayのインストーラを手元のPCにダウンロードしておきます。
1. VPCの構成
・VPCの作成
名前:SG-VPC
IPv4 CIDR ブロック:10.0.0.0/16
IPv6 CIDR ブロック:「IPv6 CIDR ブロックなし」を選択(デフォルト)
テナンシー:「デフォルト」を選択
「VPCを作成」をクリック
・サブネットの作成
VPC ID:作成したVPCを選択
サブネット名:SG-Subnet
アベイラビリティゾーン:任意の選択肢を選択
IPv4 CIDR ブロック:10.0.1.0/24
「サブネットの作成」クリック
・インターネットゲートウェイの作成
名前タグ:SG-IG
「インターネットゲートウェイの作成」をクリック
・インターネットゲートウェイをVPCにアタッチ
「アクション」をクリックし、「VPCにアタッチ」をクリック
使用可能なVPC:先ほど作成した「SG-VPC」を選択
「インターネットゲートウェイのアタッチ」をクリック
・ルートテーブルの作成
名前タグ:SG-RT
VPC:作ほど作成した「SG-VPC」を選択
「作成」をクリック
・ルートテーブルへのルートルールの追加
「SG-RT」を選択し、「ルート」タブをクリック
「ルートの編集をクリック
「ルートの追加」をクリック
送信先:0.0.0.0/0
ターゲット:先ほど作成したインターネットゲートウェイ「SG-IG」を選択
「ルートの保存」をクリック
「閉じる」をクリック
ルートテーブル「SG-RT」にルートルールが追加されました。
・ルートテーブルのサブネットへの関連付け
「サブネットの関連付け」タブをクリック
「サブネットの関連付けの編集」をクリック
先ほど作成したサブネット「SG-Subnet」を選択
「保存」をクリック
ルートテーブル「SG-RT」がサブネット「SG-Subnet」に関連付けられました。
2. OCI Storage Gateway用のEC2インスタンスの作成
OCI Storage Gatewayのインストール要件は、こちらに記載があります。
以下、一部抜粋。
<ハードウェアの推奨事項および要件>
2つのデュアルコアCPU以上、4コアCPUを推奨
メモリーの最小要件:
ストレージ・ゲートウェイのどのファイル・システムでも16GBが必須
ファイル数が5000万個までのファイル・システムでは32GB
ファイル数が1億個までのファイル・システムでは64GB
推奨されるローカル・ストレージのディスク・サイズは600GB
ファイル・システム・キャッシュ 500GB
メタデータ・ストレージ 80GB
ログ・ストレージ 20GB
<ソフトウェア要件>
Oracle Linux 7およびUEKリリース4以降
Docker 1.12.6以上
NFSv4
*OCI Storage GatewayはDockerコンテナ上で動作します。
今回は検証目的のため、深く考えずにコミュニティAMIからOracle Linux 7.8を選択
インスタンスタイプとして、最小要件を満たすm4.xlarge(4vCPU/16GBメモリ)を選択
「次のステップ:インスタンスの詳細の設定」をクリック
ネットワーク:先ほど作成した「SG-VPC」を選択
サブネット:作ほど作成した「SG-Subnet」を選択
自動割り当てパブリックIP:「有効」を選択
その他の項目はデフォルトのまま
「次のステップ:ストレージの追加」をクリック
「新しいボリュームの追加」をクリックしOCI Storage Gateway用のローカルストレージを追加
ボリュームタイプ:EBS
サイズ:600
終了時に削除:チェックをオン
「次のステップ:タグの追加」をクリック
今回は特にタグは追加せず、「次のステップ:セキュリティグループの設定」をクリック
セキュリティグループの割り当て:「新しいセキュリティグループを作成する」を選択
セキュリティグループ名:Security Group for OCI Storage Gateway
説明:任意
デフォルトのルール(ソース 0.0.0.0/0に対してSSHを許可)があることを確認
「確認と作成」をクリック
入力内容を確認し、「起動」をクリック
作成済みの既存のキーペアを選択して「インスタンスの作成」をクリック
インスタンスの作成が開始されました。
3. OCI Storage Gatewayの構築
作成したインスタンスにSSHクライアントからec2-userとしてログインします。
マウントポイント/dataを作成します。
[ec2-user@ip-10-0-1-92 ~]$ sudo mkdir /data
アタッチしたストレージ(/dev/xvdb)をフォーマットして/dataにマウントします。
[ec2-user@ip-10-0-1-92 ~]$ lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
xvda 202:0 0 30G 0 disk
└─xvda1 202:1 0 30G 0 part /
xvdb 202:16 0 600G 0 disk
[ec2-user@ip-10-0-1-92 ~]$ sudo mkfs -t xfs /dev/xvdb
meta-data=/dev/xvdb isize=256 agcount=4, agsize=39321600 blks
= sectsz=512 attr=2, projid32bit=1
= crc=0 finobt=0, sparse=0
data = bsize=4096 blocks=157286400, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=1
log =internal log bsize=4096 blocks=76800, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
[ec2-user@ip-10-0-1-92 ~]$ sudo mount /dev/xvdb /data
[ec2-user@ip-10-0-1-92 ~]$ df -k
Filesystem 1K-blocks Used Available Use% Mounted on
devtmpfs 8057896 0 8057896 0% /dev
tmpfs 8074556 0 8074556 0% /dev/shm
tmpfs 8074556 16820 8057736 1% /run
tmpfs 8074556 0 8074556 0% /sys/fs/cgroup
/dev/xvda1 31445996 2278576 29167420 8% /
tmpfs 1614912 0 1614912 0% /run/user/1000
/dev/xvdb 628838400 32976 628805424 1% /data
Dockerのインストールのため、リポジトリol7_addonsを有効にします。
[ec2-user@ip-10-0-1-92 ocisg-1.3]$ sudo vi /etc/yum.repos.d/oracle-linux-ol7.repo
[ol7_addons]
name=Oracle Linux $releasever Add ons ($basearch)
baseurl=https://yum$ociregion.oracle.com/repo/OracleLinux/OL7/addons/$basearch/
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-oracle
gpgcheck=1
enabled=1 <- ここをenabled=0からenabled=1に変更
PCにダウンロードしておいたOCI Storage Gatewayのインストーラ(ocisg-1.3.tar.gz)を、作成したインスタンスの/tmpにSCP等でアップロードします。
ocisg-1.3.tar.gzを解凍し、インストールスクリプトを実行してOCI Storage Gatewayをインストールします。
[ec2-user@ip-10-0-1-92 ~]$ cd /tmp
[ec2-user@ip-10-0-1-92 tmp]$ sudo tar xvzf ocisg-1.3.tar.gz
[ec2-user@ip-10-0-1-92 tmp]$ cd ocisg-1.3/
[ec2-user@ip-10-0-1-92 ocisg-1.3]$ sudo ./ocisg-install.sh
*Dockerをインストールするか聞かれるのでyと入力
Docker does not appear to be installed. Do you want to install docker engine with yum? [y/N] y
<中略>
Installed:
docker-engine.x86_64 0:19.03.11.ol-6.el7
Dependency Installed:
container-selinux.noarch 2:2.107-3.el7
containerd.x86_64 0:1.2.14-1.0.1.el7
criu.x86_64 0:3.12-2.el7
docker-cli.x86_64 0:19.03.11.ol-6.el7
libnet.x86_64 0:1.1.6-7.el7
libnl3.x86_64 0:3.2.28-4.el7
protobuf-c.x86_64 0:1.0.2-3.el7
runc.x86_64 0:1.0.0-19.rc5.git4bb1fe4.0.4.el7
Complete!
Created symlink from /etc/systemd/system/multi-user.target.wants/docker.service to /usr/lib/systemd/system/docker.service.
Setting the devicemapper storage driver ...
*NFSサーバをインストールするか聞かれるのでyと入力
NFS server does not appear to be installed. Do you want to install NFS with yum? [y/N] y
<中略>
Installed:
nfs-utils.x86_64 1:1.3.0-0.68.0.1.el7
Dependency Installed:
gssproxy.x86_64 0:0.7.0-29.el7 keyutils.x86_64 0:1.5.8-3.el7
libbasicobjects.x86_64 0:0.1.1-32.el7 libcollection.x86_64 0:0.7.0-32.el7
libevent.x86_64 0:2.0.21-4.el7 libini_config.x86_64 0:1.3.1-32.el7
libnfsidmap.x86_64 0:0.25-19.el7 libpath_utils.x86_64 0:0.2.1-32.el7
libref_array.x86_64 0:0.1.5-32.el7 libtirpc.x86_64 0:0.2.4-0.16.el7
libverto-libevent.x86_64 0:0.2.5-4.el7 quota.x86_64 1:4.01-19.el7
quota-nls.noarch 1:4.01-19.el7 rpcbind.x86_64 0:0.2.0-49.el7
systemd-sysv.x86_64 0:219-78.0.1.el7_9.2 tcp_wrappers.x86_64 0:7.6-77.el7
Dependency Updated:
libgudev1.x86_64 0:219-78.0.1.el7_9.2 systemd.x86_64 0:219-78.0.1.el7_9.2
systemd-libs.x86_64 0:219-78.0.1.el7_9.2
Complete!
Created symlink from /etc/systemd/system/multi-user.target.wants/nfs-server.service to /usr/lib/systemd/system/nfs-server.service.
*devicemapperの警告が出ますが、無視します。
*************************************
Imported temporary env vars from ec2-user to this install session
*************************************
Checking that docker is installed and using the correct version
Found docker version Docker version 19.03.11-ol, build 1f5403e
WARNING: the devicemapper storage-driver is deprecated, and will be removed in a future release.
WARNING: devicemapper: usage of loopback devices is strongly discouraged for production use.
Use `--storage-opt dm.thinpooldev` to specify a custom block storage device.
WARNING: the devicemapper storage-driver is deprecated, and will be removed in a future release.
WARNING: devicemapper: usage of loopback devices is strongly discouraged for production use.
Use `--storage-opt dm.thinpooldev` to specify a custom block storage device.
*************************************
Checking host prerequisites
*************************************
Detected linux operating system
Checking kernel version
Found kernel version 4.14.35-1902.300.11.el7uek.x86_64
Checking NFS version
Found NFS version 4
*************************************
All prerequisites have been met
*************************************
*************************************
Begin installation
*************************************
*インストール先を聞かれるので、何も入力せずにエンター
Enter the install location press enter for default (/opt/ocisg/) :
Installing to destination /opt/ocisg/
Copied install scripts
Copied OCISG image
Starting configuration script
*ファイルシステムキャッシュのパスを聞かれるので、/data/cacheと入力してエンター
Enter the path for OCISG file system cache : /data/cache
Warning: path /data/cache does not exist, creating.
*メタデータの保存先を聞かれるので、/data/metadataと入力してエンター
Enter the path for OCISG metadata storage : /data/metadata
Warning: path /data/metadata does not exist, creating.
================================================================================
WARNING:
Cache and metadata storage are on the SAME volume.
It is recommended to have a SEPARATE volume for metadata storage.
Recommended MINIMUM space for metadata storage is 80 GB.
================================================================================
*キャッシュとメタデータの保存先が同じ同じボリュームとの警告が出ますが、今回は検証目的で問題ないため、yと入力してエンター
Would you like to proceed anyway ('Y' to proceed, 'N' to stop installation) (y/N) ? y
*ログの保存先を聞かれるので、/data/logと入力してエンター
Enter the path for OCISG log storage : /data/log
Warning: path /data/log does not exist, creating.
================================================================================
WARNING:
Cache, Metadata, and log storage are on the SAME volume.
It is recommended to have a SEPARATE volume for log storage.
Recommended MINIMUM space for log storage is 20 GB.
================================================================================
*キャッシュとメタデータ、ログの保存先が同じボリュームとの警告が出ますが、今回は検証目的で問題ないため、yと入力してエンター
Would you like to proceed anyway ('Y' to proceed, 'N' to stop installation) (y/N) ? y
Writing configuration
Importing image
0a8af4fbe73a: Loading layer 1.024kB/1.024kB
fc9b318feb73: Loading layer 235.2MB/235.2MB
<中略>
ff3adf1ac705: Loading layer 1.024kB/1.024kB
Creating OCISG Volume with args -v /cloudsync/:/cloudsync/:shared -v /data/cache:/usr/share/oracle/ -v /data/metadata:/usr/share/oracle/system/ -v /data/log:/var/log/gateway
Applying configuration file to container
Starting OCISG [ocisg:1.3]
Setting up config file port with nfs
Setting up config file port with rest
Management Console: https://ip-10-0-1-92.ap-northeast-1.compute.internal:443
If you have already configured an OCISG FileSystem via the Management Console,
you can access the NFS share using the following port.
NFS Port: 32769
Example: mount -t nfs -o vers=4,port=32769 ip-10-0-1-92.ap-northeast-1.compute.internal:/<OCISG FileSystem name> /local_mount_point
[ec2-user@ip-10-0-1-92 ocisg-1.3]$
OCI Storage Gatewayのインストールが完了しました。
管理コンソールにアクセスするためのURL、NFSポート、NFSマウントのサンプルコマンドをメモしておきます。
OCI Storage Gatewayの管理コンソールにアクセスするためにセキュリティグループを編集します。
「Security Group for OCI Storage Gateway」にHTTPSアクセスを許可するためのインバウンドルールを追加します。
「インバウンドルールを編集」をクリックします。
今回はマイIP(自宅のパブリックIPアドレス)からのすべてのトラフィックを許可しました。
ブラウザからOCI Storage Gatewayのコンソールにアクセスします。
https://<インスタンスのパブリックIPアドレス>:443
初回アクセス時はパスワードの設定を求められます。
設定したパスワードでOCI Storage Gatewayのコンソールにログインします。
まだファイルシステムが作成されていないので、以下のような画面が表示されます。
「Create a File System」をクリックして、ファイルシステムを作成します。
File System Name:dest-oci-bucket
※こちらで指定した名前のバケットが存在しない場合、この名前で新規にバケットが作成されます。
SELECT the Object Storage tier in which you want to store data:「Standard」を選択
Object Storage API Endpoint:こちらを参照して利用するリージョンのObject Storageのエンドポイントを入力
Compartment OCID:作成するバケットのコンパートメントのOCID
Tenant OCID:テナントのOCID
User OCID:Object Storageのアクセスに使用するユーザのOCID
Public Key's Finger Print:APIキーに登録した公開鍵のフィンガープリント
Private Key:APIキーに登録した公開鍵に対応した秘密鍵の内容
Passphrase:秘密鍵のパスフレース(鍵の作成時に設定した場合のみ)
「Save」をクリック
ファイルシステムが作成されました。
「Connect」をクリックして、作成したファイルシステムをObject Storageバケットに接続します。
作成したファイルシステム名「dest-oci-bucket」をクリックすると、ファイルシステムの詳細が表示されます。
4. OCI Storage Gatewayから共有されているObject StorageバケットをNFSでマウント
OCI Storage Gatewayから共有されているNFSをマウントするためのマウントポイント/mnt_oを作成します。
[ec2-user@ip-10-0-1-92 ~]$ sudo mkdir /mnt_o
/mnt_oにOCI Storage Gatewayから共有されているdest-oci-bucketをNFSでマウントします。
[ec2-user@ip-10-0-1-92 ~]$ sudo mount -t nfs -o vers=4,port=32769 localhost:/dest-oci-bucket /mnt_o
/mnt_oに移動し、ファイルを作成します。
[ec2-user@ip-10-0-1-92 ~]$ cd /mnt_o
[ec2-user@ip-10-0-1-92 mnt_o]$ touch aaa.txt
[ec2-user@ip-10-0-1-92 mnt_o]$ ls
aaa.txt
OCIコンソールから、バケットdest_oci_bucketの内容を確認します。
/mnt_oに作成したファイルが、Object Storageバケット「dest-oci-bucket」内に作成されていることが確認できました。
5. AWS Storage Gateway(ファイルゲートウェイ)の構築
AWSのコンソールで「サービス」から「Storage Gateway」に移動します。
「今すぐ始める」をクリックします。
「ファイルゲートウェイ」を選択し、「次へ」をクリック
「Amazon EC2」をクリックして、隣にある「インスタンスの起動」をクリックします。
「インスタンスを起動」をクリックすると、インスタンス作成のウィザードが別のタブで開きますが、こちらのタブは閉じずにそのままにしておきます。
インスタンスタイプを選択します。
今回はm4.xlargeを選択しました。
※あまり小さなインスタンスを選ぶとメモリ不足でStorage Gatewayが正しく動作しませんでした。
インスタンスタイプを選択したら、「次のステップ:インスタンスの詳細の設定」をクリック
ネットワーク:先ほど作成した「SG-VPC」を選択
サブネット:先ほど作成した「SG-Subnet」を選択
その他はデフォルトのまま
「次のステップ:ストレージの追加」をクリック
「新しいボリュームの追加」をクリック
Storage Gatewayで使用するボリュームを追加します。
「次のステップ:タグの追加」をクリック
「次のステップ:セキュリティグループの設定」をクリック
「ルールの追加」をクリックして、AWS Storage Gateway用のルールを追加します。
タイプ:HTTP ソース:マイIP 備考;For Activation(Storage Gatewayのアクティベーション用)
タイプ:NFS ソース:10.0.1.0/24(SG-SubnetのCIDR) 備考:For NFS(NFS共有用)
「確認と作成」をクリック
設定内容を確認し、「起動」をクリック
キーペアを選択し、「インスタンスの作成」をクリック
インスタンスの作成が開始されます。
インスタンスの概要の画面でパブリックIPv4アドレスを確認します。
Storage Gatewayのウィザードに戻り、「次へ」をクリック
エンドポイントタイプ:「パブリック」を選択
「次へ」をクリック
IPアドレス:先ほど確認したインスタンスのIPv4アドレス
「ゲートウェイに接続」をクリック
ゲートウェイのタイムゾーン :任意のタイムゾーン を選択
ゲートウェイ名:Storage Gateway
「ゲートウェイのアクティブ化」をクリック
「ローカルディスクの準備中」と表示されるので、しばらく待ちます。
ディスク情報が正しく表示されたら、「ログ記録を設定」をクリック
ゲートウェイのヘルスロググループ:「新しいロググループを作成」を選択
「保存して続行」をクリック
AWS Storage Gatewayが作成されました。
「ファイル共有の作成」をクリックします。
amazon S3バケット名:source-aws-bucket(データの移行元となるバケット名)
ファイル共有名:source-aws-bucket(作成するファイル共有の名前)
オブジェクトへのアクセス:ネットワークファイルシステム(NFS)を選択
ゲートウェイ:先ほど作成した「Service Gateway」を選択
その他はデフォルトのまま
「次へ」をクリック
新しいオブジェクトのストレージクラス:「S3 スタンダード」を選択
その他はデフォルトのまま
「次へ」をクリック
入力内容を確認して、「ファイル共有の作成」をクリック
ファイル共有source-aws-bucketが作成されました。
6. AWS Storage Gatewayから共有されているS3バケットをNFSでマウント
OCI Storage GatewayをインストールしたインスタンスにSSHクライアントからec2-userでログインします。
今回はOCI Storage Gatewayをインストールしたインスタンスに、AWS Storage Gateway、OCI Storage Gateway両方のNFS共有をマウントします。
AWS Storage Gatewayから共有されているNFSをマウントするためのマウントポイント/mnt_aを作成します。
[ec2-user@ip-10-0-1-92 mnt_o]$ sudo mkdir /mnt_a
/mnt_aにAWS Storage Gatewayから共有されているsource-aws-bucketをNFSでマウントします。
[ec2-user@ip-10-0-1-92 mnt_o]$ sudo mount -t nfs -o nolock,hard 10.0.1.188:/source-aws-bucket /mnt_a
/mnt_aに移動し、ファイルを作成します。
[ec2-user@ip-10-0-1-92 mnt_o]$ cd /mnt_a
[ec2-user@ip-10-0-1-92 mnt_a]$ touch aaa.txt
[ec2-user@ip-10-0-1-92 mnt_a]$ ls
aaa.txt
AWSのコンソールからバケットsource-aws-bucketの内容を確認します。
/mnt_aに作成したファイルが、S3バケット「source-aws-bucket」内に作成されていることが確認できました。
7. S3バケットとObject Storageバケット間のファイルコピー
ファイルコピーテスト用のファイルをS3バケットにアップロードします。
「ファイルを追加」をクリックし、適当なファイルを選択してアップロードします。
今回は30個のPDFファイルをアップロードしました。
ファイルをアップロードしたら、キャッシュを更新しておきます。
AWSコンソールの「Storage Gateway」→「ファイル共有」を開きます。
「アクション」から「キャッシュの更新」をクリックし、キャッシュを更新します。
/mnt_aの内容を確認します。
[ec2-user@ip-10-0-1-92 mnt_a]$ ls -l
total 63990
-rw-rw-rw-. 1 nfsnobody nfsnobody 2183884 Nov 19 12:54 50544 10.pdf
-rw-rw-rw-. 1 nfsnobody nfsnobody 2183884 Nov 19 12:54 50544 11.pdf
-rw-rw-rw-. 1 nfsnobody nfsnobody 2183884 Nov 19 12:54 50544 12.pdf
-rw-rw-rw-. 1 nfsnobody nfsnobody 2183884 Nov 19 12:54 50544 13.pdf
-rw-rw-rw-. 1 nfsnobody nfsnobody 2183884 Nov 19 12:54 50544 14.pdf
-rw-rw-rw-. 1 nfsnobody nfsnobody 2183884 Nov 19 12:54 50544 15.pdf
-rw-rw-rw-. 1 nfsnobody nfsnobody 2183884 Nov 19 12:54 50544 16.pdf
-rw-rw-rw-. 1 nfsnobody nfsnobody 2183884 Nov 19 12:54 50544 17.pdf
-rw-rw-rw-. 1 nfsnobody nfsnobody 2183884 Nov 19 12:54 50544 18.pdf
-rw-rw-rw-. 1 nfsnobody nfsnobody 2183884 Nov 19 12:54 50544 19.pdf
-rw-rw-rw-. 1 nfsnobody nfsnobody 2183884 Nov 19 12:54 50544 1.pdf
-rw-rw-rw-. 1 nfsnobody nfsnobody 2183884 Nov 19 12:54 50544 20.pdf
-rw-rw-rw-. 1 nfsnobody nfsnobody 2183884 Nov 19 12:54 50544 21.pdf
-rw-rw-rw-. 1 nfsnobody nfsnobody 2183884 Nov 19 12:54 50544 22.pdf
-rw-rw-rw-. 1 nfsnobody nfsnobody 2183884 Nov 19 12:54 50544 23.pdf
-rw-rw-rw-. 1 nfsnobody nfsnobody 2183884 Nov 19 12:54 50544 24.pdf
-rw-rw-rw-. 1 nfsnobody nfsnobody 2183884 Nov 19 12:54 50544 25.pdf
-rw-rw-rw-. 1 nfsnobody nfsnobody 2183884 Nov 19 12:54 50544 26.pdf
-rw-rw-rw-. 1 nfsnobody nfsnobody 2183884 Nov 19 12:54 50544 27.pdf
-rw-rw-rw-. 1 nfsnobody nfsnobody 2183884 Nov 19 12:54 50544 28.pdf
-rw-rw-rw-. 1 nfsnobody nfsnobody 2183884 Nov 19 12:54 50544 29.pdf
-rw-rw-rw-. 1 nfsnobody nfsnobody 2183884 Nov 19 12:54 50544 2.pdf
-rw-rw-rw-. 1 nfsnobody nfsnobody 2183884 Nov 19 12:54 50544 30.pdf
-rw-rw-rw-. 1 nfsnobody nfsnobody 2183884 Nov 19 12:54 50544 3.pdf
-rw-rw-rw-. 1 nfsnobody nfsnobody 2183884 Nov 19 12:54 50544 4.pdf
-rw-rw-rw-. 1 nfsnobody nfsnobody 2183884 Nov 19 12:54 50544 5.pdf
-rw-rw-rw-. 1 nfsnobody nfsnobody 2183884 Nov 19 12:54 50544 6.pdf
-rw-rw-rw-. 1 nfsnobody nfsnobody 2183884 Nov 19 12:54 50544 7.pdf
-rw-rw-rw-. 1 nfsnobody nfsnobody 2183884 Nov 19 12:54 50544 8.pdf
-rw-rw-rw-. 1 nfsnobody nfsnobody 2183884 Nov 19 12:54 50544 9.pdf
[ec2-user@ip-10-0-1-92 mnt_a]$
S3バケット「source-aws-bucket」の内容が表示されました。
cpコマンドで/mnt_aの内容を/mnt_oにコピーしてみます。
[ec2-user@ip-10-0-1-92 mnt_a]$ cp /mnt_a/* /mnt_o
/mnt_oの内容を確認します。
[ec2-user@ip-10-0-1-92 mnt_a]$ cd /mnt_o
[ec2-user@ip-10-0-1-92 mnt_o]$ ls -l
total 0
-rw-rw-r--. 1 ec2-user ec2-user 2183884 Nov 19 12:56 50544 10.pdf
-rw-rw-r--. 1 ec2-user ec2-user 2183884 Nov 19 12:56 50544 11.pdf
-rw-rw-r--. 1 ec2-user ec2-user 2183884 Nov 19 12:56 50544 12.pdf
-rw-rw-r--. 1 ec2-user ec2-user 2183884 Nov 19 12:56 50544 13.pdf
-rw-rw-r--. 1 ec2-user ec2-user 2183884 Nov 19 12:56 50544 14.pdf
-rw-rw-r--. 1 ec2-user ec2-user 2183884 Nov 19 12:56 50544 15.pdf
-rw-rw-r--. 1 ec2-user ec2-user 2183884 Nov 19 12:56 50544 16.pdf
-rw-rw-r--. 1 ec2-user ec2-user 2183884 Nov 19 12:56 50544 17.pdf
-rw-rw-r--. 1 ec2-user ec2-user 2183884 Nov 19 12:56 50544 18.pdf
-rw-rw-r--. 1 ec2-user ec2-user 2183884 Nov 19 12:56 50544 19.pdf
-rw-rw-r--. 1 ec2-user ec2-user 2183884 Nov 19 12:56 50544 1.pdf
-rw-rw-r--. 1 ec2-user ec2-user 2183884 Nov 19 12:56 50544 20.pdf
-rw-rw-r--. 1 ec2-user ec2-user 2183884 Nov 19 12:56 50544 21.pdf
-rw-rw-r--. 1 ec2-user ec2-user 2183884 Nov 19 12:56 50544 22.pdf
-rw-rw-r--. 1 ec2-user ec2-user 2183884 Nov 19 12:56 50544 23.pdf
-rw-rw-r--. 1 ec2-user ec2-user 2183884 Nov 19 12:56 50544 24.pdf
-rw-rw-r--. 1 ec2-user ec2-user 2183884 Nov 19 12:56 50544 25.pdf
-rw-rw-r--. 1 ec2-user ec2-user 2183884 Nov 19 12:56 50544 26.pdf
-rw-rw-r--. 1 ec2-user ec2-user 2183884 Nov 19 12:56 50544 27.pdf
-rw-rw-r--. 1 ec2-user ec2-user 2183884 Nov 19 12:56 50544 28.pdf
-rw-rw-r--. 1 ec2-user ec2-user 2183884 Nov 19 12:56 50544 29.pdf
-rw-rw-r--. 1 ec2-user ec2-user 2183884 Nov 19 12:56 50544 2.pdf
-rw-rw-r--. 1 ec2-user ec2-user 2183884 Nov 19 12:56 50544 30.pdf
-rw-rw-r--. 1 ec2-user ec2-user 2183884 Nov 19 12:56 50544 3.pdf
-rw-rw-r--. 1 ec2-user ec2-user 2183884 Nov 19 12:56 50544 4.pdf
-rw-rw-r--. 1 ec2-user ec2-user 2183884 Nov 19 12:56 50544 5.pdf
-rw-rw-r--. 1 ec2-user ec2-user 2183884 Nov 19 12:56 50544 6.pdf
-rw-rw-r--. 1 ec2-user ec2-user 2183884 Nov 19 12:56 50544 7.pdf
-rw-rw-r--. 1 ec2-user ec2-user 2183884 Nov 19 12:56 50544 8.pdf
-rw-rw-r--. 1 ec2-user ec2-user 2183884 Nov 19 12:56 50544 9.pdf
[ec2-user@ip-10-0-1-92 mnt_o]$
/mnt_aの内容が/mnt_oにコピーされました。
OCIコンソールからObject Storageバケット「dest-oci-bucket」の内容を確認します。
/mnt_oの内容がdest-oci-bucketに反映されていることが確認できました。
以上で、無事にS3バケット「source-aws-bucket」からObject Storageバケット「dest-oci-bucket」に直接データをコピーしてデータ移行できました。めでたし、めでたし。
まとめ
OCI Storage Gateway、AWS Storage Gatewayを利用することで、中間ストレージにファイルを一度ダウンロードして再度アップロードすることなく、AWS S3からOCI Object Storageに直接データを移行することができました。
先に紹介したgoofysを利用する方法や、こちらの方法であれば、中間ストレージのコストやデータをダウンロード/アップロードする手間が不要になりますので、AWS S3からOCI Object Storageへのデータ移行もだいぶ楽になりますね。
参考情報
・Oracle Cloud Infrastructure ドキュメント:ストレージ・ゲートウェイ
・AWS Storage Gatewayユーザーガイド:ファイルゲートウェイの管理