使用 lsblk 命令:最直观的方式
lsblk(List Block Devices)是现代 Linux 系统中查看块设备信息的首选工具,它以树状结构清晰展示磁盘及其分区的关系,输出简洁明了,非常适合快速概览。

直接在终端输入 lsblk 即可:
$ lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda 8:0 0 238.5G 0 disk ├─sda1 8:1 0 512M 0 part /boot/efi └─sda2 8:2 0 238G 0 part / sdb 8:16 0 1.8T 0 disk ├─sdb1 8:17 0 1.8T 0 part /data └─sdb2 8:18 0 512M 0 part sr0 11:0 1 1024M 0 rom
从输出中,我们可以直接读取到以下关键信息:
- NAME:设备名称,如
sda、sdb。sda通常代表第一块 SCSI/SATA 磁盘,sdb是第二块,以此类推。 - MAJ:MIN:主设备号和次设备号,用于内核识别设备。
- RM:是否为可移动设备(1表示是,0表示否)。
- SIZE:设备的容量。
- RO:是否为只读(1表示是,0表示否)。
- TYPE:设备类型,
disk表示整个磁盘,part表示分区。 - MOUNTPOINT:挂载点,即该分区在文件系统中的位置。
lsblk 还有一些非常实用的选项:
lsblk -f:显示文件系统类型(如 ext4, xfs)、UUID 和挂载点。lsblk -d:仅列出磁盘本身,不显示其下的分区。
使用 fdisk 和 parted:分区信息的细节
当需要更详细的分区表信息时,fdisk 和 parted 是传统的强大工具。
fdisk -lfdisk 是一个经典的磁盘分区工具,使用 -l 参数可以列出指定磁盘的分区表,通常需要 root 权限。
$ sudo fdisk -l /dev/sda Disk /dev/sda: 238.5 GiB, 256060514304 bytes, 500118192 sectors ... Device Boot Start End Sectors Size Id Type /dev/sda1 * 2048 1048575 1048528 512M 7 HPFS/NTFS/exFAT /dev/sda2 1048576 500117503 499068928 238.1G 83 Linux
fdisk 的输出非常详细,包含了磁盘的几何信息、每个分区的起始和结束扇区、分区ID等,它对于 MBR(主引导记录)分区表的支持非常完善。
parted -l
对于使用 GPT(GUID 分区表)格式的大容量磁盘(超过2TB),parted 是更现代、更推荐的选择,它同样可以列出磁盘分区信息。

$ sudo parted -l Model: ATA VENDOR SSD (scsi) Disk /dev/sda: 256GB Sector size (logical/physical): 512B/512B Partition Table: gpt Disk Flags: Number Start End Size File system Name Flags 1 1049kB 538MB 537MB fat32 boot, esp 2 538MB 256GB 255GB ext4 Model: ATA ST2000DM008-2FR1 (scsi) Disk /dev/sdb: 2000GB ...
parted 的输出清晰地显示了分区表类型(gpt 或 msdos),并且对大容量磁盘的支持更好。
使用 df 命令:查看已挂载的文件系统空间
需要注意的是,df(Disk Free)命令查看的是已挂载文件系统的磁盘空间使用情况,而不是物理磁盘的原始信息,它回答的是“我的文件系统还剩多少空间?”这个问题。
使用 -h(human-readable)选项可以以易读的格式(如 KB, MB, GB)显示。
$ df -h Filesystem Size Used Avail Use% Mounted on /dev/sda2 238G 150G 88G 64% / /dev/sda1 512M 7.8M 504M 2% /boot/efi /dev/sdb1 1.8T 1.2T 600G 67% /data
df 的结果与 lsblk 的 MOUNTPOINT 列相关联,但提供了更详细的空间使用数据。
高级用法:磁盘健康检测 (smartctl)
除了查看基本信息,监控磁盘的物理健康状况也至关重要。smartctl 是来自 smartmontools 软件包的工具,可以读取和分析硬盘的 S.M.A.R.T.(Self-Monitoring, Analysis and Reporting Technology)信息。
可能需要安装该工具:sudo yum install smartmontools
可以使用 -a(all)参数查看某块磁盘(如 /dev/sda)的全面健康信息:sudo smartctl -a /dev/sda

输出会包含大量技术数据,如通电时间、错误计数、温度等,是判断磁盘是否即将故障的重要依据。
命令对比小编总结
为了更好地选择合适的工具,下表对上述命令进行了小编总结:
| 命令 | 主要用途 | 主要特点/优势 | 是否需要root权限 |
|---|---|---|---|
lsblk |
快速查看磁盘和分区的层次关系 | 输出直观,树状结构,信息简洁 | 否 |
fdisk -l |
查看详细的分区表信息 | 经典工具,信息详尽,擅长MBR分区 | 是 |
parted -l |
查看分区表信息,特别是GPT磁盘 | 现代工具,支持大容量磁盘和GPT | 是 |
df -h |
查看已挂载文件系统的空间使用情况 | 关注文件系统层面,而非物理磁盘 | 否 |
smartctl |
检测和分析磁盘的物理健康状态 | 专业工具,可预测磁盘故障 | 是 |
相关问答 (FAQs)
问题1:为什么 df -h 显示的总大小和 lsblk 或 fdisk 看到的磁盘大小不完全一致?
解答: 这是一个非常常见的现象,主要原因有以下几点:
- 文件系统开销:文件系统本身需要占用一部分空间来存储元数据,如 inode、日志、超级块等,这部分空间用户无法直接使用。
- 保留空间:Linux 系统默认会为
root用户保留 5% 的磁盘空间(对 ext2/ext3/ext4 文件系统而言),这是为了防止系统因普通用户占满所有空间而无法登录或进行关键操作。df显示的Avail是普通用户可用的空间,而Used则包含了这部分保留空间。 - 计算单位差异:操作系统和硬盘制造商对容量单位的定义不同,操作系统通常使用 1GB = 102410241024 字节,而硬盘制造商则使用 1GB = 1,000,000,000 字节,这会导致显示上的差异。
问题2:我看到磁盘列表里有 sda, sdb, sdc,我如何确定哪个是系统盘,哪个是新加的磁盘?
解答: 可以通过多种方法进行区分:
- 查看挂载点:使用
lsblk或df -h命令,挂载点为 (根目录)的分区所在的磁盘就是系统盘。/boot或/boot/efi也位于系统盘上。 - 查看分区信息:系统盘通常会有多个分区,包括一个用于启动的分区(如 EFI System Partition)和一个根分区,而新加的磁盘可能没有分区,或者只有一个大的数据分区。
- 使用
smartctl查看型号:新磁盘和旧磁盘的型号、序列号通常不同,可以使用sudo smartctl -i /dev/sdX(X 为 a, b, c)来查看每块磁盘的详细信息,包括型号、序列号、固件版本等,从而根据物理信息进行匹配。 - 查看系统日志:在
/var/log/messages或dmesg的输出中,通常可以找到系统启动时识别磁盘以及新磁盘插入时的日志记录,这也能提供线索。
【版权声明】:本站所有内容均来自网络,若无意侵犯到您的权利,请及时与我们联系将尽快删除相关内容!