news 2026/7/31 1:34:34

Linux文件系统全网精讲:设备识别、挂载卸载、磁盘排查一站式实战

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Linux文件系统全网精讲:设备识别、挂载卸载、磁盘排查一站式实战

Linux文件系统全网精讲:设备识别、挂载卸载、磁盘排查一站式实战

在Linux运维工作中,文件系统与磁盘管理是最基础、最高频的核心操作。磁盘爆满排查、U盘/光盘挂载、大文件定位、本地YUM仓库搭建,日常90%的存储类问题,都离不开文件系统基础能力。

本文从零梳理Linux文件系统完整知识体系,搭配真实可落地的实操命令、故障解决方案、经典运维案例,适合新手学习、老手复盘,可直接用于生产环境参考。

一、Linux存储核心:块设备与文件系统

1. 块设备基础认知

Linux所有存储设备(硬盘、U盘、光盘、虚拟机磁盘)均以块设备形式管理,所有设备文件统一存放于/dev目录,由系统自动创建生成。

核心使用规则:块设备必须先格式化(创建文件系统)、再挂载到系统目录,才能正常读写使用

生产环境中几乎不会直接使用整块磁盘,通常会划分多个分区。不同分区可配置不同文件系统、独立存储数据,实现空间隔离,避免单个分区占满导致整个系统故障。

2. 主流块设备命名规范(必记)

Linux严格按照设备接口类型命名,熟记命名规则可快速区分设备类型,排查故障事半功倍:

设备接口类型设备命名示例适用场景
SATA/SAS/USB/SCSI/dev/sda、/dev/sdb物理机械硬盘、普通SSD、U盘
virtio-blk/dev/vda、/dev/vdbKVM虚拟化虚拟机磁盘
NVMe SSD/dev/nvme0n1、nvme0n1p1高速固态硬盘,p后缀代表分区
SD/MMC/eMMC/dev/mmcblk0、mmcblk1内存卡、嵌入式设备存储

3. 分区命名规则

在磁盘设备名后追加数字,即为对应分区,规则统一:

  • 普通磁盘:/dev/sda1(第一块硬盘第一个分区)、/dev/vda2(虚拟机磁盘第二个分区)

  • NVMe磁盘:/dev/nvme0n1p1/dev/nvme0n1p2

二、文件系统核心原理

文件系统是操作系统管理磁盘数据的规则与数据结构,决定文件的存储、读取、写入、权限管理方式。

Linux 所有文件遵循唯一树形层级结构,以根目录/为顶层起点。

关键特性:裸磁盘/分区无文件系统无法直接使用,必须挂载到空目录(挂载点),融入系统目录树后才可读写

日常运维核心使用场景:

  • 磁盘空间占用排查、爆满故障处理

  • 超大文件定位、磁盘空间清理

  • 外接设备(U盘/光盘)挂载适配

  • 磁盘故障风险排查、数据分区管理

三、磁盘与文件系统查看核心命令

1. lsblk:树形查看整块设备架构

最常用的存储架构排查命令,可树形展示磁盘、分区、LVM逻辑卷的层级、大小、挂载状态,一目了然。

[root@server ~18:25:32]# lsblkNAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda8:00200G0disk ├─sda18:101G0part /boot └─sda28:20199G0part ├─centos-root253:0050G0lvm / ├─centos-swap253:103.9G0lvm[SWAP]└─centos-home253:20145.1G0lvm /home sr011:014.4G0rom
核心字段解析
  • NAME:块设备名称

  • MAJ:MIN:设备唯一主次编号,系统识别标识

  • RM:是否为可移动设备(1=是,0=否)

  • SIZE:设备总容量

  • RO:是否为只读设备(1=只读,0=可读写)

  • TYPE:设备类型(disk=整块磁盘、part=分区、lvm=逻辑卷、rom=光驱)

  • MOUNTPOINT:挂载路径,无内容代表未挂载

2. df:查看文件系统空间使用率

聚焦已挂载文件系统,统计总容量、已用、可用空间、占用百分比,适合排查磁盘爆满问题。

高频参数
  • df:默认1KB单位展示原始数据

  • df -h:人性化单位(MB/GB),1024进制,可读性最强

  • df -H:1000进制,适配厂商硬盘标称容量

  • df -T:额外显示文件系统类型(xfs/ext4/iso9660)

  • df -i:查看 inode 使用量(磁盘空间充足但无法新建文件优先排查 inode 满)

示例:单独查看boot分区状态df -hT /boot

[root@server ~18:39:16]# df -hT /boot文件系统 类型 容量 已用 可用 已用% 挂载点 /dev/sda1 xfs 1014M 174M 841M18% /boot

3. du:精准统计文件/目录磁盘占用

df看整体,du看细节!专门统计单个文件、目录的真实磁盘占用,是清理大文件的核心命令。

高频参数
  • du:递归展示所有子目录占用明细

  • du -s:只展示汇总总大小,屏蔽明细

  • du -h:人性化单位展示

  • du -sk 路径 | sort -rn:按容量从大到小排序,磁盘排查万能组合

4. 实战演练:逐层定位4G超大文件

模拟生产环境磁盘爆满场景,从根目录逐层排查,精准定位异常大文件。

步骤1:生成4G测试空文件
[root@server ~18:44:39]# dd if=/dev/zero of=/usr/share/doc/dhclient-4.2.5/bigfile-4G bs=1M count=4096记录了4096+0 的读入 记录了4096+0 的写出4294967296字节(4.3GB)已复制,12.0437 秒,357 MB/秒

命令释义:从空设备/dev/zero读取空数据,每次写入1M,共4096次,生成真实占用4GB的测试文件。

步骤2:逐层目录排查大文件
# 查看根目录一级目录占用,反向排序,同时过滤错文件,只显示前5行[root@server ~18:51:33]# du -sk /* 2>/dev/null | sort -rn | head -n 5# 逐层深入定位[root@server ~18:52:24]# du -sk /usr/* 2>/dev/null | sort -rn | head -n 55622080/usr/share1213888/usr/lib64868848/usr/lib145644/usr/bin66684/usr/sbin[root@server ~18:52:52]# du -sk /usr/share/* 2>/dev/null | sort -rn | head -n 54280320/usr/share/doc442224/usr/share/locale213252/usr/share/help122840/usr/share/fonts83908/usr/share/icons[root@server ~18:53:22]# du -sk /usr/share/doc/* 2>/dev/null | sort -rn | head -n 54194316/usr/share/doc/dhclient-4.2.51216/usr/share/doc/postfix-2.10.11192/usr/share/doc/python-kitchen-1.1.11060/usr/share/doc/pam-1.1.8968/usr/share/doc/opus-1.0.2# 精准锁定目标文件[root@server ~18:53:48]# du -sk /usr/share/doc/dhclient-4.2.5/* 2>/dev/null | sort -rn | head -n 54194304/usr/share/doc/dhclient-4.2.5/bigfile-4G4/usr/share/doc/dhclient-4.2.5/README.dhclient.d4/usr/share/doc/dhclient-4.2.5/dhclient.conf.example4/usr/share/doc/dhclient-4.2.5/dhclient6.conf.example
步骤3:快速检索大文件(高效方案)
[root@server ~18:57:48]# find / -size +1024M 2>/dev/null-r--------.1root root14073748626636873018:58 /proc/kcore -rw-r--r--.1root root424477158172210:46 /root/CentOS-7-x86_64-DVD-2207-02.iso -rw-r--r--.1root root429496729673018:45 /usr/share/doc/dhclient-4.2.5/bigfile-4G

全局检索大于1024M的文件,过滤权限报错,快速定位异常文件。

四、文件系统挂载与卸载(生产必备)

1. 核心流程及用法

裸磁盘/分区格式化 → 挂载至空目录 → 正常读写使用 → 用完卸载,断开关联。

基础语法:

mount[-t 文件系统][-o 选项]设备源 挂载点
  • -tvfstype,指明文件系统类型
  • -ooptions,指明挂载选项
  • 设备源:/dev/sdb1、UUID、LABEL、NFS 地址
  • 挂载点:必须是已存在空目录
  • 卸载:umount 挂载点 / umount /dev/sdb1

2. 完整挂载实操(新增磁盘)

# 1. 查看新增磁盘[root@server ~19:07:12]# lsblk /dev/sdbNAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sdb8:160100G0disk# 2. 格式化xfs文件系统(CentOS7+默认)[root@server ~19:07:23]# mkfs.xfs /dev/sdbmeta-data=/dev/sdbisize=512agcount=4,agsize=6553600blks=sectsz=512attr=2,projid32bit=1=crc=1finobt=0,sparse=0data=bsize=4096blocks=26214400,imaxpct=25=sunit=0swidth=0blks naming=version2bsize=4096ascii-ci=0ftype=1log=internal logbsize=4096blocks=12800,version=2=sectsz=512sunit=0blks, lazy-count=1realtime=noneextsz=4096blocks=0,rtextents=0# 3. 创建挂载点并挂载[root@server ~19:08:15]# mkdir /data# 设备名挂载[root@server ~19:09:28]# mount /dev/sdb /data/# UUID挂载(生产推荐,稳定性更高)# blkid可以查询uuid和文件系统[root@server ~19:09:43]# blkid /dev/sdb/dev/sdb:UUID="017832e7-eec3-4b14-b110-2d6cef44ebdf"TYPE="xfs"[root@server ~19:11:07]# mount UUID="017832e7-eec3-4b14-b110-2d6cef44ebdf" /data# 4. 验证挂载成功[root@server ~19:12:11]# df -h /dev/sdb文件系统 容量 已用 可用 已用% 挂载点 /dev/sdb 100G 33M 100G1% /data# 括号中属性,是文件系统当前支持的功能。[root@server ~19:15:19]# mount | grep ^/dev/dev/mapper/centos-root on /typexfs(rw,relatime,seclabel,attr2,inode64,noquota)/dev/mapper/centos-home on /hometypexfs(rw,relatime,seclabel,attr2,inode64,noquota)/dev/sda1 on /boottypexfs(rw,relatime,seclabel,attr2,inode64,noquota)/dev/sdb on /datatypexfs(rw,relatime,seclabel,attr2,inode64,noquota)

3. 卸载文件系统

# 两种卸载方式等效[root@server ~19:15:41]# umount /data # 或用 umount /dev/sdb[root@server ~19:16:12]# lsblk /dev/sdbNAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sdb8:160100G0disk

4. 故障解决:设备忙碌无法卸载

报错target is busy:当前终端或进程正在占用挂载目录。

# 创建卸载失败环境[root@server ~19:19:27]# mount /dev/sdb /data[root@server ~19:20:38]# cd /data/[root@server data19:20:51]#[root@server data19:20:51]# umount /dataumount: /data:目标忙。(有些情况下通过 lsof(8)或 fuser(1)可以 找到有关使用该设备的进程的有用信息)# 查看占用进程[root@server data19:21:25]# lsof /dataCOMMAND PIDUSERFD TYPE DEVICE SIZE/OFF NODE NAMEbash1904root cwd DIR8,16664/datalsof2636root cwd DIR8,16664/datalsof2637root cwd DIR8,16664/data[root@server data19:22:42]# fuser -m /data//data: 1904c# 退出目录后重新卸载root@server data19:28:55]# cd ~# 可以正常卸载[root@server ~19:29:42]# df -h /data/文件系统 容量 已用 可用 已用% 挂载点 /dev/mapper/centos-root 50G 13G 38G26% /

5. lsof和fuser命令常用选项

基础用法和区别

工具全称核心定位安装说明
lsoflist open files列出已打开的文件全能工具:文件、目录、套接字、管道、端口都能查最小化 CentOS/Debian 默认不带,yum install lsof/apt install lsof
fuserfile user查找使用某个文件 / 挂载点的进程轻量化,专注反向查询:资源→进程属于psmisc软件包,yum install psmisc

llsof语法:

lsof[选项][目标]

常用选项

选项作用示例
-i查询网络套接字(端口)lsof -i
-i :端口查看占用指定端口的进程lsof -i :22
-i TCP/UDP:端口指定协议端口lsof -i TCP:80
-p PID根据进程号,列出该进程打开所有文件lsof -p 1234
-u 用户名查询某用户所有进程打开文件lsof -u nginx
文件/目录查询谁正在打开这个文件lsof /var/log/messages
+D 目录递归目录,查找目录下所有被打开文件lsof +D /mnt
-d 描述符按文件描述符筛选,如-d 22lsof -d deleted
-d deleted⭐运维重点:查询已经 rm 删除,但句柄未释放的文件(磁盘空间不释放经典场景)lsof -d deleted
-n不解析主机名,加速查询lsof -ni :3306
-P端口不解析服务名,直接显示数字端口lsof -nPi

fuser语法

fuser[选项]文件/挂载点/端口
选项功能示例
-m挂载点模式(最常用)后跟挂载目录,查找占用该文件系统所有进程fuser -m /mnt
-n tcp/udp 端口查询占用端口进程fuser -n tcp 80
-vverbose 详细输出进程、用户、命令fuser -vm /
-k直接杀死占用资源的进程(慎用!高危)fuser -k -m /mnt
-i交互式杀死,需要确认,配合-kfuser -ki -m /mnt
-4 / -6仅 ipv4 /ipv6 协议fuser -4 -n tcp 22

五、特殊设备挂载实战(U盘+本地YUM仓库)

1. NTFS格式U盘挂载

CentOS默认不兼容NTFS格式,需安装第三方驱动:

# 安装依赖包[root@server ~19:34:29]# yum install -y ntfs-3g# 指定使用 ntfs 内核驱动 进行挂载[root@server ~19:54:20]# mount.ntfs /dev/sdc1 /mnt# 查看是否挂载成功[root@server ~19:54:49]# ls -l /mnt总用量0drwxrwxrwx.1root root010102025$RECYCLE.BIN drwxrwxrwx.1root root010102025System Volume Information

2. exFAT格式U盘挂载

系统无默认驱动,需编译安装依赖:

# 安装依赖包[root@server ~22:46:33]# yum install -y gcc fuse-devel make pkg-config# 下载源码包[root@server ~22:47:45]# wget https://www.laoma.cloud/class/course-materials/softwares/stage01/fuse-exfat-1.2.0.tar.gz# 解压软件包,并进入软件包目录[root@server ~22:49:01]# tar -xf fuse-exfat-1.2.0.tar.gz[root@server ~22:50:03]# cd fuse-exfat-1.2.0/# 配置文件,且编译安装[root@server fuse-exfat-1.2.022:51:00]# ./configure[root@server fuse-exfat-1.2.022:51:46]# make && make install# 挂载exFAT格式的U盘(假设U盘设备为/dev/sdc1)[root@server fuse-exfat-1.2.022:52:08]# mount.exfat /dev/sdc1 /mnt

3. 光盘ISO搭建局域网本地YUM仓库

适用场景:服务器无外网、内网批量部署环境,提升安装速度。

服务端配置(发布仓库)
# 安装并配置nginx,开启目录浏览[root@server ~22:53:55]# yum install -y nginx[root@server ~22:56:01]# vim /etc/nginx/nginx.conf# 在http { 下面一行添加autoindex on;# 开机自启,同时启动程序[root@server ~22:58:20]# systemctl enable nginx --now# 挂载光盘至网站目录[root@server ~22:58:59]# mkdir /usr/share/nginx/html/dvd[root@server ~23:00:14]# mount /dev/sr0 /usr/share/nginx/html/dvd# 关闭防火墙[root@server ~23:00:40]# systemctl disable firewalld.service --now
客户端配置(使用本地仓库)
# 迁移默认外网仓库[root@client ~22:46:38]# mkdir /etc/yum.repos.d/old[root@client ~23:01:26]# mv /etc/yum.repos.d/*.repo /etc/yum.repos.d/old# 新建本地DVD仓库[root@client ~23:01:45]# vim /etc/yum.repos.d/dvd.repo[dvd]name=dvd fromlocalserverbaseurl=http://10.1.8.10/dvdgpgcheck=0# 清理缓存、测试安装[root@client ~23:02:27]# yum clean all && yum makecache# 查看仓库,同时测试安装软件[root@client ~23:03:33]# yum groupinstall[root@client ~23:05:31]# yum groupinstall -y 'Server with GUI'

注意:该内网仓库链接需保证服务端10.1.8.10地址正常、Nginx服务开启,否则会出现解析失败。

六、文件查找两大神器:locate vs find

1. locate:数据库快速检索

基于系统预生成数据库查找,速度极快,需手动更新数据库同步新文件。

常用选项用法:

选项全称作用说明
-b--basename仅匹配文件名(基名),忽略路径部分例:搜索test,只会匹配/data/test,不会匹配/data/test.txt之外路径包含 test 的目录
-i--ignore-case忽略大小写匹配(大小写不敏感)
-c--count不输出文件路径,只输出匹配到的总数量
-r--regexp使用正则表达式作为匹配条件(默认是通配符 glob 模式)
# 新安装软件,必须同时更新文件数据库,不然新安装的软件文件无法搜索[root@server ~23:13:54]# locate hpped.conf# 搜索未找到数据[root@server ~23:14:25]# locate httpd.conf# 更新文件数据库[root@server ~23:14:38]# updatedb[root@server ~23:15:30]# locate httpd.conf/etc/httpd/conf/httpd.conf /usr/lib/tmpfiles.d/httpd.conf

2. find:实时精准遍历查找(功能最全)

实时遍历磁盘,支持多条件组合匹配,是生产环境首选查找命令。

常用选项和用法:

选项含义示例
-name "字符串"按文件名匹配,区分大小写,支持通配符* ?find /etc -name "*.conf"
-iname "字符串"按文件名,忽略大小写find /tmp -iname "test*.log"
-type指定文件类型f 普通文件;d 目录;l 软链接;b 块设备;c 字符设备;p 管道;s 套接字find / -type f
-size按文件大小筛选单位:k (KB)、M (MB)、G (GB)+n大于 n;-n小于 n;直接 n = 等于find /data -size +100M
-user 用户名匹配文件属主find /home -user tom
-group 组名匹配文件所属组find /opt -group nginx
-uid / -gid使用 UID/GID 数字匹配(适合用户已删除)find /tmp -uid 1000
-perm按权限匹配find /usr/bin -perm 755
-mtime修改时间(文件内容变更),单位:+77 天前;-77 天内find /var/log -mtime +30
-atime访问时间(读取文件)find /tmp -atime -2
-ctime属性变更时间(权限、属主修改)find /etc -ctime -1
-mmin修改时间,单位:分钟find /tmp -mmin -10
-amin / -cmin访问分钟、属性变更分钟同上逻辑
-maxdepth N限制搜索层级,避免递归过深find /etc -maxdepth 1 -name "*.conf"
-mindepth N从第 N 层目录开始搜索find /data -mindepth 2 -type f
-not / !取反条件(不匹配)find /tmp -type f -not -name "*.txt"
-o条件;默认多个条件是find /tmp -name "*.log" -o -name "*.txt"
# 按文件名,加-i,忽略大小写find/etc/-namepasswdfind/etc-inamepasswd# 从根目录开始递归查找,所有大小大于100MB的文件(包含目录、普通文件等所有类型)find/-size+100M# 当前目录递归查找,只筛选【普通文件】,排除目录、链接、设备文件find.-typef# 全盘搜索,查找拥有SUID权限(4000)的文件find/-perm-4000# 全盘搜索,匹配【不小于200M】的文件;把错误信息(权限不足等)重定向到空设备屏蔽输出find/!-size-200M2>/dev/null# 全盘查找名称为PASSWD的文件,找到后直接删除(区分大小写!高危命令find/-namePASSWD-delete# 在/etc目录下查找文件名为passwd,找到后执行 ls -l 列出文件详情find/etc-namepasswd-execls-l{}\;

七、核心知识点总结

  1. Linux存储层级:物理磁盘 → 分区 → 文件系统 → 挂载点,LVM逻辑卷可实现灵活扩容。

  2. df查整体使用率,du查具体文件占用,二者组合是磁盘运维核心手段。

  3. 所有外接设备必须格式化+挂载才可使用,卸载前需确保无进程占用。

  4. Linux遵循KISS原则,单命令功能单一,多命令管道组合可完成复杂运维场景。

  5. 特殊格式U盘(NTFS/exFAT)需安装第三方驱动,系统原生支持xfs、ext4等文件系统。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/31 1:31:57

5分钟掌握Python网站离线下载:永久保存任何网站内容的终极指南

5分钟掌握Python网站离线下载:永久保存任何网站内容的终极指南 【免费下载链接】WebSite-Downloader A website downloader written with Python 项目地址: https://gitcode.com/gh_mirrors/web/WebSite-Downloader 你是否曾经遇到过精心收藏的在线教程突然消…

作者头像 李华
网站建设 2026/7/31 1:29:42

BBWEYY 电商商家低成本获客转化解决方案:平台商家如何通过 BBWEYY 提升站外流量转化率,含零代码SAAS、AI编程、源码定制交付

平台商家如何通过 BBWEYY 提升站外流量转化率 摘要 在平台电商经营持续承压的背景下,电商商家普遍面临投流成本高、平台抽成高以及行业准入规则收紧等多重挑战。本文采用说明文风格,对这些问题进行拆解,并结合 BBWEYY 提供的 GEO 获客服务与…

作者头像 李华
网站建设 2026/7/31 1:25:20

C++中实现字符串switch的多种方案:从map到编译期哈希

1. 项目概述:从一次编译错误引发的深度探索那天下午,我正在为一个网络协议解析器编写状态机。逻辑很清晰:根据接收到的报文命令字符串,跳转到不同的处理函数。我下意识地敲下了switch(cmdStr),紧接着手指习惯性地输入c…

作者头像 李华
网站建设 2026/7/31 1:18:13

HEIF Utility:Windows上处理iPhone照片的终极解决方案

HEIF Utility:Windows上处理iPhone照片的终极解决方案 【免费下载链接】HEIF-Utility HEIF Utility - View/Convert Apple HEIF images on Windows. 项目地址: https://gitcode.com/gh_mirrors/he/HEIF-Utility 在Windows电脑上打开iPhone拍摄的HEIC照片时&a…

作者头像 李华
网站建设 2026/7/31 1:16:38

计算机单片机毕设实战-基于 STM32 的自动手动双模式环境调控系统设计 基于 STM32 的阈值可调型环境监测与设备驱动装置(012801)

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于嵌入式单片机,Java、小程序技术领域和毕业项目实战 ✌️…

作者头像 李华