論理ボリューム管理（LVM）

はじめに

第23章はじめに

このビデオでは、この章で説明するトピックの概要を簡単に説明します。



学習目標
この章の終わりまでに、次のことができるようになります。

LVMの背景となる概念を説明できます。
論理ボリュームを作成できます。
論理ボリュームを表示できます。
論理ボリュームのサイズを変更できます。
LVMスナップショットを使用できます。


論理ボリューム管理

論理ボリューム管理（LVM）
LVM（Logical Volume Management）は、1つの仮想パーティションを複数のチャンクに分割します。各チャンクは、異なるパーティションやディスクに配置できます。

LVMを使用すると多くの利点があります。特に、論理パーティションとファイルシステムのサイズを変更したり、ストレージの領域を追加したり、データを再配置したりすることが簡単にできます。

1つ以上の物理ボリューム（ディスク パーティション）を、ボリューム グループにグループ化します。次に、ボリューム グループを論理ボリュームに分割します。論理ボリュームはシステムの物理ディスク パーティションを模倣したものであり、通常のパーティションとしてファイルシステムをマウントできるようにフォーマットできます。 

物理ボリュームと論理ボリュームの作成、削除、サイズ変更などを行う、さまざまなコマンド ライン ユーティリティがあります。グラフィカル ツールの場合、一部のLinuxディストリビューションではsystem-config-lvmを使用します。ただし、RHELはもはやこのツールをサポートしておらず、現在、ファイルシステムの種類などの最新のバリエーションで確実に動作するグラフィカル ツールはありません。ただ幸いなことに、コマンド ライン ユーティリティは使いにくいものではなく、とにかく柔軟性があります。

LVMはパフォーマンスに影響します。LVMレイヤーのオーバーヘッドから生じる、明らかな追加コストがあります。ただし、非RAIDシステムであっても、ストライピング（複数のディスクへのデータの分割）を使用すれば、ある程度の並列化の向上を実現できます。

RAID（次の章で説明します）と同様に、論理ボリュームは、複数の物理ディスクにまたがることができるファイルシステムを作成するためのメカニズムです。

論理ボリュームを作成するには、すべてのデバイスを大きなディスク領域のプール（ボリューム グループ）に入れ、そのプールから領域を割り当てて論理ボリュームを作成します。

論理ボリュームには、RAIDデバイスに似た機能があります。実際には、RAIDデバイスの上に構築できます。これにより、LVMのスケーラビリティを備えたRAIDデバイスの冗長性が、論理ボリュームに与えられます。

LVMはRAIDよりも優れたスケーラビリティを備えています。論理ボリュームは簡単にサイズ変更できます。つまり、必要に応じて拡大または縮小できます。さらに領域が必要な場合は、いつでも論理ボリュームにデバイスを追加できます。


ボリュームとボリューム グループ
パーティションは物理ボリュームに変換され、複数の物理ボリュームはボリューム グループにグループ化されます。システム上に複数のボリューム グループが存在する場合があります。

ボリューム グループ内の領域はエクステントに分割されます。これらはデフォルトで4MBのサイズですが、サイズは割り当て時に簡単に変更できます。

論理ボリュームは、ボリューム グループから割り当てられます。

論理ボリュームは、エクステントのサイズまたは数によって定義できます
ファイルシステムは論理ボリューム上に構築されます
任意の名前を付けることができます。

LVMのコンポーネント

ボリューム グループの生成と操作には、常にvgで始まるコマンド ライン ユーティリティがあります。

vgcreate：ボリューム グループを生成します。
vgextend：ボリューム グループに物理ボリュームを追加します。
vgreduce：ボリューム グループを縮小します。

ボリューム グループに出入りする物理パーティションを操作するユーティリティはpvで始まり、次のものがあります。

pvcreate：指定パーティションを物理ボリュームとして管理できるようにします。
pvdisplay：使用されている物理ボリュームの詳細な情報を表示します。
pvmove：ボリューム グループ内の1つの物理ボリュームから他の物理ボリュームにデータを移動します。これは、何らかの理由でディスクまたはパーティションが削除される場合に必要になることがあります。さらに以下もあります。
pvremove：指定したパーティションにある物理ボリュームを削除します。

man lvmと入力すると、LVMユーティリティの説明が表示されます。


論理ボリューム ユーティリティ
論理ボリュームの操作には多くのユーティリティがあります。当然のことながら、それらはすべてlvで始まります。最も一般的に使用されるものについて説明しますが、スクリーンショットのように、次のコマンドを使用して、短いコマンド リストを知ることもできます。

$ ls -lF /sbin/lv*

論理ボリューム ユーティリティ

これらのユーティリティは、/usr/sbinではなく/sbinにあります。これらユーティリティがブートまたは修復とリカバリのいずれかに必要な場合があるためです。

そのほとんどは、すべての作業を行うSwiss army knifeプログラムであるlvmにシンボリックリンクされており、呼び出される名前で何が求められているのかを把握できます。これは、ほとんどのpv*とvg*ユーティリティにも当てはまり、簡単に確認できます。


論理ボリュームの作成
lvcreateは、ボリューム グループから論理ボリュームを割り当てます。サイズは、バイト単位またはエクステント数で指定できます（デフォルトは4MBです）。名前は任意のものを使用できます。

lvdisplayは、使用可能な論理ボリュームに関する情報を表示します。

ファイルシステムは論理ボリュームに割り当てられ、他と同じようにmkfsでフォーマットされます。

新しいボリューム グループの生成から始める、新しい論理ボリュームの設定と使用に必要な手順は次のとおりです。

ディスク ドライブにパーティションを作成します（fdiskにおいてシステム の種類は8e）。
パーティションから物理ボリュームを作成します。
ボリューム グループを作成します。
ボリューム グループから論理ボリュームを割り当てます。
論理ボリュームをフォーマットします。
論理ボリュームをマウントします（必要に応じて/etc/fstabも更新します）。

たとえば、パーティションの種類が8eの/dev/sdb1と/dev/sdc1を作成する場合：

$ sudo pvcreate /dev/sdb1
$ sudo pvcreate /dev/sdc1
$ sudo vgcreate -s 16M vg /dev/sdb1
$ sudo vgextend vg /dev/sdc1
$ sudo lvcreate -L 50G -n mylvm vg
$ sudo mkfs -t ext4 /dev/vg/mylvm
$ sudo mkdir /mylvm
$ sudo mount /dev/vg/mylvm /mylvm

以下の行を /etc/fstab追加してください

/dev/vg/mylvm /mylvm ext4 defaults 1 2

これによって永続的なマウントにすることができます。


論理ボリュームの表示
LVMに関する情報を表示するために、いくつかのコマンド ライン プログラムが利用できます。

pvdisplayは物理ボリュームの情報を表示します。物理ボリューム名を省略すると、すべての物理ボリュームがリストされます。

$ pvdisplay
$ pvdisplay /dev/sda5

vgdisplayはボリューム グループを表示します。ボリューム グループ名を省略すると、すべてのボリューム グループが一覧表示されます。

$ vgdisplay
$ vgdisplay /dev/vg0

lvdisplayは論理ボリュームの情報を表示します。論理ボリューム名を省略すると、すべての論理ボリュームがリストされます。

$ lvdisplay
$ lvdisplay /dev/vg0/lvm1

引数がない場合、これらのユーティリティはすべての物理ボリューム、ボリューム グループ、または論理ボリュームを表示します。


論理ボリュームのサイズ変更
LVMを使用する大きな利点の1つは、物理パーティションに作成したファイルシステムで実行する場合と比較して、論理ボリュームのサイズを簡単かつ迅速に変更できることです。このサイズ変更を行うと、エクステントは論理ボリュームに追加または論理ボリュームから削除されます。このエクステントはボリューム グループ内のどこからでも取得できます。ディスクの物理的に連続したセクションのものである必要はありません。

ボリュームにファイルシステムが含まれている場合、ボリュームの拡大または縮小は、ボリュームのサイズ変更とはまったく異なる操作になります。ファイルシステムで使用している論理ボリュームを拡張する場合は、最初にボリュームを拡張してから、ファイルシステムを拡張する必要があります。ファイルシステムを使用している論理ボリュームを圧縮する場合は、まずファイルシステムを圧縮してから、ボリュームを圧縮する必要があります。

これは、次のようにlvresizeで行うのが最良です。

$ sudo lvresize -r -L 20 GB /dev/VG/mylvm

-rオプションは、ボリューム サイズが変更されると同時にファイルシステムのサイズを変更します。

次のようにボリューム グループを減らすこともできます。

$ sudo pvmove /dev/sdc1
$ sudo vgreduce vg /dev/sdc1

縮小中はファイルシステムをマウントできません。ただし、一部のファイルシステムでは、マウント中に拡張がでできます。

ファイルシステムのサイズを変更するユーティリティは、ファイルシステムに依存しています。 lvresizeの他に、lvextend、lvreduce、resize2fsを使用することもできます。


LVMスナップショット
LVMスナップショットは、既存の論理ボリュームの正確なコピーを作成します。バックアップ、アプリケーションのテスト、VM（仮想マシン）の展開に役立ちます。スナップショットの元の状態はブロック マップとして保持されます。

スナップショットは、差分を保存するための領域のみを使用します。

元の論理ボリュームが変更されると、データが変更される前のデータ ブロックがスナップショットにコピーされます。
スナップショットにデータが追加される場合は、これから変更される部分のみが保存されます。
既存の論理ボリュームのスナップショットを作成する場合：

$ sudo lvcreate -l 128 -s -n mysnap /dev/vg/mylvm

そして、マウント ポイントを作成してスナップショットをマウントする場合：

$ mkdir /mysnap
$ mount -o ro /dev/vg/mysnap /mysnap

スナップショットの使用とスナップショットの削除を行う場合：

$ sudo umount /mysnap
$ sudo lvremove /dev/vg/mysnap

スナップショットを使い終わったら、必ずスナップショットを削除してください。スナップショットを削除せず、変更の情報でいっぱいになってしまうと、スナップショット自体が自動的に無効になります。オリジナルのサイズのスナップショットは、オーバーフローすることはありません。


デモ：論理ボリューム マネージャ

このビデオでは、LVMの設定を確認する方法、新しい論理ボリュームを作成する方法、そしてそこにファイルシステムを配置する方法を示します。


演習

課題 23.1: 論理ボリューム

🚩
以下のPDFドキュメントに埋め込まれた外部URLにアクセスする場合は、常に右クリックして新しいタブまたはウィンドウで開いてください。直接クリックしてURLを開こうとすると、コース ウィンドウ／タブが閉じます。

【【これ以降は橋本さんの訳を参照】】

We are going to create a logical volume using two 250 MB partitions. We are going to assume you have real partitionable diskspace available.

1.  Create two 250 MB partitions of type logical volume (8e).
2.  Convert the partitions to physical volumes.
3.  Create a volume group namedmyvgand add the two physical volumes to it. Use the default extent size.
4.  Allocate a 300 MB logical volume namedmylvmfrom volume groupmyvg.
5.  Format and mount the logical volumemylvmat/mylvm
6.  Uselvdisplayto view information about the logical volume.
7.  Grow the logical volume and corresponding filesystem to 350 MB.

Solution 23.1

1.  Execute:
$ sudo fdisk /dev/sda
using whatever hard disk is appropriate, and create the two partitions. While in fdisk, typingtwill let you set the partition type to 8e.  While it doesn’t matter if you don’t set the type, it is a good idea to lessen confusion.  Usewto rewrite the partition table and exit, and then
$ sudo partprobe -s
or reboot to make sure the new partitions take effect.

2.  Assuming the new partitions are /dev/sdaX and /dev/sdaY:
$ sudo pvcreate /dev/sdaX
$ sudo pvcreate /dev/sdaY
$ sudo pvdisplay

3.$ sudo vgcreate myvg /dev/sdaX /dev/sdaY
$ sudo vgdisplay

4.$ sudo lvcreate -L 300M -n mylvm myvg
$ sudo lvdisplay

5.$ sudo mkfs.ext4 /dev/myvg/mylvm
$ sudo mkdir /mylvm
$ sudo mount /dev/myvg/mylvm /mylvm

If you want the mount to be persistent, edit /etc/fstab to include the line:

in /etc/fstab
/dev/myvg/mylvm /mylvm ext4 defaults0 0

6.$ sudo lvdisplay

7.$ df -h
$ sudo lvresize -r -L 350M /dev/myvg/mylvm
$ df -h
または
$ sudo lvresize -r -L +50M /dev/myvg/mylvm
or with older methods you can do:
$ df -h$ sudo lvextend -L 350M /dev/myvg/mylvm
$ sudo resize2fs /dev/myvg/mylvm
$ df -h


知識チェック

「第23章 - 論理ボリューム管理（LVM）」を完遂しました。おめでとうございます。このクイズに答えて、これまでに学んだ概念の理解度をチェックしてください。

クイズ開始

問題 23.1
以下のリストから正しい文章を選択してください。

A. PVはVGにグループ化されます。VGはLVに分割されます
B. VGはPVにグループ化されます。PVはLVに分割されます
C. LVはVGにグループ化されます。VGはPVに分割されます

問題 23.2
LVMを使用して新しいディスクを使用可能にする手順として、最適な順序は何ですか？

i. 物理ボリュームを作成します
ii. 論理ボリュームを割り当てます
iii. 論理ボリュームをマウントします
iv. ボリューム グループを作成します
v。論理ボリュームをフォーマットします
vi. ディスクをパーティション分割します

A. vi, iv, i, v, ii, iii
B. i, vi, iv, ii, v, iii
C. i, iv, vi, ii, v, iii
D. vi, i, iv, ii, v, iii


