2017-09-20 83 views
1

我想通過廚師在機器中找到總磁盤空間。我可以找到一種方法通過節點['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

回答

1

沒有具體的答案,因爲這不是您的操作系統理解的概念。你可以簡單地回答所有設備上的循環,並添加可用空間,但由於諸如虛擬設備(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