AWS EBSボリュームを自動冗長化機能を使わずに拡張する【Windows版】

要件

・開発時期だけ一部ディレクトリの容量を追加したい
・EC2は一台で Auto Scaling による 冗長化は行わず低コストで運用したい

 

対策

EBSボリュームのサイズ変更は、サイズ追加はできるがサイズ削減はできない。
そのため、一定期間だけサイズ拡張したいからと、単純にEBSボリュームの拡張を
してしまうと、拡張した分のサイズが必要なくなったときに使用していない分も、
料金だけ支払うことになる。

そこで、追加したい容量のEBSボリュームを新しいドライブとして追加し、
新しいドライブに拡張対象ディレクトリの一部のファイルを移動し、
拡張対象ディレクトリにはシンボリック・リンクを作成することで、
アプリ側の設定変更をすることなく、新しいドライブにデータ保存されるようにした。

 

こんなときに便利!

・開発環境で開発時期だけディスク容量を増やしたい場合に、一時的に追加し、
 開発が落ち着き通常運用に戻ったら 、追加したEBSボリュームを削除できる

・キャンペーンなどイベントのため、
 情報収集したりアクセスが集中するディレクトリを新たに一時的に追加し、
 イベント終了後は、低コストで保存できるリソースへデータ退避し、
 追加したEBSボリュームは削除できる

 

メリット

・アプリ側の設定変更不要で拡張できる
・リンク先にファイル移動して、シンボリック・リンクの設定をするだけで設定方法が簡単
・最小減のコストで調整・運用できる
・利用後、追加したEBSボリュームを削除できる

 

デメリット

・ファイルサイズが大きい場合、ファイル移動に時間がかかる
  264GB 35分、サーバスペック2vCPU/メモリ8GB
・サービス停止を伴うので、適用できる環境は運用方針による

 

方法

Case: OracleDatabase11g の データファイルの保存領域を300GB拡張する

OS : Winows Server 2008 R2 on EC2

 

EBSボリュームの作成&アタッチ

AWSマネジメントコンソールで300GBのボリュームを作成し、インスタンスにアタッチします。

 

新しいドライブを作成

インスタンスリモートデスクトップ接続し、
[コンピュータ]を右クリック→[管理]を選択→左のメニューエリアから[記憶域]ー[ディスクの管理]を開きます。

追加したディスクを選択し、右クリックで[フォーマット]を選択します。

ここでは、Eドライブに割り当てます。

 

Oracleサービスの停止

データの不整合を避けるため、サービスを停止します。

set ORACLE_SID=sid
set PATH=C:\app\Administrator\product\11.2.0\dbhome\bin
set
emctl stop dbconsole
lsnrctl stop LISTENER
lsnrctl status LISTENER
sqlplus system/****** as sysdba
SQL> shutdown immediate
SQL> exit

 

データファイルを新しいドライブに移動

拡張対象ディレクトリから作成した Eドライブ へファイルを移動します。
データ消失や損傷等、心配な場合は、先にS3へバックアップをとっておいてもよいかと思います。
aws s3コマンドでS3へバックアップする場合は、別途awscliの設定が必要です。

 

Eドライブにファイルを移動できたことを確認します。

dir E:\

 

拡張対象ディレクトリに シンボリック・リンクを作成

カレントディレクトリをシンボリック・リンクを作成するディレクトリに移動します。

cd C:\app\Administrator\oradata\sid

シンボリック・リンク作成前のディレクトリを確認します。

dir

移動したファイルのシンボリック・リンクを作成します。

mklink file1.DBF E:\file1.DBF
mklink file2.DBF E:\file2.DBF
mklink file3.DBF E:\file3.DBF

シンボリック・リンク作成が正しくできたか確認します。

dir

実行結果

 C:\app\Administrator\oradata\sid のディレクト

          :

2018/04/26 16:00 <SYMLINK> file1.DBF [E:\file1.DBF]
2018/04/26 16:00 <SYMLINK> file2.DBF [E:\file2.DBF]
2018/04/26 16:00 <SYMLINK> file3.DBF [E:\file3.DBF]

          :

 

Oracleサービスの起動

動作確認を行い、システムやアプリケーションへの影響がないことを確認します。
(クライアントPCからのSQL接続できるか。EMへログインでき、表領域・データファイル・表領域 のファイルが参照ができているか。システムにログインできるか。など)

lsnrctl start LISTENER
lsnrctl status LISTENER
sqlplus system/****** as sysdba
SQL> startup
SQL> exit
emctl start dbconsole
emctl status dbconsole

 

EBSボリュームを削除する際には、データ原本を削除しないよう注意が必要です。