练习题与扩展阅读
练习题
基础题
- 什么是inode?inode中存储了哪些信息?为什么inode中不存储文件名?
- 虚拟文件系统(VFS)的作用是什么?它是怎么做到支持多种不同文件系统的?
- 日志文件系统的工作原理是什么?它如何保证断电后文件系统的一致性?
- Linux系统中文件的755、644权限分别表示什么含义?分别适合什么类型的文件?
- 硬链接和软链接有什么区别?分别适合什么场景?
实操题
- 查看你电脑上文件系统的类型,每个分区的使用率和inode使用率。
- Linux:使用
df -h和df -i命令 - Windows:查看磁盘属性
- Linux:使用
- 在Linux系统中创建一个文件,分别创建它的硬链接和软链接,删除原文件,看看两个链接有什么不同的表现。
- 编写一个程序,分别用read/write方式和mmap方式读取一个大文件,对比两者的性能差异。
- 尝试设置文件的SUID、SGID、Sticky Bit权限,观察权限表示的变化。
思考题
- 为什么删除文件的时候,即使文件很大也能瞬间完成?删除的文件可以恢复吗?为什么?
- 为什么SSD不需要做碎片整理,而HDD需要?
- ext4文件系统对小于12个块的小文件和大文件的存储方式有什么不同?这种设计有什么好处?
- 当系统提示磁盘空间不足,但你删除了很多大文件之后还是提示空间不足,可能是什么原因?怎么排查?
扩展阅读
书籍推荐
-
《Linux内核设计与实现》
- 第13章虚拟文件系统、第14章块I/O层、第15章进程地址空间等章节详细讲解了Linux文件系统的实现原理
- 适合想要深入理解Linux文件系统底层实现的开发者
-
《操作系统导论》
- 第三部分持久性部分详细讲解了文件系统的设计和实现原理,包括磁盘、文件系统、日志结构文件系统等内容
- 通俗易懂,适合入门学习操作系统和文件系统原理
-
《UNIX环境高级编程》
- 第3章文件I/O、第4章文件和目录等章节讲解了Unix系统下的文件操作API和原理
- 系统编程的经典著作,每个Unix/Linux开发者都应该读
在线资源
-
- Linux内核官方的EXT4文件系统文档,最权威的资料
- 适合深入了解EXT4的特性和实现
-
- Btrfs文件系统的官方文档,包含所有特性的详细说明
-
- 微软官方的NTFS文件系统介绍,适合了解Windows平台的文件系统
-
- 通俗易懂的中文科普文章,讲解文件系统的基本工作原理
工具推荐
- df / du:Linux下查看磁盘使用率、文件大小的常用命令
- fsck:文件系统检查和修复工具,文件系统损坏时用来修复
- dumpe2fs / tune2fs:ext系列文件系统的查看和调整工具
- xfs_info / xfs_admin:XFS文件系统的查看和调整工具
- testdisk:开源的数据恢复工具,可以恢复误删的文件和分区
- iostat / pidstat:监控磁盘IO性能的工具
参考答案
练习题的参考答案可以在附录/练习题参考答案.md中找到。建议先独立思考完成,再查看答案。