ウェブサイト検索

ストライピングI/Oを使用して複数の論理ボリューム管理ディスクを管理する


この記事では、論理ボリュームがストライピングI/Oによりデータをディスクにどのように書き込むかを見ていきます。論理ボリューム管理には、ストライピングI/Oを使用して複数のディスクにデータを書き込むことができるクールな機能があります。

LVMストライピングとは何ですか?

LVMストライピングは、データを複数のディスクに書き込む機能の1つで、単一の物理ボリュームに継続的に書き込むのではなく、データを分散して書き込みます。

ストライピングの特徴
  1. ディスクの性能が向上します。
  2. 1つのディスクに対して何度もハード書き込みを繰り返すのを防ぎます。
  3. 複数のディスクにストライピングを使用することで、ディスクの容量不足を減らすことができます。

論理ボリューム管理において、論理ボリュームを作成する必要がある場合、拡張領域はボリュームグループおよび物理ボリュームに完全にマッピングされます。そのような状況で、いずれかのPV(物理ボリューム)が満杯になった場合、他の物理ボリュームからさらに拡張領域を追加する必要があります。代わりに、PVに拡張領域を追加するのではなく、特定の物理ボリュームへの書き込みI/Oを使用するように論理ボリュームを設定することができます。

4つのディスクドライブがあり、4つの物理ボリュームを指していると仮定します。各物理ボリュームが合計で100 I/Oを処理できる場合、私たちのボリュームグループは合計で400 I/Oを得ることになります。

ストライプメソッドを使用しない場合、ファイルシステムは基盤となる物理ボリューム全体に書き込みを行います。例えば、物理ボリューム100のI/Oの一部のデータは、最初の(sdb1)PVにのみ書き込まれます。書き込み時にストライプオプションで論理ボリュームを作成すると、100 I/Oを分割して4台のドライブに書き込むことになり、つまり、4台のドライブそれぞれに25 I/Oが送られます。

これはラウンドロビンプロセスで行われます。もし論理ボリュームの一つを拡張する必要がある場合、この状況では1または2のPVを追加することはできません。論理ボリュームのサイズを拡張するためには、すべての4つのPVを追加しなければなりません。これはストライプ機能の欠点の一つであり、論理ボリュームを作成する際には、すべての論理ボリュームで同じストライプサイズを指定する必要があることがわかります。

論理ボリューム管理には、複数のPVに同時にデータをストライプする機能があります。論理ボリュームに精通している場合は、論理ボリュームストライプの設定に進んでください。そうでない場合は、論理ボリューム管理の基本について知っておく必要があります。論理ボリューム管理について詳しく知るために、以下の記事をお読みください。

要件

  1. Linuxで柔軟なLVMディスクストレージを設定する - パートI
  2. LinuxにおけるLVMの拡張/縮小方法 - パートII
私のサーバー設定

ここでは、私の作業にCentos6.5を使用しています。同じ手順は、RHEL、Oracle Linux、そしてほとんどのディストリビューションでも使用できます。

Operating System :	CentOS 6.5
IP Address :		192.168.0.222
Hostname : 		tecmint.storage.com

ストライピングI/Oを使用した論理ボリューム管理

デモの目的で、私は4つのハードドライブを使用しました。それぞれのドライブのサイズは1GBです。以下に示すように、fdiskコマンドを使用して4つのドライブをお見せします。

# fdisk -l | grep sd

これから、これらの4つのハードドライブsdb、sdc、sdd、sdeのパーティションをfdiskコマンドを使用して作成する必要があります。パーティションを作成するには、この記事のPart 1に記載されている手順#4に従ってください(上のリンク参照)。パーティションを作成する際には、タイプをLVM(8e)に変更することを忘れないでください。

パーティションを正常に作成した後は、これらの4つのドライブを使用して物理ボリュームを作成します。PVを作成するには、以下のpvcreateコマンドを使用します。

# pvcreate /dev/sd[b-e]1 -v

PVを作成した後は、pvs コマンドを使用してそれらをリスト表示できます。

# pvs

今度はこれら4つの物理ボリュームを使用してボリュームグループを定義する必要があります。ここでは、物理拡張サイズ(PE)が16MBのボリュームグループをvg_stripという名前で定義しています。

# vgcreate -s 16M vg_strip /dev/sd[b-e]1 -v

上記のオプションに関してコマンドで使用される説明。

  1. [b-e]1 – hddの名前をsdb1、sdc1、sdd1、sde1のように定義してください。
  2. -s – あなたの物理的な範囲のサイズを定義します。
  3. -v – 冗長。

次に、新しく作成されたボリュームグループを確認します。

# vgs vg_strip

VGについての詳細情報を得るには、vgdisplayコマンドにオプションとして「-v」を使います。これにより、すべての物理ボリュームが表示され、vg_stripボリュームグループで使用されているものが分かります。

# vgdisplay vg_strip -v

話を元に戻すと、論理ボリュームを作成する際には、ストライプ値を定義する必要があります。ストライプ方式を使用して、データが論理ボリュームにどのように書き込まれるかを決定します。

ここで、lv_tecmint_strp1という名前の論理ボリュームを900MBのサイズで作成しています。これはvg_stripボリュームグループに属し、4ストライプとして定義しています。つまり、私の論理ボリュームへのデータ書き込みは4つのPVに分散される必要があります。

# lvcreate -L 900M -n lv_tecmint_strp1 -i4 vg_strip
  1. -L –論理ボリュームサイズ
  2. -n –論理ボリューム名
  3. -i –ストライプ

上の画像では、デフォルトのストライプサイズが64 KBであることがわかります。独自のストライプ値を定義する必要がある場合は、-I(大文字のI)を使用できます。論理ボリュームが作成されていることを確認するためには、次のコマンドを使用してください。

# lvdisplay vg_strip/lv_tecmint_strp1

次の質問は、ストライプが4つのドライブに書き込まれていることをどうやって確認するかです。ここでは「lvdisplay」と-m(論理ボリュームのマッピングを表示)コマンドを使用して確認できます。

# lvdisplay vg_strip/lv_tecmint_strp1 -m

定義されたストライプサイズを作成するために、256KBの自分で定義したストライプサイズを使用して1GBのサイズの論理ボリュームを1つ作成する必要があります。今、私は3つのPVのみにストライプを適用するつもりです。ここで、どのPVをストライプにするかを定義できます。

# lvcreate -L 1G -i3 -I 256 -n lv_tecmint_strp2 vg_strip /dev/sdb1 /dev/sdc1 /dev/sdd1

次に、ストライプのサイズとどのボリュームがストライプされているかを確認してください。

# lvdisplay vg_strip/lv_tecmint_strp2 -m

デバイスマッパーを使用する時が来ました。これには、コマンド「dmsetup」を使用します。これは、デバイスマッパードライバーを使用する論理デバイスを管理する低レベルの論理ボリューム管理ツールです。dmsetupコマンドを使用してlvm情報を確認し、どのストライプがどのドライブに依存しているかを知ることができます。

# dmsetup deps /dev/vg_strip/lv_tecmint_strp[1-2]

ここでは、strp1が4つのドライブに依存し、strp2が3つのデバイスに依存していることがわかります。

論理ボリュームを通じてデータを書き込む方法を学んだことを願っています。この設定には、論理ボリューム管理の基本を理解している必要があります。次の記事では、論理ボリューム管理での移行方法をお見せしますので、それまでの間、更新をお楽しみにし、この記事について貴重なコメントを忘れずにしてください。

関連記事: