Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

练习题与扩展阅读

练习题

基础题

  1. 什么是inode?inode中存储了哪些信息?为什么inode中不存储文件名?
  2. 虚拟文件系统(VFS)的作用是什么?它是怎么做到支持多种不同文件系统的?
  3. 日志文件系统的工作原理是什么?它如何保证断电后文件系统的一致性?
  4. Linux系统中文件的755、644权限分别表示什么含义?分别适合什么类型的文件?
  5. 硬链接和软链接有什么区别?分别适合什么场景?

实操题

  1. 查看你电脑上文件系统的类型,每个分区的使用率和inode使用率。
    • Linux:使用df -hdf -i命令
    • Windows:查看磁盘属性
  2. 在Linux系统中创建一个文件,分别创建它的硬链接和软链接,删除原文件,看看两个链接有什么不同的表现。
  3. 编写一个程序,分别用read/write方式和mmap方式读取一个大文件,对比两者的性能差异。
  4. 尝试设置文件的SUID、SGID、Sticky Bit权限,观察权限表示的变化。

思考题

  1. 为什么删除文件的时候,即使文件很大也能瞬间完成?删除的文件可以恢复吗?为什么?
  2. 为什么SSD不需要做碎片整理,而HDD需要?
  3. ext4文件系统对小于12个块的小文件和大文件的存储方式有什么不同?这种设计有什么好处?
  4. 当系统提示磁盘空间不足,但你删除了很多大文件之后还是提示空间不足,可能是什么原因?怎么排查?

扩展阅读

书籍推荐

  1. 《Linux内核设计与实现》

    • 第13章虚拟文件系统、第14章块I/O层、第15章进程地址空间等章节详细讲解了Linux文件系统的实现原理
    • 适合想要深入理解Linux文件系统底层实现的开发者
  2. 《操作系统导论》

    • 第三部分持久性部分详细讲解了文件系统的设计和实现原理,包括磁盘、文件系统、日志结构文件系统等内容
    • 通俗易懂,适合入门学习操作系统和文件系统原理
  3. 《UNIX环境高级编程》

    • 第3章文件I/O、第4章文件和目录等章节讲解了Unix系统下的文件操作API和原理
    • 系统编程的经典著作,每个Unix/Linux开发者都应该读

在线资源

  1. EXT4文件系统文档

    • Linux内核官方的EXT4文件系统文档,最权威的资料
    • 适合深入了解EXT4的特性和实现
  2. Btrfs官方文档

    • Btrfs文件系统的官方文档,包含所有特性的详细说明
  3. 微软NTFS文档

    • 微软官方的NTFS文件系统介绍,适合了解Windows平台的文件系统
  4. 《文件系统是如何工作的》

    • 通俗易懂的中文科普文章,讲解文件系统的基本工作原理

工具推荐

  1. df / du:Linux下查看磁盘使用率、文件大小的常用命令
  2. fsck:文件系统检查和修复工具,文件系统损坏时用来修复
  3. dumpe2fs / tune2fs:ext系列文件系统的查看和调整工具
  4. xfs_info / xfs_admin:XFS文件系统的查看和调整工具
  5. testdisk:开源的数据恢复工具,可以恢复误删的文件和分区
  6. iostat / pidstat:监控磁盘IO性能的工具

参考答案

练习题的参考答案可以在附录/练习题参考答案.md中找到。建议先独立思考完成,再查看答案。