拓冰建站拓冰建站
首页 / 资讯中心 / 正文

Linux磁盘分区查看指南:fdisk、lsblk、hwinfo与图形工具详解

在日常Linux运维和服务器管理中查看磁盘分区是最高频的基础操作之一。不管是新接手一台机器还是排查磁盘空间告警抑或是准备给系统加一块新硬盘第一步几乎都是先弄清楚当前磁盘和分区是什么状态。我见过不少刚接触Linux的朋友习惯性地只用df -h看一眼容量结果在分区识别、设备名对应关系这些环节上手忙脚乱。其实Linux里查看磁盘分区的工具非常多但真正用得顺手、信息全的无非是fdisk、lsblk、hwinfo以及图形化工具这几类。这篇内容就把我在实际运维中经常用到的四种查看磁盘分区的方法完整梳理一遍。这几种方式各有侧重fdisk是经典老牌命令行工具lsblk则主打输出简洁、层次分明hwinfo偏硬件底层信息挖掘图形工具则适合在桌面环境或虚拟化管理场景下快速浏览。无论你是刚入门不久的新手还是天天跟服务器打交道的运维老手掌握这四种方法基本就能覆盖从日常排查到深入诊断的绝大多数场景。1. 先搞清楚磁盘、分区与查看工具之间的关系1.1 磁盘分区的核心概念很多时候小白查磁盘分区最大的困惑不是命令记不住而是输出结果里那一堆设备名、大小和类型根本对不上号。这里必须先把底层概念拉通。一块物理硬盘比如常见的/dev/sda它本身只是一个原始的块设备相当于一块尚未装修的空地。要在这块空地上建房子存放数据就必须先做规划把空地划分成一个个区域每个区域就是一个分区。分区之后每个分区还需要格式化也就是写入文件系统比如ext4、xfs、ntfs这样操作系统才能往里存文件。整个过程就好比先画好房间布局图分区表再给每个房间铺地砖刷墙格式化最后才搬家具进去写入数据。查看磁盘分区本质上是查看两个层面的信息第一层是物理层面即系统识别到了哪些磁盘每个磁盘有多大、什么型号第二层是逻辑层面即每块磁盘被划分成了哪些分区每个分区用什么文件系统挂载到了哪个目录。不同的工具在这两层信息上的侧重点完全不同这也是为什么我没有只用一种命令走天下的原因。1.2 不同工具对应不同需求在实际工作中我会根据具体需求选择不同工具如果只是快速看一眼整体布局lsblk是最佳选择树状输出一目了然。如果需要查看分区表细节比如扇区起始位置、分区类型IDfdisk是标准答案。如果是排查硬件驱动问题想知道磁盘型号、固件版本、接口类型hwinfo能给出最全的硬件级信息。如果在桌面环境或者虚拟机管理界面中操作图形工具如GParted和GNOME Disks会更直观友好。这几种方式并不是互相排斥的。实际排查问题时我常常会组合使用它们。比如先用lsblk确认分区和挂载的整体结构发现问题后用fdisk -l核对分区表细节再用hwinfo确认底层磁盘硬件是否正常。2. fdisk老牌命令行工具的经典用法2.1 fdisk的安装与基本使用fdisk是Linux里历史最悠久的磁盘分区工具之一绝大多数发行版都预装了这个工具。它的名字来源于“fixed disk”或者“format disk”的缩写在早期的Unix系统中就已经存在。虽然是老工具但其稳定性和跨兼容性至今无可替代。在绝大多数发行版中fdisk默认已经安装。如果你的系统里没有可以通过包管理器安装# Debian / Ubuntu sudo apt install fdisk # RHEL / CentOS / Rocky sudo yum install util-linux查看磁盘分区的核心命令是fdisk -l它会把系统里的所有磁盘和分区信息一次性列出来。实际操作一下sudo fdisk -l执行后典型的输出大致是这样的Disk /dev/sda: 100 GiB, 107374182400 bytes, 209715200 sectors Disk model: Virtual disk 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: 0x2c0f47ef Device Boot Start End Sectors Size Id Type /dev/sda1 * 2048 999423 997376 487M 83 Linux /dev/sda2 1001470 209715199 208713730 99.5G 5 Extended /dev/sda5 1001472 209715199 208713728 99.5G 83 Linux如果只想查看某一块磁盘的分区情况可以在设备路径后面指定sudo fdisk -l /dev/sdb还有一种方式是进入交互式界面后再按p打印分区表。这种方式在你打算进一步对分区操作时更实用sudo fdisk /dev/sda # 进入后输入 p 查看分区表输入 q 退出不保存任何修改2.2 输出内容逐列解读对于经验不太丰富的朋友fdisk -l的输出可能会显得有点乱。我在这里把几个关键点拆开讲。最上面的Disk /dev/sda: 100 GiB这一行显示的是磁盘的总容量和扇区总数。这里的100 GiB是二进制容量有些厂商标注的“100GB”其实是十进制容量两者有细微差别这在磁盘容量检测时经常让人疑惑。接着是Units: sectors of 1 * 512 512 bytes它表示磁盘的扇区大小是512字节。如今许多新型磁盘使用4K扇区但逻辑扇区大小通常仍然伪装为512字节以保持兼容性。这个信息在分区对齐时非常关键。然后是Disklabel type: dos这里的dos指的就是MBR分区表类型。如果你看到的是gpt则表示使用GUID分区表。MBR和GPT是两种不同的分区表格式MBR最多支持4个主分区或者3个主分区加一个扩展分区单盘最大支持2TBGPT则几乎不受限制最多支持128个分区是目前的主流选择。分区信息列表部分每一列的意义如下Device分区设备路径比如/dev/sda1。Boot标记为*的是可引导分区系统固件会从这里加载引导程序。Start和End分区在磁盘上的起始和结束扇区位置单位是扇区。Sectors分区总共占用的扇区数。Size人类可读的分区容量大小。Id分区类型ID对MBR分区表而言是一个十六进制编号比如83表示Linux native82是Swap8e是Linux LVM。Type分区类型的文字描述。2.3 使用注意事项fdisk是个非常强大的工具但正因为强大使用时也要保持警惕。查看分区信息是只读操作fdisk -l不会对磁盘做任何修改你可以放心使用。但如果进入交互模式后按了w分区表的改动就会被写入磁盘这可能导致数据丢失或系统无法启动。我的习惯是如果仅仅查看信息永远用-l参数只有确认要修改分区的时候才进入交互界面操作。注意fdisk查看的其实是分区表信息它不会验证文件系统是否完整。如果你发现某个分区在fdisk里能看到但挂载时报错unknown filesystem type那可能是文件系统损坏需要用fsck之类的工具进一步检查这个问题后面我还会细说。另外要学会观察输出中的警告信息。如果磁盘容量超过2TB且分区表类型是dosMBRfdisk通常会打印一段警告提示你有部分空间无法使用。这种情况下唯一的解决方案是转成GPT分区表。3. lsblk简洁直观的树形查看利器3.1 基本用法一条命令看清全局lsblklist block devices是util-linux软件包中的另一个工具它的设计哲学非常明确用最简洁的方式把系统中所有块设备的关系呈现出来。lsblk最大的亮点是树形结构输出可以直观地看到一块磁盘下挂载了哪些分区每个分区的挂载点是什么。直接执行lsblk输出非常干净lsblk典型输出NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS sda 8:0 0 100G 0 disk ├─sda1 8:1 0 1G 0 part /boot ├─sda2 8:2 0 20G 0 part / └─sda3 8:3 0 79.0G 0 part /home从输出中可以非常清楚地看到一块名为sda的磁盘被划分成了三个分区分别挂载到了/boot、/和/home。新人看到这个结构几乎不需要任何解释就能明白硬盘的整体布局。NAME列是设备名称MAJ:MIN是设备的主次设备号RM表示是否可移动设备SIZE是容量RO表示是否只读TYPE是设备类型disk表示整块磁盘part表示分区MOUNTPOINTS则是挂载点。3.2 常用参数让lsblk按需输出lsblk虽然默认输出已经很友好但在实际使用中还经常会加一些参数来改变输出内容。我最常用的是lsblk -flsblk -f输出NAME FSTYPE FSVER LABEL UUID MOUNTPOINTS sda ├─sda1 vfat FAT32 B9E9-17D3 /boot ├─sda2 ext4 1.0 a1b2c3d4-... / └─sda3 ext4 1.0 e5f6a7b8-... /home-f参数会额外显示文件系统类型FSTYPE、文件系统版本、卷标LABEL和UUID。这里的UUID是分区文件系统的全局唯一标识在配置/etc/fstab自动挂载时需要用到。相比直接用blkid命令lsblk -f的树形结构能让你同时看到每块磁盘和分区的关系非常方便。其他几个常用参数# 显示设备的完整路径如 /dev/sda lsblk -p # 仅显示磁盘不显示分区 lsblk -d # 自定义输出列如显示设备的供应商和型号 lsblk -o NAME,SIZE,VENDOR,MODEL,TRAN # 显示设备挂载点的详细关系包括多层挂载依赖 lsblk -tlsblk -p在脚本处理时特别有用因为完整路径避免了你手动拼接/dev/前缀。lsblk -d则可以把磁盘和分区分开看当机器上磁盘数量多、只想确认物理盘时非常实用。3.3 脚本化与自动化场景应用lsblk的另一个优势是非常适合脚本化处理。我经常在自动化脚本里用lsblk提取关键信息比如找出某个分区的UUID、确认某个挂载点对应的设备。举个例子我想找出挂载到/data的分区设备路径lsblk -o NAME,MOUNTPOINTS -n | awk $2 /data {print $1}这里-n表示不打印表头-o指定输出列然后用awk过滤出挂载点是/data的行。如果处理多个分区这个方法可以轻松实现批量确认。再比如判断系统是否使用SSD还是机械硬盘lsblk -d -o NAME,ROTA输出中ROTA为1表示机械硬盘旋转盘0表示SSD固态盘。在写存储相关的自动化脚本时这个参数可以帮助我做差异化处理。3.4 使用技巧和注意点我在实际使用中发现lsblk的树形结构其实是基于内核块设备父子关系自动生成的因此你不需要担心输出会“说谎”。但它默认并不显示分区的类型标识比如是Linux LVM还是Linux Swap这部分信息还是需要借助fdisk -l或blkid来确认。还有一个细节lsblk默认显示的是内核识别到的设备如果某个分区没有被内核正确识别它在lsblk中可能看不到。此时可以用partprobe重新探测分区表或者直接查看/proc/partitions确认。提示lsblk本身不读取分区表而是基于内核设备模型生成信息。因此如果分区表有改动但未让内核重新读取lsblk显示的可能还是旧状态。修改分区表后务必执行partprobe完成刷新生效。4. hwinfo硬件层面的磁盘信息采集4.1 hwinfo的安装和基本用法相比fdisk和lsblkhwinfo是一个更偏向硬件信息采集的工具。它最初来自SuSE Linux后来被移植到了各大发行版。hwinfo能提供的不仅是分区信息还包括磁盘的型号、供应商、序列号、固件版本、传输模式、缓存大小等底层硬件参数。这些信息在排查磁盘性能问题或确认硬件兼容性时作用巨大。安装方式也很简单# Debian / Ubuntu sudo apt install hwinfo # RHEL / CentOS / Rocky sudo yum install hwinfo查看磁盘相关信息的命令是sudo hwinfo --disk由于需要读取硬件信息这里必须加sudo否则部分参数无法显示。4.2 输出内容详细解读hwinfo --disk的输出比前两个工具丰富得多格式大致如下01: None 00.0: 10701 Disk [Created at block.261] Unique ID: 23Kl.W4bT6fvIeNf Parent ID: sGkI.8IQZMToUM5c SysFS ID: /class/block/sda SysFS BusID: scsi:0:0:0:0 Hardware Class: disk Model: VMware Virtual disk Vendor: VMware Device: Virtual disk Revision: 1.0 Driver: vmw_pvscsi, sd Driver Modules: vmw_pvscsi Device File: /dev/sda Device Number: major 8; minor 0 Geometry (Logical): head 255, sectors 63, cylinders 1305 System Specific ID: 2024-11-15_VOLUME-0001 Size: 10737418240 bytes 10485760 kB 10240 MB Geometry (BIOS): head 255, sectors 63, cylinders 1305 BIOS Disk Id: 0x80 Drive status: no medium Config Status: cfgnew, availyes, needinfo, activeunknown这一大段信息里最常用的是以下几项Model和Vendor磁盘的厂商和型号可以快速判断这块盘是SSD还是机械硬盘是哪家厂商的产品。Driver和Driver Modules内核加载的驱动模块排查磁盘无法识别或性能异常时确认驱动是否加载非常关键。Device File设备文件路径对应/dev/sda。Device Number主设备号和次设备号。Size磁盘总字节数。BIOS Disk IdBIOS层面识别到的磁盘编号。如果还想查看分区级别的信息可以使用sudo hwinfo --block该命令会显示所有块设备和分区列表包含每个分区的大小、类型等信息但说实话分区层面它的表现力不如lsblk。hwinfo的真正强项是物理磁盘的硬件识别。4.3 高级用法结合sysfs接口确认磁盘hwinfo还有一个比较硬核的用法就是查看一个磁盘对应的sysfs路径和SCSI地址。在服务器多盘环境下这种方法能帮你准确地把操作系统里的/dev/sdb和物理插槽对应起来。排查Raid卡或磁盘背板问题时这个信息能省去很多体力活。例如sudo hwinfo --disk --only sdb这条命令只输出sdb这块设备的信息。如果机器上有十几块硬盘加上--only参数可以避免输出太冗长。结合udevadm命令还能进一步查看设备的结构信息udevadm info --queryall --name/dev/sdb输出中包含的DEVPATH、ID_PATH等字段能精确反映设备在系统总线上的位置。这个信息配合机房标签或虚拟化平台设备标识就能快速识别物理盘位置。4.4 使用场景建议我在什么情况下会优先用hwinfo主要有三类场景。第一磁盘型号和固件版本确认。第二排查磁盘驱动相关故障比如某块盘无法识别或者识别异常。第三多盘服务器物理定位。不过坦白说日常查看分区信息的话hwinfo并不高效它输出太重、信息太多。所以我的建议是把hwinfo定位为“进阶诊断工具”而不是日常首选项。5. 图形工具可视化的分区查看与操作5.1 GParted经典的分区管理图形软件在桌面Linux环境或者远程图形化管理界面中GParted可以说是最经典的分区工具。它基于GTK开发界面直观支持的操作也非常丰富。GParted既可以查看分区信息也可以进行分区创建、删除、调整大小、格式化、复制等操作。对于不习惯命令行的朋友来说图形化操作可以大幅降低分区管理的上手成本。安装GParted# Debian / Ubuntu sudo apt install gparted # RHEL / CentOS sudo yum install gparted启动后界面上方是磁盘列表下方以饼图和列表两种形式展示分区情况。每个分区都显示设备路径、文件系统类型、大小、已用空间、未用空间和挂载点标签。不必记住任何命令鼠标点击就能切换查看不同磁盘的分区布局非常直观。GParted查看分区信息的方法是只读的不会造成意外修改。但是如果你在界面中执行了任何操作比如调整大小、格式化那就会实际修改磁盘。所以在图形界面里操作时同样的谨慎心态依然需要保持。我通常只在GParted里做查看操作如果真需要修改分区也要在操作前先完整备份数据。5.2 GNOME Disks系统自带的多面手GNOME桌面环境的用户应该很熟悉GNOME Disks磁盘应用在很多发行版里默认已经安装不需要额外配置。它比GParted更轻量不仅能看分区和文件系统还能直接查看硬盘的SMART健康状态执行读写基准测试甚至制作启动U盘。打开GNOME Disks后左侧列出所有物理磁盘点击某块磁盘右侧会显示该磁盘下的所有分区以及对应的挂载点、容量和文件系统类型。值得一提的是它的SMART状态展示非常直观能非常方便地发现磁盘是否存在潜在的物理故障风险。对于笔记本或者个人桌面环境GNOME Disks往往比命令行工具更实用。5.3 图形工具的适用场景与取舍图形工具天然的优势是直观友好劣势也很明显在无桌面环境的服务器上根本没法使用且由于依赖图形库安装包体积较大。在纯命令行管理的生产环境里我曾经试过为了一些分区信息强行装图形环境最后发现完全不划算——直接用命令行工具又快又准。我的经验是图形工具比较适合在虚拟机管理器、个人桌面系统和无头服务器的临时图形化管理会话中使用。真正的生产环境批量运维最终还是命令行方案更高效、更可控。6. 四种方式对比与实战经验6.1 横向对比一览这里我整理了一份四种方法的对比表方便大家参考选型工具类型输出风格核心优势局限性适用场景fdisk命令行分区表原始信息稳定、标准、信息全输出复杂略显冗长分区表细节核查、分区操作前确认lsblk命令行树形结构简洁清晰、适合脚本不验证文件系统快速了解整体布局、脚本提取信息hwinfo命令行硬件详情硬件信息最全面输出冗长、偏底层硬件故障排查、驱动确认图形工具GUI图形化显示直观、易上手依赖图形环境桌面环境、虚拟机管理6.2 按场景选择的最佳实践根据我这些年的实际操作经验不同场景下最优选择大致如下场景一新接手一台服务器想快速了解磁盘布局和分区挂载情况。首选lsblk -f。它同时显示设备关系、文件系统类型、UUID和挂载点一次就能把整台机器的存储基本盘摸清。如果需要进一步确认分区表类型再补一条fdisk -l查看详细分区信息。场景二解决磁盘空间告警问题。先用df -h定位是哪个挂载点紧张再用lsblk -f确认对应分区然后可以进一步通过du分析大文件。我遇到过因为日志文件膨胀把根分区撑满的案例当时排查链条就是df -h加lsblk快速确认再进入对应目录清理。这种方式比直接查看设备分区信息更高效因为定位问题的核心在挂载点而lsblk -f让挂载点和设备的对应关系一目了然。场景三准备新增硬盘并分区格式化。先在操作前用fdisk -l确认新磁盘的设备名通常是没有分区的/dev/sdb然后才能放心进入交互模式创建分区。分区之后一定用partprobe让内核重新读取分区表最后用lsblk -f验证新分区是否已经正确识别。场景四磁盘频繁I/O错误或者性能异常。首选hwinfo --disk查看硬件型号和驱动信息确认驱动是否正确加载再结合smartctl读取SMART状态。这两个工具配合能覆盖硬件故障排查的大部分需求。6.3 常见问题排查与注意事项速查我整理了一些实际操作中容易踩坑的点和解决方案问题排查思路fdisk -l 显示的分区和 lsblk 不一致很可能分区表修改后没刷新执行 partprobelsblk 看不到某个分区检查 /proc/partitions确认内核是否识别设备fdisk 显示磁盘有2TB限制告警确认分区表类型是MBR空间不足需转GPT分区显示 unknown filesystem type文件系统可能损坏优先备份后使用 fsck 检查图形工具识别到的分区数量与 fdisk 不同一般是因为图形工具默认隐藏了某些小分区可在显示选项中开启UUID 和 /etc/fstab 中的不一致重新使用 blkid 确认最新 UUID并同步更新 fstab6.4 一点关于安全的小提醒查看分区信息虽然是只读操作但如果你的排查动作走到了“重新探测分区表”、“挂载分区”、“使用fsck修复文件系统”这一步风险就会骤然上升。特别是fsck在没有完全卸载分区的情况下运行极有可能造成二次损坏。我的习惯是如果某个分区已经是挂载状态先卸载再检查无法卸载时用只读模式mount -o ro或者干脆在Live CD环境下操作。另外任何对分区表和文件系统结构的修改都应该先完成数据备份哪怕只是跑一条dd命令备份分区头部也能在关键时候救你一命。这类操作虽然是基础技能但恰恰是很多人容易忽略的步骤。我在日常运维中最顺手的组合拳是lsblk加fdisk前者负责把存储整体布局搞得明明白白后者用来确认分区表细节和动手前的最后确认。遇到硬件层面的问题再拉上hwinfo和smartctl深挖。图形工具则更多是运维之外辅助使用的角色适合快速扫一眼状态未必担纲主查手段。最后再分享一个小技巧如果你需要把分区信息发给同事排查通常保留lsblk -f的输出加上fdisk -l /dev/目标磁盘的输出就足够不用贴一整个hwinfo大段信息过多反而干扰判断。磁盘分区查看这个基本功看似简单真正融会贯通之后整个存储管理思路都会清晰很多。
分享:

看完干货,该让你的企业上线了

免费需求沟通 · 48 小时内出具建站方案 · 河南本地可上门