在Ubuntu中使用LVM管理硬盘

LVM是逻辑卷管理(Logical Volume Manager)的简称,它是Linux环境下对磁盘分区进行管理的一种机制。LVM通过在硬盘和文件系统之间添加一个逻辑层,来为文件系统屏蔽下层硬盘分区布局,提高硬盘分区管理的灵活性,

LVM简介

LVM是逻辑卷管理(Logical Volume Manager)的简称,它是Linux环境下对磁盘分区进行管理的一种机制。LVM通过在硬盘和文件系统之间添加一个逻辑层,来为文件系统屏蔽下层硬盘分区布局,提高硬盘分区管理的灵活性.

使用LVM管理硬盘的基本过程如下:

  • 将硬盘创建为物理卷
  • 将多个物理卷组合成卷组
  • 在卷组中创建逻辑卷
  • 在逻辑卷之上创建文件系统
  • 通过LVM管理硬盘之后,文件系统不再受限于硬盘的大小,可以分布在多个硬盘上,也可以动态扩容。

LVM基本概念

  • 物理存储介质(The physical media):指系统的物理存储设备,如硬盘,系统中为/dev/hda、/dev/sda等等,是存储系统最低层的存储单元。
  • 物理卷(Physical Volume,PV):指硬盘分区或从逻辑上与磁盘分区具有同样功能的设备(如RAID),是LVM的基本存储逻辑块。物理卷包括一个特殊的标签,该标签默认存放在第二个 512 字节扇区,但也可以将标签放在最开始的四个扇区之一。该标签包含物理卷的随机唯一识别符(UUID),记录块设备的大小和LVM元数据在设备中的存储位置。
  • 卷组(Volume Group,VG):由物理卷组成,屏蔽了底层物理卷细节。可在卷组上创建一个或多个逻辑卷且不用考虑具体的物理卷信息。
  • 逻辑卷(Logical Volume,LV):卷组不能直接用,需要划分成逻辑卷才能使用。逻辑卷可以格式化成不同的文件系统,挂载后直接使用。
  • 物理块(Physical Extent,PE):物理卷以大小相等的“块”为单位存储,块的大小与卷组中逻辑卷块的大小相同。
  • 逻辑块(Logical Extent,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
记录并分享
Built with Hugo
主题 StackJimmy 设计