Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1366527
  • 博文数量: 244
  • 博客积分: 3321
  • 博客等级: 中校
  • 技术积分: 2704
  • 用 户 组: 普通用户
  • 注册时间: 2009-04-26 08:17
个人简介

微信公众号:杰夫弹弹看

文章分类

全部博文(244)

文章存档

2018年(4)

2017年(32)

2016年(25)

2015年(28)

2014年(27)

2013年(34)

2012年(25)

2011年(30)

2010年(39)

分类: 云计算

2014-04-19 15:54:28

前段时间执行一个cookbook,发现节点执行完后,每次总是有个路径没有正常umount,于是我就陷入深深的郁闷中,可是工程师的职责就是解决问题的,别人不帮你解决,那就得自己搞定。

首先,要让完整的异常信息给抛出来,到底是什么原因导致的无法umount
如果你查看过 chef 的代码说明
shell_out 可是对错误不报警的
shell_out! 绝对不容忍命令执行错误,绝对抛出异常

使用shell_out!, cookbook执行后,把错误面目暴露出来了, device is busy
很显然是某个进程使用这个设备

然后,我们就需要找到哪个进程在用这个device, fuser 或者lsof 就是干这事的,做调查的
比如fuser
sh -c fuser -m  /tmp/mytest ; ps aux

将上面的命令输出结果在cookbook执行时,打印出来,就可以抓到进程了


最后,上一步既然获得了进程也知道是chef-client在用,那就是cookbook中存在使用目录的情况,后面的就简单了,一般就是打开文件,没有关闭,或者进入到了要卸载的目录
grep 找到open file的地方,发现有一个地方没有close,就是它了。

Fix问题后,重新运行cookbook,发现所有umoun就顺利完成了。问题就解决了。
阅读(809) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~