LVM の概要
LVM は Logical Volume Manager の略で、Linux 環境でディスク パーティションを管理するためのメカニズムです。 LVM は、ハードディスクとファイル システムの間に論理層を追加して、ファイル システムの基礎となるハードディスク パーティション レイアウトを保護し、ハードディスク パーティション管理の柔軟性を向上させます。
LVM を使用してハードディスクを管理する基本的なプロセスは次のとおりです。
- ハードドライブを物理ボリュームとして作成する
- 複数の物理ボリュームをボリューム グループに結合する
- ボリュームグループ内に論理ボリュームを作成する
- 論理ボリューム上にファイルシステムを作成する
- LVM を通じてハードディスクを管理すると、ファイル システムはハードディスクのサイズに制限されなくなり、複数のハードディスクに分散したり、動的に拡張したりすることができます。
LVMの基本概念
- 物理ストレージ メディア (物理メディア): システムの /dev/hda、/dev/sda などのハード ディスクなど、システムの物理ストレージ デバイスを指します。これは、ストレージ システムの最下位レベルのストレージ ユニットです。
- 物理ボリューム (PV): ハードディスク パーティション、または論理的にディスク パーティションと同じ機能を持つデバイス (RAID など) を指します。 LVM の基本的なストレージ論理ブロックです。物理ボリュームには、デフォルトで 2 番目の 512 バイト セクタに配置される特別なラベルが含まれていますが、ラベルは最初の 4 つのセクタのいずれかに配置することもできます。タグには、物理ボリュームのランダムな一意の識別子 (UUID) が含まれており、ブロック デバイスのサイズと、デバイス内の LVM メタデータが保存される場所が記録されます。
- ボリューム グループ (VG): 物理ボリュームで構成され、基礎となる物理ボリュームの詳細がマスクされます。特定の物理ボリューム情報に関係なく、ボリューム グループ上に 1 つ以上の論理ボリュームを作成できます。
- 論理ボリューム (LV): ボリューム グループは直接使用できないため、使用する前に論理ボリュームに分割する必要があります。論理ボリュームは、異なるファイル システムにフォーマットして、マウント後に直接使用できます。
- 物理エクステント (PE): 物理ボリュームは同じサイズの「ブロック」に格納され、ブロックのサイズはボリューム グループ内の論理ボリューム ブロックのサイズと同じです。
- 論理エクステント (LE): 論理ボリュームは「ブロック」という単位で格納され、ボリューム グループ内のすべての論理ボリュームのブロック サイズは同じになります。
インストール
1
2
|
sudo apt update
sudo apt install lvm2
|
物理ボリュームPVの管理
物理ボリュームの作成
1
2
3
4
|
pvcreate [option] devname ...
示例:将/dev/sdb、/dev/sdc创建为物理卷。
# pvcreate /dev/sdb /dev/sdc
|
物理ボリュームを表示する
1
2
3
4
|
pvdisplay [option] devname
示例:显示物理卷/dev/sdb的基本信息。
# pvdisplay /dev/sdb
|
物理ボリュームの削除
1
2
3
4
|
pvremove [option] pvname ...
示例:删除物理卷/dev/sdb。如果物理卷已经加入卷组,需要先删除卷组或者从卷组中移除,再删除物理卷。
# pvremove /dev/sdb
|
ボリュームグループVGの管理
ボリュームグループの作成
1
2
3
4
|
vgcreate [option] vgname pvname ...
示例:创建卷组 vg1,并且将物理卷/dev/sdb和/dev/sdc添加到卷组中。
# vgcreate vg1 /dev/sdb /dev/sdc
|
ボリュームグループの表示
1
2
3
4
|
vgdisplay [option] [vgname]
示例:显示卷组vg1的基本信息。
# vgdisplay vg1
|
ボリュームグループの拡張
1
2
3
4
|
vgextend [option] vgname pvname ...
示例:将卷组vg1中添加物理卷/dev/sdb。
# vgextend vg1 /dev/sdb
|
ボリュームグループの縮小
1
2
3
4
|
vgreduce [option] vgname pvname ...
示例:从卷组vg1中移除物理卷/dev/sdb2。
# vgreduce vg1 /dev/sdb2
|
ボリュームグループの削除
1
2
3
4
|
vgremove [option] vgname
示例:删除卷组vg1。
# vgremove vg1
|
論理ボリュームLVの管理
論理ボリュームの作成
1
2
3
4
5
6
7
|
lvcreate [option] vgname
示例1:在卷组vg1中创建10G大小的逻辑卷。
# lvcreate -L 10G vg1
示例2:在卷组vg1中创建200M的逻辑卷,并命名为lv1。
# lvcreate -L 200M -n lv1 vg1
|
論理ボリュームの表示
1
2
3
4
|
lvdisplay [option] [lvname]
示例:显示逻辑卷lv1的基本信息。
# lvdisplay /dev/vg1/lv1
|
論理ボリュームのサイズを変更する
1
2
3
4
5
6
7
8
9
10
|
lvresize [option] vgname
示例1:为逻辑卷/dev/vg1/lv1增加200M空间。
# lvresize -L +200 /dev/vg1/lv1
示例2:为逻辑卷/dev/vg1/lv1减少200M空间。
# lvresize -L -200 /dev/vg1/lv1
示例3:为逻辑卷/dev/vg1/lv1增加所有可用空间
# lvresize -l +100%FREE /dev/vg1/lv1
|
論理ボリュームを拡張する
1
2
3
4
5
6
7
|
lvextend [option] lvname
示例1:为逻辑卷/dev/vg1/lv1增加100M空间。
# lvextend -L +100M /dev/vg1/lv1
示例2:为逻辑卷/dev/vg1/lv1增加所有可用空间
# lvextend -l +100%FREE /dev/vg1/lv1
|
論理ボリュームを縮小する
1
2
3
4
|
lvreduce [option] lvname
示例:将逻辑卷/dev/vg1/lv1的空间减少100M。
# lvreduce -L -100M /dev/vg1/lv1
|
論理ボリュームの削除
1
2
3
4
|
lvremove [option] vgname
示例:删除逻辑卷/dev/vg1/lv1。
# lvremove /dev/vg1/lv1
|
ファイルシステムを作成してマウントする
ファイルシステムの作成
1
2
3
4
|
mkfs [option] lvname
示例:在逻辑卷/dev/vg1/lv1上创建ext4文件系统。
# mkfs -t ext4 /dev/vg1/lv1
|
ファイルシステムを手動でマウントする
1
2
3
4
|
mount lvname mntpath
示例:将逻辑卷/dev/vg1/lv1挂载到/mnt/data目录。
# mount /dev/vg1/lv1 /mnt/data
|
拡張ファイルシステム
論理ボリューム LV を拡張した後、パーティションのサイズは変更されません。パーティションを手動で拡張する必要があります。以下では、例として ext4 ファイル システムを取り上げます。
1
2
3
4
5
6
|
先把分区umount
umount /dev/vg1/lv1
检查并修复文件系统的错误
e2fsck -f /dev/vg1/lv1
扩展文件系统到所有分区空间
resize2fs /dev/vg1/lv1
|
さらに、umount を使用せずにパーティション サイズをオンラインで直接調整することもできることがわかりました。
1
2
|
扩展文件系统到所有分区空间
resize2fs /dev/vg1/lv1
|