目次にジャンプページナビゲーションにジャンプ: 前のページ[アクセスキーp]/次のページ[アクセスキーn]
documentation.suse.com / SUSE Linux Enterprise Serverマニュアル / ストレージ管理ガイド / 論理ボリューム(LVM) / LVMの設定
適用項目 SUSE Linux Enterprise Server 12 SP5

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
図 5.1: 物理パーティショニング対LVM

LVMでは、ボリュームグループに組み込まれた物理ディスクをPV (物理ボリューム)と呼びます。図5.1「物理パーティショニング対LVM」のボリュームグループ内には、4つの論理ボリューム(LV 1からLV 4)が定義されています。これらのボリュームは、関連付けられたマウントポイント(MP)を介してオペレーティングシステムに使用されます。別の論理ボリュームとの境界とパーティションの境界を並べることはできません。この例ではLV 1およびLV 2の間に境界があります。

LVMの機能:

  • 複数のハードディスクまたはパーティションを大きな論理ボリュームにまとめることができます。

  • 提供された設定が適切であれば、LV(/usrなど)は空きスペースがなくなったときに拡張することができます。

  • LVMを使用することで、実行中のシステムにハードディスクまたはLVを追加できます。ただし、そのためには、ディスクやLVを追加することのできるホットプラグ可能なハードウェアが必要になります。

  • 複数の物理ボリューム上に論理ボリュームのデータストリームを割り当てるストライピングモードを有効にすることもできます。これらの物理ボリュームが別のディスクに存在する場合、RAID 0と同様に読み込みおよび書き込みのパフォーマンスを向上できます。

  • スナップショット機能は稼動中のシステムで一貫性のある(特にサーバ)バックアップを取得できます。

注記
注記: LVMとRAID

LVMは0/1/4/5/6のRAIDレベルもサポートしていますが、MD RAIDを使用することをお勧めします(第7章 「ソフトウェアRAIDの設定を参照してください)。ただし、LVMはRAID 0および1では適切に動作します。これは、RAID 0は一般的な論理ボリューム管理と同様である(個々の論理ブロックが物理デバイス上のブロックにマップされる)ためです。RAID 1上でLVMを使用した場合は、ミラーの同期を追跡して同期プロセスを完全に管理することができます。それより高いRAIDレベルでは、接続されたディスクの状態を監視するほか、ディスクアレイで問題が発生した場合に管理者に通知することのできる、管理デーモンが必要になります。LVMにはこのようなデーモンが組み込まれていますが、デバイス障害などの例外的な状況では、このデーモンは正しく機能しません。

警告
警告: IBM Z: 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に変更します。

  1. YaSTを起動してパーティショナを開きます。

  2. 既存のパーティショニングセットアップを再設定する必要がある場合は、次の手順に従います。詳細については、12.1項 「YaSTのパーティショナの使用」を参照してください。未使用のディスクまたはパーティションを使用したいだけの場合は、この手順をスキップしてください。

    警告
    警告: パーティションされていないディスクの物理ボリューム

    パーティションされていないディスクがオペレーティングシステムのインストール先(ブート元)ではない場合、そのディスクを物理ボリューム(PV)として使用することができます。

    パーティションされていないディスクはシステムレベルで「未使用」として表示されるため、上書きされてしまったり、間違ってアクセスされたりする可能性があります。

    1. 既にパーティションが含まれているハードディスク全体を使用するには、そのディスク上にあるパーティションをすべて削除します。

    2. 現在マウントされているパーティションを使用するには、そのパーティションをアンマウントします。

  3. 左のパネルで、ボリューム管理を選択します。

    既存のボリュームグループのリストが右のパネルに表示されます。

  4. [ボリューム管理]ページの左下で、追加 › ボリュームグループの順にクリックします。

    Image
  5. ボリュームグループは次のように定義します。

    1. ボリュームグループ名を指定します。

      インストール時にボリュームグループを作成している場合は、SUSE Linux Enterprise Serverのシステムファイルを含むボリュームグループに対してsystemという名前が示唆されます。

    2. PEサイズを指定します。

      PEサイズは、ボリュームグループの物理ブロックのサイズを定義します。ボリュームグループにある全ディスクスペースはこの物理ブロックサイズ内で使用されます。値の範囲は、2の累乗で1KBから16GBまでです。通常、この値は4MBに設定されます。

      LVM1では、LVごとに65534エクステントまでしかサポートしないので、4MBの物理エクステントで最大LVサイズとして256GBが可能でした。SUSE Linux Enterprise Serverで使用されるLVM2では、物理エクステントの数に制限はありません。エクステントが多くても、論理ボリュームに対するI/Oパフォーマンスには影響しませんが、LVMツールの動作が遅くなります。

      重要
      重要: 物理エクステントサイズ

      1つのボリュームグループに異なるサイズの物理エクステントを混在させないでください。初期設定後はエクステントを変更しないでください。

    3. 利用可能な物理ボリュームリストで、このボリュームグループに含めたいLinux LVMパーティションを選択し、追加をクリックして、それらのパーティションを選択した物理ボリュームリストに移動します。

    4. 完了をクリックします。

      ボリュームグループリストに新しいグループが表示されます。

  6. [ボリューム管理]ページで、次へをクリックし、新しいグループが一覧されることを確認してから、完了をクリックします。

  7. ボリュームグループを構成している物理デバイスを確認するため、稼働中のシステムでYaSTパーティショナを開き、ボリューム管理 › 編集 › Physical Devices (物理デバイス)の順にクリックします。中止するをクリックしてこの画面を閉じます。

    DATAという名前のボリュームグループ内の物理ボリューム
    図 5.2: DATAという名前のボリュームグループ内の物理ボリューム

5.3 論理ボリュームの作成

論理ボリュームは、ハードディスクと同様に領域のプールを提供します。この領域を使用可能にするには、論理ボリュームを定義する必要があります。論理ボリュームは通常のパーティションに似ており、フォーマットやマウントが可能です。

YaSTパーティショナを使用して、既存のボリュームグループから論理ボリュームを作成します。各ボリュームグループに少なくとも1つの論理ボリュームを割り当ててください。ボリュームグループ内の空き領域を使い果たすまで、必要に応じて新しい論理ボリュームを作成できます。LVM論理ボリュームをオプションでシンプロビジョニングすることによって、使用可能な空き領域を超えるサイズで論理ボリュームを作成することもできます(詳しくは5.3.1項 「シンプロビジョニング論理ボリューム」を参照)。

  • 通常のボリューム: (デフォルト)ボリュームの領域は直ちに割り当てられます。

  • シンプール: この論理ボリュームは、シンボリューム用に予約された領域のプールです。シンボリュームでは、必要な領域をそのプールからオンデマンドで割り当てることができます。

  • シンボリューム: ボリュームは疎ボリュームとして作成されます。このボリュームでは、必要な領域はシンプールからオンデマンドで割り当てられます。

  • ミラーリングされたボリューム: このボリュームは、定義した数のミラーで作成されます。

手順 5.1: 論理ボリュームの設定
  1. YaSTを起動してパーティショナを開きます。

  2. 左のパネルで、ボリューム管理を選択します。既存のボリュームグループのリストが右のパネルに表示されます。

  3. ボリュームを作成するボリュームグループを選択して、追加 ›  論理ボリュームの順に選択します。

  4. 名前にボリューム名を入力し、通常ボリュームを選択します(シンプロビジョニングボリュームの設定については、5.3.1項 「シンプロビジョニング論理ボリューム」を参照してください)。次へで続行します。

    Image
  5. ボリュームのサイズと、複数ストライプを使用するかどうかを指定します。

    ストライプボリュームを使用すると、データは複数の物理ボリュームに分散されます。これらの物理ボリュームが別のハードディスクに存在する場合、この性質により、読み込みおよび書込みのパフォーマンスが向上します(RAID 0など)。利用可能な最大ストライプ数は、物理ボリュームの数と同じです。デフォルト(1)は、複数のストライプを使用しない設定です。

    Image
  6. 役割でボリュームの役割を選択します。ここで選択した内容は、次のダイアログのデフォルト値にのみ影響します。値は次の手順で変更可能です。わからない場合は、RAWボリューム(未フォーマット)を選択します。

    Image
  7. フォーマットオプションで、パーティションをフォーマットするを選択し、ファイルシステムを選択します。オプションメニューの内容は、ファイルシステムによって異なります。通常は、デフォルト値を変更する必要はありません。

    マウントのオプションの下で、パーティションをマウントするを選択してから、マウントポイントを選択します。Fstabオプションをクリックして、このボリュームの特別なマウントオプションを追加します。

  8. 完了をクリックします。

  9. 次へをクリックし、変更が一覧されることを確認してから、完了をクリックします。

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 パラメータで定義した場合、次のように処理されます。

  1. 各論理ボリュームは、最初にこのリストに照らして確認されます。

  2. 一致しない場合、論理ボリュームはアクティブ化されません。

デフォルトでは、非ルート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
  1. YaSTを起動してパーティショナを開きます。

  2. 左のパネルで、ボリューム管理を選択します。既存のボリュームグループのリストが右のパネルに表示されます。

  3. 変更するボリュームグループを選択し、サイズ変更をクリックします。

    Image
  4. 次のいずれかの操作を行います。

    • 追加: 1つまたは複数の物理ボリューム(LVMパーティション)を利用可能な物理ボリュームリストから選択した物理ボリュームリストに移動することにより、ボリュームグループのサイズを拡張します。

    • 削除: 1つまたは複数の物理ボリューム(LVMパーティション)を選択した物理ボリュームリストから使用可能な物理ボリュームリストに移動することにより、ボリュームグループのサイズを縮小します。

  5. 完了をクリックします。

  6. 次へをクリックし、変更が一覧されることを確認してから、完了をクリックします。

5.6 論理ボリュームのサイズ変更

ボリュームグループ内に利用可能な未使用の空き領域がある場合、論理ボリュームを拡張して使用可能な領域を増やすことができます。また、ボリュームのサイズを縮小してボリュームグループの領域を解放し、他の論理ボリュームで使用できるようにすることもできます。

注記
注記: オンラインでのサイズ変更

ボリュームのサイズを縮小すると、そのファイルシステムのサイズもYaSTによって自動的に縮小されます。現在マウントされているボリュームのサイズをオンラインで(つまりマウント中に)変更できるかどうかは、ファイルシステムによって異なります。オンライン拡張をサポートするファイルシステムは、Btrfs、XFS、Ext3、およびReiserFSです。

オンライン縮小をサポートするファイルシステムは、Btrfsのみです。XFS、Ext2/3/4、およびReiserFSのボリュームを縮小するには、ボリュームをアンマウントする必要があります。XFSはファイルシステムの縮小をサポートしないため、XFSでフォーマットされたボリュームは縮小できません。

  1. YaSTを起動してパーティショナを開きます。

  2. 左のパネルで、ボリューム管理を選択します。既存のボリュームグループのリストが右のパネルに表示されます。

  3. 変更する論理ボリュームを選択し、サイズ変更をクリックします。

    Image
  4. 次のオプションの1つを使用して目的のサイズを設定します。

    • 最大サイズ.  論理ボリュームのサイズを、ボリュームグループの残り領域をすべて使用するよう拡張します。

    • 最小サイズ.  論理ボリュームのサイズを、データおよびファイルシステムメタデータによって使用されているサイズまで縮小します。

    • [Custom Size (カスタムサイズ)].  ボリュームの新しいサイズを指定します。上に表示されている最小値から最大値までの範囲内の値を指定する必要があります。キロバイトにはK、メガバイトにはM、ギガバイトにはG、テラバイトにはTをそれぞれ使用します(たとえば20G)。

  5. OKをクリックします。

  6. 次へをクリックし、変更が一覧されることを確認してから、完了をクリックします。

5.7 ボリュームグループまたは論理ボリュームの削除

警告
警告: データ損失

ボリュームグループを削除すると、グループの各メンバーパーティションに含まれているデータがすべて破棄されます。論理ボリュームを削除すると、そのボリュームに保存されているデータがすべて破棄されます。

  1. YaSTを起動してパーティショナを開きます。

  2. 左のパネルで、ボリューム管理を選択します。既存のボリュームグループのリストが右のパネルに表示されます。

  3. 削除するボリュームグループまたは論理ボリュームを選択して、Delete (削除)をクリックします。

  4. 選択した内容に応じて警告ダイアログが表示されます。はいを選択して確認します。

  5. 次へをクリックし、削除したボリュームグループが一覧されることを確認してから(削除は赤いフォントで示されます)、完了をクリックします。

5.8 LVMコマンドの使用

LVMコマンドの使用の詳細については、次の表で説明されている各コマンドのマニュアルページを参照してください。すべてのコマンドはroot特権で実行する必要があります。sudo COMMANDを使用するか(推奨)、直接rootとして実行します。

LVMコマンド
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のバイパス

udevルールではなくLVMを使用してLVデバイスノードとシンボリックリンクを管理する場合は、次のいずれかの方法でudevからの通知を無効にすることによって可能になります。

  • /etc/lvm/lvm.confactivation/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 コマンドによる論理ボリュームのサイズ変更

論理ボリュームのサイズ変更には、コマンドlvresizelvextend、およびlvreduceが使用されます。構文とオプションについては、これらの各コマンドのマニュアルページを参照してください。LVを拡大するには、VG上に十分な未使用スペースがなければなりません。

論理ボリュームを拡大または縮小する場合、YaSTパーティショナを使用することをお勧めします。YaSTを使用すると、そのボリュームのファイルシステムのサイズも自動的に調整されます。

LVは使用中に手動で拡大または縮小できますが、LV上のファイルシステムについてはこれが不可能な場合があります。LVを拡大、縮小しても、そのボリューム内のファイルシステムのサイズは自動的に変更されません。後でファイルシステムを拡大するには、別のコマンドを使用する必要があります。ファイルシステムのサイズ変更の詳細については、第2章 「ファイルシステムのサイズ変更を参照してください。

手動でLVのサイズを変更する場合は、次に示すように正しい順序に従ってください。

  • LVを拡大する場合は、ファイルシステムを拡大する前にLVを拡大する必要があります。

  • LVを縮小する場合は、LVを縮小する前にファイルシステムを縮小する必要があります。

論理ボリュームのサイズを拡張するには:

  1. 端末コンソールを開きます。

  2. 論理ボリュームにExt2またはExt4ファイルシステム(オンライン拡張がサポートされていません)が含まれる場合、マウント解除します。仮想マシン(Xen VMなど)用に提供されているファイルシステムが含まれている場合は、最初にVMをシャットダウンします。

  3. 端末コンソールのプロンプトに対して、次のコマンドを入力し、論理ボリュームのサイズを拡大します。

    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
  4. ファイルシステムのサイズを調整します。詳細については、第2章 「ファイルシステムのサイズ変更を参照してください。

  5. ファイルシステムをマウント解除した場合は、再びマウントします。

たとえば、LVをLV上の(マウント済みでアクティブな) Btrfsで10GB拡張するには:

sudo lvextend −L +10G /dev/LOCAL/DATA
sudo btrfs filesystem resize +10G /dev/LOCAL/DATA

論理ボリュームのサイズを縮小するには:

  1. 端末コンソールを開きます。

  2. 論理ボリュームにBtrfsファイルが含まれていない場合は、論理ボリュームをマウント解除します。仮想マシン(Xen VMなど)用に提供されているファイルシステムが含まれている場合は、最初にVMをシャットダウンします。XFSファイルシステムを使用しているボリュームのサイズは縮小できません。

  3. ファイルシステムのサイズを調整します。詳細については、第2章 「ファイルシステムのサイズ変更を参照してください。

  4. 端末コンソールのプロンプトに対して、次のコマンドを入力し、論理ボリュームのサイズをファイルシステムのサイズまで縮小します。

    sudo lvreduce /dev/VG_NAME/LV_NAME
  5. ファイルシステムをアンマウントしてあった場合は、再びマウントします。

たとえば、LVをLV上のBtrfsで5GB縮小するには:

sudo btrfs filesystem resize -size 5G /dev/LOCAL/DATA
sudo lvreduce /dev/LOCAL/DATA
ヒント
ヒント: 1つのコマンドでのボリュームとファイルシステムのサイズ変更

SUSE Linux Enterprise Server 12 SP1から、lvextendlvresize、および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は通常どおりにスキャンを実行します。

この機能はデフォルトで有効になっています。システムでこの機能が無効になっている場合は、次の手順に従って有効にします。

  1. 端末コンソールを開きます。

  2. lvmetadデーモンを停止します。

    sudo systemctl stop lvm2-lvmetad
  3. /etc/lvm/lvm.confを編集し、use_lvmetad1に設定します。

    use_lvmetad = 1
  4. lvmetadデーモンを再起動します。

    sudo systemctl start lvm2-lvmetad

5.8.3 LVMキャッシュボリュームの使用

LVMでは、大容量の低速なブロックデバイスに対して、高速なブロックデバイス(SSDデバイスなど)をライトバックキャッシュまたはライトスルーキャッシュとして使用できます。キャッシュ論理ボリュームタイプは、小容量の高速なLVを使用して、大容量の低速なLVのパフォーマンスを向上させます。

LVMキャッシングを設定するには、キャッシングデバイス上に2つの論理ボリュームを作成する必要があります。大容量の論理ボリュームはキャッシング自体に使用され、小容量のボリュームはキャッシングメタデータの保存に使用されます。これら2つのボリュームは、元のボリュームと同じボリュームグループに属している必要があります。これらのボリュームを作成したら、キャッシュプールに変換して元のボリュームに接続する必要があります。

手順 5.2: キャッシュ論理ボリュームの設定
  1. 元のボリュームがまだ存在しない場合は(低速なデバイス上に)作成します。

  2. 物理ボリュームを(高速なデバイスから)元のボリュームが属するボリュームグループに追加して、物理ボリューム上にキャッシュデータボリュームを作成します。

  3. キャッシュメタデータボリュームを作成します。サイズは、キャッシュデータボリュームの1/1000にする必要があります。最小サイズは8MBです。

  4. キャッシュデータボリュームとメタデータボリュームをキャッシュプールボリュームに結合します。

    lvconvert --type cache-pool --poolmetadata VOLUME_GROUP/METADATA_VOLUME VOLUME_GROUP/CACHING_VOLUME
  5. キャッシュプールを元のボリュームに接続します。

    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 コマンドラインでのタグ構文

--addtagTAG_INFO

LVM2ストレージオブジェクトにタグを追加(つまり、タグ付け)します。例:

sudo vgchange --addtag @db1 vg1
--deltagTAG_INFO

LVM2ストレージオブジェクトからタグを削除(つまり、タグ解除)します。例:

sudo vgchange --deltag @db1 vg1
--tagTAG_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をご使用のタグで置き換えます。ホストに設定されているすべてのタグにタグを一致させるには、"@*"を使用します。

アクティベーションコマンドは、ボリュームグループと論理ボリュームのメタデータで設定されているVGNAMEVGNAME/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オプションを有効にすることで設定できます。これがグローバル設定になるように、同じファイルをクラスタ内のすべてのコンピュータで使用します。

  1. テキストエディタで、次のコードを/etc/lvm/lvm.confファイルに追加します。

    tags {
       hostname_tags = 1
    }
  2. ファイルをクラスタ内のすべてのホストに複製します。

  3. クラスタ内の任意のコンピュータから、vg1/lvol2をアクティブにするコンピュータのリストにdb1を追加します。

    sudo lvchange --addtag @db1 vg1/lvol2
  4. db1サーバで、次のコードを入力してvg1/lvol2をアクティブにします。

    sudo lvchange -ay vg1/vol2

5.9.6 タグを使用して、クラスタ内の好みのホストでアクティブにする

本項の例では、次のようなアクティベーションを行う2つの方法を示します。

  • ボリュームグループvg1をデータベースホストdb1およびdb2でのみアクティブにします。

  • ボリュームグループvg2をファイルサーバホストfs1のみでアクティブにします。

  • ファイルサーバのバックアップホスト fsb1では、最初は何もアクティブにせず、ファイルサーバのホスト fs1に置き換わる準備をします。

5.9.6.1 オプション1:一元化された管理とホスト間で複製された設定

次のソリューションでは、単一の設定ファイルを複数のホスト間で複製します。

  1. @databaseタグをボリュームグループvg1のメタデータに追加します。端末コンソールで、次のコマンドを入力します。

    sudo vgchange --addtag @database vg1
  2. @fileserverタグをボリュームグループvg2のメタデータに追加します。端末コンソールで、次のコマンドを入力します。

    sudo vgchange --addtag @fileserver vg2
  3. テキストエディタで、次のコードを使用して /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 = [ "@*" ]
    }
  4. 変更した /etc/lvm/lvm.confファイルを4つのホスト(db1db2fs1、およびfsb1)に複製します。

  5. ファイルサーバホストが故障した場合は、次のコマンドを任意のモードで端末コンソールから入力することにより、fsb1上でvg2を起動できます。

    sudo vgchange --addtag @fileserverbackup vg2
    sudo vgchange -ay vg2

5.9.6.2 オプション2:ローカライズされた管理と設定

次のソリューションでは、各ホストがアクティブにするボリュームのクラスに関する情報をローカルに保持します。

  1. @databaseタグをボリュームグループvg1のメタデータに追加します。端末コンソールで、次のコマンドを入力します。

    sudo vgchange --addtag @database vg1
  2. @fileserverタグをボリュームグループvg2のメタデータに追加します。端末コンソールで、次のコマンドを入力します。

    sudo vgchange --addtag @fileserver vg2
  3. /etc/lvm/lvm.confファイルでホストタグを有効にします。

    1. テキストエディタで、次のコードを使用して/etc/lvm/lvm.confファイルを変更することにより、ホストタグ設定ファイルを有効にします。

      tags {
         hosttags = 1
      }
    2. 変更した /etc/lvm/lvm.confファイルを4つのホスト(db1db2fs1、およびfsb1)に複製します。

  4. ホストdb1で、データベースホストdb1のアクティベーション設定ファイルを作成します。テキストエディタで、/etc/lvm/lvm_db1.confファイルを作成し、次のコードを追加します。

    activation {
       volume_list = [ "@database" ]
    }
  5. ホストdb2で、データベースホストdb2のアクティベーション設定ファイルを作成します。テキストエディタで、/etc/lvm/lvm_db2.confファイルを作成し、次のコードを追加します。

    activation {
       volume_list = [ "@database" ]
    }
  6. ホストfs1で、ファイルサーバホストfs1のアクティベーション設定ファイルを作成します。テキストエディタで、/etc/lvm/lvm_fs1.confファイルを作成し、次のコードを追加します。

    activation {
       volume_list = [ "@fileserver" ]
    }
  7. ファイルサーバホストfs1が故障した場合は、スペアのファイルサーバホストfsb1をファイルサーバとして起動します。

    1. ホストfsb1で、ホストfsb1のアクティベーション設定ファイルを作成します。テキストエディタで、/etc/lvm/lvm_fsb1.confファイルを作成し、次のコードを追加します。

      activation {
         volume_list = [ "@fileserver" ]
      }
    2. 端末コンソールで、次のコマンドの1つを入力します。

      sudo vgchange -ay vg2
      sudo vgchange -ay @fileserver