みなさまこんにちわ。id-nakamuraaです。
今回はOracle Cloud Infrastructure(OCI)の Storage Gateway(ストレージ・ゲートウェイ)を使用してみた内容を書いていきます。
(2024/03/04 UPDATE)
ストレージ・ゲートウェイのサポート終了が発表されました...
2024/02/28 Release Notes
ストレージ・ゲートウェイは、OCIのコンピュートやオンプレミスから接続できるクラウド・ストレージ・ゲートウェイです。
ストレージ・ゲートウェイを使用することで、クライアントはファイル・システムをリモート・サーバーにマウントし、ローカル・ファイル・システムのようにネットワーク経由でリモート・ファイル・システムにアクセスできます。
<OCI 使用可能リージョン>※2020年2月現在
US East (Ashburn)
US West (Phoenix)
Canada Southeast (Toronto)
Switzerland North (Zurich)
UK South (London)
Germany Central (Frankfurt)
Brazil East (Sao Paulo)
Sao Paulo Classic
Japan Central (Osaka)
Australia East (Sydney)
UK Gov South (London)※東京リージョンは対象外です( ; _ ; )
Japan East (Tokyo)
(2020/02/07 UPDATE)
東京リージョンでも使用可能とのことです!
公式ドキュメント docs.oracle.com
docs.oracle.com
www.oracle.com
構築する
OCIのパブリックネットワーク上のコンピュートにストレージ・ゲートウェイをインストールし、
オブジェクトストレージをクライアントサーバーの /sgtest として使用できるよう構築していきます。
こちらは US East (Ashburn)リージョン上で作成します。
0.事前準備
以下を事前に作成しました
・VCN ※DNS解決を外して作成
・パブリックネットワーク上にストレージゲートウェイサーバーを作成
・プライベートネットワーク上にクライアントサーバーを作成
・APIキーが使用できるユーザーを作成
<ハードウェア要件>
- CPU:2つ以上のデュアル・コアCPUまたはそれ以上。(oracleは4コアCPUを推奨)
- メモリー:16GB 以上。 5000万ファイル未満は32GB、1億ファイル未満は64GB。
- ローカルストレージ:600GB以上。
<ソフトウェア要件>
- Oracle Linux7 以上
- Docker1.12.6 を使用
- NFSv4 を使用
※Docker1.12.6とNFSv4はストレージゲートウェイのインストールソフトウェアによりインストールされます
1.ストレージゲートウェイのインストール
ストレージゲートウェイインストール先の準備
・ストレージ・ゲートウェイサーバーにブロックボリューム(600GB)をアタッチします。
(参考)https://community.oracle.com/docs/DOC-1019345
・ストレージゲートウェイサーバーにログイン
・ パーティションを作成
$ sudo fdisk /dev/sdb m:fdiskオプションを表示させます g:新しいからのGPTパーティション表を作成 w:ディスクに表を書き込み、終了します
・ファイル・システム(/dev/sdb)を作成
$ sudo mkfs -t ext3 /dev/sdb
・マウント・ディレクトリ(/ocisg)を作成
$ sudo mkdir /ocisg
・ドライブをマウント
$ sudo mount /dev/sdb /ocisg
ストレージゲートウェイインストール
インストールソフトウェアのダウンロード、インストールを進めていきます
・以下リンク先からStorage Gateway 1.3 tarアーカイブをダウンロードし、/tmp ディレクトリにコピーします
Oracle Cloud Infrastructure Storage Gateway
・ダウンロードファイルを解凍
$ cd /tmp $ sudo tar xvzf ocisg-1.3.tar.gz
・ocisg-1.3へ移動し、インストールスクリプトを実行
$ cd ocisg-1.3 $ sudo ./ocisg-install.sh
スクリプト実行中に以下を聞かれるのでパスを入力します
インストール先 Enter the install location press enter for default (/opt/ocisg/) : /opt/ocisg ファイルシステムキャッシュのパス Enter the path for OCISG file system cache : /ocisg/sg/cache メタデータ・ストレージのパス Enter the path for OCISG metadata storage : /ocisg/sg/metadata ログストレージのパス Enter the path for OCISG log storage : /ocisg/sg/log
・Dockerを起動
$ sudo systemctl start docker
・ストレージ・ドライバの確認
Storage Driver項目がdevicemapperになっていることを確認します。
$ sudo docker info
devicemappeになっていない場合は、dockerを停止、daemon.jsonを編集、docker起動し直します
$ sudo systemctl stop docker $ sudo vim /etc/docker/daemon.json {"storage-driver": "devicemapper"} $ sudo systemctl start docker
2. ファイルシステム作成
ストレージゲートウェイ管理コンソールにログイン
ストレージゲートウェイにアクセスするためにセキュリティリストを更新します。
・管理コンソールのポート番号を確認
$ sudo ocisg info
・セキュリティリストに管理コンソールのポートを追加(パブリックネットワーク側)
・ブラウザから管理コンソールへアクセス
https://<ストレージゲートウェイのパブリックIP>:<管理コンソール ポート番号> 例)https://129.213.161.30:32769
・パスワードを設定し、ログインする
ファイルシステム作成
・管理コンソール画面の「Create a File System」をクリックして各情報を入力
「Show Advanced File System Configuration▼」をクリックするとNFS情報を入力可能になります。
・「connect」をクリック
ファイルシステム作成時にコンパートメントを指定した場合、バケットはそのコンパートメント内に作成されます。それ以外はroot配下に作成されます。 ファイルシステムと同じ名前のバケットがオブジェクト・ストレージに存在する場合、ファイルシステムはそのバケットに接続します。存在しない場合は新規作成され、接続します。
3.クライアントサーバーからマウント
・ストレージゲートウェイサーバーでNFSポートを確認
$ sudo ocisg info
・セキュリティリストにNFSポートを追加(パブリック、プライベートどちらも追加)
・クライアントサーバーにディレクトリ(/sgtest)を作成
$ sudo mkdir /sgtest
・ファイル・システム(/sgtest-mount-point)をマウントを実施
$ sudo mount -t nfs -o vers=4,port=<NFSポート番号> <ストレージゲートウェイのプライベートIP>:<ファイルシステム名> <クライアントのディレクトリ> 例)sudo mount -t nfs -o vers=4,port=32770 172.16.1.3:/sgtest-mount-point /sgtest
クライアントでファイルを作成して、オブジェクトストレージ側に反映されることを確認できました!
$ touch /sgtest/file ; date 2020年 1月 30日 木曜日 05:26:26 GMT
さいごに
今回はストレージゲートウェイをOCIのコンピュートにインストールして使用しましたが、オンプレミスのサーバーにインストールしても使用できます。(Oracle Linux7以上という要件がありますが、、)OCIでは2020年2月現在 東京リージョンでは使用できないので、大阪リージョンで構築することが多くなりそうです!
東京リージョンで使用できるそうです!!!
告知
次回は 2020/2/18に STEPUP OCI、大阪リージョン(仮)というコンテンツで開催されます。 興味がある方、是非ご参加ください!