[SPS for Linux] LVM above DataKeeper Resource 構成でのオンライン拡張

    LVM above DataKeeper Resource 構成でのオンラインディスク拡張手順

    LifeKeeper for Linux では、OSから対象のLVの拡張が認識できさえすれば、オンラインでファイルシステムを拡張することが可能です。これは、LVM Recovery Kit(LVM RK)を利用することで実現できます。

    LVM RKでは、共有ストレージのLUNをディスクリソースとしてLVMのPVを構成すると、lvmlvリソースおよびlvmvgリソースの子リソースとして登録されます。
    一方で、共有ストレージが用意できない場合、DataKeeper でData Replication Resource(DataKeeper Resource)を作成してPVとして登録することでLVMの構成とすることが出来ます。このようにDataKeeper Resource上にLVMを構築し、LifeKeeper for Linuxで保護することをLVM above DataKeeper Resourceと呼んでいます。

    image1

    今回は、このLVM above DataKeeper Resourceのオンライン拡張の手順を確認しましたので紹介します。

    動作確認環境情報

    ハードウェアスペックはVM作成時の初期値(最小限)の構成を使用します。

    Platform: vSphere 6.5

    VM スペック

     CPU: Intel(R) Xeon(R) CPU E5-2660 0 @ 2.20GHz  X 1

     Memory: 2048MB

    OS: RHE6.8 ( Active: pd131, Standby: pd132)

    Cluster software: LifeKeeper for Linux v9.3

    LVM on DataKeeper リソース構成のディスク拡張手順

    以下のリソース構成のLVに対して、50GBの新しいディスク追加し容量を拡張する手順を確認します。

    ディスク増設前の状態

    image2

    ディスクの認識

    50GBの新しいディスクを各ノード(OS)に認識させます。(sdb1, sdc1 が既存のLVを構成するディスク、sdd1 が追加対象のディスクです。

    ■labs.sios.com で認識したディスク

    /dev/sdb1

    [root@pd131 ~]# fdisk -l /dev/sdb

    ディスク /dev/sdb: 32.2 GB, 32212254720 バイト
    ヘッド 64, セクタ 32, シリンダ 30720
    Units = シリンダ数 of 2048 * 512 = 1048576 バイト
    セクタサイズ (論理 / 物理): 512 バイト / 512 バイト
    I/O size (minimum/optimal): 512 bytes / 512 bytes
    ディスク識別子: 0x0006ef0d

    デバイス ブート 始点 終点 ブロック Id システム
    /dev/sdb1 1 30720 31457264 8e Linux LVM

    /dev/sdc1

    [root@pd131 ~]# fdisk -l /dev/sdc

    ディスク /dev/sdc: 32.2 GB, 32212254720 バイト
    ヘッド 64, セクタ 32, シリンダ 30720
    Units = シリンダ数 of 2048 * 512 = 1048576 バイト
    セクタサイズ (論理 / 物理): 512 バイト / 512 バイト
    I/O size (minimum/optimal): 512 bytes / 512 bytes
    ディスク識別子: 0x0009c29d

    デバイス ブート 始点 終点 ブロック Id システム
    /dev/sdc1 1 30720 31457264 8e Linux LVM

    /dev/sdd1

    [root@pd131 ~]# fdisk -l /dev/sdd

    ディスク /dev/sdd: 53.7 GB, 53687091200 バイト
    ヘッド 64, セクタ 32, シリンダ 51200
    Units = シリンダ数 of 2048 * 512 = 1048576 バイト
    セクタサイズ (論理 / 物理): 512 バイト / 512 バイト
    I/O size (minimum/optimal): 512 bytes / 512 bytes
    ディスク識別子: 0x000cb58e

    デバイス ブート 始点 終点 ブロック Id システム
    /dev/sdd1 1 51200 52428784 8e Linux LVM

    ■labs.sios.com で認識したディスク

    /dev/sdb1

    [root@pd132 ~]# fdisk -l /dev/sdb

    ディスク /dev/sdb: 32.2 GB, 32212254720 バイト
    ヘッド 64, セクタ 32, シリンダ 30720
    Units = シリンダ数 of 2048 * 512 = 1048576 バイト
    セクタサイズ (論理 / 物理): 512 バイト / 512 バイト
    I/O size (minimum/optimal): 512 bytes / 512 bytes
    ディスク識別子: 0x0002ba04

    デバイス ブート 始点 終点 ブロック Id システム
    /dev/sdb1 1 30720 31457264 8e Linux LVM

    /dev/sdc1

    [root@pd132 ~]# fdisk -l /dev/sdc

    ディスク /dev/sdc: 32.2 GB, 32212254720 バイト
    ヘッド 64, セクタ 32, シリンダ 30720
    Units = シリンダ数 of 2048 * 512 = 1048576 バイト
    セクタサイズ (論理 / 物理): 512 バイト / 512 バイト
    I/O size (minimum/optimal): 512 bytes / 512 bytes
    ディスク識別子: 0x00057be8
    デバイス ブート 始点 終点 ブロック Id システム
    /dev/sdc1 1 30720 31457264 8e Linux LVM

    /dev/sdd1

    [root@pd132 ~]# fdisk -l /dev/sdd

    ディスク /dev/sdd: 53.7 GB, 53687091200 バイト
    ヘッド 64, セクタ 32, シリンダ 51200
    Units = シリンダ数 of 2048 * 512 = 1048576 バイト
    セクタサイズ (論理 / 物理): 512 バイト / 512 バイト
    I/O size (minimum/optimal): 512 bytes / 512 bytes
    ディスク識別子: 0x0007c833

    デバイス ブート 始点 終点 ブロック Id システム
    /dev/sdd1 1 51200 52428784 8e Linux LVM

    DataKeeper Replicationリソースの作成

    追加対象のディスクに対して、新たにレプリケーションを設定します。
    以下の画像の順に操作してください。

    LifeKeeper GUI からCreate Resource Hierarchy をクリックして、Data Replication を選択

    image3

    デフォルトのまま Next をクリック

    image4

    アクティブノードを選択してNext をクリック

    image5

    Data Replication Resource を選択してNext をクリック

    image6

    追加対象のディスクを選択してNextをクリック

    image7

    Continueをクリック

    image8

    デフォルトのままNext をクリック

    image9

    デフォルトのままNext をクリック

    image10

    No< Synchronous > を選択して Nextをクリック

    image11

    Createをクリック

    image12

    作成に成功したことを確認して、Nextをクリック

    image13

    Data Replicationリソースをスタンバイノードに拡張する。設定値はデフォルトの値を使用するのでAccept Defaultsをクリック

    image14

    レプリケーションのターゲットディスクを選択してAccept Defaults をクリック

    image15

    任意のレプリケーション経路を選択してAccept Defaultsをクリック

    image16

    拡張が成功したら ”Hierarchy successfully extended” が表示される。Finishをクリック

    image17

    Done をクリック。Data Replicationリソース作成、拡張が完了

    image18

    以下のようにdatarep-sdd1が追加されたことを確認

    image19_2

    これで、追加対象のディスクに対してレプリケーションが設定されました。
    Data Replicationリソース作成直後はResyncing のステータスとなり、同期が終わるまではスイッチオーバーは行えないことに注意してください。

    追加対象ディスクのLVMへの組み込み

    この作業は、Resyncing 中に行うこともできます。

    作成したData Replicationリソースのデバイス名を確認するため、/proc/mdstat ファイル内の記述を確認。以下の例では、sdd1デバイスはmd2で作成されている

    [root@pd131 ~]# cat /proc/mdstat
    Personalities : [raid1]
    md2 : active raid1 nbd17[2](W) sdd1[0]
    52428784 blocks super non-persistent [2/1] [U_]
    [==========>……….] recovery = 50.6% (26551680/52428784) finish=8.3min speed=51678K/sec
    bitmap: 51/100 pages [204KB], 256KB chunk, file: /opt/LifeKeeper/bitmap_datarep-sdd1

    md0 : active raid1 nbd1[2](W) sdb1[0]
    31457264 blocks super non-persistent [2/2] [UU]
    bitmap: 0/60 pages [0KB], 256KB chunk, file: /opt/LifeKeeper/bitmap_datarep-sdb1

    md1 : active raid1 nbd9[2](W) sdc1[0]
    31457264 blocks super non-persistent [2/2] [UU]
    bitmap: 0/60 pages [0KB], 256KB chunk, file: /opt/LifeKeeper/bitmap_datarep-sdc1

    unused devices: <none>

    #/dev/md2をPVとして登録

    [root@pd131 ~]# pvcreate /dev/md2
    Physical volume “/dev/md2” successfully created

    #/dev/md2がPVとして登録されたことを確認

    # pvs
    PV VG Fmt Attr PSize PFree
    /dev/md0 VG_PGSQL lvm2 a–u 30.00g 0
    /dev/md1 VG_PGSQL lvm2 a–u 30.00g 0
    /dev/md2 lvm2 —- 50.00g 50.00g
    /dev/sda2 vg_pd131 lvm2 a–u 15.51g 0

    拡張作業

    VG => LV => ファイルシステム の順に拡張を行います。

    まずVGを拡張

    # 拡張前

    # vgs
    VG #PV #LV #SN Attr VSize VFree
    VG_PGSQL 2 1 0 wz–n- 59.99g 0
    vg_pd131 1 2 0 wz–n- 15.51g 0

    #vgextend でVGの拡張

    # vgextend VG_PGSQL /dev/md2
    Volume group “VG_PGSQL” successfully extended

    #拡張後、VGの容量が増えていることを確認

    # vgs
    VG #PV #LV #SN Attr VSize VFree
    VG_PGSQL 3 1 0 wz–n- 109.99g 50.00g
    vg_pd131 1 2 0 wz–n- 15.51g 0

    次にLVを拡張

    #拡張前

    # lvs
    LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
    lv01 VG_PGSQL -wi-ao—- 59.99g
    lv_root vg_pd131 -wi-ao—- 13.91g
    lv_swap vg_pd131 -wi-ao—- 1.60g

    # lvextendコマンドでLVサイズを拡張

    # lvextend -l +100%FREE /dev/VG_PGSQL/lv01
    Size of logical volume VG_PGSQL/lv01 changed from 59.99 GiB (15358 extents) to 109.99 GiB (28157 extents).
    Logical volume lv01 successfully resized.

    #拡張後、LVの容量が増えていることを確認

    # lvs
    LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
    lv01 VG_PGSQL -wi-ao—- 109.99g
    lv_root vg_pd131 -wi-ao—- 13.91g
    lv_swap vg_pd131 -wi-ao—- 1.60g

    最後にファイルシステムの拡張

    # 拡張前

    # df -h
    Filesystem Size Used Avail Use% Mounted on
    /dev/mapper/vg_pd131-lv_root
    14G 5.3G 7.7G 41% /
    tmpfs 1004M 132K 1003M 1% /dev/shm
    /dev/sda1 477M 40M 412M 9% /boot
    /root/sps_930.img 72M 72M 0 100% /sps
    /dev/sr0 3.7G 3.7G 0 100% /mnt
    /dev/mapper/VG_PGSQL-lv01 59G 85M 56G 1% /pgsql/data

    # resize2fsコマンドでファイルシステムを拡張

    *ここでは、1ミリ秒間隔でpsql コマンドを使用してテーブルにデータを1行書き込みながら同時アクセス数1で実施したところ、CPU の使用率は17% 程度でした。

    # resize2fs /dev/mapper/VG_PGSQL-lv01
    resize2fs 1.41.12 (17-May-2010)
    Filesystem at /dev/mapper/VG_PGSQL-lv01 is mounted on /pgsql/data; on-line resizing required
    old desc_blocks = 4, new_desc_blocks = 7
    Performing an on-line resize of /dev/mapper/VG_PGSQL-lv01 to 28832768 (4k) blocks.
    The filesystem on /dev/mapper/VG_PGSQL-lv01 is now 28832768 blocks long.

    #拡張後、ファイルシステムの容量が増えていることを確認

    # df -h
    Filesystem Size Used Avail Use% Mounted on
    /dev/mapper/vg_pd131-lv_root
    14G 5.3G 7.7G 41% /
    tmpfs 1004M 132K 1003M 1% /dev/shm
    /dev/sda1 477M 40M 412M 9% /boot
    /root/sps_930.img 72M 72M 0 100% /sps
    /dev/sr0 3.7G 3.7G 0 100% /mnt
    /dev/mapper/VG_PGSQL-lv01 109G 93M 103G 1% /pgsql/data

    Data Replicationリソースの既存リソースツリーへの組み込み

    手順2で作成した Data Replicationリソースがlvmvg リソースの下位に配置されるよう、リソース階層を構成します。

    lvmvgリソースを右クリックして、Create Dependencyをクリック

    image20

    作成したData Replicationリソースを選択してNextをクリック

    image21

    親リソースがlvmvgリソース、子リソースがData Replicationリソースとなることを確認してCreate Dependencyをクリック

    image22

    Doneを押して依存関係の作成が完了

    image23

    lvmvgリソースとData Replicationリソースの間に依存関係が作成されました。

    以下のようにDataKeeperリソースが既存のリソースツリーに組み込まれたことを確認

    image24

    Data Replicationリソースの同期が完了している(Resyncingステータスでない)ことを確認した後、スイッチオーバーを行い、スタンバイノードでもLVMの構成に差がないことを確認

    スイッチオーバー開始

    image25

    スタンバイノードへの切り替わり中

    image26

    スイッチオーバー完了

    image27

    アクティブとなったノードでLVのサイズやマウントしたディスクのサイズが、スイッチオーバー前と変わっていないことを確認

    # lvs
    LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
    lv01 VG_PGSQL -wi-ao—- 109.99g
    lv_root vg_pd132 -wi-ao—- 13.91g
    lv_swap vg_pd132 -wi-ao—- 1.60g

    # df -h
    Filesystem Size Used Avail Use% Mounted on
    /dev/mapper/vg_pd132-lv_root
    14G 5.2G 7.7G 41% /
    tmpfs 1004M 132K 1003M 1% /dev/shm
    /dev/sda1 477M 40M 412M 9% /boot
    /root/sps_930.img 72M 72M 0 100% /sps
    /dev/sr0 3.7G 3.7G 0 100% /mnt
    /dev/mapper/VG_PGSQL-lv01 109G 94M 103G 1% /pgsql/data

    HA環境のディスク増設も、LifeKeeper と LVM のテクノロジの組み合わせによって、オンラインで簡単に行えることが確認できました。

    可用性を保ちながらディスク仮想化のメリットを最大限に生かすことに成功した、LifeKeeper/DataKeeperの活用事例のご紹介でした。

     

    お問合せ

    「見積を依頼したい」「もっと詳しい話を聞いてみたい。」といった場合は、下記よりお気軽にお問い合わせください。

    お問い合わせ 

    SNSでもご購読できます。