Edited at
Tech DoDay 5

Logical Volume Manager の定義、I/O効率を改善する為LVMでストライプ化をテスト


LVMとは


  • LVMは「論理ボリューム管理:Logical Volume Manager」の略でボリューム管理をするツールです。

  • 管理対象は複数の論理ボリュームを集約したLVM論理ボリュームです。

image.png


  • 用語:

物理ボリューム(パーティション) 

パーティションであり、Linuxではsda1やsdb2など

ボリュームグループ

物理ボリュームはボリュームグループに統合され、論理ボリュームへ割り当てるディスク領域のプールが作成される。

論理ボリューム

ボリュームグループから切り出した仮想的なパーティション領域。従来のパーティションと同じようにファイルシステムを作って利用可能です。


  • LVMを利用する流れ


  1. 物理ディスクから物理ボリューム(パーティション)を作成

    (sda1、sdb1、sdc1)


  2. 物理ボリュームのシステムタイプを、83(Linux)から8e (LVM)に変更


  3. ボリュームグループを作成(Vol-00)


  4. 論理ボリュームを作成(LogicVol-01)


  5. 論理ボリュームをmount(/mnt/lvm)


image.png


LVMのの機能



  • リニアボリューム


    • 複数の物理ボリュームの領域を 1 つの論理ボリュームに統合します。
      例えば:
      60GB ディスクが 2 つある場合、120GB の論理ボリュームを作成できます。

    • 通常データは設定した順番に書き込まれます。
      PV1 ⇒ PV2

    • 論理ボリュームを構成している物理ボリュームは同じサイズである必要はありません。


    • 必要に応じて容量が追加できることでオブジェクトストレージみたいものです。

      image.png





    



  • ストライプ化 ボリューム


    • 単一ディスクでのデータ格納とは対照的に、複数のディスクにわたってデータを分散させる手段です。そしてストライプ化では、I/O は並行して実行されますので効率を改善することができます。

    • 以下の図では、3 つの物理ボリューム全体にデータがストライプ化されている状態を示しています。

    データの 1 番目のストライプは PV1 に書き込まれます。

    データの 2 番目のストライプは PV2 に書き込まれます。

    データの 3 番目のストライプは PV3 に書き込まれます。

    データの 4 番目のストライプは PV1 に書き込まれます。

    image.png




  • ミラー化 ボリューム


    • ミラーはデータの同一コピーを異なるデバイスに維持します。データが 1 つ目のデバイスに書き込まれると、2 つ目のデバイスにも書き込まれ、データのミラー化が行われます。この重複保存は、デバイス障害に対する保護になります。

    • ミラー化した際、同一の物理ボリュームを使用せずに異なる物理ボリュームを使用した場合、利用できるのは容量の小さな物理ボリュームのサイズとなります。 1GBディスクと2GBディスクをミラー化した場合の使用可能な容量は1GBになります。

    • 実際に各サーバでLVMのスナップショットとミラー化を利用せずにVMwareやStorageなどがスナップショットとミラー化をサポートするので、集中的に管理した方がいいです



image.png



  • スナップショット


    • 論理ボリュームのシンプロビジョニング(thin provisioning)が可能になりました。スナップショットは、ある瞬間のファイルシステムのイメージを保持したものです。


    • スナップショットは全データを複製するのではなく、元のデータへのリンク情報というポインタだけを残したものであるため、スナップショット領域はデータ元よりも格段に少ない容量で済み、元データが大きい場合もスナップショット作成処理は数秒で完了します。元のデータに変更が加えられた場合は、スナップショット領域に変更前のデータが退避されます。

      image.png






LVMでストライプ化論理ボリュームをテスト


  • I/O効率を改善することがでるので今回LVMでストライプ化のテストを実施します。
    テスト目的:


    • 二つの2Tパーティションから4TBのLVM論理パーティションを組み立てて、
      ストライプできるか確認します。

    • MBR標準で2T 以上のパーティションが作成できない問題を解決します。




  • CentOSバージョンとパーティションテーブルを確認

    CentOSバージョン:6.10

    パーティションテーブル:msdos ➞ MBR標準です。

    image.png




  • 操作する対象のsdb、sdcを確認

    image.png



  • 物理ボリュームを作成

    image.png



  • ボリュームグループを作成

    image.png




  • 論理ボリュームを作成

    オプション: 

    -n lv-data 論理ボリューム名を指定

    -l 100%FREE 空き容量を全て使うことができる

    -i2 ストライプするボリューム数(2)を指定

    -vg-data どのボリュームグループか名前を指定

    image.png




  • ストライプを確認

    lvdisplay 論理ボリュームの情報を表示

    m 論理ボリュームのマッピングの情報を表示

    image.png




  • 実際に論理ボリュームをmountし、データを作成してI/Oテスト

    ddで8GB のデータを作成して、I/Oテスト

    bs    ブロックデータのサイズを指定

    count   ブロックデータの数を指定

    image.png



  • 同時にiostatで観察sdbとsdcが一斉に書き込むことができました。

    image.png