ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

Linux磁盘管理:从基础命令到高级监控全解析

Linux磁盘管理:从基础命令到高级监控全解析

1. Linux磁盘信息查看方法概述

在Linux系统管理中,磁盘信息查看是最基础也是最重要的运维技能之一。无论是排查存储空间不足问题,还是规划磁盘分区方案,亦或是监控磁盘I/O性能,掌握全面的磁盘信息查看方法都是系统管理员必备的能力。

我管理过的服务器中,90%的存储相关问题都可以通过正确的磁盘信息诊断工具快速定位。不同于图形化操作系统,Linux提供了丰富的命令行工具来获取不同维度的磁盘数据,每种工具都有其特定的适用场景和输出解读方式。

对于Linux新手来说,最常遇到的困惑是:为什么我的磁盘显示100%使用了,但通过du统计却找不到大文件?为什么df和lsblk显示的磁盘大小不一致?这些问题都需要我们对Linux磁盘管理机制有系统性的认识。

2. 基础磁盘容量查看工具

2.1 df命令详解

df(disk filesystem)是最常用的磁盘空间检查工具,其基本用法是:

df -h

这里的-h参数表示"human-readable",以GB、MB等易读单位显示。典型输出如下:

Filesystem Size Used Avail Use% Mounted on /dev/nvme0n1p2 196G 25G 162G 14% / tmpfs 3.9G 0 3.9G 0% /dev/shm

关键字段解析:

  • Filesystem:实际设备或虚拟文件系统名称
  • Use%:这个数值达到90%以上就需要引起警惕
  • Mounted on:挂载点路径,/表示根分区

经验提示:当Use%达到100%时,系统可能变得极不稳定。建议设置监控在85%时报警

高级用法组合:

df -hT --total # 显示文件系统类型并计算总量 df -i # 查看inode使用情况(小文件多的系统要特别关注)

2.2 du命令深度使用

du(disk usage)用于统计目录和文件的磁盘使用量,与df形成互补:

du -sh /var/log # 查看/var/log目录总大小 du -ah --max-depth=1 /home | sort -hr # 找出/home下占用最大的子目录

实用技巧:

  • 结合sort -hr对结果排序(h-human, r-reverse)
  • 使用--time显示文件修改时间
  • --exclude参数可以排除特定模式的文件

常见问题:du统计结果远小于df显示的已用空间?可能是被删除但仍被进程占用的文件,用lsof | grep deleted查找

3. 磁盘设备与分区信息

3.1 lsblk专业解读

lsblk以树状结构显示块设备信息,是分析磁盘分区布局的利器:

lsblk -o NAME,SIZE,FSTYPE,MOUNTPOINT,LABEL,UUID

输出示例:

NAME SIZE FSTYPE MOUNTPOINT LABEL UUID nvme0n1 256G ├─nvme0n1p1 512M vfat /boot/efi ESP 67E3-17ED └─nvme0n1p2 255G ext4 / rootfs d8939c8e-1234-5678

重要参数:

  • -d:只显示磁盘不显示分区
  • -p:显示完整设备路径(/dev/nvme0n1)
  • -b:以字节显示精确大小

3.2 fdisk与parted对比

查看分区表详细信息:

sudo fdisk -l # 传统MBR分区信息 sudo parted -l # 支持GPT分区的更现代工具

关键区别:

  • fdisk适用于MBR(最大2TB磁盘)
  • parted支持GPT大容量磁盘
  • 对于NVMe设备,设备名通常是/dev/nvme0n1而非传统的/dev/sda

4. 高级磁盘信息获取

4.1 smartctl检测磁盘健康

安装smartmontools后,可以获取SSD/HDD的S.M.A.R.T信息:

sudo smartctl -a /dev/nvme0n1 # 对NVMe磁盘 sudo smartctl -a /dev/sda # 对传统SATA磁盘

需要关注的健康指标:

  • Reallocated_Sector_Ct:重映射扇区数
  • Temperature_Celsius:运行温度
  • Power_On_Hours:通电时长
  • Media_Wearout_Indicator:SSD磨损度(百分比)

4.2 iostat实时监控IO

iostat -x 1 # 每1秒刷新一次扩展统计

关键指标解读:

  • %util:设备利用率(接近100%表示IO瓶颈)
  • await:平均IO等待时间(ms)
  • r/s w/s:读写IOPS

4.3 lshw查看硬件详情

获取完整的硬件拓扑信息:

sudo lshw -class disk -class storage

输出包含控制器类型、驱动型号、固件版本等深度信息,适合硬件故障排查。

5. 图形化工具替代方案

5.1 ncdu交互式分析

对于不喜欢命令行的用户,可以安装ncdu:

sudo apt install ncdu ncdu / # 扫描根目录

操作提示:

  • 方向键导航
  • d删除文件
  • n按文件名排序

5.2 GNOME Disk Utility

图形界面工具,提供:

  • 磁盘健康状态可视化
  • 基准测试功能
  • 分区表编辑(谨慎使用)

6. 企业级监控方案

6.1 Prometheus+Granfa监控

配置node_exporter的textfile收集器,添加自定义指标:

#!/bin/bash echo "node_disk_usage_percent $(df --output=pcent / | tail -1 | tr -d '%')" > /var/lib/node_exporter/disk_metrics.prom

6.2 日志轮转配置

防止日志占满磁盘:

sudo vim /etc/logrotate.conf

推荐设置:

/var/log/*.log { daily missingok rotate 7 compress delaycompress notifempty create 640 root adm }

7. 疑难问题排查指南

7.1 磁盘空间莫名消失

排查步骤:

  1. lsof +L1查看被删除但仍被占用的文件
  2. find / -xdev -type f -size +100M查找大文件
  3. 检查docker/var/lib目录:docker system df

7.2 修复文件系统错误

sudo umount /dev/sda1 sudo fsck -y /dev/sda1

7.3 LVM相关命令

vgs # 查看卷组 lvs # 查看逻辑卷 pvs # 查看物理卷 lvdisplay -m # 显示逻辑卷映射关系

8. 性能优化建议

  1. 使用noatime挂载选项减少元数据写入:

    # /etc/fstab示例 UUID=d8939c8e-1234-5678 / ext4 defaults,noatime 0 1
  2. 针对SSD优化调度器:

    echo kyber > /sys/block/nvme0n1/queue/scheduler
  3. 调整vm.swappiness降低交换倾向:

    sysctl vm.swappiness=10

掌握这些磁盘信息查看方法后,你将能从容应对以下典型场景:

  • 快速定位哪个目录占用了过多空间
  • 预判磁盘故障风险
  • 规划存储扩容方案
  • 优化系统IO性能
  • 排查服务异常与磁盘相关的故障

在实际生产环境中,我建议将这些命令封装成监控脚本,定期收集关键指标并设置告警阈值。对于重要的服务器,可以配置smartd守护进程实时监控磁盘健康状态。

返回列表