fdisk命令是Linux系统操作磁盘分区表的核心工具,通过交互式命令可以完成创建、删除、修改分区等操作,掌握它的用法是系统管理员的必备技能。
fdisk命令详解:基础概念与安装验证
fdisk命令的作用与适用范围
fdisk是util-linux软件包的一部分,几乎出现在所有主流Linux发行版中,它直接操作磁盘的设备文件(如/dev/sda),读取或写入分区表,近年来,fdisk已从只支持MBR发展到同时支持GPT分区表,在大多数场景下可以替代旧版专用工具。
fdisk命令安装与版本查看
多数情况下系统已预装fdisk,若未安装,可以用包管理器安装:
- Debian/Ubuntu:
apt-get install fdisk - CentOS/RHEL:
yum install util-linux
安装后通过fdisk -v查看版本,确认是否支持GPT(版本2.0以上),行业共识认为,fdisk的稳定性和兼容性在长期运维中已得到充分验证,无需额外付费即可使用。
fdisk交互模式详解:从入门到熟练
进入交互模式与基本操作
运行fdisk /dev/sda即可进入交互界面,命令提示符变为Command (m for help):,此时输入m打印帮助菜单,常用交互命令包括:
- p:打印当前分区表,显示分区编号、起止扇区、大小、类型。
- n:新建分区,按提示选择分区类型(主分区/扩展分区)和大小。
- d:删除分区,输入分区编号即可。
- t:修改分区类型,输入对应十六进制代码(如83为Linux文件系统,82为swap)。
- w:保存并退出,将分区表写入磁盘。
- q:不保存直接退出,用于练习或失误时回退。
使用扇区单位提高精度
默认情况下fdisk显示柱面单位,但现代系统推荐使用扇区单位,启动时加-u
选项(fdisk -u /dev/sda)或进入交互后输入u切换,扇区单位在创建对齐分区时更准确,尤其适用于SSD和4K扇区磁盘。
fdisk创建分区详细步骤:以MBR分区表为例
准备工作:查看当前磁盘信息
执行fdisk -l列出所有磁盘及分区状态,注意目标磁盘未被挂载,或已卸载分区(umount /dev/sda1),若磁盘正在使用,fdisk会提示“设备忙”,此时无法写入分区表。
动手创建主分区与扩展分区
假设磁盘为/dev/sdb,目标是创建3个主分区和1个扩展分区(内含2个逻辑分区),步骤如下:
fdisk /dev/sdb进入交互模式。- 输入
n选择新建分区,系统提示选择分区类型:p主分区(1-4),e扩展分区。 - 输入
p,分区号默认1,起始扇区直接回车(默认第一个可用扇区),大小输入+10G表示10GB。 - 重复步骤2-3创建第二个主分区(分区号2)和第三个主分区(分区号3)。
- 再次输入
n,此时系统提示只能选e(扩展分区),输入e,分区号4,占用剩余空间。 - 在扩展分区内创建逻辑分区:输入
n,自动在扩展分区内创建逻辑分区(分区号5),指定大小如+5G,重复创建第二个逻辑分区(分区号6)。 - 输入
p查看最终分区表,确认无误后输入w写入并退出。
格式化与挂载
fdisk只负责分区表写入,不格式化,退出后需执行mkfs.ext4 /dev/sdb1等命令创建文件系统,再用mount挂载到指定目录。
mkfs.ext4 /dev/sdb1
mkdir /data
mount /dev/sdb1 /data
若需开机自动挂载,将分区UUID写入/etc/fstab。
fdisk GPT分区支持:大容量磁盘的现代选择
从MBR切换到GPT
fdisk从2.0版本开始支持GPT,在交互模式中输入g即可创建全新的GPT分区表,原有MBR分区将被清除,GPT分区表支持128个主分区,单分区容量可达ZB级别,远超MBR的2TB上限。
GPT分区实战与注意事项
创建GPT分区时不再有扩展分区概念,所有分区均为主分区,操作步骤与MBR类似,但分区类型代码变为GUID格式,fdisk会自动识别GPT并显示相应提示,行业专家指出,在多数服务器场景中,GPT已成为默认选择,尤其适用于4TB以上磁盘或UEFI启动环境。
fdisk和parted区别:分区工具如何选择
- fdisk:轻量,交互式操作直观,适合快速分区、查看分区表,脚本化相对简单。
- parted:支持更多分区表类型(如BSD、APM),可非交互式执行,适合自动化部署和复杂分区调整(如缩小分区)。
选择建议:日常维护用fdisk,批量部署或需要缩小分区时用parted,两者可互补,但注意不要混用写入同一磁盘的分区表。
fdisk命令在服务器维护中的典型应用场景
添加新硬盘并分区
在云服务器或物理机中插入新磁盘后,使用fdisk -l确认设备名(如/dev/vdb或/dev/sdc),然后交互式创建分区,格式化后挂载到数据目录,这是服务器扩容的常见操作,fdisk由于无需额外依赖,成为首选工具。
修改分区类型标识
当需要将普通数据分区改为swap分区或Linux LVM时,使用t命令修改类型代码。
- Linux swap:82
- Linux LVM:8e
- Microsoft基本数据:07
修改后需重新格式化或激活相应服务(如swapon)。
自动化脚本分区
利用echo传递命令给fdisk,实现一键分区,例如创建一个1GB主分区:
echo -e "nnpn1nn+1Gnw" | fdisk /dev/sdc
注意此方式风险较高,生产环境建议使用parted或sfdisk更安全。
fdisk无法分区?常见错误与解决方法
“设备忙”错误
目标分区被挂载或正在使用,先使用lsof或fuser检查占用进程,然后卸载:umount /dev/sda1,若无法卸载,尝试使用lazy模式(umount -l)或重启进入单用户模式。
分区表写入失败
磁盘存在坏道或分区表损坏,尝试使用fdisk -l检查是否仍能读取,若无法读取,可能需要重建分区表(先备份数据),对于GPT磁盘,可用gdisk的r恢复选项。
与大容量磁盘不兼容
旧版fdisk(<2.0)无法识别GPT,导致“无效分区”错误,升级util-linux包至最新版即可解决,若无法升级,可改用parted或gdisk。
fdisk命令用法常见问题与解答
问题:fdisk和parted哪个更适合新手?
fdisk的交互方式更贴近传统,对于熟悉菜单操作的用户容易上手,parted命令参数更丰富,但容易因误操作导致数据丢失,建议新手先掌握fdisk,再根据需求学习parted。
问题:用fdisk创建分区后,系统没有立即识别怎么办?
执行partprobe命令通知内核重读分区表,或重启系统,如果使用云服务器,某些平台可能需要手动刷新磁盘状态(如简米云的控制台重置磁盘)。
问题:fdisk支持对LVM物理卷分区吗?
fdisk可以创建LVM类型的分区(代码8e),但不会影响LVM的元数据,在LVM环境中,通常先创建一个主分区,标记为8e,然后使用pvcreate创建物理卷,fdisk本身不处理LVM逻辑,只负责底层分区表操作。
fdisk命令是Linux磁盘管理的基石,从MBR到GPT,从交互到脚本,掌握它足以应对日常分区需求,遇到复杂场景时,结合parted或gdisk可以更灵活地处理特殊分区表和大容量磁盘。
首发原创文章,作者:王坚,如若转载,请注明出处:https://idctop.com/article/518608.html



