仮想サーバー構築

【仮想サーバー構築】VmWare Playerのディスク共有設定を行う!

前回は、WebサーバーとAPサーバーの連携設定を行いました。今回は、データーベースを導入するにあたり、VmWare Player上でディスクの共有設定を行います。

今回、本記事で扱うVmWare Playerによるディスク共有は、あくまでもクラスタリングの学習を目的として、仮想ディスクの共有を行う事とし、本記事の設定を行い発生したいかなる障害にも、本サイトでは責任を負わないものとします。VmWare Playerは、本来クラスタリング用途としてのディスク共有を正式にサポートしていません。

本記事では、VmWare Playerでのディスク共有設定を行います。

想定する構築環境

データーベースアプリケーションを「db01」「db02」上へインストールを行い、データ格納領域として外部ディスクを利用します。「db01」を正系「db02」を副系として状態によってマウント、アンマウントを切り替えデータベースを稼働させます。

想定するミドルウェア

現在、商用データーベースでシェアNo1のOracleを使用して、データーベースサーバーを構築します。Oracleデータベースのクラスタリングには、通常「RAC(Real Application Clusters)」を使用することが多いかと思いますが、それではあまり面白くないのでクラスタリング制御にはクラスタープロを使用し、データベースはOracle12cをシングルインスタンスで使用します。

製品名 ver メーカー 用途
Cluster Pro 4.x NEC クラスタリング
Oracle 12c Oracle データーベース管理

ある程度のダウンタイムが許容できるなら、高いライセンスを支払ってまで「RAC」を使用せずとも、シングルインスタンス構成で十分実用に耐えることが出来ます。

想定するディスク領域

Linux標準のLVMを使用して、データーベースを載せる領域を作成します。本記事でのディスク領域には、下記を構成を想定しています。

pv vg lv fs mount point size(MB) 用途
/dev/sdb1 data01_vg lv_sys ext4 /dbdata/orcl/sys 10240 system領域
/dev/sdb2 data02_vg lv_dat ext4 /dbdata/orcl/dat 30720 データ領域
/dev/sdb3 data03_vg lv_idx ext4 /dbdata/orcl/idx 5120 インデックス領域
45GB/100GB
/dev/sdc1 data04_vg lv_redo01 ext4 /dbdata/orcl/redo01 5120 REDOログ領域1
/dev/sdc2 data05_vg lv_redo02 ext4 /dbdata/orcl/redo02 5120 REDOログ領域2
/dev/sdc3 data06_vg lv_arch01 ext4 /dbdata/orcl/arch01 30720 アーカイブ領域
40GB/100GB
/dev/sdd1 backup_vg lv_back ext4 /backup/ 51200 バックアップ領域
50GB/50GB

本記事では、ディスクサイズは余裕みて「/dev/sdb(100GB)」「/dev/sdc(100GB)」「/dev/sdd(50GB)」としていますが、任意のサイズでかまいません。

本来IOの分散を図るためにはすべてのディスクを別々に用意するべきですが、昨今はロジカルユニットの構造上、複数のディスクでIOが分散されていることが多い為、そこまで気にする必要がなくなってきました。

本記事では、必要最低限の環境構築にとどめ、データーベース格納領域の環境構築を進めて行きます。

本来はデーターベースファイルのサイズを正確に見積もって、適切なディスクサイズを設計します。

VmWare Playerのディスク共有設定

ディスク共有に使用する仮想ディスクを、「node0」で作成します。構成は下記の通り。

VmWare Playerのディスク構成

  • node0
    ├ share_disk/node0-0.vmdk (元)
    ├ share_disk/node0-1.vmdk (元)
    └ share_disk/node0-2.vmdk (元)
  • db01
    ├ share_disk/node0-0.vmdk (Active時)
    ├ share_disk/node0-1.vmdk (Active時)
    └ share_disk/node0-2.vmdk (Active時)
  • db02
    ├ share_disk/node0-0.vmdk (StandBy時)
    ├ share_disk/node0-1.vmdk (StandBy時)
    └ share_disk/node0-2.vmdk (StandBy時)

共有ディスクの作成(node0側の作業)

クラスタリングを設定するためには、「db01」「db02」から同時に参照、更新可能なディスク(以降、共有ディスク)を作成する必要があります。下記の手順に従って、ディスク共有に使用するディスクを必要数作成していきます。

なお、共有するディスクは「node0」上に作成していきます。

共有ディスクの作成手順

  1. 「仮想マシン設定の編集」リンクをクリック
  2. ハードウェア追加画面で「追加」ボタン押下
  3. ハードディスクを選択して「次へ」ボタン押下
  4. 「SCSI(推奨)」を選択して「次へ」ボタン押下
  5. ディスクの選択画面で「仮想ディスク新規作成」を選択して「次へ」ボタン押下
  6. ディスクサイズを入力して「仮想ディスクを単一ファイルとして格納」を選択後「次へ」ボタン押下
  7. 共有ディスクを格納するディレクトリを選択して「完了」ボタン押下

①「仮想マシン設定の編集」リンクをクリック

② ハードウェア追加画面で「追加」ボタン押下

③ ハードディスクを選択して「次へ」ボタン押下

④ 「SCSI(推奨)」を選択して「次へ」ボタン押下

⑤ ディスクの選択画面で「仮想ディスク新規作成」を選択して「次へ」ボタン押下

⑥ ディスクサイズを入力して「仮想ディスクを単一ファイルとして格納」を選択後「次へ」ボタン押下

⑦ 共有ディスクを格納するディレクトリを選択して「完了」ボタン押下

共有ディスク設定(db01、db02側の作業)

vmxファイルの設定を追記

「db01」「db02」のvmxファイルに以下を追記することで、共有ディスクが各Nodeから同時に参照、更新が可能になります。vmxファイルは「db01」「db02」を作成したフォルダに拡張子vmxで存在します。

vmxファイルへ追加

disk.locking = "false"
diskLib.dataCacheMaxSize = "0"
diskLib.dataCacheMaxReadAheadSize = "0"
diskLib.dataCacheMinReadAheadSize = "0"
diskLib.dataCachePageSize = "4096"
diskLib.maxUnsyncedWrites = "0"

共有ディスクの追加

「db01」でディスクを追加します。VMWare Playerを起動し「db01」のOSを選択した状態にします。

①「仮想マシン設定の編集」リンクをクリック

② ハードウェア追加画面で「追加」ボタン押下

③ ハードディスクを選択して「次へ」ボタン押下

④ 「SCSI(推奨)」を選択して「次へ」ボタン押下

⑤ ディスクの選択画面で「既存の仮想ディスクを使用」を選択して「次へ」ボタン押下

共有ディスクとして作成したvmdkファイルのパスを入力して「完了」ボタン押下

共有ディスクが取り込まれていることを確認して「OK」ボタン押下

同様の作業を「db02」でも行います。

共有ディスクの取り込み確認

VmWare Playerの「仮想マシン設定の編集」画面で共有ディスクの取り込みを確認したら、「db01」「db02」のOSから作成した共有ディスクの存在を確認します。

各Nodeよりrootユーザにて「fdisk -l」コマンドを実行して新規ディスクを確認します。全Nodeで同じ結果になることを確認します。

# fdisk -l

[ db01 ]

[ db02 ]

「db01」「db02」でともに共有ディスク「/dev/sdb」「/dev/sdc」「/dev/sdd」を認識している事が確認できます。

よく読まれている記事

1

Shellとは? Shellとは、人間の理解できる言葉を機会へ伝えるプログラムです。 Linux環境でコマンドプロンプト画面を開いているとき、常にShellは起動している状態です。 「Shell」とは ...

2

Linuxは主にサーバー用として利用されるOSです。大規模な基幹システムの開発者、ロボットや家電開発等の組み込み系エンジニア、ネットワーク機器やデータベースに携わるインフラエンジニアは触れることが多い ...

3

プログラミング言語を習得しようと思った時、必ずと言っていいほど候補として挙げられるのが「Java」というプログラミング言語です。 「Java」は、現在日本で最も使われている言語であり、非常に人気のある ...

4

この記事は、Linuxについて勉強している初心者の方向けに「Shellスクリプト」について解説します。最後まで読んで頂けましたら、Shellスクリプトはどのような役割を担っているのか?を理解出来るよう ...

-仮想サーバー構築