近年来的 Linux 系统在安装时默认都使用 LVM 来进行磁盘管理,如果我们在安装时一路默认下去,很可能进入系统后发现只有磁盘一半的可用空间,尤其是 Ubuntu。
当然我们可以在安装时不使用 LVM 来管理磁盘,但是 LVM 管理磁盘有诸多好处,它最大的好处就是可以灵活的组合使用磁盘空间,比如让不同大小的磁盘组合在一块共用空间,也可以方便的转移和替换磁盘,这非常有利于应对未来的需求变化。
如果我们选择使用 LVM,那么在安装时可以进行一些设置,来消除默认情况下的空间利用率。
当然这是一篇针对完全没有了解 LVM 的人的手把手教程,如果对 LVM 已经比较了解,就没必要再看下去了。
LVM 的基本概念
首先我们要搞清楚 LVM 的基本概念,我们可以把 LVM 简单的理解成有三层,第一层为 PV(物理层),第二层为 VG(卷组),第三层为 LV(逻辑卷),如下图。
PV 就是建立在物理磁盘和磁盘分区之上一个层,它可以把磁盘的分区或 Raid 阵列创建为 PV 层,只有创建为 PV 后才可以作为 LVM 的基础使用。
VG 是将单个或多个 PV 组成的一个卷组,卷组共享这些 PV 的总空间,一个 VG 对于 LVM 来说就相当于一块虚拟的磁盘,只是这个磁盘我们可以通过调整参与的 PV 灵活的调整整个 VG 的可用空间,这是 LVM 的核心特点。
LV 相当于在 VG 之上真正创建出来的分区,这个分区最终挂载到文件系统中来直接使用。
网上已经有大量的包括命令行操作的文章可以参阅,感兴趣的可以去搜索查看。
安装时直接调整 LV 可用空间
我们这里只以最新的 Ubuntu 22.04 - Jammy Jellyfish 在安装过程中如何调整来做演示:
在我们启动系统安装时,一路来到存储设置这一块:
按照默认的选择,这里测试的磁盘是 40G,选择 Done 继续下一步进入磁盘分区配置界面。
这个界面就是我们的重点了,可以看到系统划分了三个分区,分别挂载在 /boot 内核分区,/boot/efi 的 UEFI 启动分区,还有挂载在 / 的主分区,而且主分区居然只有 18.472G,下面的 AVAILABLE DEVICES 中 ubuntu-vg 下居然还有 18.472G 的空闲空间。
通过下面的 USED DEVICES 可以看到 TYPE 为 local disk 的磁盘实际有三个分区,partition 3 是划分给了 ubuntu-vg 这个 PV 组成的卷组,说明 VG 是占了磁盘分区3所有空间的,重点就是 LV 并没有使用整个 VG 的空间。
此时如果只要简单的把 LV 的空间进行调整,即可使用全部 VG 的 36.945G 空间了,我们选中 ubunt-lv 这个 LV,按回车,在右侧菜单中选择 Edit 回车。
在出现的 LV 编辑界面中,将 Size 填写到最大值 36.945G,或直接删除 Size 里的值 Save 即可,此时系统会自动使用最大值空间。
保存后的空间布局如下,ubuntu-lv 已经使用了所有空间,此时选择 Done 继续进行后面的操作即可。
极致压榨
但是如果追求极致一些的话,EFI 和 Boot 分区占用的空间也挺大的,系统居然为它们分配了加在一起有 3G 以上的空间,这里系统给的其实是安全范围以上的冗余值,EFI 的空间根据官方推荐其实 100~250M 已经足以,根据我个人的喜好,比较喜欢把这些空间调整到安全的最小值。
调整 EFI 和 Boot 分区空间
所以这里准备将 EFI 设为 250M(如果使用的是 Grub 则可以忽略 EFI 的部分),Boot 设为 500M,可以腾出 2G 多的空间。
对于 /boot/efi, /boot 这两个传统分区,可以直接编辑以调整分区大小。在分区的菜单上选择 Edit 在接下来的界面中直接编辑分区空间保存即可。
可以看到保存后在可用设备中又多出了 2.317G 可用空间。
扩展分区3可用空间
因为 LVM 可调整空间是建立在 VG 之上的,而 VG 内的 PV 是物理卷且已设为 36.948G,所以要扩展 VG 的空间,必须删除并重建 PV 才行,而因为 VG 下只有此一个 PV(VG 至少要包含一个 PV),只能删除整个 LV、VG、PV 再重建。
先删除 LV、再删除 VG。
删除 LV 和 PV 后可以看以看到空出的 PV 分区3,和多出来的可用空间 2.317G,然后编辑分区3,将它的可用空间调整至最大值。
现在分区3的可用空间是剩下的所有 39.265G。
重建 LVM
然后我们重新创建 LVM 即可,选择 [ Create volume group (LVM) ] 在编辑界面中选择分区3(partition 3)创建 VG,VG 的名字可以自己定义,比如使用系统之前的 ubuntu-vg 这个名字,我这里就用默认的 vg0。
此时得到VG:vg0,然后需要创建逻辑卷 LV:在 vg0 下的可用空间上创建逻辑卷,选择 Create Logical Volume。
在 LV 的编辑界面中,Size 可以直接不填(不填代表使用所有空间),名称看情况,你可以命名为原来的 ubuntu-lv,我这里就用默认 lv-0 了。
创建后,系统已经自动帮我们把它挂载到 / 了,可用空间 39.261G。
到这里我们的整个磁盘调整就完成了。选择 Done,在对话框中选 Continue 即可继续安装。
步骤看起来好像很多,其实只要理解了 LVM 的基本概念,就知道这其实只是重建 PV,再把 VG、LV 建一遍的过程。
参考链接:
https://www.cnblogs.com/cnjavahome/p/11178998.html
https://help.ubuntu.com/community/DiskSpace
把所有的剩余空间都放在一个VG里面,然后又把所有的VG空间都分给了/,那么这样跟直接把所有剩余空间都分成一个区分给/,而不使用LVM,有什么区别?
这种情况下是没有区别的,仅仅是用到了LVM而已,但是用LVM的意义在于未来的扩展和调整更加的自由。
刚开始学习还在想为什么ubuntu安装后只有一半空间可用,原来是设置问题,还以为lvm是软件raid的性质,所以牺牲了一半空间
通俗易懂,不错不错