首页 > 解决方案 > 如何模拟挂起的文件系统?

问题描述

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

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

标签: linuxnfs

解决方案


  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 服务器正在运行。
  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.


推荐阅读