前書き

  • LVM *、または論理ボリューム管理は、ユーザーがコンポーネントストレージデバイスの物理レイアウトをプールおよび抽象化して、より簡単で柔軟な管理を可能にするストレージデバイス管理テクノロジーです。 デバイスマッパーLinuxカーネルフレームワークを利用して、現在の反復であるLVM2を使用して、既存のストレージデバイスをグループに集め、必要に応じて結合スペースから論理ユニットを割り当てることができます。

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

このガイドでは、LVMがどのように機能するかを簡単に説明し、すぐに起動して実行するために必要な基本的なコマンドを示します。

LVMのアーキテクチャと用語

実際のLVM管理コマンドに飛び込む前に、LVMがストレージデバイスを整理する方法と、LVMが使用する用語のいくつかを基本的に理解することが重要です。

LVMストレージ管理構造

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

  • 物理ボリューム

  • * LVMユーティリティのプレフィックス*: + pv …​ +

  • 説明:物理ブロックデバイスまたは他のディスクのようなデバイス(たとえば、RAIDアレイのようなデバイスマッパーによって作成された他のデバイス)は、LVMによってより高いレベルの抽象化のための未加工の構築材料として使用されます。 物理ボリュームは通常のストレージデバイスです。 LVMは、管理用に割り当てるためにデバイスにヘッダーを書き込みます。

  • ボリュームグループ

  • * LVMユーティリティのプレフィックス*: + vg …​ +

  • 説明:LVMは、物理ボリュームをボリュームグループと呼ばれるストレージプールに結合します。 ボリュームグループは、基礎となるデバイスの特性を抽象化し、コンポーネントの物理ボリュームのストレージ容量を組み合わせた統合論理デバイスとして機能します。

  • 論理ボリューム

  • * LVMユーティリティプレフィックス*: + lv …​ +(汎用LVMユーティリティは `+ lvm …​ +`で始まる場合があります)

  • 説明:ボリュームグループは、任意の数の論理ボリュームにスライスできます。 論理ボリュームは、物理ディスク上のパーティションと機能的には同等ですが、はるかに柔軟性があります。 論理ボリュームは、ユーザーとアプリケーションが対話する主要なコンポーネントです。

要約すると、LVMを使用して物理ボリュームをボリュームグループに結合し、システムで使用可能なストレージスペースを統合できます。 その後、管理者は、ボリュームグループを任意の論理ボリュームにセグメント化して、柔軟なパーティションとして機能させることができます。

エクステントとは何ですか?

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

物理ボリューム上のエクステントは*物理エクステント*と呼ばれ、論理ボリュームのエクステントは*論理エクステント*と呼ばれます。 論理ボリュームは、LVMが論理エクステントと物理エクステントの間で維持する単なるマッピングです。 この関係のため、エクステントサイズは、LV​​Mによって割り当てられるスペースの最小量を表します。

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

シンプルなユースケース

LVMが使用する用語と構造のいくつかに精通したので、LVMを使用するいくつかの一般的な方法を探ることができます。 まず、2つの物理ディスクを使用して4つの論理ボリュームを形成する基本手順を説明します。

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

最初のステップは、LVMが表示および管理できるブロックデバイスのシステムをスキャンすることです。 これを行うには、次のように入力します。

sudo lvmdiskscan

出力には、LVMが対話できるすべての利用可能なブロックデバイスが表示されます。

Output  /dev/ram0  [      64.00 MiB]

 /dev/ram1  [      64.00 MiB]

 . . .

 /dev/ram15 [      64.00 MiB]


 17 partitions
 0 LVM physical volume whole disks
 0 LVM physical volumes

上記の出力から、現在2つのディスクと17のパーティションがあることがわかります。 パーティションの大部分は、パフォーマンスの向上のためにシステムをhttps://en.wikipedia.org/wiki/RAM_drive[Ram disk]として使用する `+ / dev / ram * `パーティションです。 この例のディスクは、200Gのスペースがある ` / dev / sda `と100Gの ` / dev / sdb +`です。

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

sudo pvcreate /dev/ /dev/
Output  Physical volume "/dev/sda" successfully created
 Physical volume "/dev/sdb" successfully created

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

次を入力して、LVMが物理ボリュームを登録したことをすばやく確認できます。

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

ご覧のとおり、両方のデバイスが物理ボリュームを表す「+ PV +」列の下にあります。

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

デバイスから物理ボリュームを作成したので、ボリュームグループを作成できます。 ボリュームグループの名前を選択する必要がありますが、これは一般的な名前のままにします。 ほとんどの場合、割り当ての柔軟性を最大限に高めるために、システムごとに1つのボリュームグループしかありません。 簡単にするために、ボリュームグループを「+ LVMVolGroup +」と呼びます。

1つのコマンドでボリュームグループを作成し、両方の物理ボリュームを追加するには、次のように入力します。

sudo vgcreate  /dev/ /dev/
Output  Volume group "LVMVolGroup" successfully created

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

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

次のように入力すると、ボリュームグループ自体の簡単な概要を確認できます。

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

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

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

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

ボリュームグループから4つの個別の論理ボリュームを作成します。

  • 10G「プロジェクト」ボリューム

  • Webコンテンツ用の5G「www」ボリューム

  • データベース用の20G「db」ボリューム

  • 残りのスペースを埋める「ワークスペース」ボリューム

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

次のような `+ -L +`オプションを使用して、最初の3つの論理ボリュームを作成できます。

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

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

sudo vgs -o +lv_size,lv_name
Output  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列を追加しました。

これで、エクステントで機能する `+ -l `フラグを使用して、ボリュームグループの残りのスペースを「ワークスペース」ボリュームに割り当てることができます。 私たちの意図をよりよく伝えるために、パーセンテージと単位を提供することもできます。 この場合、残りの空き領域を割り当てたいので、 ` 100%FREE +`を渡すことができます。

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

ボリュームグループ情報を再確認すると、利用可能なスペースがすべて使い果たされていることがわかります。

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

ご覧のとおり、「ワークスペース」ボリュームが作成され、「LVMVolGroup」ボリュームグループが完全に割り当てられています。

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

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

論理デバイスは、他のストレージデバイスと同様に、 `+ / dev +`ディレクトリ内で使用できます。 次の2つの場所からアクセスできます。

  • + / dev // +

  • + / dev / mapper /-+

したがって、4つの論理ボリュームをExt4ファイルシステムでフォーマットするには、次のように入力できます。

sudo mkfs.ext4 /dev//
sudo mkfs.ext4 /dev//
sudo mkfs.ext4 /dev//
sudo mkfs.ext4 /dev//

または、次のように入力できます。

sudo mkfs.ext4 /dev/mapper/-
sudo mkfs.ext4 /dev/mapper/-
sudo mkfs.ext4 /dev/mapper/-
sudo mkfs.ext4 /dev/mapper/-

フォーマット後、マウントポイントを作成できます。

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

その後、論理ボリュームを適切な場所にマウントできます。

sudo mount /dev/LVMVolGroup/projects /mnt/projects
sudo mount /dev/LVMVolGroup/www /mnt/www
sudo mount /dev/LVMVolGroup/db /mnt/db
sudo mount /dev/LVMVolGroup/workspace /mnt/workspace

マウントを永続化するには、通常のブロックデバイスの場合と同様に、それらを `+ / etc / fstab +`に追加します。

sudo nano /etc/fstab

/ 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

これで、オペレーティングシステムはブート時にLVM論理ボリュームを自動的にマウントするはずです。

結論

この時点までに、LVMが柔軟なストレージシステムを作成するために管理するさまざまなコンポーネントを十分に理解できることを願っています。 また、LVMセットアップでストレージデバイスを起動して実行する方法の基本的な理解が必要です。

このガイドでは、LVMがLinuxシステムの管理者に提供するパワーと制御について簡単に触れました。 LVMの操作の詳細については、https://www.digitalocean.com/community/tutorials/how-to-use-lvm-to-manage-storage-devices-on-ubuntu-16-04 [ガイドをご覧くださいUbuntu 16.04でLVMを使用する]。