ウェブサイト検索

LVMの概念、用語、および操作への入門


紹介

LVM(論理ボリューム管理)は、ユーザーにストレージデバイス管理の技術を提供するもので、コンポーネントストレージデバイスの物理的な配置をプールし、抽象化する力を与え、柔軟な管理を可能にします。現在のバージョンであるLVM2は、デバイスマッパーLinuxカーネルのフレームワークを利用して、既存のストレージデバイスをグループ化し、必要に応じて結合されたスペースから論理ユニットを割り当てることができます。

LVMの主な利点は、抽象化、柔軟性、および制御が向上することです。論理ボリュームは「データベース」や「ルートバックアップ」などの意味のある名前を持つことができます。また、ボリュームはスペースの要件が変わるにつれて動的にサイズ変更することができ、稼働中のシステム内のプール内の物理デバイス間で移動させたり、エクスポートしたりすることができます。LVMはスナップショット作成、ストライピング、ミラーリングなどの高度な機能も提供しています。

このガイドでは、LVMの仕組みを学び、基本的なコマンドを練習して、ベアメタルマシンで迅速に動作を開始する方法を習得します。

LVMアーキテクチャと用語

LVM管理コマンドに入る前に、LVMがストレージデバイスをどのように整理し、どのような用語を使っているかの基本的な理解を持つことが重要です。

LVMストレージ管理構造

LVMは物理ストレージデバイスの上に抽象化を重ねることによって機能します。LVMが使用する基本的なレイヤーは、最も原始的なものから始まり、次の通りです:

  • 物理ボリューム: 物理ボリュームに対するLVMユーティリティのプレフィックスはpv...です。これは物理的にブロックされたデバイスまたは他のディスクのようなデバイス(例えば、RAIDアレイのようなデバイスマッパーによって作成された他のデバイス)であり、LVMによってより高い抽象レベルのための生の構成材料として使用されます。物理ボリュームは通常のストレージデバイスです。LVMはデバイスにヘッダーを書き込み、それを管理のために割り当てます。

  • ボリュームグループ: LVMユーティリティにおけるボリュームグループのプレフィックスはvg...です。LVMは物理ボリュームをボリュームグループと呼ばれるストレージプールにまとめます。ボリュームグループは、基盤となるデバイスの特性を抽象化し、構成物理ボリュームの結合されたストレージ容量を持つ統一された論理デバイスとして機能します。

  • 論理ボリューム: LVMユーティリティの論理ボリューム用の接頭辞はlv...であり、一般的なLVMユーティリティはlvm...で始まる場合があります。ボリュームグループは任意の数の論理ボリュームに分割できます。論理ボリュームは物理ディスクのパーティションに機能的に相当しますが、はるかに柔軟性があります。論理ボリュームは、ユーザーやアプリケーションが対話する主なコンポーネントです。

LVMは、物理ボリュームをボリュームグループに結合して、システム上のストレージスペースを統合するために使用できます。その後、管理者はボリュームグループを任意の論理ボリュームに分割でき、これらは柔軟なパーティションとして機能します。

範囲の理解

ボリュームグループ内の各ボリュームは、エクステントと呼ばれる小さく固定サイズのチャンクにセグメント化されています。エクステントのサイズはボリュームグループによって決定されます。グループ内のすべてのボリュームは、同じエクステントサイズに準拠しています。

物理ボリュームの拡張は物理エクステントと呼ばれ、一方、論理ボリュームの拡張は論理エクステントと呼ばれます。論理ボリュームは、LVMが論理エクステントと物理エクステントの間で維持するマッピングです。この関係のため、エクステントサイズはLVMが割り当てることができる最小のスペースを表します。

エクステントはLVMの柔軟性と機能の多くの背後にあります。LVMによって統一されたデバイスとして提示される論理エクステントは、連続した物理エクステントにマッピングされる必要はありません。LVMは、ユーザーに中断を与えることなく、論理ボリュームを構成する物理エクステントをコピーしたり再編成したりすることができます。また、論理ボリュームは、エクステントを追加または削除することで拡張または縮小できます。

一般的な使用例

LVMが使用する用語や構造に慣れたので、LVMの一般的な使い方をいくつか探ってみましょう。まず、2つの物理ディスクを使用して4つの論理ボリュームを形成する手順から始めます。

物理デバイスを物理ボリュームとしてマークする

最初に、LVM がアクセスし管理できるブロックデバイスをシステムでスキャンします。これを以下のコマンドで行うことができます。

  1. sudo lvmdiskscan

出力は、LVMが対話できるすべての利用可能なブロックデバイスを返します。

 /dev/ram0 [   64.00 MiB] 
 /dev/sda  [   200.00 GiB] 
 /dev/ram1 [   64.00 MiB] 

 . . .

 /dev/ram15 [   64.00 MiB] 
 /dev/sdb  [   100.00 GiB] 
 2 disks
 17 partitions
 0 LVM physical volume whole disks
 0 LVM physical volumes

この例では、現在2つのディスクと17のパーティションがあることに注目してください。パーティションは主にシステムでパフォーマンス向上のためにRAMディスクとして使用される/dev/ram*パーティションです。この例のディスクは、200Gのスペースを持つ/dev/sdaと、100Gのスペースを持つ/dev/sdbです。

警告: LVMで使用する予定のデバイスにすでに重要なデータが書き込まれていないことを必ずダブルチェックしてください。これらのデバイスをLVM内で使用すると、現在の内容が上書きされます。サーバーに重要なデータがある場合は、進む前にバックアップを取ってください。

これで使用したい物理デバイスがわかったので、pvcreateコマンドを使用して、それらをLVM内の物理ボリュームとしてマークします。

  1. sudo pvcreate /dev/sda /dev/sdb
 Physical volume "/dev/sda" successfully created
 Physical volume "/dev/sdb" successfully created

これにより、デバイスにLVMヘッダーが書き込まれ、ボリュームグループに追加する準備ができていることが示されます。

次のコマンドpvsを実行して、LVMが物理ボリュームを登録していることを確認してください:

  1. sudo pvs
 PV     VG  Fmt Attr PSize  PFree 
 /dev/sda    lvm2 --- 200.00g 200.00g
 /dev/sdb    lvm2 --- 100.00g 100.00g

両方のデバイスが物理ボリュームを表すPV列の下にあることに注意してください。

ボリュームグループに物理ボリュームを追加する

デバイスから物理ボリュームを作成したので、ボリュームグループを作成できます。通常、システムごとに単一のボリュームグループを持つことで、割り当ての柔軟性を最大限に高めます。以下のボリュームグループの例はLVMVolGroupという名前です。ボリュームグループには好きな名前を付けることができます。

ボリュームグループを作成し、両方の物理ボリュームをそれに追加するには、次のコマンドを実行します:

  1. sudo vgcreate LVMVolGroup /dev/sda /dev/sdb
 Volume group "LVMVolGroup" successfully created

pvsの出力を再確認すると、あなたの物理ボリュームが新しいボリュームグループに関連付けられていることがわかります:

  1. sudo pvs
 PV     VG     Fmt Attr PSize  PFree 
 /dev/sda  LVMVolGroup lvm2 a-- 200.00g 200.00g
 /dev/sdb  LVMVolGroup lvm2 a-- 100.00g 100.00g

vgsを使用して、ボリュームグループの簡単な要約をリストします:

  1. sudo vgs
 VG     #PV #LV #SN Attr  VSize  VFree 
 LVMVolGroup  2  0  0 wz--n- 299.99g 299.99g

あなたのボリュームグループには現在、2つの物理ボリューム、0の論理ボリュームがあり、基盤となるデバイスの合計容量があります。

ボリュームグループプールから論理ボリュームを作成する

ボリュームグループが利用可能になったので、それを論理ボリュームを割り当てるためのプールとして使用できます。従来のパーティショニングとは異なり、論理ボリュームを扱う場合、LVMがこれをマッピングして管理してくれるため、ボリュームのレイアウトを知る必要はありません。ボリュームのサイズと名前を提供するだけで済みます。

次の例では、ボリュームグループから4つの別々の論理ボリュームを作成します。

  • 10G「プロジェクト」のボリューム
  • 5G「www」ウェブコンテンツのボリューム
  • データベース用の20G「db」ボリューム
  • 残りのスペースを埋める「ワークスペース」ボリューム

論理ボリュームを作成するには、lvcreate コマンドを使用します。使用するボリュームグループを指定する必要があり、-n オプションを使用して論理ボリュームに名前を付けることができます。サイズを直接指定するには、-L オプションを使用します。代わりに、サイズをエクステント数で指定したい場合は、-l オプションを使用できます。

最初の3つの論理ボリュームを-Lオプションで作成します:

  1. sudo lvcreate -L 10G -n projects LVMVolGroup
  2. sudo lvcreate -L 5G -n www LVMVolGroup
  3. sudo lvcreate -L 20G -n db LVMVolGroup
 Logical volume "projects" created.
 Logical volume "www" created.
 Logical volume "db" created.

vgs コマンドからカスタム出力を選択することで、論理ボリュームとそのボリュームグループとの関係を表示できます:

  1. sudo vgs -o +lv_size,lv_name
 VG     #PV #LV #SN Attr  VSize  VFree  LSize LV   
 LVMVolGroup  2  3  0 wz--n- 299.99g 264.99g 10.00g projects
 LVMVolGroup  2  3  0 wz--n- 299.99g 264.99g 5.00g www   
 LVMVolGroup  2  3  0 wz--n- 299.99g 264.99g 20.00g db

この例では、出力の最後の2つの列を追加しました。これは、あなたの論理ボリュームにどれだけのスペースが割り当てられているかを示しています。

さて、ボリュームグループ内の残りのスペースを"workspace"ボリュームに割り当てることができます。-lフラグを使用すると、拡張単位で処理されます。また、意図をより明確にするために、パーセンテージや単位を指定することもできます。この例では、残りの空きスペースを割り当てるために、100%FREEを使用します。

  1. sudo lvcreate -l 100%FREE -n workspace LVMVolGroup
 Logical volume "workspace" created.

カスタムvgsコマンドでボリュームグループ情報を確認すると、使用可能なスペースをすべて使い切っていることに気づきます。

  1. sudo vgs -o +lv_size,lv_name
 VG     #PV #LV #SN Attr  VSize  VFree LSize  LV    
 LVMVolGroup  2  4  0 wz--n- 299.99g  0  10.00g projects 
 LVMVolGroup  2  4  0 wz--n- 299.99g  0  5.00g www   
 LVMVolGroup  2  4  0 wz--n- 299.99g  0  20.00g db    
 LVMVolGroup  2  4  0 wz--n- 299.99g  0 264.99g workspace

ワークスペースボリュームが作成され、LVMボリュームグループが完全に割り当てられました。

論理ボリュームのフォーマットとマウント

論理ボリュームができたので、通常のブロックデバイスとして使用できます。

/devディレクトリ内で、他のストレージデバイスのように論理デバイスを利用できる。これらには2つの場所からアクセスできます:

    /dev/volume_group_name/logical_volume_name
    /dev/mapper/volume_group_name-logical_volume_name

4つの論理ボリュームをExt4ファイルシステムでフォーマットするには、次のコマンドを実行してください:

  1. sudo mkfs.ext4 /dev/LVMVolGroup/projects
  2. sudo mkfs.ext4 /dev/LVMVolGroup/www
  3. sudo mkfs.ext4 /dev/LVMVolGroup/db
  4. sudo mkfs.ext4 /dev/LVMVolGroup/workspace

あるいは、次のように実行できます:

  1. sudo mkfs.ext4 /dev/mapper/LVMVolGroup-projects
  2. sudo mkfs.ext4 /dev/mapper/LVMVolGroup-www
  3. sudo mkfs.ext4 /dev/mapper/LVMVolGroup-db
  4. sudo mkfs.ext4 /dev/mapper/LVMVolGroup-workspace

フォーマット後、マウントポイントを作成します:

  1. sudo mkdir -p /mnt/{projects,www,db,workspace}

次に、論理ボリュームを適切な位置にマウントします:

  1. sudo mount /dev/LVMVolGroup/projects /mnt/projects
  2. sudo mount /dev/LVMVolGroup/www /mnt/www
  3. sudo mount /dev/LVMVolGroup/db /mnt/db
  4. sudo mount /dev/LVMVolGroup/workspace /mnt/workspace

マウントを永続化するには、お好みのテキストエディタを使用して、それらを/etc/fstabファイルに追加します。次の例ではnanoを使用しています。

  1. sudo nano /etc/fstab
. . .

/dev/LVMVolGroup/projects /mnt/projects ext4 defaults,nofail 0 0
/dev/LVMVolGroup/www /mnt/www ext4 defaults,nofail 0 0
/dev/LVMVolGroup/db /mnt/db ext4 defaults,nofail 0 0
/dev/LVMVolGroup/workspace /mnt/workspace ext4 defaults,nofail 0 0

ファイルを編集した後は、保存して終了します。nanoを使用している場合は、CTRL+cを押し、次にy、その後ENTERを押します。

オペレーティングシステムは、ブート時にLVM論理ボリュームを自動的にマウントする必要があります。

結論

あなたは今、LVMが柔軟なストレージシステムを作成するために管理するさまざまなコンポーネントと、LVMセットアップでストレージデバイスを稼働させる方法について理解しています。

LVMを使用する方法について詳しく知るには、Ubuntu 18.04でのLVMの使用に関するガイドをご覧ください。

関連記事: