ウェブサイト検索

論理ボリューム管理 (LVM) におけるスリムプロビジョニングボリュームの設定 - 第 IV 部


論理ボリューム管理には、スナップショットやスリムプロビジョニングなどの優れた機能があります。前回の(パート III)では、論理ボリュームのスナップショットの取り方を見ました。この記事では、LVMでスリムプロビジョニングボリュームをセットアップする方法を見ていきます。

スリムプロビジョニングとは何ですか?

スリムプロビジョニングは、薄いプール内に仮想ディスクを作成するためにlvmで使用されます。私のサーバーに15GBのストレージ容量があると仮定しましょう。すでに5GBのストレージを持つ2人のクライアントがいます。あなたは3人目のクライアントで、5GBのストレージを要求しました。以前は、全体の5GB(厚いボリューム)を提供していましたが、その5GBのストレージのうち2GBを使用し、3GBは空いており、後で埋めることができます。

しかし、スリムプロビジョニングで私たちが行うことは、大きなボリュームグループの中にスリムプールを定義し、そのスリムプールの中にスリムボリュームを定義することです。そうすることで、あなたが書き込むファイルはすべて保存され、あなたのストレージは5GBと表示されます。しかし、実際には全5GBがディスク全体に割り当てられるわけではありません。同じプロセスは他のクライアントにも行われます。私が言ったように、クライアントは2人いて、あなたが私の3人目のクライアントです。

では、クライアントに割り当てた合計のGBはどれくらいかを考えてみましょう。すでに15GBは完了しています。もし誰かが私に5GBを求めてきた場合、私は渡すことができるでしょうか?答えは「はい」です。ここで、スリムプロビジョニングを使用することで、15GBを割り当てているにもかかわらず、4番目のクライアントに5GBを渡すことができます。

警告: 15GBを超える場合、15GB以上のプロビジョニングはオーバープロビジョニングと呼ばれます。

どのように機能しますか?そして、新しいクライアントにどのようにストレージを提供しますか?

私はあなたに5GBを提供しましたが、あなたは2GBしか使用できず、残りの3GBは無料になります。厚いプロビジョニングでは、最初に全てのスペースを割り当てるため、これを行うことはできません。

薄いプロビジョニングでは、あなたのために5GBを定義しても、ボリュームを定義する際にディスクスペース全体が割り当てられるわけではありません。データの書き込みに応じて5GBまで成長していきます。理解できたと思います。同様に、他のクライアントもフルボリュームを使用しないため、新しいクライアントに5GBを追加する機会があります。これをオーバープロビジョニングと呼びます。

しかし、すべてのボリュームの成長を監視することは必須です。そうしなければ、災害につながります。もし4人のクライアント全員がデータを誤ってディスクに書き込んだ場合、オーバープロビジョニングが行われているとしても、15GBが満杯になり、ボリュームがドロップされる問題が発生する可能性があります。

要件

  1. LinuxでLVMを使用してディスクストレージを作成する - パート1
  2. LinuxにおけるLVMの拡張/縮小方法 - パートII
  3. LVMにおける論理ボリュームのスナップショットを作成/復元する方法 – 第III部
私のサーバー設定
  1. オペレーティングシステム – LVM インストール付き CentOS 6.5
  2. サーバーIP – 192.168.0.200

ステップ1: シンポールとボリュームの設定

では、薄いプールと薄いボリュームの設定方法を実際にやってみましょう。まず、大きなサイズのボリュームグループが必要です。ここではデモ用に15GBのボリュームグループを作成しています。次に、以下のコマンドを使用してボリュームグループを一覧表示します。

# vgcreate -s 32M vg_thin /dev/sdb1

次に、スリムプールとボリュームを作成する前に、論理ボリュームの利用可能サイズを確認してください。

# vgs
lvs

上記のLVS出力には、ファイルシステムとスワップ用のデフォルトの論理ボリュームのみが存在することがわかります。

薄いプールを作成する

ボリュームグループ(vg_thin)に15GBのThinプールを作成するには、次のコマンドを使用します。

# lvcreate -L 15G --thinpool tp_tecmint_pool vg_thin
  1. -L – ボリュームグループのサイズ
  2. –thinpool – thinpoolを作成するため
  3. tp_tecmint_pool– 薄いプール名
  4. vg_thin – プールを作成する必要があるボリュームグループ名

詳細を取得するために、コマンド「lvdisplay」を使用できます。

# lvdisplay vg_thin/tp_tecmint_pool

ここでは、このスリムプールに仮想スリムボリュームを作成していません。画像では、割り当てられたプールデータが0.00%を示しているのがわかります。

薄いボリュームの作成

これで、オプション-V(仮想)を使った 'lvcreate' コマンドの助けを借りて、薄いプール内に薄いボリュームを定義できるようになります。

# lvcreate -V 5G --thin -n thin_vol_client1 vg_thin/tp_tecmint_pool

私はvg_thinボリュームグループ内のtp_tecmint_poolにthin_vol_client1という名前のスリムな仮想ボリュームを作成しました。次に、以下のコマンドを使用して論理ボリュームのリストを表示してください。

# lvs 

今しがた、上記の薄いボリュームを作成したため、データが表示されていない、すなわち 0.00%Mです。

大丈夫です、他の2人のクライアントのために2つのThinボリュームを作成します。今、プール(tp_tecmint_pool)の下に3つのThinボリュームが作成されたのがわかります。つまり、ここから、私はすべての15GBプールを使用したことがわかりました。

ファイルシステムの作成

さて、マウントポイントを作成し、これらの3つのスリムボリュームをマウントし、以下のコマンドを使用していくつかのファイルをコピーしてください。

# mkdir -p /mnt/client1 /mnt/client2 /mnt/client3

作成されたディレクトリを一覧表示してください。

# ls -l /mnt/

作成した薄いボリュームのためにファイルシステムを作成するには、「mkfs」コマンドを使用してください。

# mkfs.ext4 /dev/vg_thin/thin_vol_client1 && mkfs.ext4 /dev/vg_thin/thin_vol_client2 && mkfs.ext4 /dev/vg_thin/thin_vol_client3

作成したマウントポイントに対して、すべてのクライアントボリュームを「mount」コマンドを使用してマウントします。

# mount /dev/vg_thin/thin_vol_client1 /mnt/client1/ && mount /dev/vg_thin/thin_vol_client2 /mnt/client2/ && mount /dev/vg_thin/thin_vol_client3 /mnt/client3/

'df' コマンドを使ってマウントポイントをリストします。

# df -h

ここでは、3つのクライアントのボリュームがすべてマウントされているのがわかりますので、各クライアントのボリュームで使用されているデータは3%だけです。ですので、デスクトップから3つのマウントポイントにもう少しファイルを追加して、スペースを埋めましょう。

今、マウントポイントをリストし、すべてのシンボリュームで使用されているスペースを確認し、プールで使用されているサイズを確認するためにシンプルプールをリストします。

# df -h
lvdisplay vg_thin/tp_tecmint_pool

上記のコマンドは、サイズの百分率と共に3つのマウントポイントを表示します。

13% of datas used out of 5GB for client1
29% of datas used out of 5GB for client2
49% of datas used out of 5GB for client3

薄いプールを覗くと、データの30%しか完全に書き込まれていないことがわかります。これは、上記の3つのクライアントの仮想ボリュームの合計です。

オーバープロビジョニング

今、4番目のクライアントが私のところに来て、5GBのストレージスペースを要求しました。私はそれを提供できますか?なぜなら、すでに3人のクライアントに15GBのプールを提供しているからです。さらに別のクライアントに5GBを提供することは可能ですか?はい、提供することは可能です。これがオーバープロビジョニングを使用する時であり、私が持っている以上のスペースを提供することを意味します。

4番目のクライアントのために5GBを作成し、そのサイズを確認させてください。

# lvcreate -V 5G --thin -n thin_vol_client4 vg_thin/tp_tecmint_pool
lvs

プールには15GBのサイズしかありませんが、20GBまでのスリムプール内に4つのボリュームを作成しました。すべての4つのクライアントがデータを書き込み始めてその容量をいっぱいにすると、私たちは深刻な状況に直面することになります。そうでなければ、問題はありません。

今、thin_vol_client4にファイルシステムを作成し、それを/mnt/client4にマウントし、その中にいくつかのファイルをコピーしました。

# lvs

上の画像から、クライアント4の新しく作成されたボリュームの使用済みサイズが89.34%であり、スリムプールのサイズが59.19%使用されていることがわかります。もしこれらのユーザーがボリュームに対して適切に書き込むなら、オーバーフローやドロップから解放されるでしょう。オーバーフローを避けるためには、スリムプールのサイズを拡張する必要があります。

重要: シンポールは論理ボリュームに過ぎないため、シンポールのサイズを拡張する必要がある場合は、論理ボリュームの拡張に使用したのと同じコマンドを使用できますが、シンポールのサイズを縮小することはできません。

# lvextend

ここでは、論理薄プール(tp_tecmint_pool)をどのように拡張するかを見ることができます。

# lvextend -L +15G /dev/vg_thin/tp_tecmint_pool

次に、薄いプールのサイズをリストアップしてください。

# lvs

以前、私たちのtp_tecmint_poolのサイズは15GBで、4つのシンボリュームがあり、20GBのオーバープロビジョンがありました。現在、サイズは30GBに拡張され、オーバープロビジョニングが正常化されて、シンボリュームはオーバーフローやドロップから解放されました。このようにして、プールにさらに多くのシンボリュームを追加することができます。

ここでは、大きなサイズのボリュームグループを使用してスリムプールを作成し、オーバープロビジョニングを使用してスリムプール内にスリムボリュームを作成する方法を見てきました。次の記事では、LVMストライピングの設定方法を見ていきます。

関連記事: