
简介《详解安装Ubuntu Linux系统时硬盘分区最合理的方法》是一份面向Ubuntu安装初学者的PDF实战指南专门解决系统安装过程中最容易“劝退”的手动分区问题。资源包为1个PDF文件体积仅234KB便于快速下载与离线查阅目前已有约1.35万人学习使用。讲解从IDE/SCSI/SATA硬盘命名规则、主分区与扩展分区上限关系入手系统给出500G-1000G大硬盘和低配虚拟机两种环境的挂载点分配方案并为/、swap、/boot、/tmp、/home等目录标注了推荐容量与文件系统格式例如swap通常取物理内存的1-2倍、/boot建议不低于400MB或1GB。还以Ubuntu 12.04.3为例图文演示创建/boot、swap以及/var、/tmp、/home等分区的操作顺序并强调备份与按需调整大小。如果你正准备在物理机或虚拟机中安装Ubuntu这份资料能有效帮你避开自动分区的坑降低误操作风险使分区规划既合理又稳定。1. 分区方案直接决定 Ubuntu 能用多久装系统前最该花时间的 20 分钟很多人装 Ubuntu 图省心直接让安装器“清除整个磁盘并安装”。默认方案确实能用但三个月后大概率会遇到两个问题根分区爆满导致 apt 装不了软件或者重装系统时个人文件跟着一起被抹掉。我见过太多人卡在这一步最后要么用 GParted 折腾半天要么从头再来。安装 Ubuntu Linux 系统时硬盘分区最合理的方法不是跟风选某个模板而是根据你的启动模式、硬盘介质和实际用途反向推出一套布局然后在安装器里用手动分区花 20 分钟把它落地。这篇文章给出一套可以直接照抄的分区方案覆盖 UEFI 新机器、双系统、机械数据盘和 2TB 大容量 NVMe 四类场景同时把分区顺序、参数设置和常见翻车点拆开讲清楚。看完你至少能独立完成一次不后悔的手动分区。2. 分区前的三个决策点引导方式、分区表与文件系统的组合怎么选2.1 先摸清启动模式UEFIGPT 还是 BIOSMBR分区方案不是凭空定的第一步是搞清楚机器从什么方式引导。当前绝大多数主板默认 UEFI 模式配合 GUID 分区表GPT老机器或者某些兼容模式下的装机盘则走 BIOS 引导对应传统的 MBR 分区表。这两种组合的分区结构和后续安装操作完全不同UEFI 模式要求硬盘上有一个专门的 EFI 系统分区ESP用来存放引导程序BIOS 模式则直接在主引导记录里写引导代码不需要 ESP。装反了的典型后果是安装过程一切正常重启后却提示找不到引导设备或直接进 grub rescue。判断方法很简单在安装 U 盘启动后的“试用 Ubuntu”环境里执行ls /sys/firmware/efi有输出说明当前是以 UEFI 方式启动没有输出则是 BIOS 方式。注意这个结果取决于 U 盘的制作方式同一个安装盘在不同机器上可能两种模式都能进要看启动菜单里的引导项前缀。我习惯在做任何分区操作前先跑这条命令避免出现“分区表是 GPT安装环境却是 BIOS”这种矛盾组合。对比项UEFI GPTBIOS MBR引导分区需要 ESPFAT32无需 ESP写在 MBR分区数量限制最多 128 个主分区最多 4 个主分区单盘容量上限远超 2TB2TB实际 2.19TB适合场景2012 年后绝大多数家用/办公机老平台、特殊工控机安装时注意引导程序装整盘安装器自动写 ESP引导程序装整盘即可2.2 每个分区干什么EFI、/、/home、swap 的大小与文件系统选择想手动分区先理解每个分区的职责。EFI 系统分区存放 UEFI 引导程序和主板固件读取的引导项文件建议单独分 512MB 到 1GB格式必须是 FAT32。早期默认只有 100MBWindows 和 Ubuntu 双系统引导项一多就容易不够用512MB 是一个没有副作用的保底值。根分区/是系统本体所在Ubuntu 的软件、依赖、snap 包全部装在这里这也是新手最容易给小的分区。我个人对普通桌面和工作站的最低建议是 60GB日常开发、装常用软件和几个容器实例基本够用玩深度学习、跑虚拟机或者长期做视频渲染的直接给到 100GB 以上。/home分区装用户数据和配置文件单独分出来的意义在于系统升级或重装时可以保留个人文件。如果你不打算频繁折腾系统也可以不单独分全部空间给/目录结构更简单但重装时备份成本更高。我一般给桌面主力机保留/home给临时实验机器直接单根分区。swap 分区在内存足够的情况下可以不做分区Ubuntu 默认会生成一个/swapfile交换文件后续调整大小比动分区容易得多。如果你需要休眠功能swap 大小至少要和物理内存一致这时我建议做成独立分区。2.3 要不要用 LVM扩容便捷性与折腾成本的取舍LVM逻辑卷管理常被推荐为“更高级”的方案它把物理分区聚合成卷组再从卷组里切逻辑卷好处是扩容无需移动分区边界。但这个便利是要付代价的/boot放在 LVM 里稍微麻烦引导配置错误时排查链路更长误操作lvremove后数据恢复难度比误删普通分区更大。对大多数第一次手动分区的用户我的建议是直接物理分区方案简单、恢复工具多、网上案例丰富。LVM 真正值得用的场景是你明确知道自己会频繁调整目录大小比如把根目录从 80GB 扩到 120GB或者想在快照后测试系统更新。但要注意物理分区方案后续也有后悔药把新磁盘做成物理卷加入现有卷组、再把目录迁移过去不用动原分区只是相比一次性规划要多花几个小时。所以第一次装系统别把复杂性前置按普通分区走先把系统跑起来。分区推荐容量文件系统挂载点ESP512MBFAT32/boot/efi根分区60-100GBext4//home剩余空间ext4/homeswap不需要则用 swapfileswap—3. 手动分区完整操作从预检命令到四个分区的创建顺序3.1 动手前用三条命令确认目标盘状态从安装 U 盘启动后先进入“试用 Ubuntu”而不是直接点安装这能让你在图形界面之外用命令行确认磁盘状态。打开终端执行sudo lsblk -o NAME,SIZE,TYPE,FSTYPE,MOUNTPOINT列出所有磁盘和分区确认你要装系统的那块盘是/dev/sda还是/dev/nvme0n1。NVMe 固态的盘符是nvme0n1SATA 硬盘是sda弄错盘符的后果是分区表写到错误磁盘上操作前务必反复核对。# 查看物理盘和现有分区确认目标和盘符 sudo lsblk -o NAME,SIZE,TYPE,FSTYPE,MOUNTPOINT # 查看目标盘的分区表类型确认是 gpt 还是 dos sudo parted /dev/sda print | grep Partition Table # 查看目标盘的 UUID后续写 fstab 会用到 sudo blkid /dev/sdalsblk的输出中FSTYPE列为空表示该分区未格式化已有 Linux 或 Windows 文件系统的分区要留意数据。parted的Partition Table输出行直接告诉你当前是gpt还是msdos这决定了后续能否直接创建 ESP 分区。blkid显示的 UUID 是分区唯一标识比盘符可靠因为盘符可能随插拔顺序变化。如果你是全新盘这三条命令的主要价值就是确认目标设备和引导模式避免装到移动硬盘或 U 盘上。3.2 安装器“其他选项”里的分区创建顺序与参数在安装界面选择“其他选项”英文界面是 Something else这是手动分区的入口。如果你的磁盘是全新盘选中整块硬盘后点“新建分区表”安装器会按当前引导模式生成对应的分区表UEFI 模式生成 GPTBIOS 模式生成 MBR。接下来按顺序创建分区。第一块建 ESP 分区大小 512MB类型选“主分区”位置选“起始”在“用于”下拉菜单里选择“EFI 系统分区”。第二块建根分区大小按你的用途定我习惯给 80GB格式选“ext4 日志文件系统”挂载点选/。第三块建/home把剩余空间全部分给它格式同样 ext4挂载点选/home。如果你决定要 swap 分区可以从剩余空间里切出内存一半大小或等于内存大小格式选“交换空间”。顺序上先建 ESP 再建根分区没有技术约束但按这个顺序不容易漏挂载点。如果你的目标盘之前装过系统分区表里已经有若干分区我建议先把上面检查过的旧 Linux 分区删掉选中分区点减号保留 Windows 分区。删除前确认分区里没有需要的数据一旦点击应用数据恢复成本极高。分区创建完成后下方“安装启动引导器的设备”默认是整块盘例如/dev/sda或/dev/nvme0n1保持这个默认值即可不要改成某个分区。之后点击“现在安装”安装器开始格式化并写入系统。# 如果你更习惯在命令行提前划分好物理分区可选不推荐新手 sudo parted /dev/sda --script mklabel gpt sudo parted /dev/sda --script mkpart ESP fat32 1MiB 513MiB sudo parted /dev/sda --script set 1 esp on sudo parted /dev/sda --script mkpart primary ext4 513MiB 81.5GiB sudo parted /dev/sda --script mkpart primary ext4 81.5GiB 100%我一般不建议新手预先用 parted 手工划分因为安装器对分区表变化的刷新不一定及时可能出现分区列表与实际不一致的情况。上面这段命令的价值在于展示底层逻辑mklabel gpt写入 GPT 分区表mkpart的第一个分区从 1MiB 开始到 513MiB 结束正好 512MB第二个分区 513MiB 到 81.5GiB 约 80GB第三个分区接 81.5GiB 到 100%。起始位置按 1MiB 对齐能保证 4K 扇区对齐这个细节对 SSD 性能很重要。分区完成后仍需回到安装器为这些分区指定文件系统和挂载点。3.3 引导安装位置与挂载点设置的核对清单手动分区里最常见的低级错误是把引导程序直接指定给某个分区而不是整块磁盘。UEFI 模式下Ubuntu 的 grub 引导程序会写在 ESP 分区里但它需要依赖 ESP 中的EFI/ubuntu/目录结构来注册引导项安装器在“引导程序安装设备”里选整盘时会自动完成这一步。如果你手动选了/dev/sda1一部分机器能正常启动另一部分会出现重启后找不到引导项的情况我遇到过的案例里这个故障率并不低。挂载点方面要做一次核对ESP 分区挂载点为/boot/efi根分区挂载点为//home分区的挂载点是/home。如果安装界面里显示某个分区“未定义挂载点”安装按钮会变成灰色这是安装器在提醒你分区方案不完整。另外如果机器开了 Secure BootUbuntu 默认的 shim 引导程序是支持在开启状态下启动的不需要为了装系统专门关掉它如果你后续要装第三方内核模块再考虑关闭。4. 三种变体方案双系统、机械数据盘与大容量 NVMe4.1 双系统共用 ESP 分区Windows 分区不要动双系统分区的核心原则是不动 Windows 已有的分区。Windows 预装机的典型布局是 ESP 分区、MSR 保留分区、C 盘和恢复分区其中 ESP 分区通常只有 100MB 到 300MB。在安装器里如果这个 ESP 已经存在你不需要删掉重建直接把分区选中并设“用作 EFI 系统分区”Ubuntu 会在同一个 ESP 里创建自己的引导目录两个系统共用这一块空间。如果你嫌它太小想扩容那需要在 Windows 里用磁盘管理工具收缩 C 盘腾出空间再用 GParted 以无损方式扩展 ESP操作复杂度较高不建议新机阶段折腾。在 Windows 里为 Ubuntu 腾空间的做法是磁盘管理里右键 C 盘选择“压缩卷”压缩出至少 80GB 的未分配空间。压缩完成后不要手动创建分区直接重启进 Ubuntu 安装器在这个未分配空间上创建根分区和/home。Windows 的分区一个都不要动动了一个引导项丢失Windows 就无法启动了。装完 Ubuntu 后发现每次开机直接进 Windows 不显示引导菜单这是正常的重启时按 F2/F12 进启动菜单手动选 ubuntu 这一项然后在 Ubuntu 里用sudo update-grub更新引导菜单即可。# 安装后确认 ESP 分区里确实同时存在两个引导目录 sudo ls -l /boot/efi/EFI/正常情况下你会看到ubuntu目录如果之前装过 Windows还会有Microsoft目录。两个目录并存说明双系统引导文件各就各位。如果只有ubuntu而 Windows 引导项丢了不要急着重装先在 Ubuntu 里执行sudo update-grub它会扫描所有磁盘分区并尝试重新生成 Windows 的启动项。这一步解决不了时再用 Windows 安装 U 盘进入修复模式执行启动修复。双系统时间错乱的问题是另一个常见伴随问题属于系统时区设置差异在 Ubuntu 中执行sudo timedatectl set-local-rtc 1可以消除与分区无关但建议顺手处理。4.2 机械硬盘单独挂载 /home 或数据目录减少 SSD 磨损很多人的机器是 SSD 装系统加一块机械硬盘存数据这种组合的分区策略应该把系统盘和数据盘分开规划。系统盘按第二章的方案给 SSD 分配 ESP、根分区和可能存在的/home机械硬盘则不要和系统盘混在一起分区而是整块盘或大部分空间作为一个数据分区。安装器里可以提前为机械硬盘创建分区并指定挂载点但更常见的做法是先装好系统再用 fstab 把机械盘挂到数据目录下。机械硬盘挂载点的选择有讲究。很多教程建议把/home放到机械盘上理由是用户文件占用大但/home里还有大量应用配置和缓存文件机械盘的随机读取速度会让桌面环境响应明显变慢。我一般把机械盘挂到/data然后把下载目录、虚拟机镜像、Docker 数据目录这类大体积、低并发访问的内容挪过去既缓解 SSD 空间压力又不影响日常操作体验。通过 fstab 持久化挂载时最关键的一个参数是nofail它能让机械盘缺失时系统正常启动而不是卡在 emergency mode。# /etc/fstab 中机械数据盘的推荐写法 # 用 blkid 查到 UUID 后替换下面这一行 UUID4a2b8c3d-xxxx-xxxx-xxxx-xxxxxxxxxxxx /data ext4 defaults,noatime,nofail 0 2defaults代表默认挂载选项noatime减少读取文件时的访问时间写入对机械盘能减少不必要的磁头移动nofail表示挂载失败时不阻止系统启动这对移动硬盘和偶尔拔插的数据盘很重要。最后两个数字中0表示该分区不参与 dump 备份2表示开机时在根分区之后进行 fsck 检查。修改完 fstab 后执行sudo mount -a验证挂载结果有报错会直接输出在终端。外接机械盘如果经常在不同机器间移动宁可不要nofail以便开机时立刻发现盘没挂上避免数据写到错误目录。4.3 2TB 以上磁盘GPT 分区表、4K 对齐与挂载参数2TB 以上的硬盘必须用 GPT 分区表MBR 的寻址上限撑不住这个容量。现代安装器在识别到大容量磁盘并选择“新建分区表”时会自动生成 GPT这没有问题。容易翻车的是老旧的工具链例如一些老版本分区工具在操作 GPT 盘时会显示错误容量或者把分区表识别成 MBR。安装前用sudo parted /dev/sda print确认分区表格式为gpt后再继续。4K 对齐问题在 NVMe 和新型大容量 SATA 盘上尤其需要关注。传统 MBR 分区起始扇区可能落在 63 扇区这不是 4K 的倍数导致每次读写跨越两个物理扇区性能损失明显。现代安装器和 parted 默认按 1MiB 对齐起始扇区是 2048这本身就是 4K 对齐的。如果你从旧机器迁移磁盘或者手工用fdisk修改过起始位置装完后用下面的命令检查一下。# 以扇区为单位显示分区信息验证起始扇区为 2048 的倍数 sudo parted /dev/nvme0n1 unit s print # 查看当前 NVMe 固态的挂载参数是否已生效 mount | grep nvme0n1unit s让 parted 以扇区为单位输出正常布局的第一个分区起始扇区是 2048后续分区起始扇区都延续这个序列。如果你的起始扇区是 63 或 1008 这类非对齐数值备份数据后重新分区是唯一可靠的解决方法不要在不对齐的布局上继续安装。挂载参数方面NVMe 盘建议在 fstab 里加noatime减少写入但不要随手加discard。持续 TRIM 命令会让部分固态产生额外负载现代内核推荐的做法是启用fstrim.timer定时清理安装 Ubuntu 后这个定时器默认就是开启的不需要额外配置。5. 分区避坑指南四个最容易让新装系统翻车的现场说到分区翻车现场手动分区这个环节简直是重灾区。这里挑四个我实际见过的、反复出现的现象按“现象 → 原因 → 解决”顺序说清楚看完至少能省下半天折腾时间。5.1 现象一安装按钮灰掉提示“未指定根分区”安装界面里“现在安装”按钮一直是灰色把鼠标悬停在上面会出现提示。原因通常是两个一是你创建了分区但没有为任何分区指定挂载点/安装器认为没有可装系统的地方二是 UEFI 模式下没有创建 ESP 分区安装器无法规划引导程序。某些旧系统盘还带一种特殊病因磁盘上有残留的 RAID 元数据安装器把整块盘识别成 RAID 成员分区操作全部不可用。解决方法是按第三节的顺序重新检查确认有一个 ext4 分区挂载点为/UEFI 模式下有一个 FAT32 的 ESP 分区。如果是 RAID 元数据残留在试用环境里执行sudo wipefs -a /dev/sda清除磁盘头部的异常签名然后回到安装器点“新建分区表”重新规划。5.2 现象二装完重启提示找不到引导设备或进入 grub rescue安装过程没有任何报错但拔掉 U 盘后重启直接黑屏或者卡在 grub rescue 提示符。原因通常有两种第一种是启动方式错配你用 BIOS 模式的 U 盘安装却把系统装到了 GPT 分区表的磁盘上第二种是 UEFI 模式下引导程序没有被正确写入 ESP安装器找不到可启动的EFI/ubuntu/shimx64.efi文件。grub rescue 界面比黑屏好判断输入ls能看到分区列表说明 grub 文件缺失或路径不对。解决思路是回到正确启动模式重装或者用 Ubuntu 安装 U 盘的试用模式修复引导。修复命令如下其中--efi-directory指向 ESP 的挂载点# 在试用 Ubuntu 环境中挂载系统分区和 ESP 后执行 sudo mount /dev/nvme0n1p2 /mnt sudo mount /dev/nvme0n1p1 /mnt/boot/efi sudo grub-install --targetx86_64-efi --efi-directory/mnt/boot/efi --bootloader-idubuntu --root-directory/mnt sudo update-grub--targetx86_64-efi指定安装 EFI 版引导程序--efi-directory指定 ESP 挂载点--root-directory指向系统根目录位置。注意这组命令要在 chroot 环境下才会完整生效否则update-grub可能找不到系统内已有的内核文件。正确流程是先执行sudo mount --bind /dev /mnt/dev以及/proc、/sys再chroot /mnt后执行 grub-install。这个操作是双系统和引导丢失场景的通用修复套路建议先把命令存在笔记里用时翻出来照着敲。5.3 现象三/ 分区只给 20G一周后 apt 安装直接失败“根分区给 20G 够用了吧”是我听过最多的一句话也是最快打脸的一句话。Ubuntu 桌面版装完基础系统就吃掉 8-12GB装几个常用开发环境、一个浏览器、若干 snap 包剩余空间很容易见底。更隐蔽的是/var/log日志文件、Docker 镜像层、/usr/local下编译产物这些全部计入根分区。现象是 apt 安装时报No space left on device系统还能开机但无法更新。最稳妥的解决是重装时按本文建议给 60-100GB如果已经装完可以事后把大目录迁到/home分区并用 bind mount 指向。迁移命令示例如下# 将 docker 数据目录迁移到 /home 下的真实目录 sudo systemctl stop docker sudo rsync -av /var/lib/docker/ /home/docker-data/ sudo mount --bind /home/docker-data /var/lib/docker sudo systemctl start dockerrsync -a保留权限和符号链接--bind让/home/docker-data目录内容直接映射为/var/lib/docker。要使 bind mount 在重启后仍然生效需要在/etc/fstab里追加一行/home/docker-data /var/lib/docker none bind 0 0。这个方案能救急但目录层级变复杂属于事后补救。我在自己的机器上试过多次结论是根分区当初给足 80GB比什么都省心。5.4 现象四btrfs 上创建 swapfile 失败分区起始位置不对齐如果你选择把根分区格式化成 btrfs然后按网上教程用fallocate创建交换文件大概率会遇到swapfile has holes的报错。这是 btrfs 的写时复制特性导致的fallocate 创建的文件在磁盘上并不连续mkswap 不接受这种文件。解决方法是先关闭该文件的 CoW 属性再写入实际数据sudo truncate -s 0 /swapfile sudo chattr C /swapfile sudo dd if/dev/zero of/swapfile bs1M count4096 sudo chmod 600 /swapfile sudo mkswap /swapfile sudo swapon /swapfilechattr C关闭写时复制dd用真实数据填充保证连续性count4096对应 4GB 交换文件大小。还有一个高频问题不是文件系统而是扇区对齐手动分区时用了旧版工具或指定了非标准起始位置分区起始扇区不是 4K 的倍数磁盘性能会明显下降。检查方法就是sudo parted /dev/nvme0n1 unit s print看起始扇区不是 2048 的倍数就备份重分没有别的捷径。6. 装完不是终点验证分区、调整 swap 与给未来留后路的三个习惯6.1 用 lsblk -f 与 df -h 核对分区布局装完系统第一件事不是打开浏览器而是确认分区真的按方案落位。终端执行lsblk -f输出里每个分区的FSTYPE和MOUNTPOINT应该和你安装时设置的一致。ESP 分区挂载在/boot/efi根分区挂载在//home分区挂载在对应目录。再执行df -h查看剩余空间根分区至少要有 20% 以上的余量用于系统更新和临时文件如果安装时给的 80GB 只剩 10GB说明你的软件负载比预想大尽早规划数据迁移。6.2 把 swap 分区换成 swapfile笔记本上立竿见影手动分区时如果你建了 swap 分区装完后可以改成 swapfile 方式好处是调整大小不必动分区表。先sudo swapoff /dev/sda5关掉分区交换在 fstab 中删除对应条目然后按第 5.4 节的方法创建/swapfile并追加/swapfile none swap sw 0 0到 fstab。笔记本上这个操作的实际意义是物理内存够用时 swap 占用很少没必要为不确定的需求预留一整块磁盘分区内存不够需要临时增加交换空间时建文件比动分区快得多。唯一例外是休眠休眠需要 swap 足够容纳内存镜像且要配置 resume 参数这种场景保留分区 swap 更稳妥。6.3 预留空间与备份习惯分区表导出与重装不丢数据给未来的自己留后路我养成了三个习惯。第一每次手动分区前在试用环境里执行sudo sfdisk -d /dev/nvme0n1 nvme_partition.txt把当前分区布局导出成文本。这个文件只有几 KB却记录了完整的分区方案需要恢复时执行sudo sfdisk /dev/nvme0n1 nvme_partition.txt即可还原。第二重装系统时在安装器里选中原来的/home分区挂载点设为/home但取消勾选“格式化”这样个人文件原封不动保留第三给 ext4 根分区预留一部分保留块默认保留 5% 空间。# 查看当前分区保留块的百分比 sudo tune2fs -l /dev/nvme0n1p2 | grep Reserved block count # 降低到 2%为根分区释放约 3% 可用空间 sudo tune2fs -m 2 /dev/nvme0n1p2tune2fs -m 2把保留块比例从默认的 5% 降到 2%对非系统关键目录能释放可观空间。保留块的作用是防止磁盘写满后 root 无法登录降得太低有风险建议不低于 1%。我第一次给 A 同学的机器装系统时根分区只分了 20GB他两周后回来找我说软件装不上了我检查发现 snap 包和 Docker 数据把根分区填得满满当当。分区表是整个安装流程里唯一难以事后无痛修改的东西布局想清楚再点确认比装完再补救省事十倍。希望帮到你。本文还有配套的精品资源点击获取