5 LVMの設定 #
この章では、LVM (Logical Volume Manager)の原理と多くの状況で役立つ基本機能を説明します。YaST LVMの設定は、YaST Expert Partitionerからアクセスできます。このパーティショニングツールにより、既存のパーティションを編集、および削除できます。また、LVMで使用する新規パーティションを作成することもできます。
LVMを使用することでデータ損失などの危険性が増加する恐れがあります。この危険性にはアプリケーションのクラッシュ、電源障害、誤ったコマンドなども含まれます。LVMまたはボリュームの再設定を実施する前にデータを保存してください。バックアップなしでは作業を実行しないでください。
5.1 論理ボリュームマネージャ(LVM)の理解 #
LVMは、複数の物理ボリューム(ハードディスク、パーティション、LUN)にハードディスクスペースを柔軟に分散することができます。LVMが開発された理由は、インストール中に初期パーティショニングが終了した後でのみ、ハードディスクスペースのセグメンテーションを変更するニーズが発生する可能性があるためです。実行中のシステムでパーティションを変更することは困難なので、LVMは必要に応じて論理ボリューム(LV)を作成できるストレージスペースの仮想プール(ボリュームグループ(VG))を提供します。オペレーティングシステムは物理パーティションの代わりにこれらのLVにアクセスします。ボリュームグループは2つ以上のディスクにまたがることができます。したがって、複数のディスクまたはそれらの一部で1つのVGを構成できます。この方法で、LVMは物理ディスクスペースから一種の抽象化を行います。この抽象化により、物理パーティショニングを使用する場合よりはるかに簡単で安全な方法でセグメンテーションを変更できます。
図5.1「物理パーティショニング対LVM」では物理パーティショニング(左)とLVM区分(右)を比較しています。左側は、1つのディスクが割り当てられたマウントポイント(MP)をもつ3つの物理パーティション(PART)に分かれています。これによりオペレーティングシステムはそれぞれのパーティションにアクセスできます。右側では2つのディスクがそれぞれ3つの物理パーティションに分かれています。2つのLVMボリュームグループ(VG 1およびVG 2)が定義されています。VG 1には、DISK 1からのパーティションが2つ、DISK 2からのパーティションが1つ含まれます。VG 2には、DISK 2からの残りの2パーティションが含まれます。
LVMでは、ボリュームグループに組み込まれた物理ディスクをPV (物理ボリューム)と呼びます。図5.1「物理パーティショニング対LVM」のボリュームグループ内には、4つの論理ボリューム(LV 1からLV 4)が定義されています。これらのボリュームは、関連付けられたマウントポイント(MP)を介してオペレーティングシステムに使用されます。別の論理ボリュームとの境界とパーティションの境界を並べることはできません。この例ではLV 1およびLV 2の間に境界があります。
LVMの機能:
複数のハードディスクまたはパーティションを大きな論理ボリュームにまとめることができます。
提供された設定が適切であれば、LV(
/usr
など)は空きスペースがなくなったときに拡張することができます。LVMを使用することで、実行中のシステムにハードディスクまたはLVを追加できます。ただし、そのためには、ディスクやLVを追加することのできるホットプラグ可能なハードウェアが必要になります。
複数の物理ボリューム上に論理ボリュームのデータストリームを割り当てるストライピングモードを有効にすることもできます。これらの物理ボリュームが別のディスクに存在する場合、RAID 0と同様に読み込みおよび書き込みのパフォーマンスを向上できます。
スナップショット機能は稼動中のシステムで一貫性のある(特にサーバ)バックアップを取得できます。
LVMは0/1/4/5/6のRAIDレベルもサポートしていますが、MD RAIDを使用することをお勧めします(第7章 「ソフトウェアRAIDの設定」を参照してください)。ただし、LVMはRAID 0および1では適切に動作します。これは、RAID 0は一般的な論理ボリューム管理と同様である(個々の論理ブロックが物理デバイス上のブロックにマップされる)ためです。RAID 1上でLVMを使用した場合は、ミラーの同期を追跡して同期プロセスを完全に管理することができます。それより高いRAIDレベルでは、接続されたディスクの状態を監視するほか、ディスクアレイで問題が発生した場合に管理者に通知することのできる、管理デーモンが必要になります。LVMにはこのようなデーモンが組み込まれていますが、デバイス障害などの例外的な状況では、このデーモンは正しく機能しません。
LVMまたはソフトウェアRAIDアレイ上でルートファイルシステムを使用してシステムを設定する場合、/boot
を別個の非LVMまたは非RAIDパーティションに配置する必要があります。そうしないと、システムは起動しません。このパーティションの推奨サイズは500MBで、推奨ファイルシステムはExt4です。
これらの機能とともにLVMを使用することは、頻繁に使用されるホームPCや小規模サーバではそれだけでも意義があります。データベース、音楽アーカイブ、またはユーザディレクトリのように増え続けるデータストックがある場合は、LVMが特に役に立ちます。LVMを使用すると、物理ハードディスクより大きなファイルシステムの作成が可能になります。ただし、LVMでの作業は従来のパーティションでの作業とは異なることに留意してください。
YaSTパーティショナの使用によって、新規および既存のLVMストレージオブジェクトを管理できます。LVMの設定に関する指示や詳細情報については、公式のLVM HOWTOを参照してください。
5.2 ボリュームグループの作成 #
LVMボリュームグループ(VG)は、Linux LVMパーティションをスペースの論理プールにします。グループ内の使用可能なスペースから論理ボリュームを作成できます。グループ内のLinux LVMパーティションは、同じディスクに存在することも、さまざまなディスクに存在することも可能です。パーティションまたはディスク全体を追加することにより、グループのサイズを拡張できます。
ディスク全体を使用する場合、そのディスクにパーティションを含めることはできません。パーティションを使用した場合、それらをマウントしないでください。YaSTは、パーティションをVGに追加する際に自動的にパーティションタイプを0x8E Linux LVM
に変更します。
YaSTを起動して
を開きます。既存のパーティショニングセットアップを再設定する必要がある場合は、次の手順に従います。詳細については、12.1項 「YaSTのパーティショナの使用」を参照してください。未使用のディスクまたはパーティションを使用したいだけの場合は、この手順をスキップしてください。
警告: パーティションされていないディスクの物理ボリュームパーティションされていないディスクがオペレーティングシステムのインストール先(ブート元)ではない場合、そのディスクを物理ボリューム(PV)として使用することができます。
パーティションされていないディスクはシステムレベルで「未使用」として表示されるため、上書きされてしまったり、間違ってアクセスされたりする可能性があります。
既にパーティションが含まれているハードディスク全体を使用するには、そのディスク上にあるパーティションをすべて削除します。
現在マウントされているパーティションを使用するには、そのパーティションをアンマウントします。
左のパネルで、
を選択します。既存のボリュームグループのリストが右のパネルに表示されます。
[ボリューム管理]ページの左下で、
› の順にクリックします。ボリュームグループは次のように定義します。
インストール時にボリュームグループを作成している場合は、SUSE Linux Enterprise Serverのシステムファイルを含むボリュームグループに対して
system
という名前が示唆されます。LVM1では、LVごとに65534エクステントまでしかサポートしないので、4MBの物理エクステントで最大LVサイズとして256GBが可能でした。SUSE Linux Enterprise Serverで使用されるLVM2では、物理エクステントの数に制限はありません。エクステントが多くても、論理ボリュームに対するI/Oパフォーマンスには影響しませんが、LVMツールの動作が遅くなります。
重要: 物理エクステントサイズ1つのボリュームグループに異なるサイズの物理エクステントを混在させないでください。初期設定後はエクステントを変更しないでください。
[ボリューム管理]ページで、
をクリックし、新しいグループが一覧されることを確認してから、 をクリックします。ボリュームグループを構成している物理デバイスを確認するため、稼働中のシステムでYaSTパーティショナを開き、
› › の順にクリックします。 をクリックしてこの画面を閉じます。図 5.2: DATAという名前のボリュームグループ内の物理ボリューム #
5.3 論理ボリュームの作成 #
論理ボリュームは、ハードディスクと同様に領域のプールを提供します。この領域を使用可能にするには、論理ボリュームを定義する必要があります。論理ボリュームは通常のパーティションに似ており、フォーマットやマウントが可能です。
YaSTパーティショナを使用して、既存のボリュームグループから論理ボリュームを作成します。各ボリュームグループに少なくとも1つの論理ボリュームを割り当ててください。ボリュームグループ内の空き領域を使い果たすまで、必要に応じて新しい論理ボリュームを作成できます。LVM論理ボリュームをオプションでシンプロビジョニングすることによって、使用可能な空き領域を超えるサイズで論理ボリュームを作成することもできます(詳しくは5.3.1項 「シンプロビジョニング論理ボリューム」を参照)。
通常のボリューム: (デフォルト)ボリュームの領域は直ちに割り当てられます。
シンプール: この論理ボリュームは、シンボリューム用に予約された領域のプールです。シンボリュームでは、必要な領域をそのプールからオンデマンドで割り当てることができます。
シンボリューム: ボリュームは疎ボリュームとして作成されます。このボリュームでは、必要な領域はシンプールからオンデマンドで割り当てられます。
ミラーリングされたボリューム: このボリュームは、定義した数のミラーで作成されます。
YaSTを起動して
を開きます。左のパネルで、
を選択します。既存のボリュームグループのリストが右のパネルに表示されます。ボリュームを作成するボリュームグループを選択して、
› の順に選択します。5.3.1項 「シンプロビジョニング論理ボリューム」を参照してください)。 で続行します。
にボリューム名を入力し、 を選択します(シンプロビジョニングボリュームの設定については、ボリュームのサイズと、複数ストライプを使用するかどうかを指定します。
ストライプボリュームを使用すると、データは複数の物理ボリュームに分散されます。これらの物理ボリュームが別のハードディスクに存在する場合、この性質により、読み込みおよび書込みのパフォーマンスが向上します(RAID 0など)。利用可能な最大ストライプ数は、物理ボリュームの数と同じです。デフォルト(
1
)は、複数のストライプを使用しない設定です。
5.3.1 シンプロビジョニング論理ボリューム #
LVM論理ボリュームはシンプロビジョニング可能です(オプション)。シンプロビジョニングを使用すると、利用可能な空き領域を超えるサイズの論理ボリュームを作成できます。任意の数のシンボリューム用に予約した未使用領域が含まれるシンプールを作成します。シンボリュームは疎ボリュームとして作成され、必要に応じてシンプールから領域が割り当てられます。ストレージ領域をコスト効果の高い方法で割り当てなければならなくなった場合、シンプールを動的に拡張できます。シンプロビジョニングボリュームは、Snapperで管理可能なスナップショットもサポートします。詳細については、第7章 「Snapperを使用したシステムの回復とスナップショット管理」を参照してください。
シンプロビジョニング論理ボリュームを設定するには、手順5.1「論理ボリュームの設定」の説明に従って作業を進めます。ボリュームタイプを選択する手順になったら、 を選択せずに、 または を選択します。
この論理ボリュームは、シンボリューム用に予約された領域のプールです。シンボリュームでは、必要な領域をそのプールからオンデマンドで割り当てることができます。
ボリュームは疎ボリュームとして作成されます。このボリュームでは、必要な領域はシンプールからオンデマンドで割り当てられます。
クラスタでシンプロビジョニングボリュームを使用するには、クラスタを使用するシンプールとシンボリュームを1つのクラスタリソースで管理する必要があります。これにより、シンボリュームとシンプールを常に同じノードに排他的にマウントできます。
5.3.2 ミラーリングされたボリュームの作成 #
複数のミラーを使用して1つの論理ボリュームを作成できます。LVMは、下層の物理ボリュームに書き込まれたデータが別の物理ボリュームに確実にミラーリングされるようにします。そのため、1つの物理ボリュームがクラッシュしても、論理ボリューム上のデータにアクセスできます。LVMは、同期プロセスを管理するためのログファイルも保持します。このログには、現在ミラーとの同期を実行中のボリューム領域についての情報が含まれます。デフォルトでは、ログはディスク(可能であればミラーとは別のディスク)に保存されます。ただし、揮発性メモリなどの別の場所をログに指定できます。
現在のところ、使用可能なミラー実装のタイプには、「通常」(非RAID)のmirror
論理ボリュームと、raid1
論理ボリュームがあります。
ミラーリングされた論理ボリュームを作成したら、ミラーリングされた論理ボリュームで、アクティブ化、拡張、削除などの標準の操作を実行できます。
5.3.2.1 ミラーリングされた非RAID論理ボリュームの設定 #
ミラーリングされたボリュームを作成するには、lvcreate
コマンドを使用します。次の例では、ボリュームグループ「vg1」を使用する、「lv1」という名前の2つのミラーを使用して、500GBの論理ボリュームを作成しています。
lvcreate -L 500G -m 2 -n lv1 vg1
このような論理ボリュームは、ファイルシステムのコピーを3つ提供するリニアボリューム(ストライピングなし)です。m
オプションは、ミラーの数を指定します。L
オプションは、論理ボリュームのサイズを指定します。
論理ボリュームは、デフォルトサイズである512KBの領域に分割されます。異なるサイズの領域が必要な場合は、-R
オプションを使用します。このオプションの後に、目的の領域サイズをメガバイト単位で指定してください。または、lvm.conf
ファイルのmirror_region_size
オプションを編集して、好みの領域サイズを設定することもできます。
5.3.2.2 raid1
論理ボリュームの設定 #
LVMはRAIDをサポートしているため、RAID1を使用してミラーリングを実装できます。このような実装には、非RAIDミラーと比較して次のような利点があります。
LVMは、各ミラーイメージに対して完全に冗長なビットマップ領域を維持しており、これによって障害対応能力が向上する。
ミラーイメージを一時的にアレイから分離し、マージして元に戻すことができる。
一時的な障害にアレイで対応できる。
LVMのRAID 1実装はスナップショットをサポートする。
一方、このタイプのミラーリング実装では、クラスタ化されたボリュームグループ内に論理ボリュームを作成することはできません。
RAIDを使用してミラーボリュームを作成するには、次のコマンドを発行します。
lvcreate --type raid1 -m 1 -L 1G -n lv1 vg1
各オプション/パラメータには次のような意味があります。
--type
-raid1
を指定する必要があります。指定しないと、暗黙のセグメントタイプmirror
が使用され、非RAIDミラーが作成されます。-m
- ミラーの数を指定します。-L
- 論理ボリュームのサイズを指定します。-n
- このオプションを使用して、論理ボリュームの名前を指定します。vg1
- 論理ボリュームで使用されるボリュームグループの名前です。
LVMは、アレイ内の各データボリュームに対して、1つのエクステントサイズの論理ボリュームを作成します。ミラーリングされたボリュームが2つある場合、LVMは、メタデータを保存する別のボリュームを2つ作成します。
RAID論理ボリュームを作成したら、一般的な論理ボリュームと同じ方法でそのボリュームを使用できます。アクティブ化、拡張などを行うことができます。
5.4 非ルートLVMボリュームグループの自動アクティブ化 #
非ルートLVMボリュームグループのアクティブ化の動作は、/etc/lvm/lvm.conf
ファイルおよび
auto_activation_volume_list パラメータで制御します。デフォルトでは、このパラメータは空で、すべてのボリュームがアクティブ化されます。一部のボリュームグループのみをアクティブ化するには、その名前を引用符で囲んで追加し、カンマで区切ります。次に例を示します。
auto_activation_volume_list = [ "vg1", "vg2/lvol1", "@tag1", "@*" ]
リストを auto_activation_volume_list パラメータで定義した場合、次のように処理されます。
各論理ボリュームは、最初にこのリストに照らして確認されます。
一致しない場合、論理ボリュームはアクティブ化されません。
デフォルトでは、非ルートLVMボリュームグループは、システムの再起動時にDracutによって自動的にアクティブ化されます。このパラメータにより、システムの再起動時にすべてのボリュームグループをアクティブにすることも、または指定した非ルートLVMボリュームグループのみをアクティブにすることもできます。
5.5 既存のボリュームグループのサイズ変更 #
ボリュームグループによって提供される領域は、物理ボリュームを追加することによっていつでも拡張できます。これは、システムの稼働中であっても、サービスを中断することなく実行できます。これにより、グループに論理ボリュームを追加したり、既存のボリュームのサイズを拡張したりできます。5.6項 「論理ボリュームのサイズ変更」を参照してください。
また、物理ボリュームを削除してボリュームグループのサイズを縮小することもできます。YaSTで削除できる物理ボリュームは、現在未使用の物理ボリュームだけです。現在使用中の物理ボリュームを確認するには、次のコマンドを実行します。PE Ranges
列に表示されているパーティション(物理ボリューム)が使用中のものです。
tux >
sudo pvs -o vg_name,lv_name,pv_name,seg_pe_ranges
root's password:
VG LV PV PE Ranges
/dev/sda1
DATA DEVEL /dev/sda5 /dev/sda5:0-3839
DATA /dev/sda5
DATA LOCAL /dev/sda6 /dev/sda6:0-2559
DATA /dev/sda7
DATA /dev/sdb1
DATA /dev/sdc1
YaSTを起動して
を開きます。左のパネルで、
を選択します。既存のボリュームグループのリストが右のパネルに表示されます。変更するボリュームグループを選択し、
をクリックします。次のいずれかの操作を行います。
追加: 1つまたは複数の物理ボリューム(LVMパーティション)を リストから リストに移動することにより、ボリュームグループのサイズを拡張します。
削除: 1つまたは複数の物理ボリューム(LVMパーティション)を リストから リストに移動することにより、ボリュームグループのサイズを縮小します。
5.6 論理ボリュームのサイズ変更 #
ボリュームグループ内に利用可能な未使用の空き領域がある場合、論理ボリュームを拡張して使用可能な領域を増やすことができます。また、ボリュームのサイズを縮小してボリュームグループの領域を解放し、他の論理ボリュームで使用できるようにすることもできます。
ボリュームのサイズを縮小すると、そのファイルシステムのサイズもYaSTによって自動的に縮小されます。現在マウントされているボリュームのサイズを「オンライン」で(つまりマウント中に)変更できるかどうかは、ファイルシステムによって異なります。オンライン拡張をサポートするファイルシステムは、Btrfs、XFS、Ext3、およびReiserFSです。
オンライン縮小をサポートするファイルシステムは、Btrfsのみです。XFS、Ext2/3/4、およびReiserFSのボリュームを縮小するには、ボリュームをアンマウントする必要があります。XFSはファイルシステムの縮小をサポートしないため、XFSでフォーマットされたボリュームは縮小できません。
YaSTを起動して
を開きます。左のパネルで、
を選択します。既存のボリュームグループのリストが右のパネルに表示されます。変更する論理ボリュームを選択し、
をクリックします。次のオプションの1つを使用して目的のサイズを設定します。
最大サイズ. 論理ボリュームのサイズを、ボリュームグループの残り領域をすべて使用するよう拡張します。
最小サイズ. 論理ボリュームのサイズを、データおよびファイルシステムメタデータによって使用されているサイズまで縮小します。
[Custom Size (カスタムサイズ)]. ボリュームの新しいサイズを指定します。上に表示されている最小値から最大値までの範囲内の値を指定する必要があります。キロバイトにはK、メガバイトにはM、ギガバイトにはG、テラバイトにはTをそれぞれ使用します(たとえば
20G
)。
5.7 ボリュームグループまたは論理ボリュームの削除 #
ボリュームグループを削除すると、グループの各メンバーパーティションに含まれているデータがすべて破棄されます。論理ボリュームを削除すると、そのボリュームに保存されているデータがすべて破棄されます。
YaSTを起動して
を開きます。左のパネルで、
を選択します。既存のボリュームグループのリストが右のパネルに表示されます。削除するボリュームグループまたは論理ボリュームを選択して、
をクリックします。選択した内容に応じて警告ダイアログが表示されます。
を選択して確認します。
5.8 LVMコマンドの使用 #
LVMコマンドの使用の詳細については、次の表で説明されている各コマンドのマニュアルページを参照してください。すべてのコマンドはroot
特権で実行する必要があります。sudo
COMMANDを使用するか(推奨)、直接root
として実行します。
pvcreate DEVICE
LVLMで物理ボリュームとして使用できるようにデバイス(
/dev/sdb1
など)を初期化します。指定したデバイス上にファイルシステムが存在する場合、警告が表示されます。blkid
がインストールされている場合にのみ(デフォルトでインストールされています)、pvcreate
により既存のファイルシステムの有無が確認されることを覚えておいてください。blkid
が使用可能でない場合、pvcreate
によって何も警告が生成されず、警告なしにファイルシステムが失われる場合があります。pvdisplay DEVICE
LVM物理ボリュームに関する情報(現在、論理ボリュームで使用中かどうかなど)を表示します。
-
vgcreate -c y VG_NAME DEV1 [DEV2...]
指定した1つ以上のデバイスでクラスタ化ボリュームグループを作成します。
-
vgcreate --activationmode ACTIVATION_MODE VG_NAME
ボリュームグループのアクティブ化のモードを設定します。次のいずれかの値を指定できます。
complete
- 欠落している物理ボリュームの影響を受けない論理ボリュームのみをアクティブ化できます。特定の論理ボリュームでそのような障害が許容される場合も、同様の処理が実行されます。degraded
- デフォルトのアクティブ化モードです。論理ボリュームをアクティブ化するための十分なレベルの冗長性がある場合、一部の物理ボリュームが欠落していても、その論理ボリュームをアクティブ化できます。partial
- LVMは、一部の物理ボリュームが欠落していても、ボリュームグループのアクティブ化を試みます。非冗長論理ボリュームから重要な物理ボリュームが欠落している場合、通常、その論理ボリュームはアクティブ化できず、エラーターゲットとして扱われます。
-
vgchange -a [ey|n] VG_NAME
ボリュームグループおよびその論理ボリュームを入出力用にアクティブ(
-a ey
)または非アクティブ(-a n
)にします。クラスタ内のボリュームをアクティブ化する場合は、必ず
ey
オプションを使用してください。ロードスクリプトではこのオプションがデフォルトで使用されます。vgremove VG_NAME
ボリュームグループを削除します。このコマンドを使用する前に、論理ボリュームを削除してボリュームグループを非アクティブにしてください。
-
vgdisplay VG_NAME
指定したボリュームグループに関する情報を表示します。
ボリュームグループの合計物理エクステントを確認するには、次のように入力します。
vgdisplay VG_NAME | grep "Total PE"
-
lvcreate -L SIZE -n LV_NAME VG_NAME
指定したサイズの論理ボリュームを作成します。
-
lvcreate -L SIZE --thinpool POOL_NAME VG_NAME
ボリュームグループ
VG_NAME
から、指定したサイズのシンプールmyPoolを作成します。次の例では、ボリュームグループ
LOCAL
から5GBのサイズのシンプールを作成します。lvcreate -L 5G --thinpool myPool LOCAL
-
lvcreate -T VG_NAME/POOL_NAME -V SIZE -n LV_NAME
プールPOOL_NAME内にシン論理ボリュームを作成します。次の例では、ボリュームグループ
LOCAL
上のプールmyPool
から1GBのシンボリュームmyThin1
を作成します。lvcreate -T LOCAL/myPool -V 1G -n myThin1
-
lvcreate -T VG_NAME/POOL_NAME -V SIZE -L SIZE -n LV_NAME
シンプールの作成とシン論理ボリュームの作成を1つのコマンドに結合することもできます。
lvcreate -T LOCAL/myPool -V 1G -L 5G -n myThin1
-
lvcreate --activationmode ACTIVATION_MODE LV_NAME
論理ボリュームのアクティブ化のモードを設定します。次のいずれかの値を指定できます。
complete
- 論理ボリュームは、そのすべての物理ボリュームがアクティブな場合にのみアクティブ化できます。degraded
- デフォルトのアクティブ化モードです。論理ボリュームをアクティブ化するための十分なレベルの冗長性がある場合、一部の物理ボリュームが欠落していても、その論理ボリュームをアクティブ化できます。partial
- LVMは、一部の物理ボリュームが欠落していても、ボリュームのアクティブ化を試みます。この場合、論理ボリュームの一部が使用できなくなり、データが消失することがあります。このオプションは通常は使用しませんが、データを復元する場合に役立つことがあります。
activation_mode
設定オプションの上記いずれかの値を指定することによって、/etc/lvm/lvm.conf
でアクティブ化モードを指定することもできます。-
lvcreate -s [-L SIZE] -n SNAP_VOLUME SOURCE_VOLUME_PATH VG_NAME
指定した論理ボリュームに対してスナップショットボリュームを作成します。サイズオプション(
-L
または--size
)を指定しなかった場合、スナップショットはシンスナップショットとして作成されます。-
lvremove /dev/VG_NAME/LV_NAME
論理ボリュームを削除します。
このコマンドを使用する前に、論理ボリュームを
umount
コマンドでアンマウントして閉じてください。-
lvremove SNAP_VOLUME_PATH
スナップショットボリュームを削除します。
-
lvconvert --merge SNAP_VOLUME_PATH
論理ボリュームをスナップショットのバージョンに戻します。
-
vgextend VG_NAME DEVICE
指定したデバイス(物理ボリューム)を既存のボリュームグループに追加します。
-
vgreduce VG_NAME DEVICE
指定した物理ボリュームを既存のボリュームグループから削除します。
物理ボリュームが論理ボリュームによって使用中でないことを確認してください。使用中の場合は、
pvmove
コマンドを使用してデータを別の物理ボリュームに移動する必要があります。-
lvextend -L SIZE /dev/VG_NAME/LV_NAME
指定した論理ボリュームのサイズを拡張します。その後、新たに使用可能になった領域を使用するため、ファイルシステムを拡張する必要もあります。詳細については、第2章 「ファイルシステムのサイズ変更」を参照してください。
-
lvreduce -L SIZE /dev/VG_NAME/LV_NAME
指定した論理ボリュームのサイズを縮小します。
ボリュームを縮小する前に、まずファイルシステムのサイズを縮小してください。そうしないと、データを失うリスクがあります。詳細については、第2章 「ファイルシステムのサイズ変更」を参照してください。
-
lvrename /dev/VG_NAME/LV_NAME /dev/VG_NAME/NEW_LV_NAME
既存のLVM論理ボリュームの名前を変更します。ボリュームグループの名前は変更されません。
udevルールではなくLVMを使用してLVデバイスノードとシンボリックリンクを管理する場合は、次のいずれかの方法でudevからの通知を無効にすることによって可能になります。
/etc/lvm/lvm.conf
でactivation/udev_rules = 0
およびactivation/udev_sync = 0
を設定する。lvcreate
コマンドで--nodevsync
を指定しても、activation/udev_sync = 0
と同じ結果になります。この場合も、activation/udev_rules = 0
の設定が必要です。環境変数
DM_DISABLE_UDEV
を設定する。export DM_DISABLE_UDEV=1
この方法でも、udevからの通知が無効になります。さらに、
/etc/lvm/lvm.conf
のudev関連の設定はすべて無視されます。
5.8.1 コマンドによる論理ボリュームのサイズ変更 #
論理ボリュームのサイズ変更には、コマンドlvresize
、lvextend
、およびlvreduce
が使用されます。構文とオプションについては、これらの各コマンドのマニュアルページを参照してください。LVを拡大するには、VG上に十分な未使用スペースがなければなりません。
論理ボリュームを拡大または縮小する場合、YaSTパーティショナを使用することをお勧めします。YaSTを使用すると、そのボリュームのファイルシステムのサイズも自動的に調整されます。
LVは使用中に手動で拡大または縮小できますが、LV上のファイルシステムについてはこれが不可能な場合があります。LVを拡大、縮小しても、そのボリューム内のファイルシステムのサイズは自動的に変更されません。後でファイルシステムを拡大するには、別のコマンドを使用する必要があります。ファイルシステムのサイズ変更の詳細については、第2章 「ファイルシステムのサイズ変更」を参照してください。
手動でLVのサイズを変更する場合は、次に示すように正しい順序に従ってください。
LVを拡大する場合は、ファイルシステムを拡大する前にLVを拡大する必要があります。
LVを縮小する場合は、LVを縮小する前にファイルシステムを縮小する必要があります。
論理ボリュームのサイズを拡張するには:
端末コンソールを開きます。
論理ボリュームにExt2またはExt4ファイルシステム(オンライン拡張がサポートされていません)が含まれる場合、マウント解除します。仮想マシン(Xen VMなど)用に提供されているファイルシステムが含まれている場合は、最初にVMをシャットダウンします。
端末コンソールのプロンプトに対して、次のコマンドを入力し、論理ボリュームのサイズを拡大します。
sudo lvextend -L +SIZE /dev/VG_NAME/LV_NAME
SIZEの場合は、10GBのように、論理ボリュームに追加したい容量を指定してください。
/dev/VG_NAME/LV_NAME
を、/dev/LOCAL/DATA
などの論理ボリュームへのLinuxパスに入れ替えます。次に例を示します。sudo lvextend -L +10GB /dev/vg1/v1
ファイルシステムのサイズを調整します。詳細については、第2章 「ファイルシステムのサイズ変更」を参照してください。
ファイルシステムをマウント解除した場合は、再びマウントします。
たとえば、LVをLV上の(マウント済みでアクティブな) Btrfsで10GB拡張するには:
sudo lvextend −L +10G /dev/LOCAL/DATA sudo btrfs filesystem resize +10G /dev/LOCAL/DATA
論理ボリュームのサイズを縮小するには:
端末コンソールを開きます。
論理ボリュームにBtrfsファイルが含まれていない場合は、論理ボリュームをマウント解除します。仮想マシン(Xen VMなど)用に提供されているファイルシステムが含まれている場合は、最初にVMをシャットダウンします。XFSファイルシステムを使用しているボリュームのサイズは縮小できません。
ファイルシステムのサイズを調整します。詳細については、第2章 「ファイルシステムのサイズ変更」を参照してください。
端末コンソールのプロンプトに対して、次のコマンドを入力し、論理ボリュームのサイズをファイルシステムのサイズまで縮小します。
sudo lvreduce /dev/VG_NAME/LV_NAME
ファイルシステムをアンマウントしてあった場合は、再びマウントします。
たとえば、LVをLV上のBtrfsで5GB縮小するには:
sudo btrfs filesystem resize -size 5G /dev/LOCAL/DATA sudo lvreduce /dev/LOCAL/DATA
SUSE Linux Enterprise Server 12 SP1から、lvextend
、lvresize
、およびlvreduce
で--resizefs
オプションがサポートされるようになりました。このオプションは、ボリュームのサイズを変更するだけでなく、ファイルシステムのサイズも変更します。したがって、上に示すlvextend
およびlvreduce
の例は、次のように実行することもできます。
sudo lvextend --resizefs −L +10G /dev/LOCAL/DATA sudo lvreduce --resizefs -L -5G /dev/LOCAL/DATA
--resizefs
は、ext2/3/4、reiserfs、Btrfs、およびXFSの各ファイルシステムでサポートされます。このオプションを使用したBtrfsのサイズ変更は、まだ上流では許可されていないため、SUSE Linux Enterprise Serverでのみ可能です。
5.8.2 lvmetad
によるLVMメタデータの動的集約 #
ほとんどのLVMコマンドでは、システムのディスクデバイスに保存されているLVMメタデータを正確に把握しておく必要があります。LVMの現行の設計では、この情報がない場合、LVMはシステムのすべての物理ディスクデバイスをスキャンしなければなりません。多数のディスクで構成されるシステムでは、このために大量のI/O操作が必要になります。ディスクが応答しない場合、そのディスクを待機している間にLVMコマンドがタイムアウトすることがあります。
lvmetad
によるLVMメタデータの動的集約は、この問題に解決策を提供します。lvmetad
デーモンの目的は、デバイスの状態が変わるたびにメタデータ情報を動的に集約することによって、このスキャンを不要にすることです。これらのイベントはudevルールによってlvmetad
に送信されます。このデーモンが実行されていない場合、LVMは通常どおりにスキャンを実行します。
この機能はデフォルトで有効になっています。システムでこの機能が無効になっている場合は、次の手順に従って有効にします。
端末コンソールを開きます。
lvmetad
デーモンを停止します。sudo systemctl stop lvm2-lvmetad
/etc/lvm/lvm.conf
を編集し、use_lvmetad
を1
に設定します。use_lvmetad = 1
lvmetad
デーモンを再起動します。sudo systemctl start lvm2-lvmetad
5.8.3 LVMキャッシュボリュームの使用 #
LVMでは、大容量の低速なブロックデバイスに対して、高速なブロックデバイス(SSDデバイスなど)をライトバックキャッシュまたはライトスルーキャッシュとして使用できます。キャッシュ論理ボリュームタイプは、小容量の高速なLVを使用して、大容量の低速なLVのパフォーマンスを向上させます。
LVMキャッシングを設定するには、キャッシングデバイス上に2つの論理ボリュームを作成する必要があります。大容量の論理ボリュームはキャッシング自体に使用され、小容量のボリュームはキャッシングメタデータの保存に使用されます。これら2つのボリュームは、元のボリュームと同じボリュームグループに属している必要があります。これらのボリュームを作成したら、キャッシュプールに変換して元のボリュームに接続する必要があります。
元のボリュームがまだ存在しない場合は(低速なデバイス上に)作成します。
物理ボリュームを(高速なデバイスから)元のボリュームが属するボリュームグループに追加して、物理ボリューム上にキャッシュデータボリュームを作成します。
キャッシュメタデータボリュームを作成します。サイズは、キャッシュデータボリュームの1/1000にする必要があります。最小サイズは8MBです。
キャッシュデータボリュームとメタデータボリュームをキャッシュプールボリュームに結合します。
lvconvert --type cache-pool --poolmetadata VOLUME_GROUP/METADATA_VOLUME VOLUME_GROUP/CACHING_VOLUME
キャッシュプールを元のボリュームに接続します。
lvconvert --type cache --cachepool VOLUME_GROUP/CACHING_VOLUME VOLUME_GROUP/ORIGINAL_VOLUME
LVMキャッシングの詳細については、lvmcache(7)のマニュアルページを参照してください。
5.9 LVM2ストレージオブジェクトへのタグ付け #
タグは、ストレージオブジェクトのメタデータに割り当てられる順序付けのないキーワードまたは用語です。タグを使用すると、順序付けのないタグのリストをLVMストレージオブジェクトのメタデータに添付することによって、それらのオブジェクトのコレクションを有用になるように分類できます。
5.9.1 LVM2タグの使用 #
LVM2ストレージオブジェクトにタグを付けたら、それらのタグをコマンドで使用して、次のタスクを達成できます。
特定のタグの有無に応じて、処理するLVMオブジェクトを選択します。
設定ファイル内でタグを使用することにより、サーバ上でアクティブにするボリュームグループと論理ボリュームを制御します。
コマンド内でタグを指定することにより、グローバル設定ファイルの設定を上書きします。
コマンドラインでLVMオブジェクトを参照する代わりに、タグを使用して、次の項目を受け入れることができます。
オブジェクトのリスト
単一のオブジェクト(タグが単一オブジェクトに展開する限り)
オブジェクト名をタグで置き換えることは、一部ではサポートされていません。引数の展開後、リスト内の重複引数は、重複引数を削除し、各引数の最初のインスタンスを保留することによって解決されます。
引数のタイプが曖昧になる可能性がある場合は、タグの前にアットマーク(@)文字を付けてください(たとえば、@mytag
)。それ以外の接頭辞「@」の使用はオプションです。
5.9.2 LVM2タグの作成要件 #
LVMでタグを使用する場合は、以下の要件を考慮してください。
- サポートされている文字
LVMタグのワードには、ASCII 大文字A~Z、小文字a~z、数字0~9、下線(_)、プラス(+)、ハイフン(-)、およびピリオド(.)を含めることができます。ワードをハイフンで始めることはできません。最大128文字まで入力できます。
- サポートされているストレージオブジェクト
タグ付けできるのは、LVM2の物理ボリューム、ボリュームグループ、論理ボリューム、および論理ボリュームセグメントです。PVタグは、そのボリュームグループのメタデータに保存されます。ボリュームグループを削除すると、孤立した物理ボリューム内のタグも削除されます。スナップショットにはタグを付けられませんが、元のオブジェクトはタグ付けできます。
LVM1オブジェクトは、そのディスクフォーマットがタグをサポートしていないので、タグ付けできません。
5.9.3 コマンドラインでのタグ構文 #
--addtag
TAG_INFOLVM2ストレージオブジェクトにタグを追加(つまり、タグ付け)します。例:
sudo vgchange --addtag @db1 vg1
--deltag
TAG_INFOLVM2ストレージオブジェクトからタグを削除(つまり、タグ解除)します。例:
sudo vgchange --deltag @db1 vg1
--tag
TAG_INFOアクティブまたは非アクティブにするボリュームグループまたは論理ボリュームのリストを絞り込むために使用するタグを指定します。
次の例に示すコマンドを入力すると、指定のタグに一致するタグをもつボリュームがアクティブになります。
sudo lvchange -ay --tag @db1 vg1/vol2
5.9.4 設定ファイル構文 #
以降の各項では、特定の事例における設定例を示します。
5.9.4.1 lvm.conf
ファイルでのホスト名タグの有効化 #
次のコードを/etc/lvm/lvm.conf
ファイルに追加することにより、/etc/lvm/lvm_<HOSTNAME>.conf
ファイルでホストに個別に定義されているホストタグを有効にします。
tags { # Enable hostname tags hosttags = 1 }
ホストの/etc/lvm/lvm_<HOSTNAME>.conf
ファイルにアクティベーションコードを入力します。詳細については、5.9.4.3項 「アクティベーションを定義する」を参照してください。
5.9.4.2 lvm.confファイルでホスト名タグを定義する #
tags { tag1 { } # Tag does not require a match to be set. tag2 { # If no exact match, tag is not set. host_list = [ "hostname1", "hostname2" ] } }
5.9.4.3 アクティベーションを定義する #
/etc/lvm/lvm.conf
ファイルを変更すると、タグに基づいてLVM論理ボリュームをアクティブにできます。
テキストエディタで、次のコードをファイルに追加します。
activation { volume_list = [ "vg1/lvol0", "@database" ] }
@database
をご使用のタグで置き換えます。ホストに設定されているすべてのタグにタグを一致させるには、"@*"
を使用します。
アクティベーションコマンドは、ボリュームグループと論理ボリュームのメタデータで設定されているVGNAME、VGNAME/LVNAME、または@TAGと照合を行います。ボリュームグループまたは論理グループは、メタデータタグが一致する場合のみアクティブになります。一致しない場合、デフォルトではアクティブになりません。
volume_list
が存在せず、ホストにタグが定義されていると、ホストタグがメタデータタグに一致する場合のみボリュームグループまたは論理グループがアクティブになります。
volume_list
が定義されていても空であり、ホストにタグが定義されていないと、アクティブになりません。
volume_listが定義されていないと、LVのアクティブ化に制限は課されません(すべて許可されます)。
5.9.4.4 複数のホスト名設定ファイルでアクティベーションを定義する #
lvm.conf
ファイルでホストタグが有効になっている場合、ホストの設定ファイル(/etc/lvm/lvm_<HOST_TAG>.conf
)でアクティベーションコードを使用できます。たとえば、サーバの/etc/lvm/
ディレクトリに、2つの設定ファイルがあるとします。
lvm.conf
|
lvm_<HOST_TAG>.conf
|
スタートアップ時に、/etc/lvm/lvm.conf
ファイルがロードされ、ファイル内のすべてのタグ設定が処理されます。ホストタグが定義されている場合、関連する/etc/lvm/lvm_<HOST_TAG>.conf
ファイルがロードされます。特定の設定ファイルエントリを検索する際、最初にホストタグファイルが検索されます。続いてlvm.conf
ファイルが検索され、最初に一致した箇所で停止します。lvm_<HOST_TAG>.conf
ファイル内で、タグが設定された順序とは逆の順序を使用します。これによって、最後に設定されたタグのファイルが最初に検索されます。ホストタグファイルで新しいタグが設定されると、追加の設定ファイルがロードされます。
5.9.5 クラスタで簡単なアクティベーション制御にタグを使用する #
簡単なホスト名のアクティベーション制御は、/etc/lvm/lvm.conf
ファイルでhostname_tags
オプションを有効にすることで設定できます。これがグローバル設定になるように、同じファイルをクラスタ内のすべてのコンピュータで使用します。
テキストエディタで、次のコードを
/etc/lvm/lvm.conf
ファイルに追加します。tags { hostname_tags = 1 }
ファイルをクラスタ内のすべてのホストに複製します。
クラスタ内の任意のコンピュータから、
vg1/lvol2
をアクティブにするコンピュータのリストにdb1
を追加します。sudo lvchange --addtag @db1 vg1/lvol2
db1
サーバで、次のコードを入力してvg1/lvol2をアクティブにします。sudo lvchange -ay vg1/vol2
5.9.6 タグを使用して、クラスタ内の好みのホストでアクティブにする #
本項の例では、次のようなアクティベーションを行う2つの方法を示します。
ボリュームグループ
vg1
をデータベースホストdb1
およびdb2
でのみアクティブにします。ボリュームグループ
vg2
をファイルサーバホストfs1
のみでアクティブにします。ファイルサーバのバックアップホスト
fsb1
では、最初は何もアクティブにせず、ファイルサーバのホストfs1
に置き換わる準備をします。
5.9.6.1 オプション1:一元化された管理とホスト間で複製された設定 #
次のソリューションでは、単一の設定ファイルを複数のホスト間で複製します。
@database
タグをボリュームグループvg1
のメタデータに追加します。端末コンソールで、次のコマンドを入力します。sudo vgchange --addtag @database vg1
@fileserver
タグをボリュームグループvg2
のメタデータに追加します。端末コンソールで、次のコマンドを入力します。sudo vgchange --addtag @fileserver vg2
テキストエディタで、次のコードを使用して
/etc/lvm/lvm.conf
を変更することにより、@database
、@fileserver
、@fileserverbackup
の各タグを定義します。tags { database { host_list = [ "db1", "db2" ] } fileserver { host_list = [ "fs1" ] } fileserverbackup { host_list = [ "fsb1" ] } } activation { # Activate only if host has a tag that matches a metadata tag volume_list = [ "@*" ] }
変更した
/etc/lvm/lvm.conf
ファイルを4つのホスト(db1
、db2
、fs1
、およびfsb1
)に複製します。ファイルサーバホストが故障した場合は、次のコマンドを任意のモードで端末コンソールから入力することにより、
fsb1
上でvg2
を起動できます。sudo vgchange --addtag @fileserverbackup vg2 sudo vgchange -ay vg2
5.9.6.2 オプション2:ローカライズされた管理と設定 #
次のソリューションでは、各ホストがアクティブにするボリュームのクラスに関する情報をローカルに保持します。
@database
タグをボリュームグループvg1
のメタデータに追加します。端末コンソールで、次のコマンドを入力します。sudo vgchange --addtag @database vg1
@fileserver
タグをボリュームグループvg2
のメタデータに追加します。端末コンソールで、次のコマンドを入力します。sudo vgchange --addtag @fileserver vg2
/etc/lvm/lvm.conf
ファイルでホストタグを有効にします。テキストエディタで、次のコードを使用して
/etc/lvm/lvm.conf
ファイルを変更することにより、ホストタグ設定ファイルを有効にします。tags { hosttags = 1 }
変更した
/etc/lvm/lvm.conf
ファイルを4つのホスト(db1
、db2
、fs1
、およびfsb1
)に複製します。
ホスト
db1
で、データベースホストdb1
のアクティベーション設定ファイルを作成します。テキストエディタで、/etc/lvm/lvm_db1.conf
ファイルを作成し、次のコードを追加します。activation { volume_list = [ "@database" ] }
ホスト
db2
で、データベースホストdb2
のアクティベーション設定ファイルを作成します。テキストエディタで、/etc/lvm/lvm_db2.conf
ファイルを作成し、次のコードを追加します。activation { volume_list = [ "@database" ] }
ホストfs1で、ファイルサーバホスト
fs1
のアクティベーション設定ファイルを作成します。テキストエディタで、/etc/lvm/lvm_fs1.conf
ファイルを作成し、次のコードを追加します。activation { volume_list = [ "@fileserver" ] }
ファイルサーバホスト
fs1
が故障した場合は、スペアのファイルサーバホストfsb1をファイルサーバとして起動します。ホスト
fsb1
で、ホストfsb1
のアクティベーション設定ファイルを作成します。テキストエディタで、/etc/lvm/lvm_fsb1.conf
ファイルを作成し、次のコードを追加します。activation { volume_list = [ "@fileserver" ] }
端末コンソールで、次のコマンドの1つを入力します。
sudo vgchange -ay vg2 sudo vgchange -ay @fileserver