Linux 文件系统进阶与磁盘分区 Linux 文件系统进阶与磁盘分区本文主要讲解 linux 的文件查找工具、磁盘分区工具、磁盘挂载等内容补充底层原理、横向对比、生产场景、易错排错不仅讲解命令怎么敲更讲解原理是什么、什么时候用、踩坑怎么排标注真实工作中的使用频率与重点难点。文章目录Linux 文件系统进阶与磁盘分区第一章 Linux 文件系统进阶1.1 特殊格式磁盘挂载1.1.1 NTFS 格式 U 盘挂载1.1.2 exFAT 格式 U 盘挂载1.2 实战案例基于 ISO 镜像构建本地 YUM 仓库应用场景实现思路操作步骤服务端配置客户端配置1.3 文件查找工具详解1.3.1 locate vs find 全面对比1.3.2 locate 常用操作1.3.3 find 常用操作常用匹配条件常用执行动作1.3.4 实战查找系统大文件1.4 文件系统持久化挂载1.4.1 为什么需要持久化1.4.2 /etc/fstab 六字段详解1.4.3 配置步骤1.4.4 取消持久化1.5 磁盘空间不足三大经典场景场景 1大文件占用空间场景 2删除文件后空间没有释放场景 3大量小文件耗尽 inode第二章 Linux 硬盘分区管理2.1 分区基础认知2.1.1 为什么要分区2.1.2 分区的本质2.2 两大分区方案MBR vs GPT 深度对比2.2.1 全面对比表2.2.2 MBR 结构详解主分区、扩展分区、逻辑分区2.2.3 GPT 结构详解2.3 分区工具对比与操作2.3.1 工具定位对比2.3.2 fdisk 操作指南MBR 专用常用交互命令创建分区流程分区不生效2.3.3 gdisk 操作指南GPT 专用核心功能MBR 转 GPT2.3.4 parted 操作指南通用常用命令非交互模式脚本自动化用2.3.5 wipefs 工具2.4 新增磁盘标准操作流程2.5 磁盘数据擦除两种擦除方式整体知识总结高频必会点易错点汇总知识体系链路第一章 Linux 文件系统进阶1.1 特殊格式磁盘挂载【工作使用频率低】核心背景Linux 内核默认只支持原生文件系统XFS/ext4 等Windows 常用的 NTFS、移动存储的 exFAT 都需要安装第三方驱动才能识别挂载。1.1.1 NTFS 格式 U 盘挂载NTFS 是 Windows 系统的原生文件系统Linux 默认不识别。# 1. 安装驱动来自 epel 软件源yuminstall-yntfs-3g# 2. 挂载mount.ntfs /dev/sdb1 /mnt1.1.2 exFAT 格式 U 盘挂载exFAT 是 U 盘 / 移动硬盘的通用轻量格式突破了 FAT32 单文件 4GB 限制。# 1. 安装依赖与编译工具yuminstall-ygcc fuse-develmakepkg-config# 2. 下载并编译 fuse-exfat 驱动wgethttps://github.com/relan/exfat/releases/download/v1.2.0/fuse-exfat-1.2.0.tar.gztar-xffuse-exfat-1.2.0.tar.gzcdfuse-exfat-1.2.0 ./configuremakemakeinstall# 3. 挂载mount.exfat /dev/sdb1 /mnt 生产建议服务器尽量避免使用 NTFS/exFAT 格式的磁盘作为存储兼容性和性能都不如原生 XFS仅用于临时数据拷贝场景。1.2 实战案例基于 ISO 镜像构建本地 YUM 仓库【工作使用频率中】应用场景内网无外网环境利用系统光盘 ISO 文件搭建本地软件源实现离线安装软件速度远高于外网。实现思路服务端部署 Nginx挂载系统 ISO 到网页目录对外提供文件浏览客户端配置 yum 源指向服务端地址实现从本地源安装软件操作步骤服务端配置# 1. 安装 Nginxyuminstall-ynginx# 2. 开启目录列表功能让浏览器可以看到文件列表vim/etc/nginx/nginx.conf# 在 http 块中添加autoindex on;# 3. 启动 Nginx 并设置开机自启systemctlenablenginx.service--now# 4. 创建挂载目录挂载系统光盘mkdir/usr/share/nginx/html/dvdmount/dev/sr0 /usr/share/nginx/html/dvd# 光盘默认只读挂载后只能读取不能写入客户端配置# 1. 备份原有所有源mkdir/etc/yum.repos.d/oldmv/etc/yum.repos.d/*repo /etc/yum.repos.d/old# 2. 新建本地 DVD 源配置vim/etc/yum.repos.d/dvd.repo[dvd]namedvd fromlocalserverbaseurlhttp://服务端IP/dvdgpgcheck0# 3. 清理缓存并测试yum clean all yum grouplist1.3 文件查找工具详解【工作使用频率高】Linux 下有两大主流查找工具locate和find原理和定位完全不同适用于不同场景。1.3.1 locate vs find 全面对比表格对比维度locatefind工作原理读取系统预先生成的文件路径数据库实时遍历磁盘目录树逐个匹配查找速度极快慢大磁盘慢很多实时性不实时新增文件需手动更新数据库才能查到完全实时功能强弱弱只能按文件名模糊匹配极强支持名称、大小、时间、权限、所有者等几十种条件资源消耗极低高遍历磁盘会占用大量 IO适用场景快速查找已知文件名、系统全局搜文件精准条件查找、复杂筛选、排查问题1.3.2 locate 常用操作# 安装工具yuminstall-ymlocate# 更新文件数据库新增文件后必须执行updatedb# 常用参数locatepasswd# 查找路径中包含 passwd 的所有文件locate-ipasswd# 忽略大小写locate-bpasswd# 只匹配文件名不匹配路径locate-cpasswd# 只返回匹配到的数量locate-rhttp.*conf# 正则表达式匹配⚠️ 易错点刚创建的文件 locate 查不到必须先执行updatedb更新数据库。1.3.3 find 常用操作find 是功能最强的文件查找工具语法结构find查找路径 匹配条件 执行动作常用匹配条件按名称查找find/etc-namepasswd# 精确匹配文件名find/etc-inamepasswd# 忽略大小写find/etc-name*passwd*# 模糊匹配按类型查找find/etc-namepasswd-typed# 查找叫 passwd 的目录f普通文件d目录l软链接按大小查找单位c字节、kKB、MMB、GGBfind/-size100M# 查找系统中大于 100MB 的文件⚠️ 易错点find -size 1M会包含小于 1M 的文件向上取整精准查找用1024k。10M大于 10MB-10M小于 10MB10M约等于 10MB按时间查找-mmin -1010 分钟内修改过-mtime 77 天前修改过-newer 文件比指定文件更新按权限查找find/-perm-4000# 查找所有 suid 权限的文件按所有者查找find/-userhero# 查找属于 hero 用户的所有文件find/-nouser# 查找不属于任何用户的文件多条件逻辑组合# 查找不属于任何用户或不属于任何组的文件find/-nouser-o-nogroup逻辑与默认两个条件同时满足逻辑或-o逻辑非!常用执行动作-ls显示文件详细信息-delete找到后直接删除-exec 命令 {} \;对找到的文件执行命令{}代表找到的文件# 找到所有 txt 文件并复制到 /tmpfind.-name*.txt-execcp{}/tmp\;1.3.4 实战查找系统大文件方法一du 逐层定位先找大目录du-sk/*|sort-n# 根目录下各目录大小排序du-sk/usr/*|sort-n# 进入大目录继续细分方法二find 直接定位直接找大文件find/-size1G2/dev/null1.4 文件系统持久化挂载【工作使用频率高】1.4.1 为什么需要持久化手动执行mount命令挂载的分区重启系统后就会失效需要重新挂载。/etc/fstab是系统的挂载配置文件系统启动时会自动读取这个文件按里面的配置挂载所有分区实现开机自动挂载。1.4.2 /etc/fstab 六字段详解每行固定 6 个字段空格分隔设备标识 挂载点 文件系统类型 挂载选项 dump备份 fsck检查顺序表格字段含义取值与说明第 1 字段设备标识推荐用UUID唯一不变也可以写设备路径/dev/sdb1设备名可能随磁盘顺序变化UUID 永远唯一第 2 字段挂载点一个空目录的绝对路径比如/data、/home第 3 字段文件系统类型xfs、ext4、swap、iso9660 等第 4 字段挂载选项常用defaults包含读写、默认权限等特殊选项ro 只读、noexec 禁止执行程序第 5 字段dump 备份0 不备份1 每天备份现在基本不用统一填 0第 6 字段fsck 检查顺序0 不检查1 最先检查根分区用2 其次检查其他分区用⚠️XFS 文件系统必须填 0因为 XFS 自带日志校验不使用 fsck 工具检查1.4.3 配置步骤# 1. 获取分区 UUIDblkid /dev/sdb1# 2. 编辑 fstab 文件末尾添加一行vim/etc/fstabUUIDxxxx-xxxx/data01 xfs defaults00# 3. 验证配置是否正确mount/data01# 能正常挂载说明配置无误报错则检查语法# 4. 验证重启生效rebootdf-h/data01⚠️ 高危提醒fstab 配置错误会导致系统无法启动修改后一定要先执行mount 挂载点验证再重启。1.4.4 取消持久化删除/etc/fstab中对应的行即可下次开机就不会自动挂载。1.5 磁盘空间不足三大经典场景【工作使用频率高生产排错高频】这是运维最常遇到的磁盘问题三种场景原因完全不同排查思路也不同。表格场景核心原因典型现象排查命令大文件占用单个 / 少数大文件占满空间df 显示已用 100%du 也能对应上find / -size 100M删除文件空间不释放文件已删但进程仍占用句柄df 显示满du 统计小很多lsofinode 耗尽大量小文件占完 inode 编号df 显示空间很多但创建文件报错df -i场景 1大文件占用空间原因日志、备份文件、程序生成的大文件占满磁盘。解决找到大文件确认无用后删除。# 逐层定位du-sk/*|sort-n# 直接查找find/-size100M场景 2删除文件后空间没有释放【经典面试题】原因文件被删除后目录里看不到了但还有进程打开着这个文件占用文件句柄磁盘空间不会释放。最常见场景日志文件被 rm 删除但日志进程还在往里面写。排查与解决# 查找已删除但被占用的文件lsof|grepdeleted# 结束对应进程空间就会释放kill进程PID 生产最佳实践清理大日志文件不要直接 rm先用 文件清空内容再删除避免空间不释放。场景 3大量小文件耗尽 inode原因每个文件都需要占用一个 inode 编号来记录元数据。文件系统格式化时 inode 总数就固定了几千万个小文件会把 inode 用光。此时磁盘还有大量剩余空间但无法创建新文件。排查# 查看 inode 使用情况df-i解决删除大量无用小文件备份数据后重新格式化调整 inode 比例不推荐 场景预判存大量小文件的场景图片、缓存、碎文件提前规划用更大的 inode 比例格式化。第二章 Linux 硬盘分区管理2.1 分区基础认知2.1.1 为什么要分区一块磁盘不分区也能直接用但生产环境一定会分区核心原因数据隔离系统、用户、日志分不同分区一个满了不影响其他故障隔离单个分区文件系统损坏不影响其他分区数据功能区分启动分区、交换分区、数据分区各司其职空间限制限制用户 / 应用的最大可用空间防止撑满系统性能优化不同分区用不同的文件系统参数匹配读写场景2.1.2 分区的本质分区的本质就是在磁盘最开头写入一张「分区表」记录每个分区的起始扇区、结束扇区、类型。操作系统读取分区表就知道这块磁盘被分成了几块、每块在哪。2.2 两大分区方案MBR vs GPT 深度对比【工作使用频率高面试 实操核心考点】这是磁盘分区最核心的知识点两种方案对应不同的 BIOS/UEFI 启动方式限制完全不同。2.2.1 全面对比表表格对比维度MBR 分区方案GPT 分区方案全称主引导记录全局唯一标识分区表对应启动方式BIOS 传统启动UEFI 现代启动最大支持磁盘容量2 TB18 EB几乎无上限最大主分区数4 个主分区128 个分区扩展分区需要扩展分区 逻辑分区突破 4 个限制不需要原生支持大量分区分区表位置仅磁盘第一个扇区磁盘开头 结尾各存一份冗余备份校验机制无CRC 校验损坏可从备份恢复兼容性所有老设备都支持新设备支持老主板不识别适用场景2TB 以下小磁盘、老系统2TB 以上大磁盘、新服务器、UEFI 启动2.2.2 MBR 结构详解MBR 位于磁盘的第一个扇区512 字节也叫主引导扇区由三部分组成引导程序446 字节系统启动时第一个执行的代码负责把控制权交给操作系统分区表 DPT64 字节4 个分区条目每个 16 字节 → 所以最多 4 个主分区结束标志2 字节固定值AA55标识这是一个合法的 MBR 扇区主分区、扩展分区、逻辑分区主分区可以直接格式化、存数据的分区最多 4 个扩展分区特殊的主分区本身不能存数据相当于一个「容器」逻辑分区在扩展分区里面划分的分区可以格式化存数据数量可以很多通俗类比笔记本只有 4 个 USB 口4 个主分区不够用就把第 4 个口接一个扩展坞扩展分区扩展坞本身不能用上面可以插多个设备逻辑分区。2.2.3 GPT 结构详解GPT 是现代分区标准解决了 MBR 容量和数量的限制自带冗余更可靠。结构从磁盘开头到结尾依次为LBA0保护性 MBR开头保留一个 MBR 结构防止老工具识别不了 GPT 而误操作里面标记整个磁盘为 GPT 类型。2.LBA1GPT 表头记录分区表自身的位置、大小、备份分区表的位置、CRC 校验码。3.LBA2-LBA33分区条目区一共 32 个扇区存分区信息每个分区记录 128 字节 → 最多 128 个分区。4.磁盘末尾备份 GPT在磁盘最后存一份一模一样的分区表和表头开头损坏了可以用结尾的备份恢复。2.3 分区工具对比与操作【工作使用频率高】Linux 常用四大分区工具定位和适用场景各不相同。2.3.1 工具定位对比表格工具支持分区表交互模式非交互模式核心特点适用场景fdisk仅 MBR✅支持差经典轻量操作在内存w 才写入磁盘MBR 小磁盘快速分区gdisk仅 GPT✅支持差操作逻辑和 fdisk 一致GPT 专用GPT 磁盘分区partedMBRGPT✅✅ 完善操作实时生效支持调整分区大小脚本自动化、调整分区大小wipefs都支持-✅查看 / 清除磁盘分区表签名快速清空磁盘分区信息⚠️ 易错点fdisk/gdisk所有操作都在内存里不执行w就不会写入磁盘错了可以q退出。parted所有命令立即生效没有确认步骤操作要谨慎。2.3.2 fdisk 操作指南MBR 专用# 进入交互模式fdisk/dev/sdb常用交互命令表格命令作用m查看帮助菜单p打印当前分区表n新建分区d删除分区t修改分区类型 IDw写入分区表并退出q不保存退出创建分区流程输入n新建分区选择类型p主分区 /e扩展分区分区号默认回车即可起始扇区默认回车1M 对齐性能最优结束位置输入2G表示分 2GB或直接回车用完所有空间输入p确认分区正确输入w写入磁盘并退出分区不生效保存退出后系统识别不到新分区执行partprobe# 通知内核重新读取分区表2.3.3 gdisk 操作指南GPT 专用操作逻辑和 fdisk 几乎完全一致只是针对 GPT 分区。# 进入交互模式gdisk /dev/sdb核心功能o创建空的 GPT 分区表清空所有分区n新建分区支持设置分区名称c修改分区名称t修改分区类型代码w写入保存MBR 转 GPTgdisk 打开 MBR 磁盘时会自动在内存中转换为 GPT确认后写入即可完成转换。⚠️ 转换会清空原有分区数据会丢失。2.3.4 parted 操作指南通用parted 功能最强支持两种分区表支持非交互适合写脚本。# 进入交互模式parted/dev/sdb常用命令表格命令作用print查看分区表unit MiB设置单位为 MiB推荐避免单位混淆mklabel gpt/msdos创建分区表gpt 或 msdosMBRmkpart创建分区resizepart调整分区大小rm删除分区quit退出⚠️ 重要提醒parted 执行命令立即写入磁盘没有 w 确认步骤操作前确认清楚。非交互模式脚本自动化用# 创建 GPT 分区表parted/dev/sdb mklabel gpt# 创建 2G 分区命名 data01parted/dev/sdb unit MiB mkpart data01 xfs12049# 调整 1 号分区到 5Gparted/dev/sdb unit MiB resizepart15121# 删除 1 号分区parted/dev/sdbrm12.3.5 wipefs 工具作用查看和清除磁盘上的分区表、文件系统签名。# 查看磁盘上的签名信息wipefs /dev/sdb# 清除所有分区表和文件系统签名清空分区信息wipefs-a/dev/sdb⚠️ 高危操作会清除磁盘分区信息数据无法恢复操作前确认磁盘。2.4 新增磁盘标准操作流程【生产环境标准流程】新增一块磁盘从接入到使用的完整步骤1. 识别磁盘 → lsblk 确认磁盘设备名2. 创建分区表 →parted/dev/sdb mklabel gpt3. 创建分区 →parted/dev/sdb mkpart data xfs1100%4. 格式化文件系统 → mkfs.xfs /dev/sdb15. 创建挂载点 →mkdir/data6. 临时挂载测试 →mount/dev/sdb1 /data7. 写入 fstab 持久化 →vim/etc/fstab8. 验证配置 →mount/data 不报错2.5 磁盘数据擦除两种擦除方式逻辑擦除用 0 填充整个磁盘ddif/dev/zeroof/dev/sdb特点数据可通过专业工具部分恢复满足一般销毁需求。2.物理擦除消磁、物理破坏盘片特点彻底无法恢复用于涉密数据销毁。整体知识总结高频必会点find 命令常用条件与动作排查磁盘问题/etc/fstab 六字段含义与配置MBR 与 GPT 的核心区别、适用场景fdisk/parted 创建分区的基本操作磁盘空间不足三种场景的排错思路易错点汇总XFS 文件系统 fstab 第 6 位必须填 0parted 操作实时生效fdisk 要 w 才写入删除文件空间不释放是因为进程还占用句柄分区创建完识别不到用 partprobe 刷新小文件太多会耗尽 inode不是空间不足知识体系链路物理磁盘 → 分区表MBR/GPT → 分区 → 文件系统XFS/ext4 → 挂载 → 持久化fstab从底层硬件到上层可用目录每一层都是独立的技术各司其职共同完成磁盘存储管理。