LinuxLVM設定
LVM概要
Linux LVM (Logical Volume Manager) とは
LVMとは、複数のディスクやパーティションを論理的に1つの領域として扱うことができるディスク管理機能です。
ディスクのパーティションを動的かつ自在に変更できる仕組みであり、ディスク容量が不足した際に使われていないパーティション領域を融通したり、追加ストレージを結合することで全体のディスク容量を増加することができます。
LVMのボリューム概念について
LVMにおける用語と概念は以下の通りです。
PV(Physical Volume、物理ボリューム) | 物理的な記憶媒体のことです。一般的なディスクのパーティーションを指します。 |
VG(Volume Group、ボリュームグループ) | 複数のPVをまとめるグループです。仮想的なハードディスクと考えることができます。 |
LV(Logical Volumes、論理ボリューム) | 実際にファイルシステムを作る領域です。仮想的なハードディスク上の仮想的なパーティーションと考えることができます。 |
PE(物理エクステント) | LVMが扱う記憶領域の最小単位です。一般的なLinuxディストリビューションではデフォルトPEサイズは4MBとなっています。 |
ファイルシステム | ファイルが格納される記憶領域です。LVM環境ではLV毎に作成します。 |
LVMの新規作成
LVMの作成手順は以下の通りです。
- LVM用パーティションの新規作成
- PV(Physical Volume、物理ボリューム)作成
- VG(Volume Group、ボリュームグループ)作成
- LV(Logical Volumes、論理ボリューム)作成
- ファイルシステムを作成する
- ファイルシステムをマウントする
以下は/dev/sdbをLVM用パーティションとして作成する手順です。
1 LVM用パーティションの新規作成
接続しているディスクを確認します。
# fdisk -l
LVM用のパーティションを作成します。「n」コマンドで新規パーティションを作成し、「t」コマンドでパーティションタイプを変更します。
Linux LVMパーティションのパーティションIDは「8e」です。
# fdisk /dev/sdb
...
Command (m for help): n
Command action
e extended
p primary partition (1-4)
p
...
Command (m for help): t
Selected partition 1
Hex code (type L to list codes): 8e
Changed system type of partition 1 to 8e (Linux LVM)
...
Command (m for help): w
The partition table has been altered!
パーティションが作成できたことを確認します。
# fdisk -l /dev/sdb1
2 PV(Physical Volume、物理ボリューム)作成
PVを作成します。
# pvcreate /dev/sdb1
Physical volume "/dev/sdb1" successfully created
作成したPVを確認します。
# pvdisplay -C
3 VG(Volume Group、ボリュームグループ)作成
PVをまとめるためにVGを作成します。
「-s」オプションでPEサイズを指定することができます。32MBを指定してみます。
# vgcreate -s 32m vg01 /dev/sdb1
作成したVGを確認します。
# vgdisplay -C
4 LV(Logical Volumes、論理ボリューム)作成
LV(1GBのボリューム)を作成します。
「-n」オプションで論理ボリューム名を指定し、「-L」オプションでボリュームサイズを指定します。(空き容量全てを指定する場合には「-L 100%FREE」と指定します。)
# lvcreate -L 1G -n lv01 vg01
作成したVGを確認します。
# lvdisplay -C
5 ファイルシステムを作成する
LVをext4でフォーマットします。
# mkfs.ext4 /dev/vg01/lv01
6 ファイルシステムをマウントする。
ディレクトリを作成して、マウントします。
# mkdir /exdisk
# mount /dev/vg01/lv01 /exdisk
# df -h
起動時に自動的にマウントするためには/etc/fstabファイルに設定を記述します。
/dev/vg01/lv01 /data ext4 defaults 0 0
LVを拡張する
パーティション領域を拡張したい場合には、LVを拡張します。
1 LVを拡張する
lvextendコマンドを用いて、「-L」オプションで拡張サイズを指定します。
LVを1GB拡張する場合には、以下のコマンドを実行します。
# lvextend -L +1Gb /dev/vg01/lv01
2 ファイルシステムをリサイズする
LVを拡張した後に、ファイルシステムも合わせて拡張します。
なお、Linux ext3/ext4の場合はオンラインリサイズが可能であり、マウントしたまま拡張を実行することができます。
# resize2fs /dev/vg01/lv01
既存の領域にストレージを追加して、LVを拡張する
1 PV (Phisical Volume) 作成
物理パーティション/dev/sdb2を作成し、PVにします。
# fdisk /dev/sdb
n
2
[enter]
[enter]
t
8e
w
# pvcreate /dev/sdb2
# pvdisplay
2 VG (Volume Group) に追加する
PVを既存のVGに追加します。
# vgextend vg01 /dev/sdb2
# vgdisplay
3 LVを拡張する
例えば、1GB分だけLVを拡張します。
# lvextend -L +1Gb /dev/vg01/lv01
4 ファイルシステムをリサイズする
LVを拡張した後に、ファイルシステムも合わせて拡張します。
# resize2fs /dev/vg01/lv01
LVMの解除
1 LVの削除
LVの状態を確認します。
# lvdisplay
# lvscan
LVを削除します。
# lvremove /dev/vg01/lv01
削除後のLVの状態を確認します。
# lvdisplay
# lvscan
2 VGの削除
VGの状態を確認します。
# vgdisplay
# vgscan
VGを削除するためには、VGを停止状態(non-active)にする必要があります。
# vgchange -an /dev/vg01
VGを削除します。
# vgremove /dev/vg01
削除後に、VGの状態を確認します。
# vgdisplay
# vgscan
3 PVの削除
PVの削除はfdiskコマンドからパーティション自体を削除します。