ウェブサイト検索

論理ボリューム管理 (LVM) でのシン プロビジョニング ボリュームのセットアップ - パート IV


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

シン・プロビジョニングとは何ですか?

シン プロビジョニングは、シン プール内に仮想ディスクを作成するために LVM で使用されます。サーバーに15GB のストレージ容量があると仮定します。すでに 2 つのクライアントがあり、それぞれに 5GB のストレージがあります。あなたは 3 番目のクライアントで、5 GB のストレージを要求しました。当時は 5GB (シック ボリューム) 全体を提供していましたが、その 5GB ストレージから 2GB を使用することができ、3GB は無料であり、後でそれを埋めることができます。

ただし、シン プロビジョニングで行うのは、大規模ボリューム グループの 1 つの内部にシン プールを定義し、そのシン プール内にシン ボリュームを定義することです。そのため、書き込んだファイルはすべて保存され、ストレージは 5GB として表示されます。ただし、5GB をすべて使用してもディスク全体が割り当てられるわけではありません。他のクライアントに対しても同じプロセスが実行されます。先ほども言いましたが、クライアントが 2 人いて、あなたは私の 3 人目のクライアントです。

それでは、クライアントに割り当てた合計 GB はどれくらいだと仮定してみますか?合計 15GB がすでに完了しています。誰かが私のところに来て 5GB を要求してきた場合、私は与えることができますか?答えは「はい」です。シン プロビジョニングでは、15 GB を割り当てたとしても、4 番目のクライアントに 5 GB を割り当てることができます。

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

使い方?新しいクライアントにストレージをどのように提供するか?

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

シン プロビジョニングでは、5 GB を定義している場合、ボリュームの定義中にディスク領域全体が割り当てられることはなく、データの書き込みに応じて 5 GB まで増加します。理解できたことを願っています。あなたと同じように、他のクライアントもボリューム全体を使用することはないため、新しいクライアントに 5GB を追加する機会があります。これはオーバープロビジョニングと呼ばれます。

ただし、すべてのボリュームの増加を監視することは必須であり、監視しないと、最終的には大惨事になります。 4 つのクライアントすべてがディスクへのデータの書き込みに問題がある場合、オーバー プロビジョニングが実行されますが、15 GB がいっぱいになり、オーバーフローしてボリュームが削除されるため、問題が発生する可能性があります。

要件

  1. Linux で LVM を使用してディスク ストレージを作成する – パート 1
  2. Linux で LVM を拡張/縮小する方法 – パート II
  3. LVM で論理ボリュームのスナップショットを作成/復元する方法 – パート III
私のサーバーのセットアップ
  1. オペレーティング システム – CentOS 6.5 (LVM インストールあり)
  2. サーバーIP – 192.168.0.200

ステップ 1: シン プールとボリュームをセットアップする

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

vgcreate -s 32M vg_thin /dev/sdb1

次に、シン プールとボリュームを作成する前に、論理ボリュームの可用性のサイズを確認します。

vgs
lvs

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

シンプールの作成

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

lvcreate -L 15G --thinpool tp_tecmint_pool vg_thin
  1. -L – ボリューム グループのサイズ
  2. –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 個のシン ボリュームを作成させてください。ここでは、プール (tp_tecmint_pool) の下に 3 個のシン ボリュームが作成されていることがわかります。したがって、この時点から、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」コマンドを使用して、3 つのクライアント ボリュームすべてを作成したマウント ポイントにマウントします。

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

プールのサイズは 15 GB しかありませんが、シン プール内に最大 20 GB のボリュームを 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 のサイズは 15 GB と 4 つのシン ボリュームで、プロビジョニングを 20 GB 超えていました。現在は 30 GB まで拡張されているため、オーバー プロビジョニングが正常化され、シン ボリュームのオーバーフローやドロップが発生しません。このようにして、プールにシン ボリュームをさらに追加できます。

ここでは、大きなサイズのボリューム グループを使用してシン プールを作成する方法と、オーバー プロビジョニングとプールの拡張を使用してシン プール内にシン ボリュームを作成する方法を説明しました。次の記事では、LVM ストライピングをセットアップする方法を説明します。