第5章 高度な論理ボリューム管理


LVM には次のような高度な機能があります。

  • スナップショット。スナップショットは論理ボリューム (LV) の特定時点のコピーです。
  • キャッシュ。使用すると、高速なストレージを低速なストレージのキャッシュとして利用できるようになります。
  • カスタムシンプールの作成

5.1. 論理ボリュームのスナップショットの管理

スナップショットは、特定時点における別の LV の内容をミラーリングする論理ボリューム (LV) です。

5.1.1. 論理ボリュームスナップショットにてういて

スナップショットを作成すると、特定時点における別の LV のコピーとして機能する新しい LV が作成されます。スナップショット LV は、最初は実際のデータを含んでいません。代わりに、スナップショット作成時における元の LV のデータブロックを参照します。

警告

スナップショットのストレージ使用率を定期的に監視することが重要です。スナップショットに割り当てられている領域の 100% に達すると、スナップショットが無効になります。

スナップショットが完全にいっぱいになる前に拡張することが重要です。これは、lvextend コマンドを使用して手動で行うことも、/etc/lvm/lvm.conf ファイルを使用して自動的に行うこともできます。

シック LV スナップショット
元の LV のデータが変更されると、コピーオンライト (CoW) システムによって、変更前の元のデータがスナップショットにコピーされます。この方法では、変更が発生した場合にのみスナップショットのサイズが増加し、スナップショット作成時における元のボリュームの状態が保存されます。シックスナップショットは、事前に一定量のストレージ領域を割り当てる必要がある LV の一種です。この量は後で増減できますが、元の LV にどのような変更を加える予定かを検討してください。そうすることで、割り当てる領域が多すぎるためにリソースが無駄になったり、割り当てる領域が少なすぎるためにスナップショットのサイズを頻繁に増やす必要が生じたりすることがなくなります。
シン LV スナップショット

シンスナップショットは、既存のシンプロビジョニングされた LV から作成される LV の一種です。シンスナップショットでは、事前に追加の領域を割り当てる必要はありません。最初は、元の LV とそのスナップショットの両方が同じデータブロックを共有します。元の LV に変更が加えられると、新しいデータが別のブロックに書き込まれますが、スナップショットは元のブロックを参照し続け、スナップショット作成時における LV データの特定時点のビューが保持されます。

シンプロビジョニングは、必要に応じてディスク領域を割り当てることで、ストレージを効率的に最適化および管理する方法です。そのため、各 LV に事前に大量のストレージを割り当てる必要がなく、複数の LV を作成できます。ストレージがシンプール内のすべての LV で共有されるため、リソースをより効率的に使用できます。シンプールは、必要に応じて LV に領域を割り当てます。

シック LV スナップショットとシン LV スナップショットの選択
シック LV スナップショットとシン LV スナップショットの選択は、スナップショットの作成元とする LV のタイプによって直接決まります。元の LV がシック LV である場合、スナップショットもシックになります。元の LV がシン LV の場合は、スナップショットもシンになります。

5.1.2. シック論理ボリュームスナップショットの管理

シック LV スナップショットを作成するときは、ストレージ要件とスナップショットの想定される有効期間を考慮することが重要です。元のボリュームに予想される変更に基づいて、十分なストレージを割り当てる必要があります。スナップショットは、想定される有効期間中の変更を取り込むのに十分なサイズである必要がありますが、元の LV のサイズを超えることはできません。変更頻度が低いと予想される場合は、10% - 15% の小さいスナップショットサイズで十分な場合があります。変更頻度が高い LV の場合は、30% 以上を割り当てる必要がある場合があります。

重要

スナップショットが完全にいっぱいになる前に拡張することが重要です。スナップショットに割り当てられている領域の 100% に達すると、スナップショットが無効になります。lvs -o lv_name,data_percent,origin コマンドを使用すると、スナップショットの容量を監視できます。

5.1.2.1. シック論理ボリュームスナップショットの作成

lvcreate コマンドを使用して、シック LV スナップショットを作成できます。

前提条件

手順

  1. スナップショットを作成する LV を特定します。

    # lvs -o vg_name,lv_name,lv_size
    
      VG              LV                LSize
      VolumeGroupName LogicalVolumeName 10.00g

    スナップショットのサイズは LV のサイズを超えることはできません。

  2. シック LV スナップショットを作成します。

    # lvcreate --snapshot --size SnapshotSize --name SnapshotName VolumeGroupName/LogicalVolumeName

    SnapshotSize は、スナップショットに割り当てるサイズ (例: 10 G) に置き換えます。SnapshotName は、スナップショット論理ボリュームに付ける名前に置き換えます。VolumeGroupName は、元の論理ボリュームを含むボリュームグループの名前に置き換えます。LogicalVolumeName は、スナップショットの作成元とする論理ボリュームの名前に置き換えます。

検証

  • スナップショットが作成されたことを確認します。

    # lvs -o lv_name,origin
    
      LV                  Origin
      LogicalVolumeName
      SnapshotName        LogicalVolumeName

関連情報

  • lvcreate(8) および lvs(8) man ページ

5.1.2.2. 論理ボリュームスナップショットの手動拡張

スナップショットに割り当てられている領域の 100% に達すると、スナップショットが無効になります。スナップショットが完全にいっぱいになる前に拡張することが重要です。これは、lvextend コマンドを使用して手動で実行できます。

前提条件

  • 管理アクセスがある。

手順

  1. ボリュームグループ、論理ボリューム、スナップショットのソースボリュームの名前、使用率、およびサイズをリスト表示します。

    # lvs -o vg_name,lv_name,origin,data_percent,lv_size
      VG              LV                Origin            Data%  LSize
      VolumeGroupName LogicalVolumeName                          10.00g
      VolumeGroupName SnapshotName      LogicalVolumeName 82.00   5.00g
  2. シックプロビジョニングされたスナップショットを拡張します。

    # lvextend --size +AdditionalSize VolumeGroupName/SnapshotName

    AdditionalSize は、スナップショットに追加する容量 (例: +1G) に置き換えます。VolumeGroupName は、ボリュームグループの名前に置き換えます。SnapshotName は、スナップショットの名前に置き換えます。

検証

  • LV が拡張されたことを確認します。

    # lvs -o vg_name,lv_name,origin,data_percent,lv_size
      VG              LV                Origin            Data%  LSize
      VolumeGroupName LogicalVolumeName                          10.00g
      VolumeGroupName SnapshotName      LogicalVolumeName 68.33   6.00g

5.1.2.3. シック論理ボリュームスナップショットの自動拡張

スナップショットに割り当てられている領域の 100% に達すると、スナップショットが無効になります。スナップショットが完全にいっぱいになる前に拡張することが重要です。これは自動的に実行できます。

前提条件

  • 管理アクセスがある。

手順

  1. root ユーザーとして、任意のエディターで /etc/lvm/lvm.conf ファイルを開きます。
  2. snapshot_autoextend_threshold 行と snapshot_autoextend_percent 行のコメントを解除し、各パラメーターを必要な値に設定します。

    snapshot_autoextend_threshold = 70
    snapshot_autoextend_percent = 20

    snapshot_autoextend_threshold は、LVM がスナップショットの自動拡張を開始するパーセンテージを指定します。たとえば、このパラメーターを 70 に設定すると、容量の 70% に達したときに LVM がスナップショットの拡張を試みます。

    snapshot_autoextend_percent は、しきい値に達したときにスナップショットを何パーセント拡張するかを指定します。たとえば、パラメーターを 20 に設定すると、スナップショットが現在のサイズの 20% 増加します。

  3. 変更を保存し、エディターを終了します。
  4. lvm2-monitor を再起動します。

    # systemctl restart lvm2-monitor

5.1.2.4. シック論理ボリュームのスナップショットのマージ

シック LV スナップショットを、スナップショットの作成元となった元の論理ボリュームにマージできます。マージプロセスでは、元の LV がスナップショット作成時点の状態に戻されます。マージが完了すると、スナップショットは削除されます。

注記

元の LV とスナップショット LV 間のマージは、どちらかがアクティブな場合、延期されます。両方の LV が再アクティブ化され、使用されていない場合にのみ続行されます。

前提条件

  • 管理アクセスがある。

手順

  1. LV、そのボリュームグループ、およびそのパスをリスト表示します。

    # lvs -o lv_name,vg_name,lv_path
    
      LV                   VG              Path
      LogicalVolumeName    VolumeGroupName /dev/VolumeGroupName/LogicalVolumeName
      SnapshotName         VolumeGroupName /dev/VolumeGroupName/SnapshotName
  2. LV がマウントされている場所を確認します。

    # findmnt -o SOURCE,TARGET /dev/VolumeGroupName/LogicalVolumeName
    # findmnt -o SOURCE,TARGET /dev/VolumeGroupName/SnapshotName

    /dev/VolumeGroupName/LogicalVolumeName は、論理ボリュームへのパスに置き換えます。/dev/VolumeGroupName/SnapshotName は、スナップショットへのパスに置き換えます。

  3. LV をアンマウントします。

    # umount /LogicalVolume/MountPoint
    # umount /Snapshot/MountPoint

    /LogicalVolume/MountPoint は、論理ボリュームのマウントポイントに置き換えます。/Snapshot/MountPoint は、スナップショットのマウントポイントに置き換えます。

  4. LV を非アクティブ化します。

    # lvchange --activate n VolumeGroupName/LogicalVolumeName
    # lvchange --activate n VolumeGroupName/SnapshotName

    VolumeGroupName は、ボリュームグループの名前に置き換えます。LogicalVolumeName は、論理ボリュームの名前に置き換えます。SnapshotName は、スナップショットの名前に置き換えます。

  5. シック LV スナップショットを元の LV にマージします。

    # lvconvert --merge SnapshotName

    SnapshotName は、スナップショットの名前に置き換えます。

  6. LV をアクティブ化します。

    # lvchange --activate y VolumeGroupName/LogicalVolumeName

    VolumeGroupName は、ボリュームグループの名前に置き換えます。LogicalVolumeName は、論理ボリュームの名前に置き換えます。

  7. LV をマウントします。

    # umount /LogicalVolume/MountPoint

    /LogicalVolume/MountPoint は、論理ボリュームのマウントポイントに置き換えます。

検証

  • スナップショットが削除されたことを確認します。

    # lvs -o lv_name

関連情報

  • lvconvert(8)lvs(8) man ページ

5.1.3. シン論理ボリュームスナップショットの管理

ストレージ効率を優先する場合は、シンプロビジョニングが適しています。ストレージ領域の動的割り当てにより、初期のストレージコストが削減され、利用可能なストレージリソースが最大限に使用されます。動的なワークロードがある環境や、時間の経過とともにストレージが増加する環境では、シンプロビジョニングによって柔軟性が向上します。これにより、ストレージ領域を事前に大量に割り当てることなく、ストレージシステムをニーズの変化に適応させることができます。動的な割り当てにより、オーバープロビジョニングが可能になります。つまり、すべての LV の合計サイズが、シンプールの物理サイズを超えることがあります。これは、すべての領域が同時に使用されるわけではないということを前提にしているためです。

5.1.3.1. シン論理ボリュームスナップショットの作成

lvcreate コマンドを使用して、シン LV スナップショットを作成できます。シン LV スナップショットを作成するときは、スナップショットサイズを指定しないでください。サイズのパラメーターを含めると、代わりにシックスナップショットが作成されます。

前提条件

手順

  1. スナップショットを作成する LV を特定します。

    # lvs -o lv_name,vg_name,pool_lv,lv_size
    
      LV                VG              Pool       LSize
      PoolName          VolumeGroupName            152.00m
      ThinVolumeName    VolumeGroupName PoolName   100.00m
  2. シン LV スナップショットを作成します。

    # lvcreate --snapshot --name SnapshotName VolumeGroupName/ThinVolumeName

    SnapshotName は、スナップショット論理ボリュームに付ける名前に置き換えます。VolumeGroupName は、元の論理ボリュームを含むボリュームグループの名前に置き換えます。ThinVolumeName は、スナップショットの作成元とするシン論理ボリュームの名前に置き換えます。

検証

  • スナップショットが作成されたことを確認します。

    # lvs -o lv_name,origin
    
      LV                Origin
      PoolName
      SnapshotName      ThinVolumeName
      ThinVolumeName

関連情報

  • lvcreate(8) および lvs(8) man ページ

5.1.3.2. シン論理ボリュームスナップショットのマージ

シン LV スナップショットを、スナップショットの作成元となった元の論理ボリュームにマージできます。マージプロセスでは、元の LV がスナップショット作成時点の状態に戻されます。マージが完了すると、スナップショットは削除されます。

前提条件

  • 管理アクセスがある。

手順

  1. LV、そのボリュームグループ、およびそのパスをリスト表示します。

    # lvs -o lv_name,vg_name,lv_path
    
      LV                VG              Path
      ThinPoolName      VolumeGroupName
      ThinSnapshotName  VolumeGroupName /dev/VolumeGroupName/ThinSnapshotName
      ThinVolumeName    VolumeGroupName /dev/VolumeGroupName/ThinVolumeName
  2. 元の LV がマウントされている場所を確認します。

    # findmnt -o SOURCE,TARGET /dev/VolumeGroupName/ThinVolumeName

    VolumeGroupName/ThinVolumeName は、論理ボリュームへのパスに置き換えます。

  3. LV をアンマウントします。

    # umount /ThinLogicalVolume/MountPoint

    /ThinLogicalVolume/MountPoint は、論理ボリュームのマウントポイントに置き換えます。/ThinSnapshot/MountPoint は、スナップショットのマウントポイントに置き換えます。

  4. LV を非アクティブ化します。

    # lvchange --activate n VolumeGroupName/ThinLogicalVolumeName

    VolumeGroupName は、ボリュームグループの名前に置き換えます。ThinLogicalVolumeName は、論理ボリュームの名前に置き換えます。

  5. シン LV スナップショットを元の LV にマージします。

    # lvconvert --mergethin VolumeGroupName/ThinSnapshotName

    VolumeGroupName は、ボリュームグループの名前に置き換えます。ThinSnapshotName は、スナップショットの名前に置き換えます。

  6. LV をマウントします。

    # umount /ThinLogicalVolume/MountPoint

    /ThinLogicalVolume/MountPoint は、論理ボリュームのマウントポイントに置き換えます。

検証

  • 元の LV がマージされたことを確認します。

    # lvs -o lv_name

関連情報

  • lvremove(8)lvs(8) man ページ
Red Hat logoGithubRedditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

© 2024 Red Hat, Inc.