サイト内の現在位置を表示しています。

クラウド環境でLinuxのミラーディスク型クラスターを構築する際の注意ポイント

CLUSTERPRO オフィシャルブログ ~クラブロ~

はじめに

クラウド環境でLinuxのミラーディスク型クラスターを構築する際の注意ポイントをご紹介します。

Linuxでミラーディスク型クラスターを構築する際に、デバイスファイル名を指定する必要があります。
しかし、クラウド環境によっては、運用中にデバイスファイル名が変更されることがあるため注意が必要です。

本記事の執筆時点では、以下のクラウド環境においてデバイスファイル名の変更を確認済みです。
  • Amazon Web Services
  • Microsoft Azure

  • Amazon Web Services(以降、AWS)環境では、Nitro Systemベースのインスタンスタイプを使用した場合にデバイスファイル名の変更を確認しています。
  • Oracle Cloud Infrastructure環境では、デバイスファイル名の固定が可能であるためデバイスファイル名の変更は発生しません。
  • Microsoft Azure環境で、デバイスファイル名の固定が可能となりました。(2021/8/18時点)
    設定手順の詳細は、以下を参照ください。

今回は、AWS環境を例にミラーディスク型クラスターを構築する際の注意ポイントと対処方法をご紹介します。
なお、対処方法については、その他のクラウド環境の場合も同様ですので、ぜひご一読ください。

この記事の内容

ミラーディスク型クラスター構築時の注意ポイント

Linuxでミラーディスク型クラスターを構築する場合、ミラーディスクリソースのデータパーティションデバイス名、クラスタパーティションデバイス名に、パーティションのデバイスファイル名を指定します。(例./dev/sdb1、/dev/sdb2)

しかし、AWS環境ではインタンスタイプの変更やインスタンスの再起動、EBSの追加などによりデバイスファイル名が変更されることがあります。
ミラーディスク型クラスターの運用中にデバイスファイル名が変更されることで正しくミラーリングができなくなる恐れがあります。

インスタンスタイプによるデバイスファイル名の違い

AWSのEC2インスタンスのインスタンスタイプには、Nitro SystemベースのインスタンスタイプとNitro Systemベースではないインスタンスタイプがあります。
インスタンスタイプによってデバイスファイル名が異なるため、運用中にインスタンスタイプを変更する場合は注意が必要です。

デバイスファイル名の違いは以下の通りです。

  • Nitro Systemベースではないインスタンスタイプ
    例)インスタンスタイプ:t2インスタンス、OS:Red Hat Enterprise Linux 7.6

# lsblk
NAME                      MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
xvda                        202:0     0  10G  0 disk
├─xvda1                  202:1     0   1M  0 part
└─xvda2                  202:2     0  10G  0 part /
xvdb                        202:16   0  11G  0 disk

  • Nitro Systemベースのインスタンスタイプ
    例)インスタンスタイプ:t3インスタンス、OS:Red Hat Enterprise Linux 7.6

# lsblk
NAME                      MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
nvme0n1                 259:2    0  10G  0 disk
├─nvme0n1p1         259:3    0   1M  0 part
└─nvme0n1p2         259:4    0  10G  0 part /
nvme1n1                 259:0    0  11G  0 disk

EBS追加によるデバイスファイル名の入れ替わり

Nitro Systemベースのインスタンスで、EBSを追加した場合に、デバイスファイル名が入れ替わった事例を紹介します。
その他、OS再起動時にデバイスファイル名が入れ替わった事例もあります。

・EBS追加前

# lsblk
NAME              MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
nvme0n1         259:1    0  10G  0 disk
├─nvme0n1p1 259:4    0   1M  0 part
└─nvme0n1p2 259:5    0  10G  0 part /
nvme1n1         259:0    0  11G  0 disk  ★既存のデバイス名
├─nvme1n1p1 259:2    0   1G  0 part
└─nvme1n1p2 259:3    0  10G  0 part
nvme2n1         259:6    0   5G  0 disk  ★既存のデバイス名


・EBS追加後

# lsblk
NAME              MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
nvme0n1         259:4    0  10G  0 disk
├─nvme0n1p1 259:5    0   1M  0 part
└─nvme0n1p2 259:6    0  10G  0 part /
nvme1n1         259:0    0   8G  0 disk   ★追加したディスク
nvme2n1         259:1    0  11G  0 disk  ★デバイス名が変更された
├─nvme2n1p1 259:2    0   1G  0 part
└─nvme2n1p2 259:3    0  10G  0 part
nvme3n1         259:7    0   5G  0 disk  ★デバイス名が変更された

論理ボリュームを利用したミラーディスク型クラスター構築

ご紹介した通り、AWS環境ではEBSを追加したときなどに、デバイスファイル名が変更される場合があります。
本件の回避策として、論理ボリュームの利用をご紹介します。

論理ボリュームを作成し、論理ボリューム名をミラーディスクリソースに設定することで、パーティションのデバイスファイル名が変更された場合でも、論理ボリューム名が変更されることなく使用することが可能です。

以下、論理ボリュームの作成例です。
インスタンスタイプ:t3インスタンス、OS:Red Hat Enterprise Linux 7.6 の環境で実施しています。
環境によってデバイスファイル名が異なりますので、適宜、読み替えてください。

  • 1.デバイスにパーティションを作成します。
    (例.デバイスファイル名:/dev/nvme1n1、パーティションのシステムID:Linux LVM)

# fdisk /dev/nvme1n1
Welcome to fdisk (util-linux 2.23.2).

Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.

Device does not contain a recognized partition table
Building a new DOS disklabel with disk identifier 0x6d528fd3.

Command (m for help): n
Partition type:
   p   primary (0 primary, 0 extended, 4 free)
   e   extended
Select (default p): p
Partition number (1-4, default 1): 1
First sector (2048-23068671, default 2048):
Using default value 2048
Last sector, +sectors or +size{K,M,G} (2048-23068671, default 23068671):
Using default value 23068671
Partition 1 of type Linux and of size 11 GiB is set

Command (m for help): t
Selected partition 1
Hex code (type L to list all codes): 8e
Changed type of partition 'Linux' to 'Linux LVM'

Command (m for help): p

Disk /dev/nvme1n1: 11.8 GB, 11811160064 bytes, 23068672 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0x6d528fd3

        Device Boot      Start         End      Blocks   Id  System
/dev/nvme1n1p1            2048    23068671    11533312   8e  Linux LVM

  • 2.1.で作成したパーティションに物理ボリュームを作成します。

 # pvcreate /dev/nvme1n1p1

  • 3.ボリュームグループを作成します。
    (例.ボリュームグループ名:lvg-test)

 # vgcreate lvg-test /dev/nvme1n1p1

  • 4.クラスタパーティション用の論理ボリュームを作成します。
    (例.論理ボリューム名:lvm-test1、サイズ:1GB)

 # lvcreate --name lvm-test1 --size 1GB lvg-test

  • 5.データパーティション用の論理ボリュームを作成します。
    (例.論理ボリューム名:lvm-test2、サイズ:残りサイズすべて)

 # lvcreate --name lvm-test2 -l 100%FREE lvg-test

作成した論理ボリュームをミラーディスクリソースに設定します。

まとめ

今回は、クラウド環境でLinuxのミラーディスク型クラスターを構築する場合の注意ポイントについてご紹介しました。
クラウド環境でLinuxのミラーディスク型クラスターを構築する場合は、是非事前にご一読ください。
最後まで読んでいただきありがとうございました。

お問い合わせ

本記事に関するお問い合わせは、popupお問い合わせ窓口までお問い合わせください。