1. 为什么总要反复确认磁盘分区:一个运维老兵的日常
干Linux运维这些年,磁盘分区查看这件事,我几乎每天都要做几次。你可能觉得这不就是敲个命令的事吗?但实际情况是,不同场景下适合的工具完全不同——排查启动故障时用fdisk,看挂载关系时用lsblk,查硬件底层信息时用hwinfo,给小白远程指导时反而图形工具最省事。这套组合拳打熟练了,处理问题的效率能快出一大截。
这篇文章我就把这四种方法掰开揉碎了讲清楚,包括每个工具的输出怎么读、关键字段什么意思、哪些场景下选哪个最顺手,以及我踩过的那些坑。内容面向的是刚入行的运维、经常跟Linux服务器打交道的开发,以及准备Linux面试的朋友——尤其是最后这类人,面试官很喜欢拿磁盘命令做文章,因为它是Linux基础知识里最实用、最贴近生产环境的一块。
先说一个最常见的工作场景:你接到一台新服务器,需要确认数据盘是否已经分区、格式化成哪种文件系统、挂载到了哪个目录。如果直接上来就fdisk -l,也能看到信息,但输出太长太杂,还得自己去对应设备名。这时候lsblk一条命令,树状结构一目了然,比fdisk直观得多。反过来,如果你怀疑磁盘有坏道、分区表有错误,或者要处理的是老旧的MBR分区表,那fdisk的交互式操作和详细分区信息又不可或缺。所以这几种方法不是互相替代的关系,而是互补的关系——每种工具背后都有它特别擅长的领域,这也是我这篇文章想帮你理清的核心思路。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 命令之间的定位差异:先搞懂自己到底要看什么
2.1 四种方法的核心定位对比
先说点实在的,磁盘分区查看不是越强大的命令越好,而是越贴合当前需求越好。我常用这四种方法,它们的侧重点完全不同:
fdisk:老牌分区工具,既能查看也能修改分区表,输出的是最底层的分区信息。lsblk:以树状结构列出块设备,重点展示设备间的层级关系和挂载点,是目前日常使用频率最高的。hwinfo:硬件信息收集工具,查看磁盘时连型号、序列号、固件版本都能挖出来,定位底层硬件问题必备。- 图形工具(如GNOME Disks、GParted):可视化界面,适合刚接触Linux的用户,以及需要图形化调整分区大小的场景。
我记得有次帮朋友排查一台Ubuntu桌面版开机进不了系统的问题,报错信息指向磁盘相关。我当时远程让他装了个GParted,打开一看分区情况马上就明白了——根分区空间满了,但旁边还有一个未分配的大分区没挂载。这种场景下,图形工具的直观性是任何命令行都比不了的。但在纯命令行的服务器环境里,可能连图形界面都没有,这时候就全靠前三种命令了。
2.2 一个命令搞定挂载视图:为什么lsblk成了我的首选
我自己的习惯是,接到一台新环境,第一件事永远是先敲lsblk。原因很简单:它把所有块设备的关系按树状列出来,谁是谁的父设备、哪个分区挂载到哪、设备容量多大,几秒钟就能在脑子里建立起整个磁盘布局图。
这么说吧:lsblk输出的树状结构就是磁盘世界的“家谱”。sda下面长着sda1、sda2,表明sda这块物理盘上有两个分区;nvme0n1下面几个分区是NVMe固态硬盘的划分。你加过LVM之后,还能看到vg-名称带出的逻辑卷挂在物理卷下层。这种层级关系用文字描述半天说不清楚,一条lsblk就全解决了。
所以如果你现在问我“用哪个命令看分区最顺手”,我的回答是:没有特殊情况就用lsblk。它简单、直观、信息密度高,而且Linux发行版默认都会装。后面我会专门用一节来详细拆它的输出。
3. 详细拆解:fdisk -l的每个字段到底在说什么
3.1 fdisk -l的完整输出解读
fdisk -l可能是很多人学习磁盘分区的第一个命令,它的输出也确实是最“原汁原味”的分区表信息。我在实际工作中用它最多的是两种场景:一是确认分区表类型是MBR还是GPT,二是查看分区起始扇区和大小等最底层的数据。
在一台虚拟机上执行fdisk -l /dev/sda,你会看到类似这样的输出:
bash复制Disk /dev/sda: 40 GiB, 42949672960 bytes, 83886080 sectors
Disk model: VBOX HARDDISK
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x1a2b3c4d
Device Boot Start End Sectors Size Id Type
/dev/sda1 * 2048 2097145 2095100 1023M 83 Linux
/dev/sda2 2097152 83886079 81788928 39G 5 Extended
/dev/sda5 2099200 83886079 81786880 39G 83 Linux
逐行来看:第一行显示磁盘总容量、字节数和扇区总数。Disk model是设备型号,在虚拟机上常见的就是VBOX HARDDISK这类。Units: sectors of 1 * 512 = 512 bytes表示一个扇区512字节,这是大多数磁盘的物理扇区大小。Disklabel type: dos表示这张盘用的是MBR分区表(dos就是MBR的另一种叫法),如果是GPT分区表,这里会显示gpt。
下面的分区列表才是最关键的。Device是分区设备名,Boot列有星号表示这个分区是启动分区,Start和End是该分区在磁盘上的起始和结束扇区号,Sectors是占用的扇区总数,Size是你最关心的大小,Id是分区类型编号,Type是类型说明。比如Id为83对应的是Linux原生文件系统分区,82是Linux swap交换分区,8e是Linux LVM,5是扩展分区。
3.2 关于MBR、GPT以及fdisk的一个限制
这里有个很重要的实际经验:传统的fdisk在MBR分区表下可以看到并操作主分区和扩展分区,但GPT分区表需要fdisk的新版本才完整支持。新版本fdisk(util-linux 2.26之后)已经能正常查看和操作GPT分区表了,但在很多老系统上,你更保险的做法是使用gdisk这个专门为GPT设计的工具。
另外需要注意,fdisk显示的Start和End扇区号包含了分区表对齐信息。现代磁盘分区默认从2048扇区开始,而不是老旧的63扇区,这是因为4K高级格式化磁盘要求分区起始位置对齐到8个扇区(4096字节)的整数倍,否则会出现严重的性能下降。我在帮人排查磁盘性能问题时,就遇到过老系统分区起始于63扇区,导致读性能只有正常值三分之一的情况。这就是为什么你在生产环境中用fdisk新建分区时,最好直接使用默认的起始位置,不要手动指定一个看起来“整”的扇区号。
3.3 fdisk的交互模式怎么用
很多教程只讲fdisk -l查看,不太提交互模式。但说实话,fdisk真正强大的是它的交互能力——你可以在不退出工具的情况下查看、创建、删除分区,并把这些操作一次性写入分区表。
进入交互模式很简单:
bash复制fdisk /dev/sda
进入之后它会有个提示符Command (m for help):,输入p可以打印当前分区表(和-l效果类似),输入n新建分区,d删除分区,t修改分区类型,w保存退出,q不保存退出。
这里我特别想强调一个新手很爱犯的错误:操作分区表之前,务必确认自己操作的是正确的磁盘设备。fdisk /dev/sda和fdisk /dev/sdb完全是天壤之别,工业生产环境里输错设备名导致的“删库跑路”式事故,真不是段子。我自己的习惯是操作前先lsblk -f看一眼设备挂载情况,再fdisk -l /dev/sdX单独确认目标盘,形成“先看再动”的肌肉记忆。
4. lsblk输出中那些容易被忽略的关键信息
4.1 lsblk的标准输出与扩展字段
lsblk是我日常用最多的命令,没有之一。默认执行时它会列出NAME、MAJ:MIN、RM、SIZE、RO、TYPE、MOUNTPOINT这几列,如果加上-f参数还能看到文件系统类型和UUID,加上-p参数会显示完整的设备路径。
来看两个实际输出对比。默认的lsblk:
bash复制NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 40G 0 disk
├─sda1 8:1 0 512M 0 part /boot
├─sda2 8:2 0 39G 0 part
│ └─vg-root
│ 253:0 0 39G 0 lvm /
└─sda5 8:5 0 1G 0 part [SWAP]
加上-f参数后:
bash复制NAME FSTYPE LABEL UUID MOUNTPOINT
sda
├─sda1 xfs a1b2c3d4-... /boot
├─sda2 LVM2_member 12345678-...
│ └─vg-root xfs 87654321-... /
└─sda5 swap f1e2d3c4-... [SWAP]
第一列NAME是设备名;MAJ:MIN是设备号(主设备号:次设备号);RM表示是否为可移动设备,1是可移动(比如U盘),0是固定磁盘;SIZE是容量;RO是是否只读;TYPE列告诉你设备类型,disk是物理磁盘,part是分区,lvm是逻辑卷;MOUNTPOINT就是挂载点。加了-f之后,FSTYPE列会显示文件系统类型,这一列在排查“为什么这个分区挂不上”时特别有用。
4.2 从lsblk输出反推系统的磁盘布局
实际工作中,lsblk的价值不只是“看一眼”,而是能让你快速反推出整套系统的存储架构。举个例子,还是上面那个输出:
sda是一块40G的物理盘。sda1大小为512M,挂载到/boot,类型是part。这说明系统把引导分区独立出来了,启动相关文件都在这里。sda2是39G的LVM物理卷成员,类型标记为LVM2_member,它下面挂着一个vg-root逻辑卷,直接挂载到根目录/。这说明这台机器用了LVM卷管理,好处是以后磁盘空间不够了,可以动态扩展逻辑卷而不需要重新分区。sda5是swap分区。
这种多层结构用fdisk要看半天才能拼凑出来,但lsblk的树状结构已经把物理盘、分区、逻辑卷、挂载点的关系画得明明白白了。
再补充一个实际经验:新装的系统如果根分区空间快满了,你用lsblk能快速判断还有没有扩容空间。比如你看到物理盘sda下只有sda1和sda2两个分区,而sda总容量还有大量未分配,那你就可以用fdisk或growpart把剩余空间划给sda2,再通过lvextend扩容逻辑卷。这一套操作下来,磁盘空间不足的问题几分钟就能解决。你知道这个排查思路的价值了吧——它不需要你背命令,只需要你理解lsblk展示的层级关系。
4.3 lsblk与blkid、df的分工
初学Linux时,我经常把lsblk、blkid和df这三个命令搞混,后来才理清它们各自的分工:
lsblk看的是“块设备与挂载关系”——哪个分区挂在哪,容量多大。blkid看的是“块设备的属性”——文件系统类型、UUID、LABEL。它的输出重点是UUID,这在配置/etc/fstab开机自动挂载时是必须用到的。df -h看的是“文件系统使用情况”——已经挂载的文件系统用了多少、还剩多少。这跟上面两个的关注点完全不同。
举个例子,如果你要往/etc/fstab里加一个开机自动挂载的条目,你需要知道目标分区的UUID(用blkid获取)、文件系统类型(blkid也能看到)、挂载点(自己定一个,比如/data)。但如果你想确认这台机器上总共接了哪些盘、哪些还没挂载,那就是lsblk的事了。三个命令各管一段,配合着用才能把存储状态摸清楚。
5. hwinfo --disk:把硬件底层信息一次挖个干净
5.1 安装与基础使用
hwinfo这个工具在使用频率上不如前两个,但它在定位硬件层面问题时是绝对的主力。为什么?因为fdisk和lsblk能告诉你分区的逻辑结构,但它们不关心你的硬盘是什么型号、固件版本多少、序列号多少。而这些信息在保修、库存管理、硬件故障排查时是刚需。
很多Linux发行版默认不安装hwinfo,需要手动装。Debian/Ubuntu系的命令是:
bash复制sudo apt install hwinfo
CentOS/RHEL系要稍微麻烦一点,因为hwinfo通常在EPEL源里:
bash复制sudo yum install epel-release
sudo yum install hwinfo
装好之后,查看磁盘信息有两种方式。直接看全部磁盘:
bash复制hwinfo --disk
只看某一块盘:
bash复制hwinfo --disk --only /dev/sda
5.2 我如何用hwinfo判断一块盘的“底细”
hwinfo --disk的输出非常长,这里挑关键字段说:
bash复制Hardware Class: disk
Device: "SAMSUNG SSD 860 EVO"
Device File: /dev/sda (/dev/sg0)
Device Files: /dev/sda, /dev/disk/by-id/ata-SAMSUNG...
Device Number: major 8; minor 0-15
Geometry (Logical): head 255, sectors 63, cylinders 486401
Size: 7629292 sectors, 3.6 GB
Geometry (BIOS): head 255, sectors 63, cylinders 486401
Drive status: no medium
Config Status: cfg=new, avail, need=hd, active
Hardware Class: disk说明设备类型;Device是设备名,比如这里直接读出了“SAMSUNG SSD 860 EVO”的型号,这种信息在fdisk里是看不到的;Device Files列出了设备文件路径及by-id链接,这在写udev规则时很有用;Device Number是主设备号和次设备号;Size: 7629292 sectors, 3.6 GB是块设备的大小(以扇区为单位和字节为单位);Drive status: no medium表示没有介质——如果是读卡器、光驱这类设备,即使没插卡/盘也会显示,不要误以为磁盘坏了。
我印象最深的一次经历,是接手一台运行了五六年的生产服务器,业务方反馈磁盘IO经常接近100%。我先用fdisk和lsblk确认了分区和挂载情况,没发现异常。后来用hwinfo --disk查看时,发现硬盘已经连续通电五万多个小时了——这块盘早该轮换备件了。后来更换新盘后,IO问题直接消失。这件事之后,我在排查任何“磁盘慢”的问题时,都会先跑一遍hwinfo --disk看看是不是硬件老化导致的。
5.3 hwinfo显示的信息对维护的实际价值
注意一点:hwinfo --disk的分区信息和fdisk、lsblk不一样,它更偏重设备本身。它有Geometry (Logical)和Geometry (BIOS)两组参数,分别对应操作系统看到的逻辑几何结构和BIOS看到的几何结构。在GPT分区成为主流前,分区的CHS值计算经常要依赖这些参数,但现在基本都是LBA寻址了,这些几何参数的实际意义已经不大。
另外hwinfo --disk有时候会显示多个Device Files条目,其中/dev/disk/by-id/和/dev/disk/by-path/这两类链接在写/etc/fstab时特别好用。因为传统设备名/dev/sda在添加新盘、重启后有可能变化(比如sda变成sdb),而by-id和by-path是稳定的标识。我在给客户机器配置多块数据盘时,通常建议用UUID或者by-id来挂载,就是为了防止设备名漂移导致挂载错乱的问题。
5.4 一次实际排障:结合hwinfo解决“找不到盘”问题
有一次同事在群里喊,机器重启后挂载的第三块数据盘丢了,fdisk -l和lsblk都看不到,只能看到系统盘sda和sdb。第一反应是盘坏了或者接触不良。我先让他跑hwinfo --disk看一下系统实际识别到的硬件设备。
结果输出里清清楚楚地显示了那块“失踪”的盘:
bash复制Device: "ATA WDC WD40EZRZ-00G"
Device File: /dev/sdc
Size: 7814037168 sectors, 3.6 TB
系统层面能看到设备,但fdisk看不到分区?这就让我怀疑是分区表损坏或者驱动层面的问题。后来发现,这块盘的分区表在重启后变成了无效状态,用fdisk无法正常读取。最后我们重建了分区表,数据通过备份恢复了。整个过程里,如果没有hwinfo --disk先确认“硬件是好的”,我们可能会走很多弯路去排查硬件故障。
6. 图形化工具:终端杀手,还是小白救星?
6.1 GNOME Disks与GParted到底选谁
在讨论图形工具之前,我先表明立场:在纯服务器环境下,图形界面不是必需品,甚至很多时候是拖累。但如果你管理的是桌面版Linux,或者你正在给完全不懂命令行的朋友做远程指导,那么图形化工具的效率远高于命令行。这不是“幼稚”的选择,而是“合适”的选择。
最常见的两个图形工具是GNOME Disks(gnome-disk-utility)和GParted。它们的分工很明确:
- GNOME Disks:Ubuntu等桌面系统内置,适合查看磁盘信息、挂载/卸载分区、格式化、创建磁盘镜像。界面干净,日常查看与格式化用足够。
- GParted:功能更强大,支持在线调整分区大小、移动分区、创建/删除/格式化分区,是图形化分区操作的标杆工具。
GParted之所以强大,核心在于它使用libparted引擎,跟parted命令是一套东西。它支持MBR和GPT,支持ext4、xfs、btrfs、NTFS、FAT32等主流文件系统的各种操作。需要注意的是,移动或调整根分区大小的操作需要从Live CD/USB启动后操作,因为正在挂载的分区不能被你移动。这也是GParted官方推荐用Live介质启动的原因。
6.2 图形工具与命令行的“缝合”用法
实际操作中,我通常是图形工具和命令行配合使用。比如在GParted里先把空闲空间划出一个新分区,然后切回终端用mkfs.ext4格式化,再编辑/etc/fstab添加挂载条目。也有人全程图形界面操作,这没问题,但命令行更精确可控。
有一次远程帮一个同学解决Ubuntu扩容根分区的问题,他在虚拟机里装的系统,根分区只有20G,磁盘总容量却有100G。我通过远程桌面指导他打开GParted,看到磁盘末尾有约80G未分配空间。我让他先扩展根分区所在的分区,再扩展文件系统。扩展完成后重启进系统,df -h一看根分区已经变成97G了。整个过程在图形界面下二十分钟搞定,如果用命令行指导他操作,光解释分区编号和扇区对齐就会把我累死。
6.3 图形工具不适合哪些场景
图形工具也不是万能的。在无图形界面的服务器环境、SSH远程连接、自动化脚本里,它完全排不上用场。而且图形工具对分区表出错的恢复能力其实不如命令行工具——如果你连盘都识别不到,GParted再厉害也白搭。这时候反而要用fdisk的专家模式或者gdisk这类工具去修分区表。
另一个值得说的点是:如果你新装的机器上只有一个系统盘,日常使用GNOME Disks查看一下磁盘健康状况就好,不要动不动就改分区。分区操作是不可逆的,数据丢了神仙也难救。图形化工具把操作门槛降低了,确实方便快捷,但也容易让人忽略操作背后的危险性。
7. 生产环境里我实际怎么选工具:场景化速查
7.1 四个典型场景的最优命令搭配
基于我的实战经验,我把查看磁盘分区的高频场景和对应的命令搭配整理成了下面这个速查表:
| 场景 | 首选命令 | 补充命令 | 原因 |
|---|---|---|---|
| 日常巡检挂载关系 | lsblk -f |
df -h |
树状结构直观,配合df看容量使用率,一分钟掌握全局 |
| 查看分区表类型与底层结构 | fdisk -l |
gdisk -l |
确认MBR/GPT类型,查看起始扇区、ID、类型 |
| 硬件故障/性能排查 | hwinfo --disk |
smartctl -a |
获取型号、固件、序列号,配合SMART看健康状态 |
| 小白远程指导 | GParted/GNOME Disks | lsblk |
图形界面操作直观,必要时辅助命令确认结果 |
这里有两点补充说明。第一,smartctl -a虽然不在标题的四种方法里,但它和硬件排障是黄金搭档——hwinfo负责告诉你“这是块什么盘、什么状态”,smartctl负责告诉你“这块盘之前有没有报过错、通电时间多久”。第二,在生产环境操作分区表之前,一定要留出足够的维护窗口,因为任何改变分区表的操作都需要重启或重新挂载才能生效。
7.2 写脚本时命令选择的几个坑
如果要把磁盘信息获取写成脚本,有几个坑我是实打实踩过的:
- 不要用
fdisk -l的输出去解析分区信息做自动化判断。fdisk的输出格式在不同版本和不同发行版上略有差异,而且它是面向人类阅读的,不是面向程序解析的。真要脚本化处理,用lsblk --json或者blkid更可靠。 lsblk的JSON输出模式是现在的首选。比如lsblk -J -o NAME,SIZE,TYPE,FSTYPE,MOUNTPOINT,用jq解析很方便,而且字段稳定。- 如果脚本需要跨CentOS 7和Ubuntu 22.04两代系统跑,注意命令参数差异。比如
lsblk在老版本上可能不支持--json,hwinfo在CentOS 7上需要先装EPEL源。写脚本之前先在目标系统上跑一遍命令确认可用的参数,能避免很多执行时的怪问题。
7.3 面试中关于磁盘分区的常见考点
既然标题下的热词里有“linux面试题”,我多说几句。面试官关于磁盘分区的提问通常不是直接问“fdisk怎么用”,而是问辨析类问题:
- fdisk和parted的区别是什么?回答要点:fdisk更常用、交互友好、对MBR支持好,parted更适合大容量磁盘(超过2T)和GPT分区表、支持脚本化非交互操作。
- lsblk和blkid的区别?回答要点:lsblk偏重构视图,展示设备树和挂载关系;blkid偏属性信息,展示UUID、文件系统类型。
- 根分区满了怎么办?回答要点:先用
df -h确认、用du排查大文件、清理缓存日志、如果还不行考虑扩容(这就要用到分区工具和LVM扩展)。 - 新加一块数据盘,从识别到挂载的完整流程?回答要点:
lsblk确认识别到新盘→fdisk或parted分区→mkfs格式化→blkid获取UUID→编辑/etc/fstab→mount -a。
这些问题不要求你背命令参数,而是考察你对工具特性的理解深度。所以我在前面特意花了不少篇幅讲每种工具输出里的字段含义,就是为了让你真正做到举一反三,遇到新问题能推断该用什么工具。
8. 常见问题与排查技巧实录
8.1 高频报错与处理方法
我在运维过程中积累了一些高频问题的处理套路,整理成表方便你速查:
| 问题现象 | 可能的排查步骤 | 解决方法 |
|---|---|---|
fdisk -l看不到某块新盘 |
先lsblk确认是否识别设备,再hwinfo --disk确认硬件枚举,最后检查驱动和线缆 |
更新驱动、重启虚拟机、重新扫描SCSI设备 |
lsblk不显示分区的挂载点 |
分区可能确实没挂载;文件系统损坏也会导致挂载点列空白 | blkid确认文件系统,fsck修复后用mount手动挂载 |
| fdisk显示的数值和df不一致 | 分区大小与文件系统大小是两回事,比如分区没有完全格式化或者有层叠加 | lsblk -f对照文件系统大小,用df -h查看实际可用 |
| 磁盘设备名隔一次重启就变 | 系统枚举顺序变化导致sda/sdb互换 | 用UUID或/dev/disk/by-id/写/etc/fstab |
| GPT分区在fdisk里显示异常 | 老版本fdisk兼容性问题 | 用gdisk -l查看,或升级util-linux |
我重点讲一下第一个问题——新加盘识别不到。这在一开始排查时很容易让人紧张,尤其需要扩充磁盘容量的时候。你可能fdisk -l看不到设备,就怀疑盘坏了。但更常见的原因是轻量的SCSI设备扫描没有自动进行。处理方法是:
bash复制echo "- - -" > /sys/class/scsi_host/host0/scan
echo "- - -" > /sys/class/scsi_host/host1/scan
如果主机数量不确定,可以先用ls /sys/class/scsi_host/查看。这个操作我做过很多次,10次里有8次能直接让新盘出现。剩下的情况再去考虑虚拟机磁盘配置、物理机线缆、驱动等更深层的原因。
8.2 分区表损坏后的恢复经验
分区表损坏是运维人的噩梦,但也不是完全没救。如果fdisk已经读不出分区,先不要慌,更不要直接初始化新分区表——那会把原来的所有分区结构覆盖掉。
我常用的恢复排查思路是:
- 用
fdisk -l查看,确认报错信息。如果是“无效的分区表”,说明MBR引导扇区可能损坏。 - 用
gdisk -l尝试读取。GPT分区表在磁盘尾部还有一份备份,gdisk有从备份恢复的能力。 - 使用
testdisk工具扫描。testdisk可以从残留的扇区数据里识别出曾经存在的分区结构,恢复到原来的状态。 - 在恢复之前,一定要先用
dd把磁盘的MBR和GPT头部备份出来。
我印象里有次虚拟机启动失败,折腾了半天发现是MBR分区表被错误覆盖了。我手里有原始分区表备份,用sfdisk直接恢复后重启,问题解决。如果没有备份,就需要借助testdisk这种工具扫描恢复,成功率取决于运气和数据覆盖情况。所以我说,在操作分区表之前做备份,这个习惯真能救你一命。
8.3 操作分区前必须养成的三个习惯
最后分享三个我反复叮嘱自己的操作习惯:
- 操作前确认设备路径。用
lsblk核对一遍,确保要操作的盘是目标盘,不是系统盘。尤其在做fdisk交互式操作时,确认自己处于正确的设备上下文里。 - 操作前备份分区表。
sfdisk -d /dev/sda > sda_partition_table.bak,一行命令就能把分区结构备份出来。恢复也很简单:sfdisk /dev/sda < sda_partition_table.bak。 - 操作后立即验证。无论是新建分区还是修改分区,操作完成后马上用
lsblk和fdisk -l检查结果,再用blkid确认文件系统,最后用mount或mount -a验证挂载。
这三个习惯看起来简单,但真正常年坚持下来的人不多。我自己曾经因为少备份一步分区表,导致一次数据库服务器的扩容操作差点酿成事故,从那以后这三个动作就成了我的肌肉记忆,也推荐你尽早养成。
最后分享两个实用小技巧
每次在新机器上查看磁盘分区时,我习惯先跑一条组合命令把基础信息一次抓全:lsblk -f && df -h && sudo fdisk -l。这样做的好处是能在一次输出里同时看到设备树、文件系统、挂载情况和容量使用率。虽然输出会有点长,但心理上会非常踏实——你基本清楚了这台机器存储层面的全貌。
另一个小技巧是,如果你不确定某个工具的工作原理,可以用man命令去看它自带的帮助文档。比如man lsblk里详细解释了每一列的含义,man fdisk里说明了操作命令。这些文档虽然不够“亲民”,但绝对是你查阅第一手资料的起点。把这些说明书读透了,胜过在网上翻十篇零散教程。
