Linux 采用树形目录结构,根目录 / 是整棵树的起点,所有磁盘、分区、设备都会挂载(mount)到这棵树上的某个目录,没有 Windows 那种 C/D 盘符概念。
核心特点:一切皆文件 —— 普通文件、目录、硬件设备、管道、套接字都以文件形式访问。
一、顶层目录总览(FHS 标准:Filesystem Hierarchy Standard)
FHS 是 Linux 目录布局规范,绝大多数发行版(Debian、Ubuntu、CentOS、openEuler、麒麟)都遵循。
重点区分:
/root是管理员家目录,/是文件树根,不要搞混。
二、重点目录深度拆解
1. /etc 配置目录(运维高频)
/etc/passwd:用户账户信息/etc/shadow:用户密码哈希(权限严格)/etc/group:用户组/etc/fstab:开机自动挂载表(磁盘挂载核心文件)/etc/hosts:本地域名解析/etc/hostname:主机名/etc/profile:全局环境变量、登录脚本/etc/nginx/、/etc/systemd/system/:服务配置
2. /proc 虚拟文件系统(procfs)
全部在内存,无磁盘文件:
/proc/cpuinfo:CPU 信息/proc/meminfo:内存信息/proc/[pid]/:每个进程的目录,fd、cmdline、status/proc/sys/:动态内核参数(sysctl 修改)
3. /sys(sysfs)
内核导出硬件设备、总线、驱动,比 /proc 结构化更强;udev 靠它生成 /dev 设备。
4. /usr 子目录(Unix System Resources)
早期
/usr曾经单独分区,存放大部分应用程序
/usr/bin:大部分普通用户命令/usr/sbin:管理员命令/usr/lib /usr/lib64:应用依赖库/usr/share:共享资源:man 手册、字体、图标、配置模板/usr/local:管理员手动编译安装软件默认目录(源码 make install 一般装这里)/usr/local/bin、/usr/local/lib
5. /var 可变数据目录
内容会持续增长,数据库、日志服务器一般单独分区挂载 /var
/var/log:系统日志(syslog、journal、nginx 日志)/var/lib:数据库、docker 数据、包管理状态/var/cache:apt/yum/dnf 软件包缓存/var/spool:打印队列、邮件队列
6. /dev 设备文件
两种设备文件:
块设备(b):随机读写,硬盘
/dev/sda、分区/dev/sda1、NVMe/dev/nvme0n1字符设备(c):流式读写,串口、终端
/dev/tty、/dev/urandom/dev/null:黑洞,写入直接丢弃/dev/zero:无限输出 0

三、文件系统的两层概念(非常容易混淆)
很多人把「目录树结构(FHS)」和「磁盘文件系统(ext4/xfs/btrfs)」混在一起:
目录树(FHS):逻辑视图,就是上面这套
/、/etc、/var布局,所有 Linux 统一规范磁盘文件系统:格式化在分区上的存储格式:ext4、XFS、btrfs、tmpfs、nfs
一个分区格式化 ext4 → 挂载到
/,它就成为根分区另一个分区 XFS → 挂载到
/var,所有 /var 的数据存在这个分区
挂载的本质:把一个文件系统,接入到树形目录的某个节点。
常见特殊文件系统(df -T 可以看到)
tmpfs:内存文件系统,/tmp、/run 常用,断电消失sysfs/proc:内核虚拟 fs,无磁盘devtmpfs:/dev 的底层nfs:网络文件系统,远程挂载
四、inode、block、superblock(底层核心)
这是 ext/XFS 这类本地文件系统底层,和上面的目录树配合工作:
Superblock 超级块:文件系统元信息,总块数、空闲块、inode 总数,损坏则分区挂掉
inode(索引节点)
一个文件对应一个 inode,记录:文件大小、权限、属主、时间戳、数据块指针
inode 不存文件名!文件名存在目录项里
硬链接:多个目录项指向同一个 inode
block 数据块:真正存放文件内容的最小单元(4k 常见)
目录项(dentry):内存缓存,保存「文件名 → inode 号」映射,加速查找
一句话:目录存名字,inode 存属性,block 存内容。
五、软链接 vs 硬链接
硬链接:同一个 inode,不能跨分区、不能链接目录;删除一个,其他还在
软链接(symbolic link):单独 inode,存目标路径文本,可以跨分区、链接目录;源文件删了就失效(红闪烁)
六、典型生产分区方案参考
服务器部署常用拆分(防止日志打满根分区)
/boot 1G ext4
/ 50G xfs
/var 100G+ xfs (日志、数据库)
/home 按需
swap 内存1~2倍
容器环境很多会单独给 /var/lib/docker 单独挂载。

七、常用查看命令
ls / # 看顶层目录
tree -L 1 / # 树形展示一级目录
df -hT # 查看挂载点 + 文件系统类型
du -sh /var/log # 看目录占用
stat /etc/passwd # 查看inode、权限、时间
ls -i # 显示inode号
mount # 查看当前挂载列表
cat /etc/fstab # 开机挂载配置
八、容易踩坑的点总结
/tmp默认 tmpfs,空间是内存,大文件不要放这里/proc、/sys不能直接 vim 修改,要用 echo、sysctlinode 耗尽:磁盘还有空间但新建文件报错(小文件超多场景)
FHS 只是规范,部分嵌入式、定制系统不严格遵守
目录只是挂载入口,删掉挂载点目录,不会删掉分区数据,只是卸载入口
本文原创作者:易君召,详见:https://www.yijunzhao.cn/authors/yijunzhao,转载请注明出处。
原文链接
欢迎访问 小易撩挨踢