LVM概念、用語、及び操作の紹介
はじめに
or
イントロダクション
LVMまたは論理ボリューム管理は、ユーザーに物理デバイスのレイアウトをプール化および抽象化し、柔軟な管理を可能にするストレージデバイス管理技術です。デバイスマッパーリナックスカーネルフレームワークを利用したLVM2は、既存のストレージデバイスをグループ化し、必要に応じて論理ユニットを組み合わせたスペースから割り当てるために使用できます。
LVMの主な利点は、抽象化の拡大、柔軟性、およびコントロールの向上です。論理ボリュームには、意味のある名前(例:「データベース」または「ルートバックアップ」)を付けることができます。ボリュームは、スペース要件が変化するにつれて動的にサイズ変更することもでき、実行中のシステム内の物理デバイス間で移動したりエクスポートすることもできます。LVMは、スナップショット、ストライピング、ミラーリングといった高度な機能も提供しています。
このガイドでは、LVMの仕組みを学び、基本的なコマンドを実践することで、裸の金属マシン上でスムーズに作業を開始する方法を学びます。
LVMのアーキテクチャと用語
LVMの管理コマンドに取り組む前に、LVMがストレージデバイスをどのように整理しているかと、使用する用語の基本的な理解を持つことが重要です。
LVMストレージ管理構造
LVMは物理的なストレージデバイスの上に抽象化を重ねることで機能します。LVMが使用する基本的なレイヤーは、最も原始的なものから順に次のようなものです。
- Physical Volumes: The LVM utility prefix for physical volumes is pv…. This physicallyl blocks devices or other disk-like devices (for example, other devices created by device mapper, like RAID arrays) and are used by LVM as the raw building material for higher levels of abstraction. Physical volumes are regular storage devices. LVM writes a header to the device to allocate it for management.
- Volume Groups: The LVM utility prefix for volume groups is vg….
LVM combines physical volumes into storage pools known as volume groups. Volume groups abstract the characteristics of the underlying devices and function as a unified logical device with combined storage capacity of the component physical volumes. - Logical Volumes: The LVM utility prefix for logical volumes is lv…, generic LVM utilities might begin with lvm…. A volume group can be sliced up into any number of logical volumes. Logical volumes are functionally equivalent to partitions on a physical disk, but with much more flexibility. Logical volumes are the primary component that users and applications will interact with.
LVMは物理ボリュームをボリュームグループに結合し、システム上で利用可能なストレージスペースを統一するために使用できます。その後、管理者はボリュームグループを任意の論理ボリュームに細分化することができます。これらの論理ボリュームは、柔軟なパーティションとして機能します。
理解の範囲
1つのボリュームグループ内の各ボリュームは、エクステントと呼ばれる小さな固定サイズのチャンクに分割されます。エクステントのサイズはボリュームグループによって決定されます。グループ内の全てのボリュームは、同じエクステントサイズに準拠しています。
物理ボリューム上の範囲は物理エクステントと呼ばれ、論理ボリュームの範囲は論理エクステントと呼ばれます。 論理ボリュームは、LVMが論理エクステントと物理エクステントの間で維持するマッピングです。 この関係により、エクステントのサイズはLVMによって割り当てられる最小のスペースを表します。
LVMの柔軟性とパワーの大部分はエクステントに由来しています。LVMで統一デバイスとして表示される論理エクステントは、連続した物理エクステントにマッピングする必要はありません。LVMは、ユーザーに対する一切の中断なしに、論理ボリュームを構成する物理エクステントをコピーしたり再構成したりすることができます。論理ボリュームはまた、エクステントを追加したり削除したりすることで拡張または縮小することができます。
一般的な使用例
LVMの用語や構造に慣れた今、LVMを使用する一般的な方法をいくつか探索できます。まず、2つの物理ディスクを使用して4つの論理ボリュームを形成する手順から始めます。
物理デバイスを物理ボリュームとしてマーキングする。
以下のコマンドを使用して、LVMがアクセスおよび管理できるブロックデバイスをシステムでスキャンしてください。
- 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のパーティションがあることに注意してください。パーティションは主にシステムでパフォーマンス向上のために使用される/dev/ram*パーティションです。この例では、200Gの容量を持つ/dev/sdaと、100Gの容量を持つ/dev/sdbのディスクがあります。
Warning
使用したい物理デバイスを把握したので、pvcreateコマンドを使用してLVM内で物理ボリュームとしてマークしてください。
- sudo pvcreate /dev/sda /dev/sdb
Physical volume “/dev/sda” successfully created Physical volume “/dev/sdb” successfully created
以下の文を日本語で適切に言い換えます(1つのオプションのみです):
これにより、準備が整い、ボリュームグループに追加するためにデバイスにLVMヘッダーを書き込みます。
LVMが物理ボリュームを登録したことを pvs を実行して確認してください。
- sudo pvs
PV VG Fmt Attr PSize PFree /dev/sda lvm2 — 200.00g 200.00g /dev/sdb lvm2 — 100.00g 100.00g
PV列の下で、どちらのデバイスも物理ボリュームを表します。
ボリュームグループに物理ボリュームを追加する
デバイスから物理ボリュームを作成したので、ボリュームグループを作成することができます。ほとんどの場合、最大の柔軟性のためにシステムごとに単一のボリュームグループが存在します。以下のボリュームグループの例はLVMVolGroupという名前ですが、自分のボリュームグループは好きな名前を付けることができます。
ボリュームグループを作成し、両方の物理ボリュームを追加するには、次のコマンドを実行してください。
- sudo vgcreate LVMVolGroup /dev/sda /dev/sdb
Volume group “LVMVolGroup” successfully created
改めてpvsの出力を確認すると、物理ボリュームが新しいボリュームグループに関連付けられていることがわかります。
- 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コマンドによるボリュームグループの簡単な概要をリストアップしてください。
- sudo vgs
VG #PV #LV #SN Attr VSize VFree LVMVolGroup 2 0 0 wz–n- 299.99g 299.99g
現在のボリュームグループには、物理ボリュームが2つあり、論理ボリュームは0であり、下層デバイスの容量が組み合わされています。
ボリュームグループプールから論理ボリュームを作成します。
ボリュームグループが利用可能な状態になったら、そのグループをプールとして使用し、論理ボリュームを割り当てることができます。従来のパーティション作成とは異なり、論理ボリュームを扱う際には、ボリュームの配置を知る必要はありません。なぜなら、LVMがマップして処理してくれるからです。必要なのは、ボリュームの大きさと名前を指定するだけです。
次の例では、ボリュームグループから4つの独立した論理ボリュームを作成します。
- 10G “projects” volume
- 5G “www” volume for web content
- 20G “db” volume for a database
- “workspace” volume that will fill the remaining space
論理ボリュームを作成するには、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
Logical volume “projects” created. Logical volume “www” created. Logical volume “db” created.
vgsコマンドからカスタムな出力を選択することで、論理ボリュームとボリュームグループの関係を表示することができます。
- 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つの列を追加しました。これは、論理ボリュームに割り当てられたスペースの量を示しています。
今、-lフラグを使ってボリュームグループの残りのスペースを「ワークスペース」ボリュームに割り当てることができます。パーセンテージと単位を指定することで、意図をより明確に伝えることもできます。この例では、残りの空きスペースを割り当てるために、「100%FREE」と指定してください。
- sudo lvcreate -l 100%FREE -n workspace LVMVolGroup
Logical volume “workspace” created.
カスタムのvgsコマンドを使用してボリュームグループの情報を確認すると、利用可能なスペースをすべて使用していることがわかります。
- 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
ワークスペースのボリュームが作成され、LVMVolGroupのボリュームグループが完全に割り当てられました。
論理ボリュームのフォーマットとマウント
論理ボリュームを使用することにより、それらを通常のブロックデバイスとして利用できます。
ロジカルデバイスは他のストレージデバイスと同様に、/devディレクトリ内で利用可能です。2つの場所からアクセスすることができます。
- /dev/volume_group_name/logical_volume_name
- /dev/mapper/volume_group_name-logical_volume_name
以下のコマンドを実行して、4つの論理ボリュームをExt4ファイルシステムでフォーマットしてください。
- 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 ファイルにそれらを追加してください。以下の例では nano を使用しています。
- 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セットアップでストレージデバイスを稼働させる方法を把握しました。
Ubuntu 18.04でLVMを使うガイドをご覧いただき、LVMの使い方についてもっと学びましょう。