在CentOS系统中,对硬盘进行查询和管理是系统管理员的核心日常工作之一,无论是为了监控存储空间、排查磁盘故障,还是规划新的存储方案,掌握一系列高效、准确的硬盘查询命令都至关重要,本文将系统性地介绍在CentOS环境下查询硬盘信息的多种方法,从基础概览到深度检测,帮助您全面了解服务器的存储状态。
lsblk:以树形结构查看块设备
lsblk
(List Block Devices)是现代Linux系统中最为直观和常用的硬盘查询工具之一,它能够以清晰的树状图展示所有块设备(包括硬盘、分区、LVM逻辑卷等)及其相互关系。
执行 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
└─cl-root 253:0 0 238G 0 lvm /
sdb 8:16 0 1.8T 0 disk
└─sdb1 8:17 0 1.8T 0 part /data
这个输出包含了关键信息:
- NAME:设备名称。
- MAJ:MIN:主设备号和次设备号。
- RM:是否为可移动设备(1为是,0为否)。
- SIZE:设备容量。
- RO:是否为只读(1为是,0为否)。
- TYPE:设备类型(disk为磁盘,part为分区,lvm为逻辑卷)。
- MOUNTPOINT:挂载点。
使用 lsblk -f
可以额外显示文件系统类型和UUID,使用 lsblk -d
则可以只列出磁盘本身,不显示其下的分区。
fdisk:经典的磁盘分区与查询工具
fdisk
是一个功能强大的磁盘分区工具,同时也是一个优秀的磁盘信息查询器,通过 -l
参数,它可以列出系统中所有磁盘的分区表详细信息。
执行 sudo fdisk -l
,输出会包含每个磁盘的详细信息,
Disk /dev/sdb: 1.8 TiB, 2000398934016 bytes, 3907029168 sectors
...
Device Boot Start End Sectors Size Id Type
/dev/sdb1 2048 3907028991 3907026944 1.8T 83 Linux
fdisk
的输出对于了解磁盘的几何结构、分区方案(如MBR或GPT)、每个分区的起始和结束扇区等底层信息非常有用,是进行分区操作前必做的检查步骤。
smartctl:深入硬盘健康状态检测
当需要评估硬盘的物理健康状况时,smartctl
是不二之选,它是 smartmontools
软件包的一部分,通过读取S.M.A.R.T.(Self-Monitoring, Analysis and Reporting Technology)信息来预测硬盘故障。
确保已安装该工具:sudo yum install smartmontools
。
查询硬盘整体健康状态:sudo smartctl -H /dev/sda
如果返回 PASSED
,则表明硬盘根据S.M.A.R.T.标准当前状态良好。
获取硬盘的详细信息(型号、序列号、固件版本、总通电时间等):sudo smartctl -i /dev/sda
查看完整的S.M.A.R.T.属性列表:sudo smartctl -A /dev/sda
这些信息对于判断硬盘是否即将失效、进行硬件更换预警具有决定性意义。
df 与 du:文件系统空间使用情况分析
df
(Disk Free)和 du
(Disk Usage)命令关注的是文件系统层面的空间使用情况。
df -h
(-h
表示以人类可读的格式,如KB, MB, GB显示)可以快速查看所有已挂载文件系统的总容量、已用空间、可用空间及使用百分比。
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/cl-root 238G 45G 193G 19% /
/dev/sda1 512M 6.1M 506M 2% /boot/efi
/dev/sdb1 1.8T 150G 1.7T 8% /data
而 du
命令则用于递归地统计指定目录或文件所占用的磁盘空间,常用于定位占用空间过大的文件或目录,du -sh /var/log/*
。
为了方便对比和选择,下表小编总结了上述命令的核心用途:
命令 | 主要用途 | 常用选项 | 关键输出信息 |
---|---|---|---|
lsblk | 查看块设备结构 | -f , -d | 设备树、大小、挂载点、文件系统 |
fdisk | 查看分区表详情 | -l | 磁盘几何信息、分区方案、分区起止 |
smartctl | 检测物理硬盘健康 | -H , -i , -a | 健康状态、型号、S.M.A.R.T.属性 |
df | 查看文件系统空间 | -h , -T | 总容量、已用/可用空间、使用率 |
du | 统计目录/文件大小 | -sh , --max-depth | 具体路径下文件和子目录的占用空间 |
相关问答FAQs
问题1:如何查看新添加到服务器但尚未分区或格式化的硬盘?
解答: 新添加的硬盘在操作系统中通常会被识别,但因为没有分区表和挂载点,所以df
看不到它,最有效的命令是 lsblk
或 sudo fdisk -l
。lsblk
会显示一个新的磁盘设备(例如/dev/sdc
),但它下面没有任何分区或挂载点信息。fdisk -l
则会明确地列出这块磁盘,并提示“Disk /dev/sdc: … doesn’t contain a valid partition table”,这正是新硬盘的典型特征。
问题2:为什么有时df
和du
命令统计的已用空间不一致?
解答: 这是一个常见现象,主要由以下几个原因造成:
- 文件被删除但进程仍在使用:如果一个文件被删除(使用
rm
命令),但仍有运行的进程持有该文件的句柄,那么文件的数据不会被立即从磁盘上释放。du
命令是基于目录遍历统计的,它不会计算这个已删除的文件,而df
命令是基于文件系统超级块统计的,它仍然会将这部分空间算作“已用”。 - 文件系统保留空间:ext4等文件系统默认会为
root
用户保留一部分空间(通常是5%),以防止系统盘被普通用户文件填满导致系统崩溃。df
的总容量是包含了这部分保留空间的,而du
则不计算它。 - 挂载点覆盖:如果一个目录被用作挂载点(例如
/mnt
),那么在该挂载操作之前,/mnt
目录本身占用的空间会被du
统计,但挂载新设备后,df
显示的是新设备的空间,而旧目录的空间被“遮盖”了。
【版权声明】:本站所有内容均来自网络,若无意侵犯到您的权利,请及时与我们联系将尽快删除相关内容!
发表回复