ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

Ubuntu 手动分区指南:GPT/UEFI、LVM 与避坑实战

Ubuntu 手动分区指南:GPT/UEFI、LVM 与避坑实战 简介磁盘分区是操作系统安装中基础且关键的一环尤其对于 Linux 用户而言理解 GPT 与 MBR 分区表、UEFI 引导模式以及挂载点职责能从根本上避免系统盘爆满、重装丢数据等常见问题。以 Ubuntu 为例/、/home 与 swap 的划分不仅影响日常存储空间分配还决定了内核升级和系统恢复的稳定性。LVM 的引入则为服务器和虚拟机提供了灵活的容量扩展能力。在单系统、双系统、物理服务器等不同应用场景下采用合适的分区方案并掌握手动分区参数填写与引导修复技巧是 Linux 工程实践中的必备技能。本文从基础概念出发逐步给出可落地的 Ubuntu 手动分区模板与高频避坑记录帮助读者在装机时少走弯路。1. 分区这事为什么值得在安装 Ubuntu 前先较真第一次装 Ubuntu 时我直接选了“清除整个磁盘并安装 Ubuntu”觉得硬盘分区是留给老网管的。半年后 /home 塞满、重装系统还得先备份整个家目录再后来帮同事装双系统缩完 Windows 分区差点把引导搞丢。Ubuntu 里的硬盘分区真不是越细越专业也不是全交给安装器最省事——它决定了你以后升级内核时会不会报磁盘满重装时能不能保住个人数据双系统下哪个系统先出来。这篇文章写的是我这些年实际在用的分区思路先讲 GPT/UEFI 和 /boot、/home、swap 各自的职责再给单系统、双系统、虚拟机、服务器几套可以直接抄的分区方案然后把安装器里手动分区的每一步参数写清楚最后是我踩过高频坑的记录。适合准备装 Ubuntu 24.04 LTS 或更老版本的人也适合已经装完但想重新整理分区的人。2. 先看懂 Ubuntu 分区里的几个“角色”EFI、/boot、/、/home 与 swap打开安装器的“其他选项”之前最好先认识 Linux 硬盘分区里最常见的几个挂载点。很多人一上来就搜“Ubuntu 分区方案”然后照搬别人的表结果自己 512G 的盘套用别人 2T 的方案光根分区就吃掉大半。分区这件事先弄清每个角色干什么再谈怎么划。2.1 GPT 与 MBR2TB 和 UEFI 是分水岭分区表格式决定了磁盘能被识别成什么样它跟你用哪个牌子的硬盘没关系只跟主板固件和磁盘容量有关系。老式 MBR 分区表最多只能寻址 2TB超过 2TB 的盘要么只认出前面一小块要么干脆不识别。MBR 还只允许 4 个主分区你要划 /、/home、swap 再加上 EFI 或恢复分区就得用扩展分区绕圈子麻烦得很。GPT 分区表没有 2TB 容量限制也没有主分区数量限制同时自带冗余的分区表头比 MBR 抗损坏。现在的 Ubuntu 安装器默认就是 GPT前提是主板以 UEFI 模式引导。如果是一台 2015 年以后的电脑基本都可以直接用 GPT只有特别老的主板只支持 BIOS/legacy 引导时才需要用 MBR。对比项MBRGPT最大磁盘容量2TB无实际限制主分区数量4 个128 个UEFI 规范UEFI 引导不支持支持引导器位置磁盘头部扇区ESP 分区内的 EFI 文件我一般会在安装前用lsblk看一眼磁盘大小超过 2TB 的盘直接确认 GPT。如果你是老主板、只装 Linux 单系统安装器会自动帮你做传统 BIOS 引导分区表用 MBR 也没问题。2.2 根分区、家目录、交换分区哪些要单独划哪些建议合并先说根分区/。它承载的是系统本身、/usr、/var、/opt 这些目录平时装软件、缓存包、日志都写在这里。/home是用户目录你的文档、下载、桌面文件、各种应用的配置缓存全在里面。有人建议把 / 和 /home 分开主要好处是重装系统时只要保留 /home 分区个人文件不会被动。坏处是如果 / 划得太大/home 反而紧张反过来 /home 不够用挪空间又得用 GParted 缩分区麻烦。我的习惯是日常桌面使用给 / 分 100200GB剩下的给 /home再留一个 swap。如果你只是上网、写文档、跑个 Python 脚本200GB 的 / 基本用不了一半。再说/boot。这个目录里放的是内核镜像和 initramfs引导加载程序 GRUB 需要读取它。现代 UEFI 机器上其实可以不用单独划 /boot内核镜像直接放在根分区上GRUB 通过 EFI 分区里的引导文件去加载。但有一种情况我会单独划一个小 /boot根分区做了 LVM 或者 LUKS 全盘加密。因为 GRUB 对 LVM 和加密设备的支持有限独立一个 ext4 的 /boot 分区能让引导过程少很多玄学问题。双系统用户也建议保留 /boot 或者至少搞清楚引导文件放在哪后面避坑部分会细说。swap 的角色是内存不够时把部分数据换到磁盘。Ubuntu 从 17.10 之后默认用交换文件而不是交换分区路径一般是/swap.img。好处是容量可以随时改不用重新分区。但如果你在安装器里手动分区仍然可以划一个独立的 swap 分区。区别在于交换文件在根分区里根分区满了会影响系统稳定性独立 swap 分区则不受根分区容量拖累但调整大小更麻烦。我个人的倾向是桌面机用交换文件就足够服务器看情况。2.3 swap 怎么定从 4GB 到 64GB 内存的参考很多人问 swap 到底该给多大网上答案从“等于内存”到“内存的两倍”都有。实际上这个数取决于两件事你想不想用休眠suspend-to-disk以及你的内存是不是真的不够用。休眠会把内存里的全部内容写入 swap所以如果要休眠swap 至少得跟内存一样大最好再留一点余量。不做休眠的话swap 只是给极端情况兜底给 48GB 就够。内存越大swap 可以越小甚至 64GB 内存的机器只做 8GB swap 也完全没问题因为平时根本用不到。内存大小不休眠需要休眠4GB4GB8GB8GB4GB12GB16GB48GB20GB32GB8GB40GB64GB8GB80GB这组数值不是拍脑袋它来自我多年装机验证桌面 Ubuntu 的默认交换文件通常是内存的 50% 到 100%但实际触发 swap 的概率不高。装完系统后用swapon --show看一下当前交换空间心里就有数了。3. 按场景定方案单系统、双系统、虚拟机与 LVM 的实例模板理论讲完接下来是可落地的分区模板。这一章我不讲“万能方案”因为真不存在。一块盘是给桌面单系统还是 Windows 双系统是虚拟机里装还是物理服务器上装分区策略差异很大。下面给四套我实际用过的模板你照着场景选再根据自己磁盘容量微调。3.1 单系统 Ubuntu1TB 盘的推荐分区表单系统是最省心的场景因为整块盘都是你的不用考虑 Windows 的恢复分区和快速启动。以一块 1TB 的 NVMe SSD 为例我的常用方案是这样的分区大小文件系统挂载点作用/dev/nvme0n1p1512MiBFAT32/boot/efiEFI 系统分区/dev/nvme0n1p21GiBext4/boot内核与引导文件/dev/nvme0n1p3200GiBext4/根分区/dev/nvme0n1p4剩余空间ext4/home用户数据/dev/nvme0n1p58GiBswapswap交换分区如果你不想单独划 /boot可以把 p2 省掉根分区直接分成 201GiB剩下的给 /home。为什么要留 1GiB 的 /boot因为我的根分区用的是 LVM或者做了 LUKS 加密时独立 /boot 能避免 GRUB 读不到内核的尴尬。纯普通 ext4 根分区的话/boot 不独立也问题不大。给你一份在 live 环境用 parted 手动建这套布局的命令前提是磁盘是全新的、确认盘符没错parted /dev/nvme0n1 --script mklabel gpt parted /dev/nvme0n1 --script mkpart ESP fat32 1MiB 513MiB parted /dev/nvme0n1 --script set 1 esp on parted /dev/nvme0n1 --script mkpart boot ext4 513MiB 1.5GiB parted /dev/nvme0n1 --script mkpart root ext4 1.5GiB 201.5GiB parted /dev/nvme0n1 --script mkpart home ext4 201.5GiB 991.5GiB parted /dev/nvme0n1 --script mkpart swap linux-swap 991.5GiB 100%这段脚本里的第一个分区从 1MiB 开始而不是 0目的是给 GPT 分区表头留空间同时保证 4K 对齐。这不是强迫症是 SSD 性能的基本要求。1GiB 等于 1024MiB所以第 2 个分区从 513MiB 到 1.5GiB正好是 1GiB。后面的根分区 200GiBhome 分区 790GiBswap 最后 8GiB。跑完用parted /dev/nvme0n1 print检查没问题后再去安装器里选择“其他选项”挂载不用重新分区。3.2 双系统Windows Ubuntu共享引导与独立分区双系统比单系统麻烦的点在于Windows 的 EFI 分区和 Ubuntu 的 GRUB 要互相兼容而且 Windows 的“快速启动”会让系统关机不是真关机而是休眠。常见做法是先在 Windows 的磁盘管理里压缩卷给 Ubuntu 腾出空间然后重启进 Ubuntu 安装器选择“其他选项”手动分区。注意一个关键点双系统不要新建 EFI 分区直接用 Windows 已有的那个 ESP 分区。Ubuntu 的安装器会让 GRUB 的引导文件写进这个分区不会覆盖 Windows 的引导文件。有些人手贱看到没有空闲分区就顺手格式化 ESP结果 Windows 没了。分区表大致是分区大小文件系统挂载点或用途/dev/nvme0n1p1260MiBFAT32ESPWindows 和 Ubuntu 共用/dev/nvme0n1p2128MiB微软保留不动它/dev/nvme0n1p3100GBNTFSWindows C 盘/dev/nvme0n1p4200GBNTFSWindows D 盘/dev/nvme0n1p5150GBext4Ubuntu 的 //dev/nvme0n1p68GBswapUbuntu 的 swap/dev/nvme0n1p7剩余ext4Ubuntu 的 /home在 Windows 里压缩卷腾空间时建议至少留出 200GB 给 Ubuntu因为现在随便一个开发环境加软件就占 50GB 以上。进入 Ubuntu 安装器后在分区界面选中那块空闲空间创建 ext4 分区时挂载点选/再创建一个 swap 分区。底部的“安装启动引导器的设备”一栏选那块 ESP 分区通常是/dev/nvme0n1p1。如果选成整块硬盘GRUB 会尝试把引导信息写到 MBRUEFI 模式下会失效这是双系统引导丢失最常见的翻车原因之一。3.3 服务器与虚拟机LVM 的弹性比裸分区更有价值物理服务器或者要跑 Docker、KVM 虚拟机的主机我更推荐 LVM。LVM 把物理分区整合成卷组再在卷组里划分逻辑卷本质上是给磁盘加了一层池化。好处是以后根分区不够了不用再缩分区直接从卷组里划空间给逻辑卷就行。常见做法是在一块系统盘上建一个 LVM 卷组把/和/home都做成逻辑卷。分区表大概是这样ESP 分区 512MiB/boot 分区 1GiB剩下的盘建成一个物理卷卷组名可以叫vg-ubuntu然后在卷组里划出根逻辑卷、home 逻辑卷和 swap 逻辑卷。用命令行创建设置如下pvcreate /dev/sda3 vgcreate vg-ubuntu /dev/sda3 lvcreate -L 100G -n root vg-ubuntu lvcreate -L 400G -n home vg-ubuntu lvcreate -L 8G -n swap vg-ubuntu三段命令的含义pvcreate把 sda3 初始化为 LVM 物理卷vgcreate用这个物理卷创建名为vg-ubuntu的卷组lvcreate在卷组里分别创建名为 root、home、swap 的逻辑卷。创建之后安装器里挂载时直接用/dev/mapper/vg-ubuntu-root这种路径不必再管物理分区。以后根分区不够执行lvextend -r -L 20G /dev/vg-ubuntu/root文件系统也会自动扩大这比用 GParted 缩分区的血泪体验好太多。虚拟机里装 Ubuntu 则简单得多。VMware 虚拟机安装 Ubuntu 时默认就把虚拟磁盘当成一整块未分区空间安装器全自动处理没必要手动搞 LVM。虚拟机磁盘文件本身可以扩容所以分区唯一要注意的就是别在虚拟机里尝试对宿主机的物理磁盘做分区操作。很多人为了性能给虚拟机用了“整块磁盘直通”然后安装时又选了“清除整个磁盘”宿主机数据全没了这个坑在第 5 章单独说。4. 在安装器里手动分区从“其他选项”到“现在安装”的完整步骤方案定了之后最难的一步是在 Ubuntu 图形安装器里把它落实。很多人不是不知道方案而是进了“其他选项”界面后看到一堆 sda、nvme0n1 就慌不知道该点哪个。这一章把从识别磁盘到分区填参的完整过程拆开写。4.1 进手动界面后先用 lsblk 认盘和识别 UEFI 状态Ubuntu 安装器启动后在选择安装类型那一步不要选“清除整个磁盘”而是选最下方的“其他选项”Something else。这一步会把你带到一个分区列表界面列表里每一行对应一个磁盘分区右侧有“更改”“新建分区”“还原”等按钮。动手之前强烈建议先按 CtrlAltT 打开终端用lsblk看一眼当前磁盘的真实情况lsblk -o NAME,SIZE,TYPE,FSTYPE,LABEL,MOUNTPOINTS输出里NAME列会显示nvme0n1或sda这样的名称SIZE是容量TYPE区分磁盘disk、分区part和逻辑卷lvm。FSTYPE显示文件系统MOUNTPOINTS显示挂载点。如果你的机器上同时插了系统盘和数据盘这一步能帮你分清哪块盘是目标盘避免误伤数据。同时确认一下引导模式ls /sys/firmware/efi如果这个目录存在且非空说明当前以 UEFI 模式启动分区表应该用 GPT安装器底部会让选 EFI 分区。如果目录不存在说明走的是传统 BIOS分区表要用 MBR引导器装到整块磁盘。这里最容易犯的错是UEFI 模式下用 MBR 分区表或者反过来最后都会出现“无法将 GRUB 安装到 /dev/sda”的报错。4.2 以 1TB 单系统盘为例逐条填写分区参数确认目标盘无误后回到“其他选项”界面在空闲空间上点击“新建分区”。以 1TB 单系统盘为例按顺序填下面这些参数新建第 1 个分区大小填512 MiB类型选EFI 系统分区。这个分区不需要挂载点安装器会自动把它挂到/boot/efi。新建第 2 个分区大小填1 GiB用途选ext4 日志文件系统挂载点填/boot。新建第 3 个分区大小填200 GiB用途选ext4 日志文件系统挂载点填/。新建第 4 个分区大小填剩余全部空间用途选ext4 日志文件系统挂载点填/home。再新建第 5 个分区大小填8 GiB用途里往下拉选交换空间。每一步填完分区列表对应行会显示新的分区信息。检查无误后把窗口底部的“安装启动引导器的设备”下拉框选中第一块 ESP 分区在 UEFI 单系统场景下通常是/dev/nvme0n1p1然后点击“现在安装”。这里有个细节如果你上面第 2 步创建了 /boot 分区那么第 3 步的根分区大小可以写199 GiB因为 /boot 已经单独占掉 1GiB。如果盘比较小比如 256GB SSD可以省掉 /boot 分区根给 100GB、/home 给 140GB、swap 给 8GB剩下约 8GB 空闲。SSD 保留少量空闲空间对性能和寿命都有好处这个后面会说。4.3 分区类型、对齐和“设备用于”选项的常见误解手动分区时下方面对用于下拉菜单里有多个选项ext4 日志文件系统、swap 区域、EFI 系统分区等。很多人问要不要选 ext4 还是 xfsUbuntu 桌面默认是 ext4xfs 更适合大型文件吞吐桌面场景没必要换。ext4 日志文件系统默认开启 jbd2 日志能防意外断电后文件系统不一致。“对齐”这个词在安装器里看不到但非常重要。所谓 4K 对齐是让分区起始扇区是 8 的整数倍512 字节扇区下对应 4KB 边界。现代安装器和 parted 默认从 1MiB 开始分区天然对齐。如果你用老工具或者手动把起始扇区填成 63SSD 会出现明显的写入放大性能骤降。如果你在用 fdisk 手工分区注意给分区的起始扇区填 2048 或其倍数不要填 63。还有一个常见误解是“EFI 系统分区要不要格式化”。在双系统里绝对不要格式化已有的 EFI 分区否则 Windows 引导文件直接被清掉。单系统全新安装时安装器会格式化它。判断标准很简单如果分区列表里已经有一个 FAT32 且 label 为EFI或SYSTEM的分区优先复用如果整块盘都是空闲才新建。5. 避坑指南Ubuntu 分区最容易翻车的 5 个场景分区相关的问题大多不会在安装时报错而是装完重启后以各种姿势出现。这一章我把高频翻车现场按“现象 → 原因 → 解决”写清楚这些基本是我在 U 盘、虚拟机、双系统上都踩过的。5.1 现象装完只有 Windows 引导看不到 Ubuntu装完双系统重启BIOS 直接进了 Windows完全看不到 GRUB 菜单。原因通常有两个一是安装器把 GRUB 写到了另一块盘二是在 UEFI 启动顺序里 Windows Boot Manager 排在 Ubuntu 前面但 BIOS 没有自动识别 Ubuntu 的引导项。解决步骤是开机进 BIOS 设置在启动顺序里手动找找有没有ubuntu项有就把它调到第一位。没有的话用 Ubuntu live U 盘启动挂载根分区后 chroot 进去重装 GRUB。另一种更快的方法是直接在 live 环境里用 efibootmgr 写引导项sudo efibootmgr --create --disk /dev/nvme0n1 --part 1 \ --label Ubuntu --loader \EFI\ubuntu\shimx64.efi这条命令的作用是把 Ubuntu 的 shimx64.efi 引导文件注册进主板 NVRAM--disk指定磁盘--part 1指定 ESP 分区编号。执行完重启就能看到引导项。如果连续两次都失败建议用 Boot Repair 工具跑一遍常见做法是挂载安装盘后执行sudo boot-repair它能自动检测 GRUB 和 EFI 分区的关系并修复。这里说一句修复引导前不要自己格式化 ESP很多引导丢失是格式化 ESP 导致的不是 GRUB 坏了。5.2 现象/boot 分区 100% 占满内核升级失败第一次遇到这问题是在一台 /boot 只分了 512MB 的服务器上。Ubuntu 自动更新内核后旧内核不会自动删除多个内核镜像加 initramfs 很快把 /boot 撑爆然后 apt 报Failed to write to /boot系统卡在更新一半的状态。解决方法是手动清旧内核先看现在装的内核列表dpkg --list | grep linux-image uname -runame -r显示当前正在用的内核版本保留这个版本以及上一个版本其余可以删。用 apt 删除包名带linux-image-5.x.x.x-generic的旧内核卸载后会自动执行 update-grub 更新引导菜单。建议给 /boot 单独分区时不小于 1GB如果已经踩坑最稳妥的办法是用 GParted 从相邻分区匀一点空间给 /boot或者干脆删了 /boot 分区把内核镜像放回根分区。5.3 现象开机进入 emergency mode提示 /dev/mapper/… 不存在开机后没有进入桌面而是进了一个带提示符的 emergency modejournal 里报错说某个挂载点失败。最常见的原因是 /etc/fstab 里写的分区 UUID 与实际不符或者 LVM 卷组没有被激活。发生场景一般是你用 GParted 移动过分区、复制过分区、或是在另一台机器上拔过这块盘。一步步排查先看系统日志里真正的报错journalctl -xb | grep -iE mount|fail lsblk -f blkid | grep -i ext4blkid输出里每行前面的 UUID 才是当前分区真实的 UUID把它和/etc/fstab里对应分区的 UUID 对比。不一致就直接改 fstab把旧的 UUID 替换成新的。如果是 LVM 卷组没激活执行sudo vgchange -ay激活所有卷组再sudo mount -a测试挂载。改完重启前先执行sudo update-grub让引导菜单里的内核参数也同步更新。5.4 现象内存一满就卡死鼠标都动不了运行几个大型应用内存到 95% 后系统像冻住一样开个终端要半天这通常是 swap 没有生效。原因可能是你在安装时选了“不使用交换空间”或者用了交换文件但 /etc/fstab 里的路径写错了导致开机时 swap 没挂上。检查当前 swap 状态swapon --show free -hswapon --show没有输出就代表 swap 没启用。如果根分区有空间最快的补救是创建交换文件sudo fallocate -l 8G /swapfile sudo chmod 600 /swapfile sudo mkswap /swapfile sudo swapon /swapfile echo /swapfile none swap sw 0 0 | sudo tee -a /etc/fstabfallocate预分配 8GB 空间chmod 600是为了防止其他用户读取交换文件里的内存数据mkswap格式化swapon立即启用最后写入 fstab 实现开机自动挂载。如果是 HDD也可以考虑把 vm.swappiness 调低到 10让系统尽量优先用内存而不是频繁往磁盘写。SSD 上保持默认 60 问题不大。5.5 现象手动分区时选错磁盘数据盘被格式化双系统或者加装旧硬盘时安装器分区列表里同时出现多块磁盘一不留神把原价数据盘当成新盘点击“现在安装”后分区被重建数据全没。这个现象在论坛里叫“手滑格式化”原因不是安装器坑而是分区列表里没有明显高亮目标盘。解决这个问题的预防手段比事后恢复更重要安装前把不相关的数据盘从机器上拆下来只留系统盘。如果不想拆机进“其他选项”后先用lsblk -o NAME,SIZE,MODEL,SERIAL查出目标盘的型号和序列号再对照安装器列表里的分区大小确认。安装器点击某分区做更改时注意看对话框顶部的设备名比如/dev/nvme0n1p3确认是目标盘再动。真要意外格式化了立刻断电别再往盘上写数据然后用 ext4magic、testdisk 这类工具尝试恢复能找回多少看运气。所以我的习惯是每次装系统前先把重要盘从 SATA 或者 M.2 槽位上拔下来。6. 装完后的三件收尾事校验分区、核对 fstab、给 SSD 开 TRIM系统装完能进桌面不代表分区这件事就结束了。我每次装机后都会顺手做三件小事总共花不了五分钟但能避免很多“用了三个月才炸”的隐患。6.1 用 lsblk --fs 和 df -h 验证分区挂载进系统后第一件事确认每个分区都挂在了正确的位置lsblk --fs df -hlsblk --fs会列出每个分区的文件系统类型、UUID 和挂载点。重点检查/和/home是不是分开挂的swap 有没有出现在df -h里swap 不会出现在 df要靠swapon --show。如果发现 /home 没挂上说明 fstab 有问题趁系统还干净赶紧改。6.2 检查 /etc/fstab错一个字段就进不了系统/etc/fstab是开机挂载的总开关里面每一行对应一个分区。我见过很多人在安装时分区没错但后来用 GParted 格式化过分区导致 UUID 变化然后系统起不来。cat /etc/fstab重点看三处ESP 分区那行挂载点是/boot/efi文件系统是 vfat不要写成 ext4根分区和 /home 分区的 UUID 要和lsblk --fs输出一致swap 那一行如果用的是交换文件路径要精确匹配/swapfile或/swap.img。fstab 里的挂载选项errorsremount-ro是 Ubuntu 根分区默认选项意思是出错时把根分区转成只读防止系统继续写盘造成损坏。你要加noatime来减少 SSD 写入也可以但别删掉默认项。6.3 给 SSD 开定期 TRIM避免性能劣化固态硬盘在删除文件时主控并不知道哪些闪存块可以被回收需要操作系统定期发 TRIM 命令。Ubuntu 24.04 LTS 默认带 fstrim.timer 定时服务但有些精简安装或者手动装完系统后这个定时器是停着的。检查方法systemctl status fstrim.timer如果状态不是 active执行sudo systemctl enable --now fstrim.timer启用它。这个定时器默认每周触发一次对日常使用足够。想立即回收一次可以手动sudo fstrim -v /输出会显示本次回收了多少字节。不建议把 TRIM 周期改成每天SSD 主控也需要时间去整理块太频繁反而增加磨损。说到最后我自己的习惯是除非是临时测试用的虚拟机否则任何物理机装 Ubuntu 都不偷懒选“清除整块磁盘”而是花十分钟走一遍手动分区。把 /home 单独隔出来把 /boot 留足 1GBUEFI 机器的引导器明确写到 ESP。这些操作没有一个是高难度动作但它们决定了一台 Ubuntu 是能安稳用三年还是每个月都要为重装和丢数据操心。希望你这次装完不用再经历我当年翻过的车。希望帮到你。本文还有配套的精品资源点击获取
返回列表