4.2. 論理ボリュームの作成


LVM は、物理レイヤーを論理ボリュームに抽象化し、ニーズに応じて作成および調整することで、ディスクストレージを柔軟な方法で処理します。

4.2.1. リニア (シック) 論理ボリュームの作成

リニア論理ボリューム (LV) を使用すると、複数の物理ストレージユニットを 1 つの仮想ストレージ領域に結合できます。リニア LV は、データ要件に合わせて、簡単に拡張または縮小できます。

前提条件

  • 管理アクセスがある。
  • lvm2 パッケージがインストールされている。
  • ボリュームグループが作成されている。詳細は、LVM ボリュームグループの作成 を参照してください。

手順

  1. ボリュームグループの名前とサイズをリスト表示します。

    # vgs -o vg_name,vg_size
    
      VG              VSize
      VolumeGroupName 30.75g
    Copy to Clipboard Toggle word wrap
  2. リニア LV を作成します。

    # lvcreate --name LogicalVolumeName --size VolumeSize VolumeGroupName
    Copy to Clipboard Toggle word wrap

    LogicalVolumeName は、LV の名前に置き換えます。VolumeSize は、LV のサイズに置き換えます。サイズの接尾辞が指定されていない場合、このコマンドではデフォルトで MB が使用されます。VolumeGroupName は、ボリュームグループの名前に置き換えます。

検証

  • リニア LV が作成されたことを確認します。

    # lvs -o lv_name,seg_type
    
      LV                   Type
      LogicalVolumeName    linear
    Copy to Clipboard Toggle word wrap

4.2.2. storage RHEL システムロールを使用して論理ボリュームを作成またはサイズ変更する

storage ロールを使用して、次のタスクを実行します。

  • 多数のディスクで構成されるボリュームグループに LVM 論理ボリュームを作成する
  • LVM 上の既存のファイルシステムのサイズを変更する
  • LVM ボリュームのサイズをプールの合計サイズのパーセンテージで表す

ボリュームグループが存在しない場合、このロールによって作成されます。ボリュームグループ内に論理ボリュームが存在する場合に、そのサイズが Playbook で指定されたサイズと一致しないと、サイズが変更されます。

論理ボリュームを縮小する場合、データの損失を防ぐために、その論理ボリューム上のファイルシステムによって、縮小する論理ボリューム内の領域が使用されていないことを確認する必要があります。

前提条件

手順

  1. 次の内容を含む Playbook ファイル (例: ~/playbook.yml) を作成します。

    ---
    - name: Manage local storage
      hosts: managed-node-01.example.com
      tasks:
        - name: Create logical volume
          ansible.builtin.include_role:
            name: redhat.rhel_system_roles.storage
          vars:
            storage_safe_mode: false
    
            storage_pools:
              - name: myvg
                disks:
                  - sda
                  - sdb
                  - sdc
                volumes:
                  - name: mylv
                    size: 2G
                    fs_type: ext4
                    mount_point: /mnt/data
    Copy to Clipboard Toggle word wrap

    サンプル Playbook で指定されている設定は次のとおりです。

    size: <size>
    単位 (GiB など) またはパーセンテージ (60% など) を使用してサイズを指定する必要があります。

    Playbook で使用されるすべての変数の詳細は、コントロールノードの /usr/share/ansible/roles/rhel-system-roles.storage/README.md ファイルを参照してください。

  2. Playbook の構文を検証します。

    $ ansible-playbook --syntax-check ~/playbook.yml
    Copy to Clipboard Toggle word wrap

    このコマンドは構文を検証するだけであり、有効だが不適切な設定から保護するものではないことに注意してください。

  3. Playbook を実行します。

    $ ansible-playbook ~/playbook.yml
    Copy to Clipboard Toggle word wrap

検証

  • 指定したボリュームが作成されたこと、または要求したサイズに変更されたことを確認します。

    # ansible managed-node-01.example.com -m command -a 'lvs myvg'
    Copy to Clipboard Toggle word wrap

4.2.3. ストライプ化論理ボリュームの作成

ストライプ化論理ボリューム (LV) を使用すると、複数の物理ボリューム (PV) にデータを分散できます。そのため、複数のディスクの帯域幅を同時に利用して、読み取りおよび書き込み速度を向上できます。

ストライプ化 LV を作成するときは、ストライプの数とサイズを考慮することが重要です。ストライプの数は、データが分散される PV の数です。ストライプの数を増やすと、複数のディスクを同時に利用してパフォーマンスを向上できます。ストライプのサイズは、次のディスクに移動するまでにストライプセット内の各ディスクに書き込まれるデータチャンクのサイズであり、キロバイト (KB) 単位で指定されます。最適なストライプのサイズは、ワークロードとファイルシステムのブロックサイズによって異なります。デフォルトは 64KB ですが、調整可能です。

前提条件

  • 管理アクセスがある。

手順

  1. ボリュームグループの名前とサイズをリスト表示します。

    # vgs -o vg_name,vg_size
    
      VG              VSize
      VolumeGroupName 30.75g
    Copy to Clipboard Toggle word wrap
  2. ストライプ化 LV を作成します。

    # lvcreate --stripes NumberOfStripes --stripesize StripeSize --size LogicalVolumeSize --name LogicalVolumeName VolumeGroupName
    Copy to Clipboard Toggle word wrap

    NumberOfStripes は、ストライプの数に置き換えます。StripeSize は、キロバイト単位のストライプのサイズに置き換えます。--stripesize は必須オプションではありません。ストライプのサイズを指定しなかった場合、デフォルトで 64 KB になります。LogicalVolumeName は、LV の名前に置き換えます。VolumeGroupName は、ボリュームグループの名前に置き換えます。

検証

  • ストライプ化 LV が作成されたことを確認します。

    # lvs -o lv_name,seg_type
    
      LV                   Type
      LogicalVolumeName    striped
    Copy to Clipboard Toggle word wrap

4.2.4. RAID 論理ボリュームの作成

RAID 論理ボリュームを使用すると、複数のディスクを使用して冗長性とパフォーマンスを確保できます。LVM は、RAID0、RAID1、RAID4、RAID5、RAID6、RAID10 など、さまざまな RAID レベルをサポートしています。

LVM を使用すると、ストライプ化 RAID (RAID0、RAID4、RAID5、RAID6)、ミラー化 RAID (RAID1)、またはその両方の組み合わせ (RAID10) を作成できます。

RAID 4、RAID 5、および RAID 6 は、ディスク障害発生時に失われた情報を再構築するのに使用できるパリティーデータを保存することにより、フォールトトレランスを提供します。

RAID LV を作成するときは、各ストライプを個別の PV に配置します。ストライプの数は、ボリュームグループ (VG) 内に存在する PV の数と同じです。

Expand
表4.1 最小限の RAID 構成要件
RAID レベルパリティーデバイスの最小数ストライプの最小数

RAID0

ストライピング

なし

2

2

RAID1

ミラーリング

なし

2

-

RAID4

ストライピング

最初のデバイスを使用してパリティーを保存する

3

2

RAID5

ストライピング

1 つの追加デバイスを使用してパリティーを保存する

3

2

RAID6

ストライピング

2 つの追加デバイスを使用してパリティーを保存する

5

3

RAID10

ストライピングとミラーリング

なし

4

2

前提条件

  • 管理アクセスがある。

手順

  1. ボリュームグループの名前とサイズをリスト表示します。

    # vgs -o vg_name,vg_size
    
      VG              VSize
      VolumeGroupName 30.75g
    Copy to Clipboard Toggle word wrap
  2. RAID LV を作成します。

    • ストライプ化 RAID を作成するには、次を使用します。

      # lvcreate --type raidlevel --stripes NumberOfStripes --stripesize StripeSize --size Size --name LogicalVolumeName VolumeGroupName
      Copy to Clipboard Toggle word wrap

      level は、RAID レベル 0、4、5、または 6 に置き換えます。NumberOfStripes は、ストライプの数に置き換えます。StripeSize は、キロバイト単位のストライプのサイズに置き換えます。Size は、LV のサイズに置き換えます。LogicalVolumeName は、LV の名前に置き換えます。

    • ミラー化 RAID を作成するには、次を使用します。

      # lvcreate --type raid1 --mirrors MirrorsNumber --size Size --name LogicalVolumeName VolumeGroupName
      Copy to Clipboard Toggle word wrap

      MirrorsNumber は、ミラーの数に置き換えます。Size は、LV のサイズに置き換えます。LogicalVolumeName は、LV の名前に置き換えます。

    • ミラー化およびストライプ化 RAID を作成するには、次を使用します。

      # lvcreate --type raid10 --mirrors MirrorsNumber --stripes NumberOfStripes --stripesize StripeSize --size Size --name LogicalVolumeName VolumeGroupName
      Copy to Clipboard Toggle word wrap

      MirrorsNumber は、ミラーの数に置き換えます。NumberOfStripes は、ストライプの数に置き換えます。StripeSize は、キロバイト単位のストライプのサイズに置き換えます。Size は、LV のサイズに置き換えます。LogicalVolumeName は、LV の名前に置き換えます。

検証

  • RAID LV が作成されたことを確認します。

    # lvs -o lv_name,seg_type
    
      LV                   Type
      LogicalVolumeName    raid0
    Copy to Clipboard Toggle word wrap

4.2.5. シン論理ボリュームの作成

シンプロビジョニングでは、ボリュームグループ (VG) の物理エクステント (PE) が割り当てられて、特定の物理サイズのシンプールが作成されます。このシンプールから、論理ボリューム (LV) が、プールの物理容量によって制限されることなく、仮想サイズに基づいて割り当てられます。これにより、すべてのシン LV の合計仮想サイズがシンプールの物理容量を超えると、各シン LV の仮想サイズがシンプールの実際のサイズを超え、オーバープロビジョニングが発生する可能性があります。したがって、容量不足やシステム停止を回避するには、論理的な使用量と物理的な使用量の両方を注意深く監視することが重要です。

シンプロビジョニングは、必要に応じて領域を割り当て、初期コストを削減し、リソースの使用率を向上させることで、ストレージ効率を最適化します。ただし、シン LV を使用する場合は、次の欠点に注意してください。

  • 不適切な破棄処理により、未使用のストレージ領域の解放がブロックされ、時間が経過すると領域がすべて割り当てられる可能性があります。
  • スナップショットのあるファイルシステムでは、コピーオンライト (CoW) 操作が遅くなる可能性があります。
  • データブロックが複数のファイルシステム間で混在する可能性があるため、ランダムアクセスが制限されることがあります。

前提条件

手順

  1. ボリュームグループの名前とサイズをリスト表示します。

    # vgs -o vg_name,vg_size
    
      VG              VSize
      VolumeGroupName 30.75g
    Copy to Clipboard Toggle word wrap
  2. シンプールを作成します。

    # lvcreate --type thin-pool --size PoolSize --name ThinPoolName VolumeGroupName
    Copy to Clipboard Toggle word wrap

    PoolSize は、シンプールが使用できるディスク領域の最大量に置き換えます。ThinPoolName は、シンプールの名前に置き換えます。VolumeGroupName は、ボリュームグループの名前に置き換えます。

  3. シン LV を作成します。

    # lvcreate --type thin --virtualsize MaxVolumeSize --name ThinVolumeName --thinpool ThinPoolName VolumeGroupName
    Copy to Clipboard Toggle word wrap

    MaxVolumeSize は、シンプール内でボリュームが拡張できる最大サイズに置き換えます。ThinPoolName は、シンプールの名前に置き換えます。VolumeGroupName は、ボリュームグループの名前に置き換えます。

    注記

    同じシンプール内に他のシン LV を作成できます。

検証

  • シン LV が作成されたことを確認します。

    # lvs -o lv_name,seg_type
      LV                Type
      ThinPoolName      thin-pool
      ThinVolumeName    thin
    Copy to Clipboard Toggle word wrap

4.2.6. VDO 論理ボリュームの作成

VDO 論理ボリューム (LV) では、ストレージ効率を向上させる Virtual Data Optimizer (VDO) テクノロジーを使用します。VDO LV には、仮想サイズと物理サイズの両方があります。仮想サイズは、ユーザーとアプリケーションに提供されるストレージの合計量を指します。物理サイズは、VG から割り当てられ、VDO プールによって消費される物理ストレージの実際の量です。

VDO LV の仮想サイズは、通常 VDO プールの物理サイズよりも大きいため、オーバープロビジョニングが発生します。そのため、VDO プール内の物理領域を厳重に監視し、必要に応じて拡張する必要があります。

VDO LV と VDO プールは、ペアとして作成され、常にペアとして存在します。

前提条件

  • 管理アクセスがある。

手順

  1. ボリュームグループの名前とサイズをリスト表示します。

    # vgs -o vg_name,vg_size
    
      VG              VSize
      VolumeGroupName 30.75g
    Copy to Clipboard Toggle word wrap
  2. VDO LV を作成します。

    # lvcreate --type vdo --virtualsize VolumeSize --size PhysicalPoolSize --name VDOVolumeName --vdopool VDOPoolName VolumeGroupName
    Copy to Clipboard Toggle word wrap

    VolumeSize は、ボリュームのサイズに置き換えます。PhysicalPoolSize は、プールのサイズに置き換えます。VDOVolumeName は、VDO ボリュームの名前に置き換えます。VDOPoolName は、VDO プールの名前に置き換えます。VolumeGroupName は、ボリュームグループの名前に置き換えます。

検証

  • VDO LV が作成されたことを確認します。

    # lvs -o name,seg_type,size
    
      LV            Type     LSize
      VDOPoolName   vdo-pool   5.00g
      VDOVolumeName vdo        5.00g
    Copy to Clipboard Toggle word wrap
トップに戻る
Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

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

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

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

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

会社概要

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

Theme

© 2025 Red Hat