最近打算把家里的旧电脑利用起来,装上Ubuntu Server 24.04.3 LTS作为一个家用NAS服务器,但是给旧电脑安装系统时遇到了一些问题,遂记录下来
GPT分区与MBR分区
GPT 指的是 GUID Partition Table(全局唯一标识分区表),它是 UEFI 规范的一部分,用来替代传统的 MBR(Master Boot Record) 分区表格式。
由于我的硬盘是一块比较老的机械硬盘,硬盘的磁盘分区方式是MBR,主板BIOS配置引导方式是Legacy BIOS,但是目前安装系统推荐的引导和磁盘分区方式是UEFI + GPT,而且我的老主板也是支持UEFI引导的,所以这里干脆直接格式化硬盘转换为了GPT格式,BIOS里配置引导为UEFI 模式。毕竟GPT + UEFI引导有着以下诸多好处:
特性 | UEFI + GPT | BIOS + MBR |
---|---|---|
磁盘支持 | >2TB,分区数量无限制 | ≤2TB,最多 4 主分区 |
启动速度 | 快(并行初始化) | 慢(串行检测硬件) |
安全性 | Secure Boot 防篡改 | 无保护,MBR 易被恶意覆盖 |
引导存储位置 | EFI 分区(/boot/efi) | MBR 第一个扇区(脆弱) |
多系统支持 | 友好(独立 EFI 条目) | 依赖 GRUB 链式加载 |
硬件兼容性 | 现代硬件必备 | 旧设备(2010 年前) |
常见的分区方案
安装系统过程中唯一比较麻烦的步骤就是分区这一步
以上是分区步骤的配置界面,看着比较懵,需要先了解常见的分区方案传统分区和LVM分区,以上默认给的是一个LVM分区方案
传统分区
传统分区就是直接把磁盘分成几个分区,然后按照需要挂载到不同的目录,如下:
/dev/sda1 → /boot (引导分区,~512MB~1GB)
/dev/sda2 → / (系统分区)
/dev/sda3 → /home (用户数据)
/dev/sda4 → /var (日志、缓存、数据库等频繁写入)
swap → 交换分区 (内存不足时使用)
这样分区比较简单,但是有个缺点:前期要规划好大小,否则分区不足需要调整。
现在安装系统一般默认都推荐使用LVM分区方案了
LVM分区
LVM(Logical Volume Manager)把物理磁盘抽象成卷组 VG,再切成逻辑卷 LV,挂载成不同分区,好处是后期可动态扩容,不用担心某个分区满了。
这里要先了解LVM分区的几个概念:
- PV (Physical Volume)
LVM 的最底层,直接对应物理分区,比如/dev/sda2
。 - VG (Volume Group)
卷组,把多个 PV 合成一个大存储池,比如ubuntu-vg
。 - LV (Logical Volume)
逻辑卷,相当于虚拟分区,从 VG 里划分出来,可直接挂载到指定目录上
我的分区方案
了解了以上概念后,再来看上图的内容就能看懂了,它默认将我的整个磁盘分成了3个分区:
- 1G空间格式为FAT32挂在到/boot/efi
- 2G空间格式为ext4挂载到/boot
- 928G空间作为一个PV
在以这个PV新建了一个VG,然后在该VG上新建了一个LV大小使用了100G,格式为ext4挂载到根目录。
这里就有个问题了,因为它给我默认只创建了一个100G大小的LV,但是整个VG大小是928G,所以还剩下很多空间没有用上,所以这里我们必须进行调整,可以再创建一个LV命名为var-lv指定100G空间挂载到/var,也可以再加一个swap-lv分区分配内存的1~2倍大小作为虚拟内存(加不加都行,后续在系统里也可以通过swapfile增加虚拟内存),这样才算是用到了所有空间。
其实这里默认给的引导分区有点过大,如果你的磁盘空间比较紧张,可以适当编辑缩小,比如/boot/efi给512M,/boot给1G。我最终的分区方案如下:
挂载点 | 大小 | 类型 | 文件系统 | 备注 |
---|---|---|---|---|
/boot/efi | 1G | EFI | FAT32 | 必需(UEFI 启动) |
/boot | 2GB | 主分区 | ext4 | 内核与引导文件 |
/ | 100GB | LVM逻辑卷 | ext4 | 系统及应用 |
/var | 100GB | LVM逻辑卷 | ext4 | 数据库、Docker数据等 |
swap | 4GB | LVM逻辑卷 | swap | 虚拟内存 |
/data | 剩余空间 | LVM逻辑卷 | ext4 | 业务数据存储 |
系统安装完后就是如下效果: