仮想サーバー構築

【仮想サーバ構築】共有ディスク上へデータ格納領域を作成する【LVM】

前回はVmWare Player上に、ディスク共有を行うための外部ディスクを作成しました。

この記事では、作成した外部ディスク「/dev/sdb」「/dev/sdc」「/dev/sdd」へ、データ格納領域(lv)を作成していきます。

なお、LVMについては、下記リンクページを参照してください。

想定する論理ボリューム構成

作成する論理ボリューム構成は下記を想定しています。

本記事のLVM環境は、あくまでも学習を目的とした簡易的な環境です。単純に「データ領域」と「保管領域」のみ区別しているだけです。本格的に運用する場合、「I・O分散」や「リソース」、「拡張性」等、個々の環境に合わせた構成を設計してください。

外部領域

本記事では「node0」から取り込んだ外部ディスク上に、データ格納領域を作成します。

外部ディスクによる簡単なLVMの構成イメージ

データ格納領域を作成する【LVM】

Linux標準のLVMを使用して、データーベースを載せる領域を作成します。本記事でのディスク領域には、下記を構成を想定しています。データ領域の作成作業は「db01」or「db02」何方か一方のサーバーで行います。ディスクを共有している為、一方で設定すれば他方にも反映します。本記事では、「db01」サーバーで設定を行っています。

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

下記に簡単な領域作成の流れを示します。

領域作成の流れ

  1. パーティション作成
  2. PV(フィジカルボリューム)作成
  3. VG(ボリュームグループ)作成
  4. LV(ロジカルボリューム)作成
  5. LVのファイルシステムフォーマット

パーティション作成

ここではパーティション「/dev/sdb」「/dev/sdc」「/dev/sdd」の中から、「/dev/sdb」を抜粋して「/dev/sdb1(第一パーティション)」「/dev/sdb2(第二パーティション)」「/dev/sdb3(第三パーティション)」を作成します。
残りの「/dev/sdc」「/dev/sdd」のパーティションも同様な手順で作成します。

作成パーティション構成

  • /dev/sdb
    • /dev/sdb1 10GB
    • /dev/sdb2 30GB
    • /dev/sdb3 5GB
  • /dev/sdc
    • /dev/sdc1 5GB
    • /dev/sdc2 5GB
    • /dev/sdc3 30GB
  • /dev/sdd
    • /dev/sdd1 50GB

下記のコマンドを入力して、外部ディスクへパーティションを作成します。

# fdisk /dev/sdb

下記のログを見ると長ったらしくてウザく見えますが、要求される質問に対して、対話形式でキーを入力していくだけです。やってみるとそうでもないことが分かります。

8行目:「m」でメニュー表示する
29行目:「n」でパーティションの新規作成を選択する
33行目:「p」でプライマリ(デフォルト)を選択する
34行目:パーティション番号を選択(デフォルトで「1」が選択される)
35行目:ファーストセクタ選択(デフォルトで使用可能な「先頭セクター」が選択される)
37行目:ラストセクタ選択(必要サイズ「10GB」を入力する)
40行目:「p」で作成パーティションを確認する
50行目:作成したパーティションが「/dev/sdb1」で作成されている

同様に残りのパーティション「/dev/sdb2」を作成します。

52行目:「n」でパーティションの新規作成を選択する
56行目:「p」でプライマリ(デフォルト)を選択する
57行目:パーティション番号を選択(デフォルトで「2」が選択される)
58行目:ファーストセクタ選択(デフォルトで使用可能な「先頭セクター」が選択される)
60行目:ラストセクタ選択(必要サイズ「30GB」を入力する)
63行目:「p」で作成パーティションを確認する
74行目:作成したパーティションが「/dev/sdb2」で作成されている

同様に残りのパーティション「/dev/sdb3」を作成します。

76行目:「n」でパーティションの新規作成を選択する
80行目:「p」でプライマリ(デフォルト)を選択する
81行目:パーティション番号を選択(デフォルトで「3」が選択される)
82行目:ファーストセクタ選択(デフォルトで使用可能な「先頭セクター」が選択される)
84行目:ラストセクタ選択(必要サイズ「5GB」を入力する)
87行目:「p」で作成パーティションを確認する
99行目:作成したパーティションが「/dev/sdb3」で作成されている

作成したすべてのパーティションのHEXコードを「8e(Linux LVM)」に変更します。

101行目:「t」でパーティション番号選択
102行目:でHEXコードに「8e」を入力する
106行目:「t」でパーティション番号選択
107行目:でHEXコードに「8e」を入力する
111行目:「t」でパーティション番号選択
112行目:でHEXコードに「8e」を入力する
116行目:「p」でパーティションのHEXコードを確認する
126行目:パーティション「/dev/sdb1」のHEXコードが8e Linux LVMに変更されている
127行目:パーティション「/dev/sdb2」のHEXコードが8e Linux LVMに変更されている
128行目:パーティション「/dev/sdb3」のHEXコードが8e Linux LVMに変更されている

同様にして残りの「/dev/sdc」「dev/sdd」のパーティションを作成します。

# fdisk /dev/sdc
# fdisk /dev/sdd

「/dev/sdc」「dev/sdd」すべてのディスクでパーティションが正しく作成されていれば、「fdisk -l」コマンド入力後、下記の様に表示されているはずです。

# fdisk -l /dev/sdb

# fdisk -l /dev/sdc

# fdisk -l /dev/sdd

なお、環境によってはOSがパーティションを認識するために、再起動が必要になることがあります。

PV(フィジカルボリューム)作成

下記のコマンドを入力して、作成した各ディスクのパーティションへ「PV(フィジカルボリューム)」を作成します。

# pvcreate /dev/sdb1 /dev/sdb2 /dev/sdb3
# pvcreate /dev/sdc1 /dev/sdc2 /dev/sdc3
# pvcreate /dev/sdd1

正しくPVが作成されているか「pvscan」コマンドで確認します。

# pvscan

VG(ボリュームグループ)作成

下記のコマンドを入力して、ボリュームグループを作成します。

# vgcreate data01_vg /dev/sdb1
# vgcreate data02_vg /dev/sdb2
# vgcreate data03_vg /dev/sdb3
# vgcreate data04_vg /dev/sdc1
# vgcreate data05_vg /dev/sdc2
# vgcreate data06_vg /dev/sdc3
# vgcreate backup_vg /dev/sdd1

下記のコマンドを入力して、作成されたVGの確認を行います。

# vgs

正常にVGが作成されているのが分かります。

LV(ロジカルボリューム)作成

本記事の設計では、作成するLVは、VG領域を100%使用することを想定しています。下記のコマンドを入力して、VGのサイズをすべて論理ボリュームへ割り当てます。

# lvcreate -n lv_sys -l 100%FREE data01_vg
# lvcreate -n lv_dat -l 100%FREE data02_vg
# lvcreate -n lv_idx -l 100%FREE data03_vg
# lvcreate -n lv_redo01 -l 100%FREE data04_vg
# lvcreate -n lv_redo02 -l 100%FREE data05_vg
# lvcreate -n lv_arch01 -l 100%FREE data06_vg
# lvcreate -n lv_back -l 100%FREE backup_vg

下記のコマンドを入力して、作成されたLVの確認を行います。

# lvs

VGサイズを100%使用してLVが作成されているのが分かります。

以上でLVMを使用して、共有ディスク上へデータ格納領域を作成できました。

LVのファイルシステムフォーマット

LVMは論理ボリュームを作成しただけでは、使用できません。適切なファイルシステムへフォーマットして、初めて使用可能になります。本記事では、データ格納領域を「ext4」にてフォーマットして使用します。

# mkfs -t ext4 /dev/data01_vg/lv_sys
# mkfs -t ext4 /dev/data02_vg/lv_dat
# mkfs -t ext4 /dev/data03_vg/lv_idx
# mkfs -t ext4 /dev/data04_vg/lv_redo01
# mkfs -t ext4 /dev/data05_vg/lv_redo02
# mkfs -t ext4 /dev/data06_vg/lv_arch01
# mkfs -t ext4 /dev/backup_vg/lv_back

下記のコマンドを入力して、ファイルシステムフォーマットが正常に「ext4」で行われていることを確認します。

# blkid | grep /dev/mapper/data

すべての論理ボリュームが「ext4」でフォーマットされていることが確認できます。

最後に、db02でも同様にLVM情報が取得できることを確認して終わります。db02へログインして下記のコマンドを実行します。
環境によりdb02の再起動を行ってディスク情報を再取得する必要がります。

# lvs

正常にdb02上でlvm情報が取得で来ているのが分かります。

以上です。お疲れさまでした。

よく読まれている記事

1

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

2

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

3

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

4

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

-仮想サーバー構築