从fdisk到parted:现代磁盘分区工具的核心原理与实战指南
1. 从fdisk到parted为什么我们需要更现代的磁盘分区工具如果你在Linux服务器上折腾过磁盘尤其是处理过超过2TB的大容量硬盘那你大概率对fdisk这个老牌工具又爱又恨。爱它的简单直接恨它在面对现代存储需求时的力不从心。我第一次在数据中心给一台新服务器配置4块8TB的硬盘做RAID时就栽在了fdisk上——它压根不支持创建大于2TB的分区。那一刻我意识到是时候让工具箱里的parted命令站到C位了。parted是一个功能强大的磁盘分区和分区调整工具它生来就是为了解决fdisk的局限性。它原生支持GPTGUID分区表分区方案轻松应对数TB乃至数ZB的磁盘容量同时还提供了交互式和命令行两种操作模式以及更直观的“对齐”等高级功能。无论是为全新的CentOS/Ubuntu系统规划复杂的磁盘布局还是在线调整一个正在运行的生产数据库的分区大小parted都是更可靠的选择。这篇文章我就以一个老运维的身份带你彻底吃透parted从核心概念到实战操作再到那些手册里不会写的避坑技巧让你下次面对磁盘时心里更有底。2. parted核心概念与设计思路解析2.1 分区表类型MBR与GPT的本质区别要玩转parted必须先理解它背后的“战场”——分区表。这就像一本书的目录告诉系统数据存放在磁盘的哪个位置。传统工具fdisk主要服务于MBR分区表而parted则是为GPT分区表而生的现代工具。MBR即主引导记录是一个存在了数十年的标准。它把分区信息保存在磁盘最开始的512字节里。这直接导致了它的几个致命伤首先它只能记录4个主分区想更多就得用扩展分区和逻辑分区非常绕其次每个分区的起始和结束位置用32位表示这限制了单个分区最大只能到2TB最后MBR没有备份一旦这512字节损坏整个磁盘的分区信息就可能丢失。GPT全局唯一标识分区表是UEFI标准的一部分旨在彻底取代MBR。它的设计就现代多了分区表本身在磁盘头部和尾部分别存有一份互为备份安全性大增它使用64位地址理论支持的分区大小上限是9.4ZB这是个天文数字并且它不再有4个主分区的限制通常支持128个分区以上。现在新买的服务器和电脑只要不是特别老的系统默认都使用GPT分区表。parted从设计之初就完美支持GPT这是它相比fdisk的根本优势。2.2 parted的核心设计哲学面向大容量与脚本化理解了GPT就能明白parted的设计思路。它不仅仅是一个分区创建工具更是一个磁盘布局管理器。其核心设计围绕两点展开第一是对大容量磁盘的原生友好。parted操作磁盘时默认单位是更符合现代存储的MiB、GiB、TiB注意这是1024进制单位区别于厂商常用的1000进制的MB、GB。你可以直接用mkpart primary 1MiB 100GiB这样的命令创建一个精确大小的分区而不用像在fdisk里那样去计算令人头疼的柱面号。第二是强大的非交互与脚本化能力。parted支持在一条命令中完成所有操作例如parted /dev/sdb mklabel gpt mkpart primary ext4 1MiB 100%。这个特性在自动化部署如使用Ansible、Puppet时极其有用。你可以将整个磁盘分区方案写成一个脚本在成百上千台服务器上快速、一致地执行这是fdisk的交互模式难以实现的。2.3 与fdisk的工具选型决策那么什么时候该用parted什么时候fdisk还能凑合我的经验法则是必须使用parted的场景磁盘容量大于2TB需要使用GPT分区表计划在脚本或自动化工具中调用分区操作。fdisk仍可一用的场景处理小容量U盘或旧硬盘小于2TB且为MBR分区进行非常简单的、一次性的分区操作且你对fdisk的交互界面更熟悉。不过我强烈建议即使在小容量磁盘上也优先尝试使用parted来熟悉其工作流。一旦掌握你会发现它在逻辑清晰度和操作效率上更胜一筹。3. parted命令详解与实操要点3.1 基础命令结构与常用参数parted命令的基本语法是parted [选项] [设备 [命令 [参数...]]]。最常用的有两种模式交互模式直接输入parted /dev/sdX会进入一个(parted)提示符的环境可以连续输入多条命令。命令行模式直接在Shell中执行一条完整的parted命令如parted /dev/sdb mklabel gpt。几个你必须熟记于心的核心命令mklabel创建新的磁盘标签即分区表类型如gpt,msdos即MBR。mkpart创建新分区。需要指定分区类型primary/logical、文件系统类型仅作提示不格式化、起始点和结束点。rm删除分区只需指定分区号。print打印分区表信息。print all可以查看所有磁盘信息。resizepart调整分区大小注意调整前需确保分区未挂载且文件系统本身支持并已完成调整。unit设置输入输出的显示单位如unit MiB,unit GB。注意parted的很多命令是即时生效的它不像fdisk那样有一个“写入”命令。在parted中mkpart或rm命令一旦执行分区表会立刻被修改。操作前务必双倍确认设备名/dev/sdb还是/dev/sdc。3.2 实战演练为Ubuntu系统创建GPT分区假设我们有一块全新的4TB硬盘/dev/sdb需要为Ubuntu系统创建三个分区1GB的EFI系统分区、100GB的根分区、以及剩余所有空间的家目录分区。# 1. 启动parted指定设备 sudo parted /dev/sdb # 2. 创建GPT分区表 (parted) mklabel gpt # 3. 创建EFI系统分区通常需要FAT32文件系统且要有boot和esp标志 (parted) mkpart primary fat32 1MiB 1025MiB (parted) set 1 boot on (parted) set 1 esp on # 4. 创建根分区ext4文件系统 (parted) mkpart primary ext4 1025MiB 101025MiB # 大约100GB # 5. 创建家目录分区占用剩余所有空间 (parted) mkpart primary ext4 101025MiB 100% # 6. 查看分区结果 (parted) print Model: ATA ST4000DM004-2CV1 (scsi) Disk /dev/sdb: 4001GB Sector size (logical/physical): 512B/4096B Partition Table: gpt Disk Flags: Number Start End Size File system Name Flags 1 1049kB 1075MB 1074MB fat32 primary boot, esp 2 1075MB 106GB 105GB ext4 primary 3 106GB 4001GB 3895GB ext4 primary # 7. 退出parted (parted) quit退出parted后我们还需要使用mkfs系列命令为这些分区实际创建文件系统sudo mkfs.vfat -F 32 /dev/sdb1 # 格式化EFI分区为FAT32 sudo mkfs.ext4 /dev/sdb2 # 格式化根分区为ext4 sudo mkfs.ext4 /dev/sdb3 # 格式化家目录分区为ext43.3 分区对齐一个影响性能的关键细节在机械硬盘时代我们常听说要对齐“柱面”。在固态硬盘和现代高级格式硬盘Advanced Format扇区常为4KB时代分区对齐同样至关重要且parted让它变得很简单。未对齐的分区会导致读写操作跨越物理扇区边界引发额外的读写开销显著降低IO性能尤其是对于SSD。parted从某个版本开始默认会将分区的起始位置对齐到1MiB的边界即2048个512B扇区这完美对齐了绝大多数现代存储设备的物理扇区大小4KB和操作系统内存页大小。在上面的例子中你看到分区的Start值都是1049kB约1MiB的倍数这就是自动对齐的结果。实操心得除非有极其特殊的旧系统兼容性需求否则永远信任并利用parted的默认对齐。在mkpart时起始位置使用1MiB、2MiB这样的值或者直接使用百分比时parted通常会帮你处理对齐。你可以用(parted) align-check optimal 分区号命令来检查某个分区的对齐是否是最优的。4. 高级操作与生产环境应用4.1 非交互式脚本化分区自动化是运维的核心价值。下面是一个在Shell脚本中使用parted自动初始化一块磁盘的例子#!/bin/bash DISK/dev/sdc # 确保磁盘未被挂载 umount ${DISK}* 2/dev/null # 创建GPT标签 parted -s $DISK mklabel gpt # 创建单个占用全部空间的分区 parted -s $DISK mkpart primary ext4 1MiB 100% # 格式化分区 mkfs.ext4 -F ${DISK}1 # 创建挂载点并挂载 mkdir -p /data mount ${DISK}1 /data # 写入fstab实现开机自动挂载 echo ${DISK}1 /data ext4 defaults 0 0 /etc/fstab这个脚本使用了-s或--script选项让parted进入脚本模式不显示任何提示信息非常适合嵌入到自动化流程中。4.2 调整现有分区大小调整分区大小是高风险操作务必先备份数据这里演示如何将/dev/sdb3家目录分区缩小100GB并将这100GB用于扩展/dev/sdb2根分区。这通常需要先从/dev/sdb3中“挖”出一块空闲空间。前提条件目标分区/dev/sdb3必须未挂载。文件系统本身必须支持缩小如ext4/xfs通常支持在线缩小但操作前最好卸载。resize2fs或xfs_growfs等工具用于实际调整文件系统大小parted只调整分区表信息。操作顺序永远是先缩小文件系统 - 再缩小分区。# 1. 卸载分区 sudo umount /dev/sdb3 # 2. 检查文件系统ext4为例 sudo e2fsck -f /dev/sdb3 # 3. 缩小文件系统。假设当前是3895GB要缩小100GB到3795GB。 # 注意resize2fs参数是目标文件系统大小不是减少的量。 sudo resize2fs /dev/sdb3 3795G # 4. 使用parted缩小分区。需要计算新的结束点。 # 假设原分区从106GB开始大小3795GB那么新结束点 106GB 3795GB 3901GB sudo parted /dev/sdb (parted) resizepart 3 3901GB (parted) print # 确认3号分区已缩小 # 5. 现在在3号分区之后有了一段空闲空间。我们需要先删除2号分区再以更大的结束点重建它吗 # 不对于相邻分区更安全的做法是使用专业工具如gparted图形界面或fdisk的删除重建。 # 因为parted的resizepart不能直接扩展一个被后续分区挡住的分区。 # 一个相对安全的命令行方案是 # a. 备份/dev/sdb2的数据。 # b. 删除/dev/sdb2分区 (parted) rm 2 # c. 重新创建更大的/dev/sdb2分区起始点不变结束点设为3901GB即原3号分区的新起点。 # d. 恢复数据并重新创建文件系统或使用resize2fs扩展如果文件系统还在。重要警告在线调整分区特别是涉及多个分区的位置变动是极其危险的操作。在生产环境中如果条件允许我更倾向于备份数据、重新分区、恢复数据。如果必须在线操作强烈建议先在虚拟机上完整演练整个流程。4.3 处理“磁盘分区显示状态良好恢复分区”的疑难杂症网络热词中提到了“磁盘分区显示状态良好恢复分区”这通常指在Windows的“磁盘管理”中看到某个分区显示为“状态良好恢复分区”或“状态良好EFI系统分区”等。在Linux的parted视角下这些分区只是带有特定标志的普通GPT分区。例如Windows的“恢复分区”通常是一个类型为“Microsoft recovery”的GPT分区。在parted中你可以用print看到所有分区的类型GUID。如果你想在Linux下处理或删除一个Windows恢复分区请谨慎这可能影响系统恢复功能可以用parted /dev/sdX print找到对应分区的Number。使用parted /dev/sdX rm [分区号]删除它。对于“EFI系统分区”就是我们在3.2节创建的那个带有boot和esp标志的分区。parted的set命令可以管理这些标志。5. 常见问题排查与操作实录5.1 典型错误与解决方案速查表问题现象可能原因解决方案Error: The location ... is outside of the device /dev/sdX指定的分区起始或结束位置超出了磁盘的实际大小。使用parted /dev/sdX print确认磁盘总容量确保分区范围在0B到[磁盘大小]之间。通常结束点用100%最安全。Warning: The resulting partition is not properly aligned for best performance.分区起始位置未对齐。在mkpart时起始位置使用1MiB的倍数。使用align-check optimal [分区号]验证。Error: Partition(s) on /dev/sdX are being used.尝试修改的分区正在被系统使用已挂载。必须先用umount命令卸载该分区。对于系统盘的关键分区如/或/boot需要从Live CD/USB环境启动进行操作。parted命令执行后系统不识别新分区分区表变更未被内核重新读取。运行partprobe /dev/sdX命令通知内核重新读取分区表。或者最简单的方法是重启系统。删除分区后print仍然显示旧分区可能是缓存或者分区表未成功写入。尝试退出parted再重新进入。如果问题依旧检查磁盘是否只读hdparm -r /dev/sdX或者尝试使用wipefs命令清理分区签名。无法对磁盘执行任何操作磁盘可能被系统锁定或存在活跃的进程。检查是否有lvm、mdadmRAID或文件系统进程占用。使用lsblk、fuser -m /dev/sdX1或lsof /dev/sdX1查找并终止相关进程。5.2 数据安全操作黄金法则在我多年的运维生涯中用血泪教训总结了几条关于磁盘操作的铁律三重确认设备名在按下回车键前问自己三遍“我当前操作的是/dev/sdb还是/dev/sdc”尤其是在拥有多块硬盘的服务器上。一个有用的技巧是使用lsblk -f或blkid命令根据分区大小、标签或UUID来辅助确认。备份先行任何非创建新分区的操作删除、调整大小都必须先确保数据已备份。没有备份的操作等于赌博。使用-s选项的风险在脚本中使用parted -s非常方便但也意味着它不会给出任何确认提示。在将脚本投入生产环境前务必在测试环境用相同磁盘布局进行验证。理解操作顺序调整分区大小的正确顺序是备份 - 卸载 - 检查文件系统 - 调整文件系统 - 调整分区。扩大分区则顺序相反调整分区 - 调整文件系统。Live环境是救星对于操作系统所在磁盘的分区操作永远在Live CD/USB如Ubuntu安装盘环境下进行。这能确保所有系统分区都处于未挂载状态。5.3 性能调优相关技巧除了分区对齐parted结合其他工具还能做一些性能调优为SSD优化对于固态硬盘在分区时可以考虑留出一部分空间不分区OP预留空间这有助于提升垃圾回收效率和延长寿命。例如一块512GB的SSD你可以只分区到480GB。文件系统选择在mkpart时指定的文件系统类型如ext4,xfs只是一个标签真正的格式化由mkfs完成。对于SSDext4启用discard挂载选项或f2fs是不错的选择。对于大容量机械硬盘仓库盘xfs在处理大文件时可能有优势。分区规划对于数据库服务器将日志文件和数据文件放在不同的物理磁盘分区甚至是不同的物理磁盘上可以显著提升IO性能。parted可以帮助你精确规划每块磁盘的布局。最后记住parted是你的工具不是魔法棒。它强大而危险。每一次操作前深呼吸核对命令想象一下操作的结果。当你能够熟练地用它规划整个存储架构时那种一切尽在掌控的感觉才是运维工作最大的乐趣所在。

相关新闻

配置中心静默失败排查:特殊字符引发的配置解析黑洞与防御实践

配置中心静默失败排查:特殊字符引发的配置解析黑洞与防御实践

最近在开发一个分布式配置中心项目时,遇到了一个非常棘手的问题:某个核心服务的配置项在发布后,部分实例没有按预期刷新,导致线上服务行为不一致。经过层层排查,最终定位到一个由特定字符序列引发的配置解析“黑洞”。…

2026/10/17 2:03:08 阅读更多 →
douyin-downloader使用指南:从零搭建抖音视频批量下载、去水印与直播回放保存的完整方案

douyin-downloader使用指南:从零搭建抖音视频批量下载、去水印与直播回放保存的完整方案

douyin-downloader使用指南:从零搭建抖音视频批量下载、去水印与直播回放保存的完整方案 【免费下载链接】douyin-downloader A practical Douyin downloader for both single-item and profile batch downloads, with progress display, retries, SQLite deduplica…

2026/10/18 9:46:04 阅读更多 →
OpenClaw集成Kimi双模型:从配置到智能路由的完整实践

OpenClaw集成Kimi双模型:从配置到智能路由的完整实践

1. 项目概述:为什么要在OpenClaw里玩转Kimi? 最近在折腾AI工作流的朋友,估计没少听人提起OpenClaw。它本质上是一个开源的、可编程的AI智能体(Agent)框架,你可以把它理解为一个“AI大脑”的调度中心和运行环…

2026/10/16 17:25:20 阅读更多 →

最新新闻

Zynq裸机UART升级方案:无JTAG下的固件更新与BOOT.bin烧录

Zynq裸机UART升级方案:无JTAG下的固件更新与BOOT.bin烧录

简介:面向Zynq 7020开发板的裸机UART在线升级方案可运行源码,适合嵌入式开发者、FPGA工程师以及需要在Zynq平台实现固件远程升级的工程师参考。方案重点解决升级失败导致的板砖问题,完整覆盖Multiboot启动回退机制、升级标志位判定、CRC16数据…

2026/10/18 15:54:16 阅读更多 →
UDP组播通信实战:从原理到Python实现与避坑指南

UDP组播通信实战:从原理到Python实现与避坑指南

1. 从一个"发一份、收多份"的真实需求说起很多人第一次接触组播这个概念,是在做设备发现或者状态同步的时候。你手里有十几台设备,它们需要知道彼此的存在,或者某一台设备要同时给所有设备下发一条指令。最直觉的做法是维护一张IP列…

2026/10/18 15:54:16 阅读更多 →
Traefik v2.10+ 国内落地实战:HTTPS/QUIC/动态配置工程化指南

Traefik v2.10+ 国内落地实战:HTTPS/QUIC/动态配置工程化指南

简介:本资源是面向中国开发者的AI原生IDE——Trae CN的深度解析配套代码包,专为软件开发初学者、教育机构学员及中小企业技术团队设计,旨在帮助用户快速理解其架构逻辑、交互模式与工程集成方式。压缩包共3个文件(8KB)…

2026/10/18 15:54:16 阅读更多 →
QB64:现代Windows原生编译器,让QuickBASIC重获工程可用性

QB64:现代Windows原生编译器,让QuickBASIC重获工程可用性

简介:QB64是面向编程初学者、教育工作者及复古开发爱好者的现代化QuickBASIC实现,完美解决经典BASIC代码在现代系统中无法运行、缺乏图形音视频支持与跨平台能力等痛点。资源包共2000个文件,主体为C/C底层源码(如glew.c、freeglut…

2026/10/18 15:54:16 阅读更多 →
WPS连接Zotero:文献引用与参考文献自动生成全攻略

WPS连接Zotero:文献引用与参考文献自动生成全攻略

简介:这份资源面向需要在WPS中高效管理文献的学术写作者与论文作者,聚焦解决WPS与Zotero无法直接联动、引用插入繁琐的问题。包内共2个文件,以inscode与html为主要类型,分别承担配置脚本与说明页面的功能,压缩包整体约…

2026/10/18 15:54:16 阅读更多 →
AI视频模型横向对比2026年9月版:5大开源模型实测数据与选型指南

AI视频模型横向对比2026年9月版:5大开源模型实测数据与选型指南

AI视频模型横向对比2026年9月版:5大开源模型实测数据与选型指南 2026年9月,开源AI视频生成模型已经形成完整梯队。本文横向对比5大可本地部署模型的核心参数、显存需求和实测速度,给出不同显卡的选型建议。文末附工作流模板和模型资源网盘链…

2026/10/18 15:53:16 阅读更多 →

日新闻

基于GMM的语音识别系统原理与MATLAB实现详解

基于GMM的语音识别系统原理与MATLAB实现详解

说到基于高斯混合模型(GMM)的语音识别系统,很多人第一反应就是一堆数学公式,觉得门槛很高。但如果你真的在MATLAB里把它落地跑通,会发现核心其实就是三件事:把声音变成特征向量,用GMM给每个类别…

2026/10/18 0:00:55 阅读更多 →
数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理这四个字听起来挺唬人,但落到具体操作上,无非就是让计算机按你的想法“摆弄”像素。我在一个模拟项目X里用了一套特别经典的基础处理流程:对图像做反白、改调色板、彩色转灰度,最后把像素数据导出成txt文件。单看每一…

2026/10/18 0:00:55 阅读更多 →
机器人大脑技术盘点:具身智能的感知、决策与数据闭环

机器人大脑技术盘点:具身智能的感知、决策与数据闭环

如果你的信息流最近也天天刷到“机器人大脑”这个词,你会发现一个很有意思的现象:每个人说的“大脑”根本不是同一个东西。有人指的是大语言模型,有人指的是运动控制系统,还有人指的是能理解物理世界的端到端模型。在2026年这个时…

2026/10/18 0:00:55 阅读更多 →

周新闻

基于GMM的语音识别系统原理与MATLAB实现详解

基于GMM的语音识别系统原理与MATLAB实现详解

说到基于高斯混合模型(GMM)的语音识别系统,很多人第一反应就是一堆数学公式,觉得门槛很高。但如果你真的在MATLAB里把它落地跑通,会发现核心其实就是三件事:把声音变成特征向量,用GMM给每个类别…

2026/10/18 0:00:55 阅读更多 →
数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理这四个字听起来挺唬人,但落到具体操作上,无非就是让计算机按你的想法“摆弄”像素。我在一个模拟项目X里用了一套特别经典的基础处理流程:对图像做反白、改调色板、彩色转灰度,最后把像素数据导出成txt文件。单看每一…

2026/10/18 0:00:55 阅读更多 →
机器人大脑技术盘点:具身智能的感知、决策与数据闭环

机器人大脑技术盘点:具身智能的感知、决策与数据闭环

如果你的信息流最近也天天刷到“机器人大脑”这个词,你会发现一个很有意思的现象:每个人说的“大脑”根本不是同一个东西。有人指的是大语言模型,有人指的是运动控制系统,还有人指的是能理解物理世界的端到端模型。在2026年这个时…

2026/10/18 0:00:55 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/18 0:55:02 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/17 17:22:31 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/18 12:16:16 阅读更多 →