LVMの概念、用語、および操作の概要
序章
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を使用して、物理ボリュームをボリュームグループに結合し、システムで使用可能なストレージスペースを統合できます。 その後、管理者はボリュームグループを任意の論理ボリュームにセグメント化できます。論理ボリュームは柔軟なパーティションとして機能します。
エクステントとは何ですか?
ボリュームグループ内の各ボリュームは、extendsと呼ばれる小さな固定サイズのチャンクにセグメント化されます。 エクステントのサイズは、ボリュームグループによって決定されます(グループ内のすべてのボリュームは同じエクステントサイズに準拠します)。
物理ボリュームのエクステントは物理エクステントと呼ばれ、論理ボリュームのエクステントは論理エクステントと呼ばれます。 論理ボリュームは、LVMが論理エクステントと物理エクステントの間で維持する単なるマッピングです。 この関係により、エクステントサイズは、LVMが割り当てることができるスペースの最小量を表します。
エクステントは、LVMの柔軟性とパワーの多くの背後にあります。 LVMによって統合デバイスとして提示される論理エクステントは、連続的な物理エクステントにマッピングする必要はありません。 LVMは、ユーザーを中断することなく、論理ボリュームを構成する物理エクステントをコピーして再編成できます。 論理ボリュームは、ボリュームにエクステントを追加したり、ボリュームからエクステントを削除したりするだけで、簡単に拡張または縮小することもできます。
シンプルなユースケース
LVMが使用する用語と構造のいくつかに精通しているので、LVMを使用するいくつかの一般的な方法を探ることができます。 まず、2つの物理ディスクを使用して4つの論理ボリュームを形成する基本的な手順を説明します。
物理デバイスを物理ボリュームとしてマークする
最初のステップは、LVMが認識および管理できるブロックデバイスについてシステムをスキャンすることです。 これを行うには、次のように入力します。
sudo lvmdiskscan
出力には、LVMが対話できるすべての利用可能なブロックデバイスが表示されます。
Output /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のパーティションがあることがわかります。 パーティションは主に/dev/ram*
パーティションであり、パフォーマンスを向上させるためにシステムをRAMディスクとして使用します。 この例のディスクは、200Gのスペースがある/dev/sda
と、100Gの/dev/sdb
です。
警告:LVMで使用する予定のデバイスに、重要なデータが既に書き込まれていないことを再確認してください。 LVM内でこれらのデバイスを使用すると、現在の内容が上書きされます。 サーバーにすでに重要なデータがある場合は、先に進む前にバックアップを作成してください。
使用する物理デバイスがわかったので、pvcreate
コマンドを使用して、LVM内でそれらを物理ボリュームとしてマークできます。
sudo pvcreate /dev/sda /dev/sdb
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 LVMVolGroup /dev/sda /dev/sdb
Output Volume group "LVMVolGroup" successfully created
pvs
の出力をもう一度確認すると、物理ボリュームが新しいボリュームグループに関連付けられていることがわかります。
sudo pvs
Output PV VG Fmt Attr PSize PFree /dev/sda LVMVolGroup lvm2 a-- 200.00g 200.00g /dev/sdb LVMVolGroup 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 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
ご覧のとおり、「workspace」ボリュームが作成され、「LVMVolGroup」ボリュームグループが完全に割り当てられています。
論理ボリュームのフォーマットとマウント
論理ボリュームができたので、通常のブロックデバイスとして使用できます。
論理デバイスは、他のストレージデバイスと同様に、/dev
ディレクトリ内で使用できます。 あなたは2つの場所でそれらにアクセスすることができます:
/dev/volume_group_name/logical_volume_name
/dev/mapper/volume_group_name-logical_volume_name
したがって、Ext4ファイルシステムで4つの論理ボリュームをフォーマットするには、次のように入力します。
sudo mkfs.ext4 /dev/LVMVolGroup/projects sudo mkfs.ext4 /dev/LVMVolGroup/www sudo mkfs.ext4 /dev/LVMVolGroup/db sudo mkfs.ext4 /dev/LVMVolGroup/workspace
または、次のように入力できます。
sudo mkfs.ext4 /dev/mapper/LVMVolGroup-projects sudo mkfs.ext4 /dev/mapper/LVMVolGroup-www sudo mkfs.ext4 /dev/mapper/LVMVolGroup-db sudo mkfs.ext4 /dev/mapper/LVMVolGroup-workspace
フォーマット後、マウントポイントを作成できます。
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の操作の詳細については、Ubuntu16.04でLVMを使用するためのガイドを確認してください。