如何查找厨师的总磁盘空间?

问题描述:

我想通过厨师在机器中找到总磁盘空间。我可以找到一种方法通过节点['filesystem'] ['device_name']查找单独的分区空间,但是有什么方法可以找到总的磁盘空间吗?如何查找厨师的总磁盘空间?

+1

使用Ruby代码来概括? – StephenKing

+1

@StephenKing谢谢你的回复!是的,我可以做到这一点,但有另一种方式吗?我甚至可以通过这个命令执行一个命令来获取总大小df | grep'^/dev/[hs] d'| awk'{s + = $ 2} END {print s/1048576}'但我想利用ohai。 –

+0

可能的重复[如何找到可用于Chef食谱的磁盘?](https://stackoverflow.com/questions/14286709/how-can-i-find-the-disk-available-in-a-chef -recipe) – Sergiu

没有具体的答案,因为这不是您的操作系统理解的概念。你可以简单地回答所有设备上的循环,并添加可用空间,但由于诸如虚拟设备(procfs,devfs,sysfs等),tempfs设备,环回挂载等原因可能会导致数据不正确。你可能是遍历匹配一些名称的模式,但该模式的具体细节的所有设备取决于你的操作系统和硬件上:node['filesystem'].select {|k, v| k =~ /something/ }.map {|k, v| v['kb_available'] }.sum

+0

在所有安装的设备也将拿起遥控坐骑(NFS,SSHFS等)和绑定安装和无数其他的东西。所以是的,可能是一个可怕的想法,以循环所有安装的设备。 – jayhendren

+1

@coderanger感谢您的回复。我确实想要一个适用于所有操作系统的通用答案。但是现在我结束了使用shell命令获取总可用空间。 'df | grep'^/dev/[hs] d'| AWK“{S + = $ 4} END {打印S/1048576}' –

+0

即'^的/ dev/[HS] D'作为滤波器模式是非常具体的Linux和甚至没有所有的Linux(许多云系统,这些天使用' xd'驱动程序)。 – coderanger