三亩地 三亩地SAN MU DI · CODE DIARY
ARTICLE DETAIL

日记详情

真实记录编程学习的某一天,欢迎挑你感兴趣的翻一翻。

Linux磁盘管理:从基础命令到高级监控技巧

Linux磁盘管理:从基础命令到高级监控技巧

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

在Linux系统管理中,磁盘信息查看是最基础也是最重要的操作之一。无论是系统管理员还是普通开发者,都需要经常检查磁盘使用情况、分区信息以及文件系统状态。掌握这些基础命令不仅能帮助我们快速定位存储问题,还能有效预防磁盘空间不足导致的系统故障。

我管理Linux服务器十多年来,见过太多因为忽视磁盘监控而导致的严重事故——从简单的服务崩溃到关键数据丢失。实际上,这些悲剧完全可以通过几个简单的命令避免。本文将详细介绍Linux下查看磁盘信息的各种方法,包括基础命令、高级用法以及实际工作中的经验技巧。

2. 基础磁盘信息查看命令

2.1 df命令:文件系统磁盘空间使用情况

df(disk filesystem)是最常用的磁盘空间查看命令。基本用法很简单:

df -h

这里的-h参数表示以人类可读的格式显示(自动转换为KB、MB、GB等单位)。在我的日常工作中,这个命令使用频率极高,几乎每天都要运行几次。

输出示例:

Filesystem Size Used Avail Use% Mounted on /dev/sda1 20G 5.2G 14G 28% / tmpfs 1.9G 0 1.9G 0% /dev/shm

经验之谈:总是使用-h参数,原始字节数对人工判断很不友好。另外,df -Th可以同时显示文件系统类型,这在排查挂载问题时特别有用。

2.2 du命令:目录/文件磁盘使用情况

当发现磁盘空间不足时,du(disk usage)命令可以帮助我们找出占用空间最大的目录:

du -sh /*

这个命令会显示根目录下所有一级目录的大小。-s表示汇总,-h同样是人类可读格式。

更详细的用法:

du -h --max-depth=1 /var/log | sort -h

这个组合可以找出/var/log下占用空间最大的子目录,并按大小排序。我在清理老旧日志时经常使用这个技巧。

2.3 lsblk命令:块设备信息

lsblk可以列出所有块设备(磁盘、分区等)的树状结构:

lsblk -o NAME,SIZE,FSTYPE,MOUNTPOINT

输出示例:

NAME SIZE FSTYPE MOUNTPOINT sda 20G ├─sda1 10G ext4 / └─sda2 10G swap

注意:lsblk显示的是物理设备信息,而df显示的是已挂载文件系统的使用情况,两者视角不同但互补。

3. 高级磁盘信息查看方法

3.1 fdisk:分区表查看与操作

fdisk是一个功能强大的分区工具,查看分区信息:

sudo fdisk -l

这个命令需要root权限,会显示详细的磁盘分区表信息,包括起始扇区、分区大小、分区类型等。

安全提示:fdisk不仅可以查看还可以修改分区表,操作不当可能导致数据丢失。在生产环境中使用要格外小心。

3.2 smartctl:磁盘健康状态监测

对于关心磁盘硬件健康的用户,smartctl工具可以检查磁盘的SMART状态:

sudo smartctl -a /dev/sda

这个命令会输出磁盘的详细健康信息,包括温度、坏扇区计数、通电时间等。我在服务器维护中会定期检查这些指标,提前发现可能故障的磁盘。

3.3 iostat:磁盘I/O性能监控

要了解磁盘的实时I/O性能,可以使用iostat

iostat -dx 2

这个命令每2秒刷新一次磁盘I/O统计信息,包括读写速度、IOPS、等待时间等。在排查系统卡顿问题时非常有用。

4. 图形化工具介绍

虽然命令行是Linux的强项,但图形界面工具也有其优势:

4.1 GNOME Disk Utility

大多数Linux桌面环境都提供了图形化的磁盘工具。在GNOME中,可以搜索"Disks"应用,它提供了直观的磁盘信息展示和管理功能。

4.2 ncdu:终端下的可视化磁盘分析

对于喜欢命令行的用户,ncdu是一个基于ncurses的磁盘使用分析工具:

ncdu /

它会扫描指定目录并以交互式界面显示磁盘使用情况,支持导航和删除操作。

5. 实际应用场景与技巧

5.1 找出大文件

组合使用finddu可以快速定位大文件:

find / -type f -size +100M -exec du -h {} + | sort -rh | head -n 20

这个命令会找出系统中大于100MB的文件并按大小排序显示前20个。

5.2 监控磁盘空间变化

使用watch命令可以实时监控磁盘空间变化:

watch -n 60 'df -h'

这会让df -h命令每分钟自动运行一次,方便观察磁盘使用情况的变化趋势。

5.3 自动清理旧日志

对于经常被日志填满的/var分区,可以设置定期清理:

find /var/log -type f -mtime +30 -delete

这个命令会删除30天前的日志文件。建议通过cron设置为每周自动运行。

6. 常见问题排查

6.1 df显示磁盘已满但找不到大文件

这种情况通常是因为已删除的文件仍被进程占用。解决方法:

lsof | grep deleted

找到相关进程后重启即可释放空间。

6.2 磁盘I/O性能突然下降

首先用iostat确认问题,然后用iotop找出高I/O进程:

sudo iotop -o

6.3 外置磁盘无法识别

检查内核日志获取详细信息:

dmesg | tail -20

通常能在这里找到设备识别失败的原因。

7. 脚本自动化示例

对于需要定期检查的服务器,可以编写简单的监控脚本:

#!/bin/bash # 磁盘空间阈值(百分比) THRESHOLD=90 # 检查所有挂载点 df -h | awk '0+$5 >= '$THRESHOLD' {print}' # 检查inode使用情况 df -i | awk '0+$5 >= '$THRESHOLD' {print}'

保存为check_disk.sh并设置为cron任务,可以在磁盘空间不足时及时报警。

8. 进阶工具与技巧

8.1 LVM信息查看

如果系统使用了LVM(逻辑卷管理),需要专门的命令查看:

pvdisplay # 物理卷信息 vgdisplay # 卷组信息 lvdisplay # 逻辑卷信息

8.2 ZFS/Btrfs文件系统

对于这些先进的文件系统,需要使用专用命令:

# ZFS zpool list zfs list # Btrfs btrfs filesystem show btrfs filesystem usage /

8.3 网络存储监控

对于NFS等网络存储,除了常规命令外,还需要注意网络因素:

mount | grep nfs # 查看挂载的NFS nfsstat -c # NFS客户端统计

掌握这些Linux磁盘信息查看方法,你就能游刃有余地管理各种存储相关问题。在实际工作中,我建议将这些命令组合成适合自己工作流的快捷方式或脚本,可以大大提高效率。

← 返回列表