如何模拟挂起的文件系统?

How to simulate a hanging filesystem?

我想验证应用程序在尝试从损坏的文件系统中读取时的行为(最值得注意的是:挂起的 NFS 挂载,如果不加以检查,读取可能会永远挂起)。

有没有一种简单的方法可以在本地重现此行为?如果我可以强制挂载不存在的东西,或者挂载本地 ram 磁盘并破坏它,或者锁定它以防止它挂起而不是出错,或者类似的东西,那就太好了。它应该是我可以作为小型集成测试的一部分重复执行的操作。

  1. 创建要导出的目录:mkdir /tmp/nfs
  2. 配置目录,将行 /tmp/nfs *(sync,sync,ro,no_subtree_check,fsid=0468884e-fdab-11e9-8ee6-4b007bc13e45) 添加到 /etc/exports
  3. sudo exportfs -ra
  4. 确保 NFS 服务器是 运行ning。
  5. 创建客户端挂载目录:mkdir /tmp/hang
  6. mount -t nfs -o vers=3 localhost:/tmp/nfs /tmp/hang
  7. 运行 ls /tmp/hang - 一切都很好。
  8. 关闭 NFS 服务器。
  9. 运行 ls /tmp/hang - 它会挂起。
  10. 运行 NFS 服务器。
  11. ls 命令将释放。

关闭 NFS 服务器的另一种方法是通过 iptables 阻止客户端。这样做的好处是您可以设置多个网络接口,通过不同的接口安装多个客户端,然后通过使用 iptables.

阻止网络接口来选择性地阻止客户端