LoginSignup
3
0

More than 1 year has passed since last update.

AWS Storage GatewayとOCI Storage Gatewayを利用してAWS S3上のデータをOCI Object Storageにファイルコピーで移行してみた

Last updated at Posted at 2020-11-20

はじめに

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を作成」をクリック
スクリーンショット 2020-11-20 10.47.03.png
・サブネットの作成
 VPC ID:作成したVPCを選択
 サブネット名:SG-Subnet
 アベイラビリティゾーン:任意の選択肢を選択
 IPv4 CIDR ブロック:10.0.1.0/24
 「サブネットの作成」クリック
スクリーンショット 2020-11-20 10.49.42.png
スクリーンショット 2020-11-20 10.50.48.png
・インターネットゲートウェイの作成
 名前タグ:SG-IG
 「インターネットゲートウェイの作成」をクリック
スクリーンショット 2020-11-20 10.54.32.png
・インターネットゲートウェイをVPCにアタッチ
 「アクション」をクリックし、「VPCにアタッチ」をクリック
スクリーンショット 2020-11-20 10.56.13.png
 使用可能なVPC:先ほど作成した「SG-VPC」を選択
 「インターネットゲートウェイのアタッチ」をクリック
スクリーンショット 2020-11-20 10.56.40.png
・ルートテーブルの作成
 名前タグ:SG-RT
 VPC:作ほど作成した「SG-VPC」を選択
 「作成」をクリック
スクリーンショット 2020-11-20 10.58.44.png
・ルートテーブルへのルートルールの追加
「SG-RT」を選択し、「ルート」タブをクリック
「ルートの編集をクリック
スクリーンショット 2020-11-20 11.01.53.png
 「ルートの追加」をクリック
スクリーンショット 2020-11-20 11.02.10.png
 送信先:0.0.0.0/0
 ターゲット:先ほど作成したインターネットゲートウェイ「SG-IG」を選択
 「ルートの保存」をクリック
スクリーンショット 2020-11-20 11.02.38.png
「閉じる」をクリック
スクリーンショット 2020-11-20 11.02.51.png
ルートテーブル「SG-RT」にルートルールが追加されました。
スクリーンショット 2020-11-20 11.03.06.png
・ルートテーブルのサブネットへの関連付け
 「サブネットの関連付け」タブをクリック
 「サブネットの関連付けの編集」をクリック
スクリーンショット 2020-11-20 11.03.20.png
 先ほど作成したサブネット「SG-Subnet」を選択
 「保存」をクリック
スクリーンショット 2020-11-20 11.03.54.png
 ルートテーブル「SG-RT」がサブネット「SG-Subnet」に関連付けられました。
スクリーンショット 2020-11-20 11.04.11.png

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を選択
スクリーンショット 2020-11-19 20.37.47.png
インスタンスタイプとして、最小要件を満たすm4.xlarge(4vCPU/16GBメモリ)を選択
「次のステップ:インスタンスの詳細の設定」をクリック
スクリーンショット 2020-11-19 20.39.37.png
 ネットワーク:先ほど作成した「SG-VPC」を選択
 サブネット:作ほど作成した「SG-Subnet」を選択
 自動割り当てパブリックIP:「有効」を選択
 その他の項目はデフォルトのまま
 「次のステップ:ストレージの追加」をクリック
スクリーンショット 2020-11-19 20.39.58.png
「新しいボリュームの追加」をクリックしOCI Storage Gateway用のローカルストレージを追加
 ボリュームタイプ:EBS
 サイズ:600
 終了時に削除:チェックをオン
 「次のステップ:タグの追加」をクリック
スクリーンショット 2020-11-19 20.41.20.png
今回は特にタグは追加せず、「次のステップ:セキュリティグループの設定」をクリック
スクリーンショット 2020-11-19 20.41.37.png
 セキュリティグループの割り当て:「新しいセキュリティグループを作成する」を選択
 セキュリティグループ名:Security Group for OCI Storage Gateway
 説明:任意
 デフォルトのルール(ソース 0.0.0.0/0に対してSSHを許可)があることを確認
 「確認と作成」をクリック
スクリーンショット 2020-11-19 20.42.49.png
入力内容を確認し、「起動」をクリック
スクリーンショット 2020-11-19 20.43.07.png
作成済みの既存のキーペアを選択して「インスタンスの作成」をクリック
スクリーンショット 2020-11-19 20.44.09.png
インスタンスの作成が開始されました。
スクリーンショット 2020-11-19 20.44.33.png

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
/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アクセスを許可するためのインバウンドルールを追加します。
「インバウンドルールを編集」をクリックします。
スクリーンショット 2020-11-19 21.15.10.png
今回はマイIP(自宅のパブリックIPアドレス)からのすべてのトラフィックを許可しました。
スクリーンショット 2020-11-19 21.15.59.png

ブラウザからOCI Storage Gatewayのコンソールにアクセスします。
https://<インスタンスのパブリックIPアドレス>:443

初回アクセス時はパスワードの設定を求められます。
スクリーンショット 2020-11-19 21.17.47.png
設定したパスワードでOCI Storage Gatewayのコンソールにログインします。
スクリーンショット 2020-11-19 21.18.07.png
まだファイルシステムが作成されていないので、以下のような画面が表示されます。
「Create a File System」をクリックして、ファイルシステムを作成します。
スクリーンショット 2020-11-19 21.18.28.png
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」をクリック
スクリーンショット 2020-11-19 21.30.31.png
ファイルシステムが作成されました。
「Connect」をクリックして、作成したファイルシステムをObject Storageバケットに接続します。
スクリーンショット 2020-11-19 21.31.06.png
作成したファイルシステム名「dest-oci-bucket」をクリックすると、ファイルシステムの詳細が表示されます。
スクリーンショット 2020-11-19 21.32.09.png

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の内容を確認します。
スクリーンショット 2020-11-19 21.35.14.png
/mnt_oに作成したファイルが、Object Storageバケット「dest-oci-bucket」内に作成されていることが確認できました。

5. AWS Storage Gateway(ファイルゲートウェイ)の構築

AWSのコンソールで「サービス」から「Storage Gateway」に移動します。
「今すぐ始める」をクリックします。
スクリーンショット 2020-11-19 20.15.09.png
「ファイルゲートウェイ」を選択し、「次へ」をクリック
スクリーンショット 2020-11-19 20.15.25.png
「Amazon EC2」をクリックして、隣にある「インスタンスの起動」をクリックします。
「インスタンスを起動」をクリックすると、インスタンス作成のウィザードが別のタブで開きますが、こちらのタブは閉じずにそのままにしておきます。
スクリーンショット 2020-11-19 20.16.02.png
インスタンスタイプを選択します。
今回はm4.xlargeを選択しました。
※あまり小さなインスタンスを選ぶとメモリ不足でStorage Gatewayが正しく動作しませんでした。
インスタンスタイプを選択したら、「次のステップ:インスタンスの詳細の設定」をクリック
スクリーンショット 2020-11-19 20.16.43.png
ネットワーク:先ほど作成した「SG-VPC」を選択
サブネット:先ほど作成した「SG-Subnet」を選択
その他はデフォルトのまま
「次のステップ:ストレージの追加」をクリック
スクリーンショット 2020-11-19 20.17.07.png
「新しいボリュームの追加」をクリック
スクリーンショット 2020-11-19 20.17.22.png
Storage Gatewayで使用するボリュームを追加します。
「次のステップ:タグの追加」をクリック
スクリーンショット 2020-11-19 20.17.41.png
「次のステップ:セキュリティグループの設定」をクリック
スクリーンショット 2020-11-19 20.17.56.png
「ルールの追加」をクリックして、AWS Storage Gateway用のルールを追加します。
スクリーンショット 2020-11-19 20.18.11.png
タイプ:HTTP ソース:マイIP 備考;For Activation(Storage Gatewayのアクティベーション用)
タイプ:NFS ソース:10.0.1.0/24(SG-SubnetのCIDR) 備考:For NFS(NFS共有用)
「確認と作成」をクリック
スクリーンショット 2020-11-19 20.20.53.png
設定内容を確認し、「起動」をクリック
スクリーンショット 2020-11-19 20.21.09.png
キーペアを選択し、「インスタンスの作成」をクリック
スクリーンショット 2020-11-19 20.21.37.png
インスタンスの作成が開始されます。
スクリーンショット 2020-11-19 20.21.50.png
インスタンスの概要の画面でパブリックIPv4アドレスを確認します。
スクリーンショット 2020-11-19 20.22.39.png
Storage Gatewayのウィザードに戻り、「次へ」をクリック
スクリーンショット 2020-11-19 20.23.07.png
エンドポイントタイプ:「パブリック」を選択
「次へ」をクリック
スクリーンショット 2020-11-19 20.23.19.png
IPアドレス:先ほど確認したインスタンスのIPv4アドレス
「ゲートウェイに接続」をクリック
スクリーンショット 2020-11-19 20.23.34.png
ゲートウェイのタイムゾーン :任意のタイムゾーン を選択
ゲートウェイ名:Storage Gateway
「ゲートウェイのアクティブ化」をクリック
スクリーンショット 2020-11-19 20.24.35.png
「ローカルディスクの準備中」と表示されるので、しばらく待ちます。
スクリーンショット 2020-11-19 20.24.54.png
ディスク情報が正しく表示されたら、「ログ記録を設定」をクリック
スクリーンショット 2020-11-19 20.25.41.png
ゲートウェイのヘルスロググループ:「新しいロググループを作成」を選択
「保存して続行」をクリック
スクリーンショット 2020-11-19 20.26.06.png
AWS Storage Gatewayが作成されました。
「ファイル共有の作成」をクリックします。
スクリーンショット 2020-11-19 20.26.23.png
 amazon S3バケット名:source-aws-bucket(データの移行元となるバケット名)
 ファイル共有名:source-aws-bucket(作成するファイル共有の名前)
 オブジェクトへのアクセス:ネットワークファイルシステム(NFS)を選択
 ゲートウェイ:先ほど作成した「Service Gateway」を選択
 その他はデフォルトのまま
 「次へ」をクリック
スクリーンショット 2020-11-19 20.32.18.png

スクリーンショット 2020-11-19 20.32.32.png
新しいオブジェクトのストレージクラス:「S3 スタンダード」を選択
その他はデフォルトのまま
「次へ」をクリック

スクリーンショット 2020-11-19 20.33.05.png
入力内容を確認して、「ファイル共有の作成」をクリック
スクリーンショット 2020-11-19 20.34.05.png
スクリーンショット 2020-11-19 20.34.19.png
ファイル共有source-aws-bucketが作成されました。
スクリーンショット 2020-11-19 20.34.39.png

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の内容を確認します。
スクリーンショット 2020-11-19 21.44.23.png
/mnt_aに作成したファイルが、S3バケット「source-aws-bucket」内に作成されていることが確認できました。

7. S3バケットとObject Storageバケット間のファイルコピー

ファイルコピーテスト用のファイルをS3バケットにアップロードします。

「ファイルを追加」をクリックし、適当なファイルを選択してアップロードします。
スクリーンショット 2020-11-19 21.46.46.png
今回は30個のPDFファイルをアップロードしました。
スクリーンショット 2020-11-19 21.48.20.png
ファイルをアップロードしたら、キャッシュを更新しておきます。
AWSコンソールの「Storage Gateway」→「ファイル共有」を開きます。
スクリーンショット 2020-11-19 21.54.30.png
「アクション」から「キャッシュの更新」をクリックし、キャッシュを更新します。
スクリーンショット 2020-11-19 21.54.41.png
/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」の内容を確認します。
スクリーンショット 2020-11-19 21.57.37.png
スクリーンショット 2020-11-19 21.57.48.png
/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ユーザーガイド:ファイルゲートウェイの管理

3
0
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
0