Ubuntu手动分区完全指南:UEFI+GPT、LVM/Btrfs与避坑要点

发布时间:2026/10/12 14:27:06

Ubuntu手动分区完全指南:UEFI+GPT、LVM/Btrfs与避坑要点 简介安装Ubuntu Linux时硬盘分区常是初学者最易卡壳的环节网上教程多直接采用自动分区遇到定制需求便难以应对这份资料结合作者多年装机经验专门梳理手动分区的合理策略与完整流程适合刚接触Linux、希望自主控制系统目录或准备搭建Linux服务器的用户阅读。压缩包内为1个PDF文件大小仅234KB图文对照便于随时查阅。内容从硬盘类型识别讲起区分IDE、SCSI、SATA接口在Linux下的命名规律也解释sda、sdb以及逻辑分区从sda5开始编号的规则随后给出500G-1000G硬盘和虚拟机低配环境两套分区方案覆盖根目录、swap、/boot、/tmp、/home等挂载点的容量建议并说明主分区与扩展分区的规划逻辑、不同物理内存下交换分区的大小取舍。结尾以Ubuntu 12.04.3为例展示手动分区操作包含启动分区与交换空间的实际配置示例。已有13525人学习下载按文中方法操作可避免自动分区灵活性不足的问题更好地保护数据并为后续扩容留出余地。1. 为什么Ubuntu安装时的分区方案直接决定你未来半年的使用体验很多人第一次手动分区是在Ubuntu安装界面对着一块几百GB的裸盘一脸懵。分区方案看起来只是几条选项的差别但它决定了你之后升级系统、换发行版、磁盘耗尽时有多少后悔药可以吃。常见的结果是有人把整个盘分给根分区后来/home满了只能靠软链接偷空间有人单独划了8GB /boot升级内核时反复报引导空间不足也有人装完双系统重启后GRUB消失大半夜翻着资料进Live环境抢修。分区的核心其实就三件事选对引导方式布置好系统目录和数据目录的隔离给未来扩容留一条路。下面按这个线索展开先讲选型基础再给出三套可以直接抄的分区方案然后走一遍手动分区的完整流程最后把实战里翻过车的地方单独列出来。2. 安装前先搞懂分区模型UEFIGPT、BIOSMBR与交换空间的选型2.1 分区表选型UEFIGPT是默认答案MBR只留给老机器UEFI和BIOS决定引导方式分区表跟着引导方式走。现代UEFI主板对应GPT分区表传统BIOS对应MBR分区表。判断方法很简单开机进主板设置看启动模式如果有UEFI选项一律优先用UEFI。2015年以后的主板基本都是UEFI所以GPT是现代装机默认答案。为什么GPT明显更好MBR分区表有硬限制最多4个主分区想再分就得把一个主分区改成扩展分区再在里面套逻辑分区单块磁盘容量上限约2TiB分区表本身没有冗余备份。GPT没有主分区数量限制默认就能放128个分区容量上限远超普通桌面磁盘分区表在磁盘头部和尾部各存一份坏了还有机会恢复。落到实际体验上就是你想把/、/home、/var、swap分开时GPT不会因为“主分区用完了”给你添堵。MBR仍然有存活场景但只建议在老机器上用主板完全不支持UEFI、需要装32位系统、或者某些特殊硬件的固件只认Legacy引导。我一般对这类机器直接给MBR单根分区不再折腾多分区因为逻辑分区嵌套结构在出问题时排查成本很高。这里补一个对比表方便你抄进笔记对比项GPTMBR适用引导UEFIBIOS / CSM主分区上限128个默认4个支持磁盘容量远超9.4ZB约2TiB分区表备份首尾双份仅一份损坏后恢复难度较低较高还有一个容易踩的细节UEFI模式下必须存在一个ESP分区FAT32文件系统挂载点通常是/boot/efi。这个分区哪怕你什么都不想分也必须留着。它的大小建议512MiB到1GiB。很多人习惯把它压到100MiB装单系统没问题但以后想塞第二个发行版、换GRUB主题或者放自定义启动文件时马上就捉襟见肘。2.2 交换空间独立分区还是Swap文件给多大才算合理交换空间是内存不够时的溢出区两种组织方式都常见独立Swap分区和Swap文件。Ubuntu自动分区时倾向于用swapfile手动分区界面里则大多用swap分区。两者功能等价区别在于Swap文件改大小不用动分区表Swap分区性能稍稳但改起来麻烦。给多大才合理核心看一件事要不要用休眠。休眠需要把整个内存镜像写入Swap所以Swap容量必须不小于物理内存否则休眠后恢复会直接失败。如果不休眠桌面机给4GB到8GB足够内存32GB以上的机器甚至可以不建Swap但偶尔会遇到内存峰值留着8GB更稳。我不建议把Swap设得很大比如内存16GB就给32GB Swap。Swap写入速度远低于内存带宽它只是应急通道不是性能优化手段。你真正该关注的是内存是否够用而不是Swap够不够大。装系统时先给一个保守值后面如果真不够再补一个swapfile也不迟。2.3 挂载点分工/、/home、/boot各干各的活挂载点就是把某个分区“接”到目录树的某个位置上。理解这个分区方案本质就清楚了系统文件放/用户数据放/home引导文件放/bootUEFI固件读取的放/boot/efi。日常使用中这几种挂载点分工如下挂载点放什么是否建议独立分区/系统目录、程序、库文件必需/boot内核与引导文件加密或特殊文件系统才需要/boot/efiUEFI启动入口UEFI模式必需/home用户文档、下载、配置建议独立/var日志、缓存、容器数据服务器按需普通桌面用户最关心的是/home独立与否。系统重装时只要/home分区不格式化你的文档和配置就能保住/分区则可以彻底清掉重来。光这一点就值得为/home单独划一个区。至于/boot常规桌面完全不需要单独分区放在/里就行。独立/boot的合理场景只有几个全盘加密、根文件系统是GRUB读不了的格式、老引导器对磁盘位置敏感。这些放在第三章展开。3. 三种被验证过的分区方案从单根分区到全盘加密3.1 方案A极简单根分区这个方案只适合两类机器临时测试用的虚拟机或者你明确知道“这系统随时会推倒重装”的机器。分区表非常简单ESP分区512MiBswap按需给剩下全部给/。布局大致是这样分区大小文件系统挂载点ESP512MiBFAT32/boot/efiswap8GiBswap无/剩余全部ext4/优点是一眼能看懂安装过程最快没有决策成本。缺点也明显/和/home共用一个分区遇上心态小崩想重装数据全丢根分区写满时整个系统会出现各种诡异问题不只是/home报错后续想拆分目录必须移动数据麻烦程度等同于重装。我见过某开发者图省事在实体机上用这个方案跑了一年后来/分区被Docker镜像和日志塞满系统频繁卡顿最后只能在终端里清理旧内核和镜像腾一次管不了几天。实体机不建议用方案A省的那十分钟不划算。3.2 方案B/加/home双分区主流布局这是桌面机和办公本最稳妥的默认答案系统与数据分离重装系统保留/home根分区大小可控。布局如下分区大小文件系统挂载点用途ESP512MiB~1GiBFAT32/boot/efiUEFI引导/80~100GiBext4/系统文件/home剩余空间ext4/home用户数据swap8GiB或等于内存swap无交换空间根分区为什么给80到100GiB而不是30GiB我基于实际装机经验给你一组参考干净桌面系统占20GiB左右但你不可能一直让它干净。软件缓存、日志、Flatpak应用、Docker镜像都会往/里堆。给30GiB的话半年后就要开始清缓存大版本升级很容易提示空间不足。给80GiB大多数桌面场景三五年不用动它。如果你还打算在本机跑Docker、Podman或者编译大项目直接给120GiB。/home拿剩余全部空间这是重点。数据放这里以后换发行版、重装系统都不动它。根分区格式化重来工作文档、浏览器配置、聊天记录都在。我在给A同学装机时用的就是这套布局他后来从Ubuntu换到别的发行版/home直接挂回去就能用省了搬数据的力气。3.3 方案C独立/boot面向全盘加密和多系统全盘加密是方案C最典型的推动力。用LUKS加密根分区后GRUB要读取内核镜像来完成启动所以需要一个不加密的/boot分区存放内核和initramfs。布局变成这样分区大小文件系统挂载点用途ESP1GiBFAT32/boot/efiUEFI引导/boot1~2GiBext4/boot存储未加密内核LUKS容器剩余ext4/btrfs内部解密后挂/加密系统swap8GiBswap无交换空间注意加密方案里swap也可以选择加密但休眠恢复会变复杂笔记本用户要慎重。另一个需要独立/boot的场景是根分区用了GRUB无法读取的文件系统比如某些实验性的卷管理布局。这种情况下/boot专门用ext4当桥GRUB读/boot内核起来后再挂载高层的根分区。双系统场景其实不需要独立/boot。UEFI下Windows和Ubuntu共用一个ESP没问题各自有独立目录GRUB在ESP里生成引导项启动时选择即可。真正值得注意的反而是Windows快速启动和主板的Secure Boot设置这个放到第五章避坑部分细说。4. 手动分区实操用parted在Live环境完成布局4.1 确认磁盘设备名与当前状态无论用哪种方案第一步都是在安装前打开终端确认磁盘状态。进入Ubuntu安装盘后选择“试用Ubuntu”进入Live环境执行lsblklsblk -o NAME,SIZE,TYPE,FSTYPE,MOUNTPOINTS输出示例NAME SIZE TYPE FSTYPE MOUNTPOINTS sda 512G disk sdb 128G disk nvme0n1 1T disk逻辑说明-o指定要显示的列。NAME是设备名TYPE为disk的就是物理盘FSTYPE为空表示磁盘还没有文件系统。这里要做的就是认准目标盘。SATA接口的盘通常叫/dev/sda、/dev/sdbNVMe盘叫/dev/nvme0n1。如果机器上插着多块盘一定先看SIZE列用容量确认哪块是你要装的盘选错盘的结果是灾难性的。参数说明MOUNTPOINTS比旧版Linux的MOUNTPOINT更通用能显示同一分区挂到多个位置的情况。如果某块盘已经格式化了FSTYPE列会出现ext4、ntfs等这时不要轻易覆盖先确认里面有没有重要数据。4.2 用parted创建GPT分区表与分区Live终端里创建分区推荐用parted它能在脚本模式下自动处理对齐。下面这段命令以方案B为模板假设目标盘是/dev/sda根分区80GiB/home占剩余swap收尾sudo parted /dev/sda --script \ mklabel gpt \ mkpart ESP fat32 1MiB 513MiB \ set 1 boot on \ mkpart root ext4 513MiB 80GiB \ mkpart home ext4 80GiB 500GiB \ mkpart swap linux-swap 500GiB 508GiB逻辑说明mklabel gpt把磁盘从空盘变成GPT分区表这会清除盘上所有现有分区必须确认设备名正确。mkpart按顺序创建四个分区ESP从1MiB开始到513MiB结束正好512MiBroot从513MiB到80GiBhome到500GiBswap最后8GiB。每个分区的起始和结束都落在整数MiB边界上这就是对齐的正确姿势后面避坑章节再展开。参数说明set 1 boot on把第一个分区标记为bootableUEFI模式下这个标记让固件能正确识别EFI系统分区。ESP的文件系统形式是FAT32但分区创建时标记为fat32实际格式化在下一步做。linux-swap是parted认识的swap类型名称不同版本可能显示为linux-swap(v1)不影响结果。格式化分区sudo mkfs.fat -F32 /dev/sda1 sudo mkfs.ext4 /dev/sda2 sudo mkfs.ext4 /dev/sda3 sudo mkswap /dev/sda4 sudo swapon /dev/sda4逻辑说明ESP必须用mkfs.fat格式化为FAT32UEFI固件只认这个文件系统。根和home都用ext4这是兼容性和稳定性最均衡的选择。swap分区用mkswap初始化swapon把它临时启用这一步主要是让安装器能检测到可用swap。参数说明-F32指定FAT32位宽如果不加某些版本的mkfs.fat会默认创建FAT161GiB以下分区能识别但后续固件兼容性可能出问题。ext4没有特殊参数默认的inode数量和块大小对桌面场景已经够用。4.3 回到安装器手动模式挂载分区分区创建并格式化完后回到安装界面选择“手动分区”这时应该能看到刚刚建好的四个分区。按方案B把它们挂载到位选中/dev/sda1文件系统选fat32挂载点设为/boot/efi注意勾选“格式化”。选中/dev/sda2挂载点设为/文件系统选ext4格式化。选中/dev/sda3挂载点设为/home文件系统选ext4格式化。/dev/sda4的swap分区安装器会自动识别为交换空间不需要挂载点。引导加载器安装设备也就是Bootloader device选/dev/sda整盘不是某个分区。逻辑说明挂载点选错是最常见的安装失败原因。如果忘记给根分区设置挂载点安装器会直接提示“没有定义根文件系统”此时回去补一个/挂载点即可。ESP分区在安装器里可能显示为“EFI System Partition”挂载到/boot/efi时必须保留原文件系统不要改成ext4否则UEFI启动时找不到引导文件。参数说明引导加载器设备选整盘/dev/sda而不是/dev/sda1这个细节常被忽略。GRUB的EFI引导文件会写入ESP但安装器要求你指定目标磁盘选错会导致安装完成但无法启动。5. 分区避坑指南五个最常见的翻车现场5.1 4K对齐问题机械盘跑得比预期慢SSD速度缩水一半现象新装的Ubuntu机械硬盘持续读写明显偏慢SSD的安兔兔或fio跑分不到标称值的一半。用命令检查分区起始扇区发现不是2048的整数倍。原因现代硬盘物理扇区是4096字节老工具默认按512字节模拟扇区工作分区起始位置落在物理扇区中间时一次IO要触发两次读取。传统MBR时代CHS寻址留下的63扇区偏移是慢的根源。解决用parted检查对齐状态sudo parted /dev/sda align-check optimal 1输出1 aligned说明对齐正常1 not aligned则需要重新分区。修复方法是重建分区起始位置用1MiB或2048扇区。安装器图形界面的自动分区通常已经处理好对齐风险主要来自手动fdisk和第三方分区工具。5.2 根分区给太小升级系统时空间告急缓存清完也没用现象系统跑着跑着/分区剩余空间从5GiB变成几百MiB执行apt upgrade直接提示空间不足连sudo apt clean都救不回来。原因根分区不是只装系统。软件缓存、旧内核、日志、Docker镜像默认都堆在/下面。给的容量只要低于30GiB长期使用后必然吃紧如果还开了Flatpak或容器80GiB都可能在两三年内被填满。解决清爽桌面60GiB起步要跑容器或编译直接120GiB。已经装完的机器最有效的临时方案是清理旧内核和journalctl日志但治标不治本。想长久解决只有扩分区或改用LVM这就是第六章的内容。5.3 双系统装完重启直接进WindowsGRUB消失现象先装Windows再装Ubuntu安装完成后重启系统没有任何选择菜单直接进Windows。反复重装Ubuntu也无效。原因多数是主板启动顺序把Windows Boot Manager排在了前面少数情况是Secure Boot阻止了GRUB的shim引导文件。解决先去BIOS设置里找Boot Priority把“ubuntu”启动项挪到最前面。如果找不到ubuntu项说明GRUB没有正确写入ESP需要Live环境修复挂载系统到/mnt再挂载ESP和必要虚拟文件系统chroot进去执行grub安装命令sudo mount /dev/sda2 /mnt sudo mount /dev/sda1 /mnt/boot/efi for i in /dev /proc /sys /run; do sudo mount --bind $i /mnt$i; done sudo chroot /mnt grub-install /dev/sda update-grub exit逻辑说明chroot把Live环境切换为硬盘上的系统环境grub-install重新把引导文件写入ESPupdate-grub重新扫描所有系统生成启动菜单。这里/dev/sda1和/dev/sda2必须按你机器实际分区替换再用lsblk确认。参数说明mount --bind是为了让chroot环境内能够访问到正在运行的设备节点、进程表和内核接口缺少这一步grub-install经常会报找不到设备的错。5.4 Swap分区比内存小休眠变玄学现象执行systemctl hibernate后屏幕熄灭但按电源键开机界面回到休眠前或者直接从头启动之前打开的程序全没了。原因Swap容量小于物理内存内存镜像写不完或者系统拿到resume参数内核不知道从哪个设备恢复镜像。很多翻车案例里swap给了8GiB内存是16GiB休眠必然失败。解决先用free -h确认内存和Swap容量内存大于Swap就先扩Swap。然后检查resume参数cat /proc/cmdline如果输出里没有resumeUUID...编辑/etc/default/grubGRUB_CMDLINE_LINUX_DEFAULTquiet splash resumeUUID你的swap分区UUID执行sudo update-grub后重启。参数说明resume指向的是swap分区的UUID不是根分区的。查看UUID用blkid。修复后休眠恢复成功率会明显提升但笔记本上某些驱动对S3休眠支持仍有兼容性问题遇到这类情况可以优先用suspend then hibernate过渡状态。5.5 fstab和设备名写死换SATA口后系统起不来现象把系统盘从一个SATA口挪到另一个口或者加装了一块硬盘后开机进入initramfs提示ALERT! /dev/sda2 does not exist系统卡在控制台。原因/etc/fstab里用了/dev/sda2这类设备名而设备名由内核按枚举顺序分配不是固定的。换接口、改BIOS启动顺序、新增磁盘都可能让/dev/sda变成/dev/sdbfstab里的名字瞬间失效。解决编辑fstab把所有设备名换成UUIDsudo blkid sudo editor /etc/fstabfstab里应该是UUIDxxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx / ext4 defaults 0 1逻辑说明UUID是文件系统创建时生成的唯一标识与接口位置无关。根分区的UUID同时会被写进引导配置的root参数所以fstab和GRUB配置都要检查。参数说明fstab最后一列的数字1表示要对根分区做磁盘检查其他分区通常是0或2不要全改成1。6. 用LVM或Btrfs把自己的分区方案留够后悔药分区方案最大的遗憾是分区大小定义好后后期调整很痛苦。LVM的出现就是为这个。它的思路是先把物理分区合并成一个卷组再从卷组里划分逻辑卷给挂载点。根分区不够时只要卷组还有空闲一条命令就能扩展逻辑卷全程不移动数据。创建LVM的思路是装系统时预留一部分卷组空间不分配给任何逻辑卷sudo pvcreate /dev/sda2 sudo vgcreate vg0 /dev/sda2 sudo lvcreate -L 80GiB -n root vg0 sudo lvcreate -l 100%FREE -n home vg0逻辑说明第一行把物理分区初始化为物理卷第二行创建卷组vg0第三行分给root逻辑卷80GiB第四行把剩余空间全给home。如果想让home留出20GiB空闲就不要用100%FREE改成-L 500GiB剩下的空间留在卷组里当缓冲。参数说明-L指定固定容量-l指定百分比。逻辑卷的设备名是/dev/mapper/vg0-root和/dev/mapper/vg0-home格式化后挂载和普通分区用法一样。使用时根占满了扩容只需要两行sudo lvextend -L 20GiB /dev/mapper/vg0-home sudo resize2fs /dev/mapper/vg0-homelvextend先扩展逻辑卷resize2fs再扩展文件系统。整个操作在系统运行中也支持数据安全系数比改物理分区高得多。代价是逻辑卷多了一层映射出问题时排查路径长一点但对桌面用户来说利大于弊。另一个思路是Btrfs的子卷快照。Ubuntu安装器选btrfs后会自动创建root和home两个子卷给根子卷做快照就是整个系统的“后悔药”。系统折腾坏了几分钟就能回滚到之前的状态。常用命令sudo btrfs subvolume snapshot / snap-0115 sudo btrfs subvolume list /回滚时把当前根子卷替换为快照即可。Btrfs对异常断电的敏感度在社区有争议桌面使用问题不大数据库服务器这类高负载高一致性场景要自己评估。我现在的习惯是只要不是临时虚拟机一律优先LVM卷组装完先做一次快照再折腾别的。分区这件事不是纯玄学它是固定选型加少量运维技巧的组合体前面多花十分钟后面能省很多个半夜。希望帮到你。本文还有配套的精品资源点击获取
延伸阅读

更多相关文章

2026/10/12 14:27:06

AI假期七天实战:推理成本下探与端侧部署的工程观察

1. 七天假期,七次认知刷新:我眼中的AI圈“假期节奏”国庆七天假,朋友圈里一半人在晒高速堵车和景区人海,另一半人——尤其是做AI产品和研发的那拨——在晒各种模型更新截图、跑分对比和“假期又没睡好”的吐槽。我属于后者。本来计…

2026/10/12 14:27:06

线性回归预测PM2.5实战:从CSV解析到解析解部署

简介:本资源是一套基于线性回归算法实现PM2.5浓度预测的完整Python机器学习实践项目,面向Python初学者及机器学习入门者,适用于环境数据分析、空气质量建模等教学与课程设计场景。压缩包共19个文件,含12个CSV格式训练与测试数据集…

2026/10/12 17:42:55

西门子S7-200 PLC八层电梯控制系统梯形图逻辑详解

做电梯控制这行当久了,你会慢慢发现一个道理:楼有多高、层有多少其实都是表象,真正决定项目难度的,永远是控制逻辑怎么组织。尤其是八层电梯,不上不下、尴尬得很——比六层多了两个外呼按钮,比十几层的高楼…

2026/10/12 17:42:55

gtest深度实战:事件机制、参数化测试与CI集成避坑指南

1. 为什么还要再写一篇gtest深度解析市面上讲gtest入门的文章已经多到烂大街了,TEST、EXPECT_EQ、ASSERT_TRUE三件套翻来覆去地讲,看完之后你还是不知道当测试用例膨胀到几千个、当断言失败信息糊成一团、当你想在CI里精准定位是哪个参数组合挂掉的时候该…

2026/10/12 17:42:55

VS Code安装配置全指南:从选型到避坑的完整教程

简介:这是一份VS Code(Visual Studio Code)安装与配置的完整图文教程文档,面向刚接触编程的入门学习者,以及需要快速配置开发环境的开发者。内容从官网下载、阅读许可协议、选择附加任务到完成安装均有详细说明&#x…

2026/10/12 17:42:55

GitHub趋势周报第40周:AI工程化与终端工具复兴的深度解读

1. 为什么我要手动整理一份GitHub趋势周报每周五晚上,我会花大概四十分钟做一件事:把这一周GitHub上冒出来的项目过一遍,筛出真正值得看的,写成一份周报发给自己带的几个新人。这个习惯从2023年一直保持到现在,中间断过…

2026/10/12 17:37:54

open-code-review:构建开放协作的代码评审框架与最佳实践

1. 项目缘起与核心定位第一次看到“open-code-review”这个标题,我脑子里蹦出来的第一个念头是:终于有人把这件事拿出来正经聊了。代码评审这件事,在大多数团队里都处于一个尴尬的位置——所有人都承认它重要,但真正做得好的团队少…

2026/10/11 0:02:13

Python调用Gemini Structured Outputs实现工单路由门禁

客服工单最怕的不是模型“答错一句话”,而是它给出一段看起来合理的说明,程序却从中猜错优先级。通俗做法是:要求模型只交 JSON(JavaScript Object Notation,轻量数据格式),再让代码验证它。Gem…

2026/10/12 12:01:26

Spring Boot超市进销存系统毕设实战:从需求拆解到答辩通关

最近带的一个学生项目组里,有A同学跑来问我:选什么毕设题目最稳妥,既能让评审老师觉得工作量够,又不会在答辩时被问到语无伦次。我第一反应就是推荐基于Spring Boot的超市仓库管理系统——也就是超市进销存系统。这个题目乍一看平…

2026/10/12 12:54:07

Flutter StatefulWidget 生命周期核心解析

很多刚开始接触 Flutter 的朋友,在看完一堆“Hello World”和基础组件之后,大概率都会撞上同一堵墙:StatefulWidget 里那堆 initState、build、dispose 方法,到底什么时候被调用?为什么顺序是那样?在里面到…

2026/10/12 0:04:22

绝缘子缺陷检测数据集清洗与工业级训练实战指南

简介:本资源是面向电力AI研发人员、工业视觉工程师及智能巡检系统开发者的绝缘子缺陷检测专用YOLO格式数据集,解决无人机航拍场景下绝缘子破损、污闪、积雪等9类典型缺陷的精准识别与定位难题。数据集共2139张真实巡检图像(含训练/验证/测试集…

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
☎咨询二维码 ☎ ↑