fdisk 命令实战:从零开始掌握Linux磁盘分区技巧
1. 认识fdisk:你的Linux磁盘分区管家
第一次接触Linux磁盘管理时,我盯着那个黑乎乎的终端窗口直发懵。直到老同事扔给我一句"用fdisk就像给新房子砌墙",这才恍然大悟。想象你买了一套毛坯房,fdisk就是帮你划分卧室、厨房、卫生间的装修师傅。
这个来自"Partition table manipulator for Linux"的工具,实际用起来比念全称简单多了。我常用的几个参数至今还贴在显示器边上:
-l像房产证一样列出所有分区信息-n相当于拿起砖头准备砌新墙-p随时查看户型图(分区表)-w装修完记得保存设计图
最近给公司服务器加硬盘时,发现新版fdisk还支持GPT分区表,就像现代户型设计比老式砖混结构更灵活。不过初学者建议从传统的MBR分区入手,就像装修先从刷墙开始学起。
2. 实战准备:连接新磁盘的正确姿势
上周帮实习生小张排查问题,发现他居然在虚拟机开机状态直接热插拔硬盘。这就像给行驶中的汽车换轮胎,数据没丢真是运气好。正确的新磁盘接入流程应该是:
物理连接:
- 实体服务器先关机再插SATA线
- 虚拟机建议在关机状态添加虚拟磁盘
- 云服务器通常通过控制台挂载云盘
识别磁盘:
lsblk这个命令比fdisk -l更直观,像给每个磁盘拍了X光片。上次用这个发现系统把新磁盘识别为/dev/sdb,而小张一直在折腾/dev/sda的分区。
- 确认磁盘状态:
cat /proc/partitions有次运维时发现磁盘容量对不上,原来是有残留分区表。这时候wipefs -a /dev/sdb就像用铲子清除墙上的旧瓷砖,保证装修基础干净。
3. 分区大师课:手把手创建第一个分区
记得第一次用fdisk时,那个交互界面让我以为是进入了某种编程模式。其实掌握这几个关键交互命令就够了:
3.1 进入分区编辑模式
fdisk /dev/sdb这时候就像拿到了新房子的建筑图纸,输入m可以查看所有装修工具(命令帮助)。
3.2 创建主分区
输入n开始新建分区后,会遇到几个关键选择:
- 选
p创建主分区(就像决定主卧位置) - 分区号保持默认1(第一面墙)
- 起始扇区直接回车(从毛坯最左边开始)
- 输入
+20G指定分区大小(划出20平做卧室)
有次我给MySQL数据分区时,忘记留swap空间,结果半夜收到告警。现在养成分区前先用free -h查看内存的好习惯。
3.3 设置分区类型
默认的Linux分区类型是83,但有些场景需要调整:
t然后输入L可以查看所有类型代码。比如:
- 82:Linux swap(相当于储物间)
- 8e:LVM(可拆改的隔断墙)
- ef:EFI系统分区(智能家居控制中心)
4. 让分区真正生效的魔法步骤
去年有次分区后直接格式化,结果数据全丢。后来才知道漏了关键步骤:
4.1 同步分区表
partprobe /dev/sdb建议连敲两次回车,就像装修完要开窗通风。遇到顽固情况可以试试:
blockdev --rereadpt /dev/sdb4.2 检查分区状态
lsblk -f这个命令比单纯看/dev目录更可靠。有次发现分区没生效,原来是磁盘缓存问题,加上-o +PARTUUID参数才看到真相。
5. 给分区穿上文件系统的外衣
有实习生问为什么不能直接用裸分区,我让他试试:
dd if=/dev/zero of=/dev/sdb1 bs=1M count=100结果系统直接卡死,这就是没格式化的后果。常用格式化命令对比:
| 文件系统 | 适用场景 | 典型命令 |
|---|---|---|
| ext4 | 常规用途 | mkfs.ext4 -L data /dev/sdb1 |
| xfs | 大文件处理 | mkfs.xfs -f /dev/sdb1 |
| btrfs | 高级功能需求 | mkfs.btrfs -m single /dev/sdb1 |
特别注意:生产环境一定要加-L标签,就像给房间贴门牌。有次机房断电,靠blkid命令才找回了重要分区。
6. 挂载的艺术:让分区真正可用
临时挂载就像搭帐篷:
mount /dev/sdb1 /mnt/temp永久挂载需要修改/etc/fstab,但这里坑最多。我的检查清单:
- 先用
blkid获取UUID - 测试挂载无误再写入fstab
- 添加
nofail参数防止启动失败 - 最后
mount -a测试配置
曾经因为漏写defaults参数导致数据库权限异常,现在养成了用findmnt复查的好习惯。
7. 分区进阶:那些手册里没写的经验
对齐优化: 现代4K扇区磁盘建议用:
fdisk -c -u /dev/sdb起始扇区从2048开始能提升性能
空间预留: 给ext4留5%给root用户:
tune2fs -m 5 /dev/sdb1数据库分区建议设为0
故障排查:
dmesg | grep sdb查看内核日志smartctl -a /dev/sdb检查磁盘健康fsck -y /dev/sdb1修复文件系统
上周用fdisk -lu /dev/sdb发现分区重叠,原来是有坏道导致分区表错误。这种问题从日志根本看不出来,必须亲自检查分区边界。
