对应 Linux 面试题 50 道 第 21–25 题。
一切皆文件
Linux 继承 Unix 哲学:一切皆文件。网络接口卡、磁盘、打印机、普通文件、目录都被视为文件,用户可用读写文件的方式访问硬件。
Linux 常见文件类型:
| 类型 | 说明 |
|---|---|
普通文件 - | 文本、二进制等 |
目录 d | 文件夹 |
字符设备 c | 串口等 |
块设备 b | 磁盘等 |
符号链接 l | 软链接 |
管道 p | 进程间通信 |
目录结构
Linux 文件系统像一棵倒立的树,根目录为 /:
| 目录 | 说明 |
|---|---|
/bin | 常用命令(ls、cat、mkdir) |
/sbin | 系统管理命令(ifconfig),root 权限 |
/etc | 系统配置文件 |
/home | 普通用户主目录 |
/root | 超级用户主目录 |
/usr | 系统应用程序 |
/opt | 第三方可选软件(如 tomcat) |
/var | 可变数据(日志、缓存) |
/tmp | 临时文件 |
/dev | 设备文件 |
/proc | 虚拟文件系统,映射内核/进程信息 |
/boot | 引导文件 |
/lib | 共享库 |
/mnt | 临时挂载点 |
/lost+found | 异常关机后的孤立文件 |
inode 原理
硬盘存储层次:
扇区 (512B) → 块 block (常见 4KB) → 文件数据 ↘ inode(元信息 + 磁盘地址表)inode(索引节点) 存储文件元信息:大小、所有者、权限、类型、时间戳,以及 磁盘地址表(13 个块号)。
读取文件的过程:
- 在目录表中查找文件名对应的 inode 号
- 读取 inode 中的磁盘地址表
- 按块号顺序读取物理块,组装成逻辑文件
查看 inode 信息:
ls -i file.txt # 查看 inode 号stat file.txt # 查看详细元信息df -i # 查看 inode 使用情况硬链接 vs 软链接
| 维度 | 硬链接 | 软链接(符号链接) |
|---|---|---|
| 命令 | ln source hardlink | ln -s source symlink |
| 本质 | 同一 inode 的另一个目录项 | 新建 inode,内容为原文件路径 |
| 跨文件系统 | 不可以 | 可以 |
| 跨机器 | 不可以 | 可以 |
| 链接目录 | 仅 root | 任意用户 |
| 删除原文件 | 硬链接仍可用 | 链接悬空(broken link) |
| 实际使用 | 较少 | 更常用 |
# 硬链接ln readme.txt readme_hard.txt
# 软链接ln -s /opt/app/config.yml config.yml面试要点:生产环境几乎都用软链接;硬链接不能跨分区;删除软链接不会删除原文件,删除原文件会导致软链接失效。
RAID 简介
RAID(Redundant Array of Independent Disks)将多块磁盘组合为阵列,在性能与冗余间权衡:
| 级别 | 说明 | 空间利用率 | 容错 |
|---|---|---|---|
| RAID 0 | 条带化,速度最快 | 100% | 任意一块坏即全损 |
| RAID 1 | 镜像 | 50% | 容忍一块损坏 |
| RAID 5 | 分布奇偶校验,至少 3 块 | (n-1)/n | 容忍一块损坏 |
| RAID 10 | 先镜像再条带 | 50% | 有条件容忍多块 |
云时代更多接触云盘/SSD,物理 RAID 由云厂商底层实现,开发者较少直接管理。